Where are the good programmers?

There seems to be a trend amongst programmers who blog.  They all tend to say that they write rubbish code.  (Some put it more poetically than others…)  I think it is a good idea to steer clear of the Rock-star programmers, but are all who blog, bad at coding?  Or are they merely filled with a sense of modesty endued by self-preservation? (Needed because the Internet is a big scary place and you can’t hide from the knockers forever.)

From my own perspective: because quality takes time, there is always the sense that with more time I would have done a better job.  That is probably true to a certain extent – but there is definitely a point of diminishing returns.  That, plus the fact that I definitely have a finite amount of intelligence means that the quality of my code will probably never exceed a certain level.  Someone smarter than me could possibly turn out better code than I could ever hope to.   Extra intelligence however does not always guarantee better results.  “Care” is an attribute that counts for a lot when writing code.  “Careless programmers” write rubbish code and I find that particularly offensive if I know that they are better problem solvers / generally more intelligent than I am.

Reflecting on my own code at a later date often reveals a painful truth.  Yes, I too write some awful code.  Even code that I was once quiet proud of, I no longer see through rose coloured glasses.  I probably notice this due to looking at the code from a different perspective.  This is impossible to do at the time as you tend to be so engrossed in the code that it seems to be simple.  (To me, simple code that works is a close approximation of good code)

Different perspectives for code arise with different usage of the code.  Code that sticks to some simple rules lends itself to re-use.  Code re-use is somewhat a holy grail of programming, but for a business, it is not as important as having the code you write make money.  Joel Spolsky places a strong emphasis on finding good, talented programmers and judges them as the people who are smart and get things done.

Placed solely on this scale, I have known quite a few programmers who “pass”.  But for some, there is a high price to pay, in the form of code maintainability.  I willingly concede that for the sake of getting a “version 1.0” code base out the door and selling, making code “good” is a luxury.  But carrying on with a relentless drive to push new versions out is counterproductive.  Extending and maintaining a bad code base takes more resources and there have been documented cases where lack of progress due to the bad code base is the eventual undoing of a project.

Maybe this indicates that there are different sorts of “good programmers”.  The ones who ensure there is a product to sell and the ones that ensure that sins of the past are dealt with in a timely fashion.   I suspect software projects need both these types of programmers to succeed. I also suspect that these two groups of programmers annoy each other due to their different outlooks.  But that’s a story for another time.

Has Honda got the wrong idea?

I watched a YouTube video about an option on Honda’s forthcoming “VFR1200”.  The option features a computer controlled double clutch gearbox, eliminating the need for a hand-operated clutch and gear selection foot pedal.  I know precious little about the technology, but at face value, it seems similar to systems fitted to up-market sports cars.  Jeremy Clarkson and I would probably not see eye-to-eye on a great number of things.  I am a motorcycle nut, and he isn’t. (to put it mildly).  However, he has a hatred of “flappy-paddle gearboxes” which I think I understand.

Watching the video, it was amazing to see the seemless nature with which the computer controlled gearbox changed gears. This was most notable if the final scenes when the video focused on the “attitude” of the bike.  The degree to which the rear of the motorcycle squatted during the acceleration run barely changed through the gear shifts.  This was most impressive when compared with the conventional manual transmission bike*.  Despite this, I cannot help feel that Honda have solved a problem that no-one else was aware even existed.

There are times that I have made a complete hash of changing gears whilst riding a bike.  Sometimes I have found a false neutral and sent the revs skyward when the engine encountered no resistance. (I find this almost as embarrassing as sneezing in your helmet when stopped at traffic lights…)  Sometimes I have discovered I am already in first gear when down-shifting, or top gear when up-shifting.  Occasionally, I’ve missed the gear lever altogether (although I’m still not sure how).  There are also times when my arm has ached from constantly needing to pull in the clutch when riding in heavy traffic.  None of these factors make me want an “automatic” transmission on a motorbike.

Part of the fun of riding a motorcycle is the connection between the rider and the machine.  Just because the machine could do something better than I could, is not a reason to let it do it.  I am sure that some people will appreciate not having to use a clutch in heavy traffic or the consistent smooth gear changes the system promises.  But it is not the sort of marketing hype that entices me.

 Technology can be enticing.  A few years ago I had the opportunity to test a BMW K1200s with the Electronic Suspension Adjustment (ESA) system fitted.  The system was interesting and seemingly worthwhile.  The benefits of on-the-move suspension adjustments were noticeable in the real world.  Here was a new technology that gave an increased involvement with riding the motorcycle.  Few people take the time to sort out their suspension of their motorcycle despite the benefits of doing so.  Here was a computer-controlled system that “did the hard part for you” and left the fine-tuning up to you.  At a press of a button, you could soften the suspension for “comfort” or firm it up for “sport” riding.

So, on one hand you have Honda making the process of riding easier by removing some of the tasks you need to perform. This has the impression of making you more disconnected from the experience.  On the other hand you have BMW making it easier for you to become more involved with the riding experience. 

How much an automatic gearbox disconnects you from the experience of riding the bike is going to be subjective.  I am not above being wrong and if the opportunity arises to try the system, I shall – but it is not the sort of technology that excites me.

* I couldn’t help get the feeling that the gear changes performed on the bike with the conventional gearbox were exaggerated by the rider…


The Network N00b

I am a network n00b.  I remember when networking on Windows (and DOS for that matter!) was fiendishly difficult and I am truly glad those days are behind us.  Although it is not really related, I was reminded of those days recently when I was trying to determine why my home internet connection would sporadically drop out.

I used these drop-outs as motivation to finally replace my ADSL modem / router with a new one.  I have wanted one for a while now, but couldn’t justify replacing a working one.  The world has finite resources after all, and we really don’t need the extra land-fill!  The drop-outs commonly took the form of firstly losing the VPN connection to work followed by extraordinarily long times to resolve web addresses.

The only way I had found to correct the problem was to power-cycle the ADSL modem.  Once I had bought and installed the new ADSL modem / router, I was horrified to discover the problem had seemingly become worse!  Now, a power-cycle was not always sufficient to recover from the problem.

Fortunately, diagnosis of the problem became much simpler with the new modem.  Once “the problem” occurred, I discovered that I could still ping the gateway machine, but I could not ping the primary or secondary DNS servers of my ISP.  The new modem has a less cryptic web interface.  This was able to tell me diagnostic information such as line attenuation and signal-to-noise ratios.  (The old one probably could do this, but I had a bad “hunt-to-peck” ratio – clicking on random links before I found the page I was looking for!)

Armed with a few statistics, I turned to the Internet for possible answers (when it was available!) It did not take long to find an answer and I am annoyed with myself for not starting the problem resolution here!  Recently, our local exchange had upgraded from ADSL to ADSL2+.  I had upgraded the firmware in my old ADSL modem/router for this change but did not upgrade my line filter.  The solution to my problem was to replace my existing splitter box and line filter with a new combined splitter/ADSL2+ filter.  Since then, things have been going swimmingly!

In the end, I probably did not need to replace the ADSL modem.  But I did want some features that my old modem did not have.  Also, the old modem had a quiet high pitched whistle which I’m glad to be rid of.  You live and learn!