I'm James Hague, a recovering programmer who has been designing video games since the 1980s. This is Why You Spent All that Time Learning to Program and The Pure Tech Side is the Dark Side are good places to start.
Where are the comments?
Programming Without Being Obsessed With ProgrammingI don't get asked this very often, and that's surprising. I ask myself it all the time:
If you're really this recovering programmer and all, then why do you frequently write about super technical topics like functional programming?Sometimes it's just for fun. How much memory does malloc(0) allocate? was a good exercise in explaining something obscure in a hopefully clear way. Those pieces also make me the most nervous, because there are so many experts with all kinds of specialized knowledge, and if I make any mistakes...let's just say that they don't get quietly ignored. (I am grateful for the corrections, in any case.)
But that's not the whole story.
If I don't code, I don't get to make things for all the wonderful devices out there in the world. Some people get all bent out of shape about that requirement and say "see, you're conflating programmer and product designer; you can do all the design work and leave the programming to someone else." That may be true if you're on the right team, but for personal projects it's like saying that writer should be split into two positions: the designer of the plot and characters, and the person who forms sentences on the page. It doesn't work like that.
The catch is, as we all know, developing for today's massive, deeply-layered systems is difficult, and that difficulty can be all-consuming: unreadable quantities of documentation, complex languages, software engineering rules and methodologies to keep everything from spontaneously going up in a spectacular fireball, too much technical choice. There's enough to keep you busy without ever thinking an original thought or crafting a vision of what you'd like to build.
For me the question is not whether to write code, but how to keep the coding side of my mind in check, how to keep it from growing and thinking about too many details and all the wrong things, and then at that point I've lost. I've become a software engineer, and I really don't want to be a software engineer.
That's my angle right there. Programming without being overwhelmed by and obsessed with programming. Simplicity of languages, simplicity of tools, and simplicity in ways of writing code are all part of that.
(If you liked this, then consider being an early follower on twitter.)