Yesterday I wrote about the challenge I faced when trying to make a relatively simple software application. On the one hand, the idea seemed simple and relatively trivial. On the other, it turned out to be technically difficult to implement. Those two ways of looking at a problem separate two jobs at my office,1 the Program Manager and the Developer.
A PM (as we call them) is responsible for a large number of things that I don’t really know about, including talking to the marketing people and planning which features to implement when. A developer writes the actual code, including the design of the ideas in that code. There seems to be a divide in the world of software programming. Cranky product managers see developers as nerds interested in technical details. Developers see PMs as a way to do all the boring stuff that no one really cares about, like putting lipstick on the pig. In fact the whole overwhelming process is written up a number of times.
But I digress. That complex process is thought to be necessary by some, and horribly inefficient by others. It obviously depends on your situation, and I don’t really care. I do however care about the people in these jobs. In my relatively limited experience, I find that, in general, program managers think completely differently than developers.
A PM thinks in ideas. “This is how it should work” says the PM, and that is genuinely how they think. The experience from a user’s point of view comes first, and the technicalities are brushed aside. There are two consequences of this mindset. First, a good PM is forward thinking, identifying what the user expects, and what the user will expect. Second, the PM’s ideas generally reflect a practicality in the marketplace, since they look at things from the user’s point of view.
A developer thinks in bytes (or structs, or Objects, or statements). “This is how I would build it” says the dev, and that is genuinely how they think. The computer’s inner-workings come first, and the user experience is brushed aside. This is why the developer has 11 programs which correctly sync her personal and work calendars, contacts, email, and which text her when an important message comes from the boss man. Maybe there’s a python script which hooks all those together in some crazy way which I leave you to imagine.
The two points of view work in separate and often contradictory ways, and both are completely necessary for good software development. Without the PM, you wind up with the coolest but most impossible-to-use program, and without the dev you wind up with the most useful idea that cannot possibly be written.
And so, the eternal struggle will continue, indefinitely.
Notes
1. At other offices, the two positions are apparently named slightly differently, but you should be able to figure out which is which
Post a Comment