Mar 20, 2008

The Difference between Programming and Software Development

In short, programming is fun. Software development is not.

There is essentially no difference between the two, except that what geeks and normal people call programming, business people call software development (I think the size of the words they use shows that they are trying to reflect their big...ego). In fact, I would have to say that the term "development" doesn't quite reflect what actually goes on. Development implies some sort of growth, as in "the economy of South Korea has developed quite quickly over the last few decades" or "I have developed a tumour in my ear". Software doesn't develop, it is designed and programmed. While the design may change, I would never call it growth - unless you're talking about the Windows underlying system, which from my perspective has just been growing (like a tumour) since the dark days of the 1980's.

Programming, sometimes referred to by geeks as coding, is fun - provided you're a geek. You program random things for the hell of it, not caring when or if it will be finished, or what people will think of it. You do it because you want to. I find myself a lot of the time re-inventing other people's work, just to see if I can also do that. Maybe other programmers do the same, or they program to do cool stuff or to try something new. Whatever their reason, they do it because they want to.

For many of us, we realize that we like programming and think, "Hey, maybe I could do this for a career." And why not? We like it and it pays well, what's not to like? Unfortunately, fun stuff is usually not what makes the money. Making massive changes to software, planning the software, or debugging the software for hours, etc. You design it not to your specifications, but to what the users/bosses want. It is not coding for you, it's coding for them (see Jeff Atwood's UsWare vs. ThemWare). This reduces the fun factor of programming by a lot.

So what do we do? All things considered, we don't have it so bad. A lot of jobs don't really take all the fun out of programming. We get paid very well for people fresh out of university, and we can pretty much just sit our butts all day.

Personally, I see software development as a great way to butcher a long-time hobby of mine. I no longer want to program when I go home, I just want to sit around and watch movies or play games, or blog about how programming in the real world sucks. Why not just get a job in another field and do programming in your spare time?

5 comments:

Anonymous said...

yep...u are right there

thecodewitch said...

Programming, sometimes referred to by geeks as coding, is fun - provided you're a geek. You program random things for the hell of it, not caring when or if it will be finished, or what people will think of it. You do it because you want to. I find myself a lot of the time re-inventing other people's work, just to see if I can also do that. Maybe other programmers do the same, or they program to do cool stuff or to try something knew. Whatever their reason, they do it because they want to.

...

Personally, I see software development as a great way to butcher a long-time hobby of mine. I no longer want to program when I go home, I just want to sit around and watch movies or play games, or blog about how programming in the real world sucks. Why not just get a job in another field and do programming in your spare time?


I am your clone.

"Get a job in another field and do programming in your spare time" - I've had the exact same thought.

Because my 9-5 "software development" office job sucks a lot of my time and energy away, I don't have the patience to spend time getting linux tools working, which is where my linux rage (as opposed to hate - despite my loony comments in LH blog, I don't actually hate it) comes from.

I want the OS and the IDE to get out of my way when I'm working on my personal projects and my spare time programming, because I want to enjoy the thing I'm experimenting with and creating, not what the tool I'm using to do it.

Happy coding!

Rob Britton said...

> Because my 9-5 "software development" office job sucks a lot of my time and energy away, I don't have the patience to spend time getting linux tools working

Actually, since writing this post, I got out of the 9-5 coding and am now working for a start-up. I do it from home most of the time, with occasional days in a loft with the others. It's a really great change.

> I want the OS and the IDE to get out of my way when I'm working on my personal projects and my spare time programming, because I want to enjoy the thing I'm experimenting with and creating, not what the tool I'm using to do it.

I feel the same way sometimes, but other times I think that the time investment you make into a really good tool (despite it's learning curve) pays off a lot in the long run. Two examples that come to mind for me were learning Linux, and learning Vim. Now, when I want to experiment with something, I have tons of libraries at my disposal through Synaptic and I can pump out code faster than before using Vim. So while at first, the OS/IDE may get in your way, but after you learn how to use them well they will speed you up bigtime.
Another rationalization: I will probably be coding for the next 40 or so years (maybe not for a company, but for myself), so what is a few months to get accustomed to a tool that will benefit me for much longer?

thecodewitch said...

Thats true. Sometimes, old habits can prevent you from seeing that there is a better way.

Its good to hear you have found a good rhythm in your work.

At the moment, I've settled on Visual Studio + Perl+Tcl/Tk for my development environment. I use perl typically as a template code generator. When I'm not procrastinating, this is a cozy, productive arrangement. I build my own harnesses for testing and debugging, so all I need from the IDE is that it keeps track of the build and the source files, and provides ye-olde standard line debugging.

Kudos for using Vim! I'm a little envious, because I'm definitely interested in the whole closer mind-machine connection Vim promises, but sadly, in practice for me at least, it is too easy to revert to my trusty modeless editors. My excuse is that computer keyboards are designed for modeless editing paradigm in mind - they feature the backspace/insert/delete/tab key, with the "function" keys for custom commands. But that link you posted (http://www.viemu.com/a-why-vi-vim.html) may have convinced me to give it one more try...

Rob Britton said...

> Thats true. Sometimes, old habits can prevent you from seeing that there is a better way.

Definitely. Actually, I used to be a very vocal Linux-hater. It wasn't until the hardware reqs for Vista were announced that I really became disappointed with Microsoft. I decided to give Linux another go, and well, here I am. Not quite loving it, but not looking back to Windows.

I do miss Visual Studio's debugger, although DDD pretty much does what I need it to do. However, I rarely do C++ work anymore, so it's a non-issue.

I've been really impressed with Vim. I've only been using it for about 2 months now (judging from when I wrote that post about it), so theres still a fair number of tricks that I haven't mastered.
Don't worry, modal editing isn't so bad.
I could write another article about what I like about the editor. In short though, it is all the little handy editing shortcuts everywhere that make the learning curve worth it.

The way I stuck it out is by forcing myself to use Vim for any text editing I would do, and keeping a shortcuts page open for reference. It's funny, when I first started I figured I'd get tired of it after a week or so, but the more you learn, the more you want to know what else it can do, and after a point there isn't really any desire to turn back.