Personal tools

Jobs-Ification of Software Development

Try not to Jobs-ify the task of software development.

Steve Jobs is lionized because he put a bunch of nerds to the task of
building computers and applications that worked "for the rest of us". He was
good at getting people to create interfaces that made it hard for other
people to fail while attempting to perform a task. To fail at something, you
have to be able to make at least one choice while trying to do it. The fewer
choices you can make, the less catastrophic making the wrong one feels,
because often you can remember making it and "unmake" it. And, by extension,
you can't fail at all if you are preventing from making any choices. People
love needing to make fewer choices because it absolves them, at least
partially, of responsibility for failure. Fear of failure can be
debilitating. As long as the boundaries of limiting choice are acceptable to
the above-average person, and limiting choice helps the average person to
complete a task that was previously not completable, everyone wins.

But people who work in a creative job aren't responsible primarily for
"completing tasks", at least not in the same sense that people who have jobs
without a creative bent. The "tasks" that a creative person must complete
are ill-defined, and carry a larger set of inherent risks. The task may have
just never been done before. The "task" may actually be 50 discrete tasks
hiding under the guise of a one-word conceptual definition. The "task" may
not be completable by one person or entity. The real task might be just to
figure out that the proposed task isn't worth doing. It often takes 10 or
100 times more work to just define a creative task than it is to actually do
it at the end. No choice-limiting strategy works universally to perform a
creative task, because nobody really knows the full scope of a creative task
before they start to do it. If they did, the task would not be creative; it
would be rote, and it'd probably already be done.

Therefore, creative people, by necessity, learn not by succeeding but by
failing. Failure is always an option when you are doing creative work. If
you don't repeatedly and painfully fail at something, you won't really have
learned it, and you won't be able to be creative in that medium, and you'll
likely be useless at your job. You might know a lot about it, and you might
even be able to hold a cogent conversation about it, but you won't really
know it unless you have made a complete mess of it at some point. If you
have a debilitating fear of making choices as as creative person, you're
probably in the wrong job; you'll never be very good at it.

Software development is a creative job. Pressing buttons isn't creating.
Choosing which button to press isn't a choice in the same way as choosing
whether a button exists or not, or even deciding whether there is the concept
of a "button" or a "press". The task of software development isn't a job
"for the rest of us", and never will be. "Jobs-ification" doesn't work at
this level. If you want what you're doing to be easy, straightforward, and
risk-free, it's probably not worth doing as a software development project.
You should have probably just used an application instead of trying to
develop your own software.

Don't fear choice as a software developer. Don't try to maximize the outcome
based primarily on technology choice. Instead, pick a set of technologies
that you believe is acceptable and use those technologies to their limits to
maximize the outcome. Any reasonable set of technologies can produce
acceptable outcomes in most circumstances. If you fail, so be it. For the
majority of software developers, failure is not only an option; it's often
the right option, if it means you end up learning something quickly enough
to avoid a larger failure later. At least when you're faced with a similar
choice in the future, you'll have some experience under your belt, and you'll
be better equipped to maximize for outcome based on technology choice or
sheer skill. Don't pray for your competitors to fail; pray for them to
succeed too soon and pray that you fail right on time.