Shipping Is Enough, Sometimes
Interesting article at Coding Horror the other day. Jeff contends that shipping software isn’t enough to be a successful software developer, you also need to write stuff that people actually use.
A smart software developer realizes that their job is far more than writing code and shipping it; their job is to build software that people will actually want to use. That encompasses coding, sure, but it also includes a whole host of holistic, non-coding activities that are critical to the overall success of the software. Things like documentation, interaction design, cultivating user community, all the way up to the product vision itself. If you get that stuff wrong, it won’t matter what kind of code you’ve written.
His premise is good. Working on popular products or websites certainly beats the hell out of working on stuff nobody looks at. One of the great secrets of software is that there is really very little difference in the amount of work that goes into programming a popular product than one nobody uses; sometimes there is even a lot less. And more importantly, what makes one successful has little to do with programming, either. It is more often marketing, or product positioning, or bundling/cross-promotional tactics, or little UI differences.
So let’s all join the winning team! Yeah!
Unfortunately it isn’t really so easy back on Earth.
Of the things Jeff enumerated, several of them may fall into the developer’s domain. We often do interaction design (or at least should) during requirements gathering, figuring out an interface that is workable for our target audience. We also end up getting involved in the vision business, whether they want us to be or not. *grin*
“Cultivating (a) user community” is another thing entirely, however.
The majority of programming work is (seemingly) at places where what is to be done has already been decided. The company wants to create a new module for their accounting package. The government agency wants to make a new site to promote some new initiative. The contractor needs to make an online store for the local book shop. We are basically brought in for implementation duty; in the best case scenario we get to design some stuff from scratch, but most of the time we end up working in some framework or coding to somebody else’s API. These organizations have other employees or divisions who are tasked with selling the stuff we create, and we don’t have a whole lot of influence over their success.
If we decide we only want to work at places that already have a substantial userbase, we are signing up to work at places with established products and developers, where we will have relatively little input personally over the environment we operate in. Unless we work at a place like Google, where every little site they pop out gets 50 million hits in the first 24 hours, and they are a little selective about who they hire.
Working at up-and-coming places gives us much more input and the ability to try out our promotional skills, but at the cost of knowing ahead of time if they will be successful or not. Choosing a place that is building something with potential is critical, but lots of ideas sound good before they are introduced. Many times even great ideas have bad breaks, or end up failing for reasons that were totally out of the control of the company supporting them.
Long story short, managing your programming career is a matter of navigating a bunch of tradeoffs. As your experience and talent levels rise, new opportunities open up that make the tradeoffs less obvious. You can move from coding monkey to journeyman to professional to manager to CTO-founder material in a couple of years, earning chances to jump in on promising ideas and join better teams more often. Or you can just round up some buddies and do your own thing. No matter what you decide, it benefits you to learn a little about promotion, marketing, and (especially) networking with other people, since these skills can only open up more chances for you to reach your potential.
Guaging your success purely by the number of people using your software is a mistake though. As fun as it is being the center of attention, getting there often involves sacrifices in either the types of projects you take on or the types of places you work at. Choose wisely.
Til next time.
Posted: January 23rd, 2007 under Business.
Comments: 6
Comments
Pingback from Best of Feeds - 29 links - blogging, seo, programming, search, google, humor « //engtech - internet duct tape
Time: May 21, 2007, 7:03 pm
[…] Shipping Is Enough, Sometimes (mikeomatic.net, 2 saves) […]
Pingback from Programming Advice for Newbs « //engtech - internet duct tape
Time: May 21, 2007, 7:06 pm
[…] UPDATE 2007/01/23: Coding Horror has a decent follow-up. As does Mike-o-matic. […]

















Write a comment