Writing Myself Out of a Job
When discussing a project I'm working on with my wife, and how I thought we could get it done much earlier using certain practices, she was a little nervous and said:
By doing this, won't you write yourself out of a job?
My first, gut instinct was to say, "Yes! Isn't it great?!"
(Side note: It turns out that this was not the appropriate thing to say to an 9-months-pregnant woman who has allowed herself to be dependent upon you for her livelihood. But that's another matter.)
What I meant by that was this: It is the height of accomplishment in the software development/programming profession to create a solution so completely and reliably that you are no longer needed to add to or fix it. Now, reality tells us that this perfection is unattainable (or, at least, rarely attained), which is why I am not fearful of my livelihood. Systems are always used in new and different ways, features are added and improved, bugs inevitably surface and a programmer will need to be there to accomplish these things. Not to mention that, but there are always new problems which arise whose solution first appears to involve software.
Note that I said, "whose solution first appears to involve software." I did NOT say, "always involves software." This leads us to the next part I wanted to discuss:
Not All Business Problems Require Software
Another thing I've learned, and am still practicing (It's *VERY* hard to do), is that not every business problem requires more software as a solution. I find that people are most impressed and give me the best review/report when I am able to successful suggest a solution to them which does not involve writing more software. This is important because then people give you more credibility when you DO suggest software as a solution. Because they know that you're not just looking out for yourself all the time, or not locked into a robotic mind set where every problem is software-solvable.
To be most effective as a software developer, you must divorce yourself from software and see it only as a tool -- and not the only tool -- with which you create solutions. As much as we'd like to -- as "Software Developers" -- only do software development, like it or not, we're frequently called in by Business Folks to solve problems for them. Software Developer is a misnomer. We are "Business Problem Solvers" and our most effective and prevalent tool happens to be software. We are most useful and productive when we are solving problems in the BEST way, and not necessarily the PROGRAMMING way.