How this post got started
Reading a Dr. Dobbs journal tonight:
By Andrew Binstock, June 12, 2012
I dropped into the article to see how I measured up against his points. I culled the following bullet points:
The bad programmer in action is best described by Daniel K. Lyons, who put forth the following list of traits as a comment on my previous editorial. The traits are:
Their code is large, messy, and bug laden.
They have very superficial knowledge of their problem domain and their tools.
Their code has a lot of copy/paste and they have very little interest in techniques that reduce it.
The fail to account for edge cases, while inefficiently dealing with the general case.
They never have time to comment their code or break it into smaller pieces.
Empirical evidence plays no role in their decisions.
Whew! Those are all traits I tend to not like in developers – especially myself. But then there is this prequel message:
By Andrew Binstock, June 05, 2012
He defines two groups here:
- The Good guys – people who are adept and care about the quality of work in their jobs.
They block themselves from greatness by not having the curiosity or know-how at their command to be more than they are. That is, they refine their skills principally by continued application, not by learning new technologies — unless required to do so by job demands. Such programmers are at risk of slipping into the lower grouping by letting their skills atrophy.
- The Great Guys
the traits that most stand out are three in number: an excellent memory, a conspicuously wide knowledge of programming techniques and the judgment to know when to apply which, and a deep ability to relate details to the larger picture.
I’ve Seen Great Developers
It has been my experience “Great” developers have this crazy natural ability to dig into, dissect, and discern their technology, their tools, and their business domain all at once. To this day these people make me marvel at their God-given talent. Things which cause me to stay up late at night to stay caught up, they manage to accomplish before the end of lunch break, and only stay up late working on stories (a little Agile lingo there) because of Passion.
Being just a “Good” programmer
I fall into the “Good” category. But, having experienced the skills atrophy at a job that turned for the worse, going on a job hunt I soon learned technology passed me by. I was going on job interviews for a salary a California home-owner required just to pay the bills – and I was behind the 8 ball in skill sets. No go. I did a yeoman’s job catching up with technology beyond Hibernate and XSLT, even getting close to taking the SCJP (Sun Certified Java Programmer) after a period of study. My skills and knowledge were “match” enough for another employer to bring me on board – in Arizona of all places!
I am playing with more technology than I would’ve dreamed about in the other job, with more technology and frameworks coming my way (through work projects) month by month. It’s been great!
Atrophy! Danger! Danger!
BUT! I do not take this for granted. I am now:
- staying up on Twitter posts by Google, D-Zone, PC World (okay okay, not so technical, just more fun than anything) and some random Java-Dev-dudes.
- spending time weekly with a co-worker brushing up on SCJP skills – to take the exam
- enrolling in Mongo DB certification courses – which has now been put into practice at work.
- devouring technical books at the voracious pace of 1 every 4 months (Hey! I have a family who wants attention from her daddy/hubby!)
- Reading Dr. Dobb’s Journal online (when the article subject matter doesn’t give me a headache)
- Losing sleep to complete by Agile stories in a Sprint
- Splitting is a No-No in my book
- Yes, I have Split, and I hate it!
This is far less than a shining resume, but it serves to point out the importance of staying current in your vocation – no matter what it is. Sometimes we have to push ourselves even when we don’t feel like it. And yes, this is a hard thing to do. Acknowledged. I have an original saying:
“I grow the most when the bear is chasing me”
Feel free to use it. I haven’t copy-righted it. Yet.
The point is, deadlines, challenging projects, racing co-workers and demanding bosses, all force me to grow. I grow lazy & fat when those sharp bear fangs and claws are no-where to be seen. It’s much easier to sit and read G-Mail or Twitter or all day than coding something cool, or learning something new.
As a “Good Programmer” If we accept the challenge – and the sleepless nights it demands occasionally, looking back on our months and years, we will be amazed how much we’ve grown. Unless we are one of the natural “greats” who code all of Open Office over the weekend – in python – in their Spare time.
If we don’t, we usually find ourselves unemployed or in a REALLY BORING JOB, and atrophied, unable to stand on our own two feet. And probably not giving a crap to begin with.
I am comfortable that I am at least a “Good Programmer” who cares enough to keep my tool belt up-to-date enough that I can meet today’s demands, while ready for tomorrow’s demands.