Saturday, February 01, 2014

Be a Product Developer

From time to time I am asked what I do for a living. People in my line of work know that this isn't always an easy question to answer.

I could legitimately say that I am a "computer scientist". I have two degrees in computer science from an accredited program at a brick-and-mortar university. I've done research, published papers, filed patents, and worked at a national lab sponsored by the National Science Foundation. I'm a believer in the scientific method and being evidence-based. And anyone who has worked with me has got to believe that I like to teach. But being a scientist is not really what I do for a living.

Back in the 1970s I was called a "systems programmer". I have always liked that title and the distinction it draws with an “application programmer”. But alas that nomenclature has fallen out of favor.

I don't like the term "software engineer" because although much of what I do is engineering, to use the term "engineer" in a title has legal and certification requirements in many states (although not where I live, in the great state of Colorado).

I could use "software developer". For sure I write a lot of code. But I don't feel that term really describes the set of skills that I bring to the table.  But there's a better reason that I don't like it: for a software developer to consider themselves successful, they have to develop working software. While developing working software is a hard enough job indeed, it's a far cry from shipping a product.

So I choose to call myself a "product developer". This implies a broad range of skills and capabilities ranging from product definition, process, architecture, design, implementation, testing, maintenance, field support, decommissioning, and even occasionally management; soup to nuts, across the entire lifecycle of a product, that's what I do.

But more importantly: for a product developer to be successful, they have to ship a working product.

No matter what you may do day to day -- sales, product owner, project management, systems engineering, quality assurance testing, hardware or software development, lab support, field support, what have you -- I would encourage you to think of yourself as a product developer. All of those activities are necessary to ship a working product, but none are sufficient. Although perhaps you contribute to one or two of those activities, for you to be successful as product developer, all of them have to be done.

All successful product development projects are team efforts, because it takes a team of product developers -- diverse in skills, culture, and experience -- working together to make it happen.

No comments: