Scripting News: After X years programming

Dave Winer, as always, puts it well:

First, most people don’t program that long. The conventional wisdom is that you move up into management long before you’ve been coding for 37 years. Only thing is I don’t see programming as a job, I see it as a creative endeavor. And I drew a big circle when I started, and said I was going to fill the circle in my career. So until the circle is full, I still have more to do.

[From Scripting News: After X years programming]

I don’t like the term “programming”, but I 100% agree with him.When I am at Dave Winer’s stage of my career in this field I hope to continue building software. I’ve been doing this since I was in my late teens, I enjoy it no less now. If I were unemployed I would still be developing applications — but these days this lands you a new job pretty quickly, or gets you a contract gig. In fact, the only time I was laid off after dot-com crash I was unemployed for no more than 3 weeks — and all during those 3 weeks I found an open source project to contribute to and immediately got a contract gig because of it.

The point is, though, that everyone should have a craft. You can’t be both a good manager and a good developer at the same time. Pick a platform, pick a language you are good at, and stick to it. Most importantly, pick a craft. Without a craft you are but a wind sock flapping in the wind.

An experienced developer knows to make the right decisions earlier in the process. They know when to correct course. They know when to stop, take a break, and think about their work. They never actually do stop thinking about their work — even when they are not coding. I often find myself accomplishing tasks in minutes what a less experienced developer would take hours or days — only because the problem and the solution are immediately apparent.

Software engineering is a creative endeavor and don’t let anyone tell you otherwise. My goal as a career software engineer is to be sought out as an engineer. I build things. I create stuff. Good software takes time, and has to be done at the right pace. Rush things — and you will never get what you wanted.