There’s an interesting discussion going on on Hacker News, about “coding fast” and the mythical “10x programmer”. I know at times I’ve been that 10x coder, and at other times I was the 0.1x guy confused in the back, so I was curious to see what others were thinking.
The discussion centers around learning languages and becoming comfortable with the features, the APIs and your tools, but some comments focused on another area of programmer productivity that can be called “Knowing what to write”. Domain specific knowledge allows you to have huge boosts in productivity since you only code what is really necessary, and you don’t waste time coding peripheral features or get mired down in struggling with where to start and how to move forward.
The discussion is here: http://news.ycombinator.com/item?id=590460
So I have one suggestion for both building domain specific knowledge and avoiding the slump of getting stuck, or writing unnecessary code: Prototype and Iterate! It’s already a fairly well established idea in design and programmer circles, but the advantages of prototyping becomes even more clear if you consider it in the light of learning a domain.
That 10x programming speedup you’re looking for probably lies in coding simple systems, and building on top of them, rather than spending hours writing code that “will come in handy later” or attemping to complete some set of the code before moving on to the next.
My friend Marcello mentioned the amount of projects he’s started – much more than he’s ever finished. I think that this points to going through the process of learning a domain by building prototypes, throwing them away, and letting your ideas organically grow as you build things.
So let’s go be productive!