A set of lies has persisted for the past fifty or sixty years (really) that interferes with our ability to clearly define software and software developers. Let’s agree to drop the pretense and try to see developers clearly.
Let’s begin with what a software developer is not (and what software is not).
A software developer is not:
- an artist
- a tradesman
- a craftsman
- a member of a sports team
- an engineer
- a scientist
- a coder
- a guru
- a rockstar
- a chef
- a wizard
- a novelist
- a builder
- a machinist
- a laborer
… and software is not the product.
To paraphrase Sir Arthur Conan Doyle, “when you have excluded the things that software developers are not, what remains, however uncomfortable, must be the truth.” So, what remains? Something new.
A software developer is a new kind of specialized operator, and he always has been.
He’s an:
- expert in his field
- trained in multiple techniques
- adept at changing tactics to fit the challenge
- dedicated in purpose and mission
- and when teamed with others of like mind becomes capable of overcoming almost any obstacle to deliver the desired outcome
A software developer has the added skills:
- understands the problem set
- carries experience from each project but recognizes the new is not the old
- learns patience for the long-term outcome
- knows how to continue forward in the face of working impediments
This is what the software developer has been the whole time, but academia, industry, corporate management, and even software developers have wanted to be something else; something easier.
This fifty-year search for something easier is precisely what has led to misconceptions that result in the entirety of project success or failure falling on one or two highly senior developers on every project giving heart, soul, time, and blood at the end of the project – usually called The Death March – so the project won’t become another steaming pile of paper success like so many before.
What’s So Hard About Being A Software Developer?
Even though, with Sir Arthur Conan Doyle’s help, the common myths about the software developer fall by the wayside, what do we know? What can we state about software developers that rings true?
Sure, a software developer has some traits from many of those skills or professions that we dismiss as inaccurate, but therein lies the seed of untruth that seduce the lazy mind to misunderstanding. Some traits cross professions and labels and facilitate parsing down to the core skills and abilities. (e.g., a software developer can exhibit craft; and a software developer may employ tools familiar to the engineer; and a software developer invents solutions and tools like a modern-day Edison. But the software developer is not a craftsman, nor an engineer, nor an inventor.)
Rigor demands detail. I submit a short list of the chief duties of a good software developer. To wit, a good software developer endeavors to become:
an excellent communicator | a first-principles thinker | a business and process polyglot |
an iconoclastic investigator | a problem solver | an inventor |
an adaptable antagonist | an inquisitive idealogue | a courageous fighter |
an advocate and peer leader | tenacious | a creative problem solver |
an intel collector | a time manager | a leader and guide |
And, oh, yeah; the good software developer should know platforms, data sources, logic tools, development environments, systems and enterprise architecture, prototyping and testing frameworks, and likely somewhere between six and twelve computer coding languages.
It’s a start. But it’s not the truth. Experience teaches that we can pass all of these traits through the management abattoir and we still won’t pull a fully-baked software developer out of the assembly line.
Next: Software Is Not The Product