Why homogenizing your toolset is a bad idea

In my current workplace there is a disturbing trend where management  seeks to standardize everything that it can.  This includes  standardizing the tools which we are allowed to use, even to the  extent of telling us which IDE we must use.  The reasons given are  twofold: Firstly they believe that homogenizing the workplace  enables them to better compare the productivity of different  programming teams.  Secondly, they hope to modernize the work  habits of some of us older developers.  Elements of management, who  haven’t worked outside of Microsoft Office products in some time,  and who have never really undertaken a study of how various  development environments might affect the productivity of various  developers, nevertheless are convinced that there exists a “best”  development editor, that they know what that editor is, and seek to  force us all to use it.

It’s easy to find examples where this homogenization appears to be a  good idea.  We have in our team some individuals who have, shall we  say stagnated in their skill set.  They use editors most people  would find inefficient.  They have work habits which are fairly  inefficient — lots of repetition.  They have stopped looking for  better ways of doing things.  This is reflected in the quality  and nature of their code, the usability of the products they  generate,  as well as in their habits for interacting  with said code.  They see no problem with byzantine usage  restrictions, complex and lengthy code.  They don’t strive for  simplicity or elegance.

Management (and unfortunately at least one other coder) hope to  correct this problem by forcing us all to use Eclipse.  At first  glance this seems like a good idea — it will stir the pot up a  little bit,   get people out of their comfort zone.  Unfortunately,  their goal is not to get people to learn new things, nor to get  people out of their comfort zones a little, their goal is to  standardize everything.  In my mind, based on my observations,  standardization and control in corporate development environments is  a root cause of developer stagnation.  To keep coders current,  skillful, and engaged means encouraging coders to pull  themselves out of their comfort zones.  To experiment.   To be  playful in their work.  This is how people will constantly learn.

Of course, my primary concern is my desire not to lose my productivity. I spent a few months working with Eclipse  while I was loaned out to another team to help with a Java project.  Had my term with them been much longer, I would have gone to the  effort to set up EMACS to work within their development environment.  Why?  Well, primarily find EMACS vastly more efficient for day to  day development than Eclipse.  Eclipse has a lot of fancy features  that can save 5 or 10 minutes, but they get used every few weeks or  so.  EMACS has tiny optimizations that save me anywhere from a half  a second to a handful of seconds, but they are used dozens or  sometimes hundreds of times a day.  They are intrinsic to the design  and assumptions of EMACS and emacs mode in Eclipse is not an  effective substitute.  A second reason is mouse abuse.  While I  think the mouse is a very effective input device, it is abused  heavily, particularly in the windows world.  This kills my  productivity in a number of ways.  It distracts me, in that I have  to navigate GUI elements when I want to be thinking about design or  implementation.  It gives me incredibly painful repetitive-stress  injuries (yes, i’ve tried a trackball, that’s worse).  Finally it  forces me to remove my hands from the keyboards costing me a couple  of seconds distraction and irritation while I try to find home row  again.

I mention all this in an attempt to convince the reader that this is  not a religious issue for me.  I keep an open mind.  I try using new  editors and IDE’s from time to time.  I think 3 months is sufficient  time to evaluate my own productivity with a particular editor.  I’m  the kind of person who takes time and energy to learn how to use his  tools effectively.  And that right there is my problem with both the  design of IDE’s and the general standardization approach followed by  most corporations: rather than striving for excellence, they tend to  enforce mediocrity.  For individuals who are not touch typists, who  aren’t willing to learn efficient keyboard commands and the effcient  use of atomic macros, Eclipse is certainly better than EMACS.  For  individuals who don’t like to invest time and energy training  themselves in the effective use of tools, Eclipse is also  advantageous.  But for guys like me who strive for excellence, who  take joy in proficiency, Eclipse is a lead weight around our neck,  and a little bell ringing in our ears at random intervals centered  around a mean of about 1 minute.  It disturbs both our productivity  and the joy we take in our work.

More to the point, I understand that Emacs is the most efficient  tool for me to use.  I play guitar and find the chording in  Emacs fairly natural.  The same for the rapid opening and closing of  windows within the main emacs frame.  I enjoy playing around in LISP,  and extending the editor.  I like the way the Emacs community thinks  and goes about solving problems.  I find it very hard to live  without Emacs macro features.  I like using grep and sed, and  version control from the command line.  I hate having to use the  mouse, indeed using the mouse can be cripplingly painful for me.  I  find all the GUI elements most IDE’s offer to be hopelessly  distracting — BUT I realize that other people are different, and  they should have the freedom to use, choose, and develop tools that  suit their needs and idiosyncrasies.

