Why I Choose To Be Lazy
Posted by Chris Shorrock Tue, 22 Aug 2006 04:35:00 GMT
A recent article over at Software By Rob has illustrated a very interesting point regarding common attributes that he finds if skilled programmers. It's a good read for anybody in the industry, but I thought I'd throw my own 2 cents in the direction of the topic, so without further ado, here's my brief list of Things Required To Not Suck At Programming.
Laziness
While it sounds crazy, all great programmers must be lazy to some degree. A lazy programmer will go to great lengths in order to abstract out ideas and concepts into small manageable and (key word here) removable pieces which can then be used in other places. It's their desire to only ever do something once, this will generally cause their architecture to be such that repetition will not be seen anywhere . Everyone has ran into a small piece of logic has 300 if statements in a row each testing for a different condition, and you can bet it was a very eager programmer who did this - as a lazy person would take the time and figure out how they could avoid typing out all of these 300 lines.
Anal Retentiveness
Have you ever jumped into a project half way through development and thrown up on your keyboard (repeatedly) due to hap-hazard nature the authors of said project had taken towards code cleanliness. A mixture of tabs and spaces, different variable naming constructs in every other class, so you go through and take a considerable amount of time reformatting everything for consistencies sake? After which the code runs no different than it did before, but at least this way you can look at it without having to reach for the pepto-bismol. Similarly in real life, these programmers, also have minor OCD tendencies where their desk must have a sense of symmetry before they can work. It may seems (because it probably is) that these people are a little crazy but their desire need to have everything just so, in every circumstance, is a testament to their attention to detail and their unrelenting approach they take to software quality.
Artistic
Anyone who said that programming isn't art is either not a programmer, or not a very good programmer. Great programmers relish in beautiful designs that solve multifaceted problems using very simple abstractions. They have an innate ability to make things "as simple as possible, but no simpler", that is, they can do something in a small amount of time that will address all of their requirements. They are able to take a problem and construct a solution out of thin air that takes a tenth of the time and will often operate several magnitudes faster than a solution crafted by a less skilled programmer. Art, at it's core, is taking things and putting those things together to make something beautiful; those programmers who approach code from a perspective of creating elegance, opposed to gettin'er done are often the ones you want on your team.
From a personality perspective we've painted a picture of some lazy hippy living alone in a loft with his 300 paintings (well.. 1 painting and 299 photocopies) organized on the floor with exactly 3cm's separating all of them. Find this person, teach him what an if statement is, and you have your next team lead (providing you can get rid of that hippy smell).
