Code As Craft As Career?

05 Sep 2014

I see 2 paths of career programmers around me: 1) transition to leadership, 2) keep coding, master its craft. Respect to people who follow either, if that’s what you like. I lean toward the 2nd path because I like creating. Really though, I want a 3rd path, something fundamentally more productive than coding.

It is still an enormous, almost-but-not-quite rote, still error-prone task of spinning up a quick idea. It takes years of practice to robustly instruct the computer in even a trivial task, in the robotic equivalent of making a sandwich.

So I study up on the latest languages. Or frameworks. Or someone mentions inversion of control. Or to be judicious with regular expressions. “Yes. Cool. I appreciate that tip. I’ll add that to my toolbox.” And back to coding. Better than before. But largely business as usual.

Am I the only one looking for something more?

Will you reminisce fondly of your favorite language's internals?

Meanwhile code craftsmanship may be polishing the brass on the Titanic. I don’t mean career programmers will drown right away. You will have your place for the foreseeable future, as long as you put some effort into ongoing learning. But if history is any indication, technology accelerates forward. It does not move at a constant rate. There may be less time for you than you think.

We see whole creative industries marginalized or eliminated by production at scale.

Lovingly Hand-Crafted, ExpensiveGood Enough, Cheap
Personalized table by a WoodworkerIkea
Ornate lettering by a TypesetterAdobe Illustrator & a commodity laser printer
Code???

Never heard of a typesetter? The End of Coding as We Know It explains.

The future had looked bright for typesetters. Their highly skilled profession involved the careful layout of huge amounts of text. Printing was a major growth area; one of the great technical endeavors of the industrial revolution. It was a great job, well paying, and with a lot of esteem. It was a smart career choice, surely a job that would be required forever.

Finally, the growth of desktop publishing killed it. Much of the beauty and art of the layout was lost. Computers, even with good font hints, don’t generate the same quality of output, however, consumers no longer appreciate the difference. High-quality typesetting became a lost art.

As a web programmer, you scoff at the notion of Adobe Dreamweaver or Squarespace. “Those can’t do what I can do by hand! Notepad.exe for life!” And maybe those WYSIWYG editors never will match your handmade code.

However this response is similar to the scoffs of the above woodworker and typesetter, now marginalized. They learned the hard way that people don’t want everything ornately handmade. You can sob all you want about how the times are changing, that nobody wants craft anymore. Most consumers though will settle for cheap and highly available. Economics wins.

How long until hand-coded websites go this way? Databases? Cloud infrastructure?

Don’t limit this to just the web. Think how this might apply to your insistence on text being the be-all-end-all of programming.

(Or, a little further out, humans programming at all.)

So I’ve leaned on code as craft for a while. I don’t like to ship buggy code. I don’t like it when my past code architecture comes back to bite me. I’m pleased when it reads and operates elegantly, whether a customer ever appreciates that or not. I’m pleased when this lets me predict requests and outmaneuver competitors. These are not things you acquire from a book. They require practice. Yet it’s all incremental.

I appreciate the boosts, but I’ve never met a coding technique or tool that gave me a 100x programming productivity boost. This discourages me from code as craft as an ultimate career option.

“Programming is hard,” you say. “How can you expect a 100x boost?”

Because humans created coding. We created it for a boost. If we look beyond the faster-horse mentality with our current programming methods, we can create a better way.

Admittedly, I’m not prescribing how here. I’m just pitching the idea there’s something better.

Call me an expert beginner. Maybe I hit a local maximum with techniques like OOP, FP, TDD. I certainly didn’t master them. I appreciate their takeaways. But I don’t see them putting me miles ahead if I continue to study them for 10 years. If I’m wrong, if I gave up too easily, please reach out with a, “Trust me, you’ll never look back if you stick with X.”

Side note regarding the holy wars between these competing techniques. Think the above OOP, FP, TDD, or Emacs vs. Vim, spaces vs. tabs, Python vs. Ruby. The fact our industry hasn’t unanimously adopted one side or the other and moved on indicates that neither is sufficient. Fighting for the side you happen to be on is not worth the stress. The technology that ultimately matters is not some hotly debated contender. What matters is the technology where you forget what the old way of doing things even was.

Did you know there was a typesetter profession?

This is why I try not to be bogged down by the Hacker News firehose of new coding tech. My practice of specific tools in the present won’t be a total waste in a few years when a new set of tools becomes trendy. You might say this is because fundamentally programming doesn’t change. More direly, it’s because how people program hasn’t changed.

I want a change! How programming is done is stale. I want to create faster, more richly. I don’t think text coding can offer that, in the long run.

So tell me, is there a 3rd career path? Or are my only choices 1) give up direct creation and move into leadership, or 2) polish my text?