Falling Down

Return of the Neanderthal

Earth Date 2009.11.29

Posted by Rich Wheadon | Permalink




I get a real kick out of the bickering in evolutionary circles concerning the Neanderthal man. I hear that race of humanoids actually digressed in knowledge and skill. Whether it’s all true or not about them actually getting dumber as time went on, I can only imagine what it might have been like getting DUMBER. How sad it is to realize that I see the challenge of lost brain cells occurring in the code I review on a daily level. Sometimes I just daydream about a whole generation developers that rises to the global epiphany of their lost stage. I chuckle as in my little dream they all speak in unison and say “You know, I’m so bad at coding I’m going to just quit and go into janitorial work as an upgrade.” I could only hope that these cut-and-paste cowboys would realize it’s a miracle their systems actually run. The sad part is that we’re talking pure attitude here, these folks could surge forward helping to create a better world for us all if they would just be a little humble and accept the criticisms that drive us all toward betterment.



Please don’t for a minute read this post and have any sympathy on the slack developers I am targeting here, there is no excuse for making nasty code. I’m not attacking those of us that write bad code, learn a few things and then come around to see how bad our previous code was and hopefully fix it (that would be the normal progression of development skills). The brunt of my tantrum is that percentile of developers that won’t learn. A good example of these folks are the ones who copy a chunk of elegant code, remark half of it, and turn the rest into deep nested ifs and gotos. It’s the person who doesn’t understand recursion and substitution. I’ve seen huge chunks of VB, LotusScript and JavaScript that did nothing (that’s right nothing) just because the person who injected it into a program wanted one or two little functions in the library.



When you question how a program can be such a train wreck there are lots of excuses:





… you get the idea.



I teach my 10 year old that what she does and says will have a direct effect on how people around her view our family and she actually gets it. When I tell programmers that their code and program functionality reflect on the whole team of developers (and even the entire IT department) to our customers I get rolled eyes, head shakes in disagreement, and even more often an “There’s nothing I can do about that” or “That’s not my problem” sorts of reactions. What a shame that the 10 year old appreciates the impact of her actions more than the 30+ year old that is supposed to be more mature and intellectual.



It seems this type of mentality is nurtured in RAD development. I must say that learning a variety of languages and placing myself with people that are far more knowlegeable with those languages has helped me a lot. If I were an evolutionist I’d start to justify the backsliding traits of people with genetics, races, and even chemical issues. But I’m not an evolutionist. I believe in creation. I believe in far more than creation, and my personal beliefs impact my attitudes and a drive for doing the best I can. I have no interest in pressing beliefs and doctrine upon this topic, but I think that for my peers to begin to excel the attitude of excellence must become an active part of every day decision making and creative processes.



When we as developers are posed with unrealistic timelines, “creative” project management, requirements that are unclear and the ever present threat of tunnel vision we must step back and assess our approach to solutions for the business. Users and those following through on an application have suffered enough at the feet of those who have bowed selfishly to the fast path. Instead of excuses and degrading coding lets spend a little time to show pride and good workmanship by making sure those using and maintaining our systems can do so without spending more time translating and fixing than the original code took to write.



How do we do our job better?




  1. Instead of transferring a process outline directly into code, gain an understanding of that process and break it into distinct pieces of logic.


  2. When you begin nesting logic, look at how to drive discreet methods out of the nesting, this will make your code easier to follow later.


  3. The minute you begin to reason out places the system users will need to be trained how to avoid messing up the data, stop and protect the user from messing up the data. This is far better than training them on what not to do.


  4. If there’s something in the code that isn’t used delete it now.


  5. For Domino Developers Every time you create a global variable (the ultimate in mutability) take your stapler and shoot one into your kneecap. Okay, I’m partially joking. Put one in your head, it will help everyone else. Seriously, this is a VB/LotusScript plague that must end. Global variables are very bad.


  6. Learn. A good developer never stops learning. I’ve heard a language per year makes a good guideline for developers. You pick the track and the languages or get some advice, either way in a few years you are going to find lots of ways to improve your coding and pump up that resume at the same time.


  7. Be willing to admit your shortcomings. Listen and participate in active discussion around code in general. If you work alone it is nearly a moral imperative for you to be visible in discussion groups so that you have a check and balance in place. This is last on my list but may be the most important if you care for my own opinion.



The end of all this boils down to personal frustration as I’ve lived a good part of the past few years in maintaining some of the worst code I’ve ever seen. Please don’t go away thinking I look at my work as perfect… holy cow, I stared at some of my code from 4 years ago that had me completely dumbfounded and confused. I wrote it, it was horrible. And immediately the code was re-factored to actually make sense. I was able to laugh at myself and move on, I grew… unlike the fabled Neanderthal. Maybe you can too.