LordKingSquirrel.com



Things I’ve Learned As A Software Developer

April 30th, 2007 · No Comments

Tagged with:  

Rob Elkins over at Rise and Shout points to a great post by Andrés Taylor titled “Top ten things ten years of professional software development has taught me”.

Hard to believe, but I’ve been programming since 1984. (Yikes!) In the spirit of Andrés’ post, I’ll list a few of my observations.

  1. Don’t get wed to a single technology.
    I started out on the old IBM PC with DOS 1.1. I’d guess that a great many programmers have never even seen that set up. Without continuing to learn new technologies and techniques you can’t move on when your pet platform goes balls up (and that will happen).
  2. The basics will take you far.
    While some techniques come and go, the basics stay relevant. The concept of a for loop is the same in a great many languages. It’s just the specific implementation that differs. Once you understand a concept, you can move from language to language fairly quickly. Recent example - when I started at my current job, I was able, on my first day, to rewrite several AML scripts to automate a process that was then being done by hand. I didn’t even know that AML existed until that day.
  3. Holy Wars are pointless.
    When I write an application, I worry about things like readability, UI design, and performance. I don’t spend my time worrying about whether RMS will approve of my license choice, or if I am lining Bill Gates’ pockets with solid gold dryer lint. From a management perspective, it’s not that critical either. Linux, BSD, Windows, OS X, are all just tools to get a job done, and all provide an excellent environment to work in. I certainly have my preferences, but they are from a pragmatic viewpoint, not a religious one. If you let your tech religion alone dictate your professional life, you will be sorry in the end - just ask all the System/34 “RPGII is all I need to know” die-hards from the mid 80s.
  4. Beware eccentric geniuses.
    Long ago, I worked with a guy we’ll call “A”. “A” was a genius. Everyone knew it. Now “A” wasn’t a bad guy - he didn’t lord over us mortals with his geniusity (I just made that word up btw). He also didn’t bathe, or wash his clothes with any regularity. I remember we once worked out how to generate a tiling scheme for cell phone tower coverage areas using some wild topology (topology as in the Mathematical sense, not the general GIS sense). But as a programmer, he was crap (sorry “A”). His code was obtuse, poorly structured, and generally sloppy - much like his life and personal habits. I’ve worked with others like “A”, and it’s nearly always the same. Their ability to solve abstract problems is unmatched, but making those ideas work (i.e. implementation) is best left to someone a little less eccentric.
  5. Not everyone can be a programmer.
    (Disclaimer - My definition of programming includes things like system architecture design and analysis as well as straight coding) Programming is basically a branch of Applied Mathematics. Programmers use a lot of Mathematical concepts (set theory, graph theory, etc) to do their work, even if they may not realize it. That means that a good programmer has to understand these concepts (not necessarily at the same level as a Mathematician, but still…), and many people that try to program simply don’t get it. Whether you get this understanding from formal education (like I did) or on your own, you have to have it. I have seen too much code written by people that didn’t get it to ever think differently

I’d be interested in hearing from other developers on things they’ve learned in their careers.

0 responses so far ↓

  • There are no comments yet...Kick things off by filling out the form below.

Leave a Comment