In the end, standardizing our toolset removes yet one more  choice.  It’s one more area where we are told “don’t think for  yourselves, just follow orders”.  This is contrary to what  programmers should be doing: obsessively thinking about  what they are doing and whether or not it’s the best they could be  doing.


Let’s talk about abortion

The tendency in America is to decompose all discussions into two contradictory positions. The dynamics of our media are such that they seek out and highlight people and movements that take the most extreme positions, as it makes it easier for them to construct their oppositional narrative. Whatever the intent, the result of this is to cartoonify everything and to reduce the discussion to some kind of football game — pick a side and root for one, or deride them both as lunatics — whichever you do, the only problems that get solved are how to fill the news hour and how to sell advertising space.

It’s hard to come up with a better example of this than the subject of abortion. Already the language is completely absurd — people who want to criminalize abortion aren’t anti-abortion, they’re “pro life”. People who think abortions should be legal aren’t pro abortion, they’re “pro choice”. Both of these are completely meaningless. I’m pro choice and pro life. That’s not an accident — everyone is pro choice. Who the hell would describe themselves as anti choice? There’s probably a deranged minority of people who might describe themselves as anti-life, but in general these won’t be people who are really anti life.

That’s one of the funny ironies in America’s retarded abortion politics. For the last 20 years there has been a strong alliance between the social/religious conservatives and the hawkish imperialists. The result of this has been that the “pro life” camp supports decidedly anti-life policies, in the hope that they succeed in criminalizing abortion. Thus they accept and support politicians who support military policies that result in the deaths of hundreds of thousands of people abroad — young, old, children and unborn children. They support policies that result in America having the highest infant mortality and infant poverty rates in the developed world. They support these politicians because they support criminalizing abortion.

I’m old enough to remember when the term “pro life” was coined. The justification for this bit of nuspeak is the claim that pro-lifer’s are not against abortion, they are pro-life. If this is the case, pro-lifers should question their strategy — is supporting these bloodthirsty pro-war anti-social-justice politicians really consistent with a pro-life philosophy?

More importantly, is it good strategy? Consider myself — I consider abortions to be unethical, and I consider them to be harmful to the individuals getting the abortion. I am however against criminalizing abortions. I believe alternative policies will produce the best outcome.

Consider alcohol, tobacco, and illegal drugs. In the case of alcohol, we have learned the hard way that prohibition simply does not work. Years of experience have taught us that education, support and control of access to minors is far more successful than prohibition. Prohibiting alcohol did not decrease alcohol consumption, it made alcohol consumption much more dangerous, and removed any mechanisms for regulating access to children. It further introduced a wide host of undesirable side-effects, including violence, criminality, and widespread disregard for the law. Modern policies of education and control have been much more successful in addressing the negative outcomes of alcohol consumption (alcoholism, drunken misbehavior, and health consequences). Our society is currently learning the same lessons regarding the use of illegal drugs. With tobacco we were able to bypass the entire foolishness of prohibition and go directly to reasonable regulations and information campaigns which have been highly successfull in reducing tobacco consumption.

We know historically that criminalizing abortion does not eliminate abortion. Thus, pro-lifers should understand that elimination of abortion is simply not a realistic goal. Instead, let us get together and consider the question: “how can we minimize the number of abortions performed?”. As soon as we switch the conversation from the artificially restrictive one of “should abortions be illegal?”, to one of “How can we minimize the number of abortions that happen?”, we might be able to make progress on an important issue, and we might be able to remove the harmful polarization effect of this issue on our country.

Once we get to this point, there does remain a hurdle. The pro-lifebbbv movement has a disturbing history of focusing on denial-of-access and punitive techniques in their attempts to reduce abortion occurence. I belive that this too is counter productive. How can we reduce the number of abortions taking place?
The first step is to stop pretending that abstinence education is an effective birth control policy. No doubt that abstinence is an effective method of birth control, but hoping your kids are abstinent is a terrible way to prevent you daughter from getting pregnant. It is possible to teach your children how to have safe sex without encouraging them to do so, so let’s provide free birth control everywhere. Lets subsidize condoms and give every kid access to them.

Lets provide young mothers free medical care and a loving, supporting environment for their children to grow up in — regardless of whther or not the mother is the one who will raise the child.

But that’s the big problem with the so-called pro-life movement. It’s been hijacked by people with an extremist agenda that seems to have more to do with forcing a fundamentalist religious agenda on an unwilling America. One in which punishing young, sexually active women is more important than preventing unwanted pregnancies. Where children are to remain ignorant about the realities of sex until they married.

So I would suggest that single-issue voters ask themselves: what is really their single issue? Is it forcing religious fundamentalism on America, or is it reducing abortion? If the sanctitity of life is really your concern, ditch these war mongering religious fundamentalists who are willing to exploit your well meaning goals to pursue a decidedly anti-life agenda.