September 15th, 2010
(written by lawrence krubner, however indented passages are often quotes). You can contact lawrence at: firstname.lastname@example.org
I start working at a new place. There are 2 programmers that have been working there awhile. I look at their code. It is atrocious. I am left to wonder if they care at all what another programmer might think of their work.
A friend of mine starts working at a web design shop. Many of the programmers who are there have been there for 3 or 4 years. They are in the habit of cranking out bad code at a fast rate. Whatever spark of creativity they may have once had, it has been worn away by projects that are forever behind schedule. Their project manager encourages them to cut corners and go faster. Do they still care what another programmer might think of their work?
I take over an old website that was built by another programmer. Perhaps they were experimenting with new ideas when they created the site. The code is an unusual mix of objects and procedural code. Configuration information is stored in several locations – sometimes in ini files, sometimes in PHP “config.php” files, sometimes declared as global variables, sometimes as constants, sometimes hard-coded as initial values to object variables. Did this programmer care what another programmer might think?
A friend takes over the maintenance of a well known political web site. He finds that the original programmer had been learning programming and PHP as they built the site. Apparently unsure how to use functions, the original programmer initially triggered blocks of code by putting the code in separate files and then including() the file when necessary. That original programmer ran the site for 2 years, and over time clearly learned a lot about programming. The later code is better written, but the original code is still there. This programmer then moved on to better things, perhaps bored or looking for better pay. They did not bother to clean up the work. I’m asked to help out. The code is so bad that my friend and I trade snippets back and forth, laughing as we go.
1 year later. By a very strange coincidence, this same friend of mine takes over another site, focused on astrology, which just happens to have been built by the same programmer who built the political website. Now we see many of the same bad programming, including some bits of bad code that were apparently copied from the political website. To give an example: the original programmer decided to store some data in one database, and some data in another database. To switch between the 2 databases, the programmer had put database connection info in different config.php files, and then the code includes these different config files at different times. Some blocks of code actually go back and forth between the 2 databases, 3 or 4 times in the space of 30 lines. Most of the time the code is connecting to the database as the root user, so if the username/password was ever compromised, an intruder would have full rights to everything. We are now looking at code that this programmer wrote 4 years into their career as a programmer. They seem to have never cared what another programmer might have thought of their work.
I start working at a new place. I am told to talk to a programmer named John. He has worked at this company for 4 years, and he was the lead programmer for most of that time. He was hired to save the company. My co-workers speak of him reverently. They recall the way, during his first year, he would work 60 hours a week. They recall how he would gently chide them for writing bad code. They recall how many good articles about programming that he got them to read. Before John there had been another lead programmer, named Ben, who had what is described as “anger management issues”. Ben had been a terrible programmer, and John had seemed like a saint in comparison. But now John is leaving the company. During his first 2 years he tried to educate management about workflow issues in the company, and how they effected the tech team, but now he no longer fights such battles. He and his wife have bought a farm up in Maine. He spends most of his time there and he works remotely. It is hard to get a hold of him. He is working only part-time now. I look at some of the code he has recently written, and this code contains some bad anti-patterns, such as methods that contain 400 lines of code, and methods that have SQL hard-coded in them. After a month of working with him, I get the sense that he is a bit burned out. Does he care much what I might think of the code he is writing nowadays?
I think it is a pattern: the more programmers or web designers are at one place (or the more they work alone) the less they seem to care about the craftsmanship of their work. I wonder how places like Google and Facebook deal with the potential for burnout among their staff? I imagine it helps to have a management team that understands technical work. And I can imagine that being around other highly motivated folks probably helps. Possibly a constant inflow of new staff is necessary, otherwise even the best companies would settle into a stagnant state.Source