I'm an old fuddy duddy and I like it...how to be a great coder by a mediocre one...

I was reading the excellent interview with Donald Knuth on InformIt and it led me to reflect on my own thoughts on programming. I learnt development under the gun...I wrote websites for a pure and simple reason, to make money for my employers. The best techniques to use when creating this software were those which led to the best result for my clients. Oh, sure I experimented with Patterns, read just about every book on coding and general techniques over the past 10 or so years and I've worked with some of the most inspiring designers, coders, scientists and business leaders I could find. With each project I worked on I tried to learn from my mistakes...I HATE making mistakes and it's led me to push myself...and frankly led my career far more than any conscious planning has.  
I'm not saying that I'm some cutting edge development mind...I'm not, if anything I'm an extreme pragmatist, in my personal and professional life practical is far more important than trendy. I moved between a few different programming languages over the years, following the technology to where it made sense for what I was trying to achieve. When I started out I was writing small security testing utilities which mainly ran on NT 3.5 Servers (and Windows 95 boxes). I didn't need a powerful OO based language and the quickest way to write this stuff was using Vi or EMACS with C or Perl...so that's what I did. The work I produced was utilitarian, pared down and quick...and frankly it paid well for the couple of years I wrote that stuff. I then moved to the web...at the time the 'best' technology for writing the type of site that I worked on was VBScript based 'classic' ASP...it was quick, had a nice development tool (for the time) and I developed techniques for making this stuff maintainable, decent in terms of performance (at the time we had about 20 fairly popular sites running on a Pentium 233MHz server with 128Mb of RAM). I wrote caching engines, 'made up' design patters and learnt how to get SQL Server 6.5 to work with my code to get decent performance.
Frankly I got lucky, I had no family commitments to worry about and was able to take risks with my career...for a while I 'job hopped' to companies which I thought were doing interesting stuff...my next stop was the hottest design company in Scotland at the time...which imploded about a year after I left. At BlackId, I worked with a great boss and got a chance to find out how to work with external customers....in the process boosting my confidence in programming. I was doing stuff that I thought was pretty mundane but it worked, was quick and I was still interested in what I was doing (a HUGE thing for me, I have a terrible habit of 'drifting' if I lose interest in the task at hand). Soon after that I got the opportunity to head to a startup...Globalfarmers. This company was led by a real entrepreneur who luckily for me saw the passion I had for the web...so in one day I doubled my salary and got to lead a multi-million pound development project. At Globalfarmers much of the development was contracted out to another company and frankly the company was led by a bunch of farmers...they needed someone who *got* the web and could keep up with the development cycle...apparently they thought that was me!
At this new company the system being developed was huge...at the time we were expecting to pay about $2 million just for the software and the hardware to run it on. The system was J2EE based, used some third party forum software and an Object Oriented DB backend. A big problem was that the development process was truly 'waterfall' based, like a train we just couldn't divert the main process to be responsive to the world the company was in...wanted a weather information system...tough, wanted a news publishing platform...tough. Long story (kind of) short, I had to learn a technology which would run on our new Sun machines, I'd gone from MS based websites using SQL Server to well, nothing. Into this world came PHP and Allaire Homesite...the right technology for the right problem. I wrote a bunch of software (this is also why i still think PHP is awesome...running little bits of software on HUGE servers makes it seem well, pretty fast!). At this time I was also learning a great lesson in recruiting from a very smart HR person Niamh Donnellan, hire passion. I had a junior role going, my first minion! We interviewed some very experienced people with great qualifications...but none of them had that spark...seemed like they would take the job and make it something special. Until I met Jarlath, a young Irish guy straight out of college...relatively little experience but smart and full of passion for the technology. I can't emphasize enough how much this changed my mind on recruiting...qualifications and experience are great for senior roles but when you really don't know what a job will become, hire passion.
Anyway, this post became something more than I originally intended...hopefully it's not TOO boring. The point which I'm aiming at was I think what Knuth was talking about...the 'latest thing' is fantastic, it builds passion and inflames hearts and minds...learn it, know it, but when it comes down to it you have to actually build something. This, for me is pragmatism all the great people I've met over the years have known this...learn everything you can but retain focus...always ask, 'can I use this', will it make what you're trying to achieve easier or more pleasurable or are you blinded by the 'new and shiny'.

Here's my parting words...being a great coder is not a job, it's a lifestyle. You have chosen to be an artist, you integrate a million different colors to build a picture...but you should decide what those colors are...do they help make the picture or are you just painting by numbers. All of these techniques, OOP, Extreme Programming, Patterns based development, TDD, BDD, DDD they're colors in your palate...in the end it's your picture, you decide how you paint it  because really no-one else can. (This strained metaphor brought to you by way of Paul Graham's excellent essay (and not so great book) Hackers and Painters)

Print | posted @ Saturday, April 26, 2008 3:04 PM

Comments on this entry:

Gravatar # re: I'm an old fuddy duddy and I like it...how to be a great coder by a mediocre one...
by Michael Falconer at 5/9/2008 8:18 AM

Hi Scott, hope you're doing well (and recovered from the cold)! Thanks for the kind words in your post :-)!!
Gravatar # Scott Galloway: 70 large(ish) projects, 4 application frameworks (in 3 languages)
by mostlylucid at 5/31/2008 1:40 PM

Scott Galloway: 70 large(ish) projects, 4 application frameworks (in 3 languages)
Gravatar # Ok, time to get serious...
by mostlylucid at 6/6/2008 9:51 PM

Ok, time to get serious...

Your comment:

Title:
Name:
Email:
Website:
 
Italic Underline Blockquote Hyperlink
 
 
Please add 5 and 2 and type the answer here: