"If you plan to be doing the coding in a year or two, you're doing it wrong," one of the advisers told me when I was starting my first startup a few years ago.
Ha! What a silly notion! The whole point I’m doing this is so I get to hack on interesting technologies all day, learn a bunch of sexy new tools and get to work on something I care about.
Startups are often built using the latest and greatest technologies. A while back it was PHP in favour of static HTML, then Python in favour of PHP. Lately it’s been Ruby on Rails or node.js in favour of Python … in the future, who knows. I hear Scala is becoming very popular.
It seems, then, that a lot of technical founders start with the same romantic notions of coding freedom as I did. Seeking coding nirvana – that wistful notion of being your own boss, setting your own deadlines, choosing your own technologies. Solving only important or at least fun problems.
Reality for a founder is a bit different. Far from coding nirvana, it makes being a good programmer nearly impossible.
- A founder must be pitching 50% of the time.
- A founder must keep the lights on.
- A founder must do customer development.
- A founder must tend to company vision.
- A founder must keep tabs on their industry.
- A founder must take responsibility.
- A founder is often _the_ customer support.
There’s a lot going on in a startup and because there’s nobody else to take care of it all, these things fall on the shoulders of founders. All of them take a lot of attention, if not time.
Programming is hard.
There’s no getting around that, no matter how good a programmer you are, no matter how experienced, it’s just hard. Programming doesn’t require a lot of attention, it requires all of attention.
After all, you’re dealing with vague ideas. Ideas that are hard to remember. Ideas that interact in delicate ways. Ideas you have to keep in your mind all at once.
The entire system must fit in your mind at least on some level of abstraction – you can’t code if you forget what a function does, or forget what your data looks like, or which file something is in…
Programming takes a lot of concentration. Period.
Have you ever tried concentrating when your mind was full of Important Stuff(tm)?
It doesn’t quite work, does it? You want to focus, you want to get real work done. Just that there’s this giant pink elephant in the room. It’s staring you right in the eye. No matter how hard you look the other way it won’t leave you alone.
In the end, after hours, you are left with no real work done and a giant pink elephant. Except now he’s taken a dump as well. Sure, you could take care of the elephant first, but then you aren’t producing any code. Sometimes for months.
There’s a reason why a lot of products stop dead in their tracks while the founders raise the first round.
Another thing programming requires is time. Plenty of it. Long, uninterrupted chunks of time.
Four hours is a good chunk to start with. Plenty of time to load everything into your brain, get in flow for an hour or two, then wind down before your next thing. There’s even enough time for a break or two to make sure you don’t go mad.
Two hours… yeah, that’s okay. If you’re using the pomodoro technique and have found a way to get in flow five minutes after the clock starts ticking – then two hours is perfect. Marvelous even! Otherwise it can be a bit short.
An hour… well maybe you can fix a quick bug or two. But you won’t get anything hard done.
Half an hour… laughable.
Now, as the founder of a startup, one of the people in charge of keeping the place running, perhaps managing a coworker or two… How often do you think you will get four hours of pure uninterrupted time? With no meetings, no skype calls, no urgent emails, no servers crashing, nobody asking a question?
You will be extremely lucky to get two.
And remember, those two hours are useless if there’s something on your mind. An important meeting right after the two hours? Right before the two hours? Forget about it, you’re not getting anything done.
A good question. I don’t have a real solution.
Your best bet is conceding you are no longer at your most valuable as a programmer. Spend 30% of your time or less in the code just to maintain a feel for everything. Mess about with some light bugs when you have the time, otherwise leave it to your rockstars.
That doesn’t really work for fresh startups. The ones that can’t afford to hire programmers yet.
Then you must have a team of cofounders big enough so you can have one person worrying about things. The technical founder must be as free as a bird.
Do whatever it takes to get your mind off of things, meditate, partake in violent sports, go on long walks, anything that lets you focus on the code instead of worrying about the proverbial farm you’re betting.
Hire more programmers as soon as possible. Shield them from Real World Concerns(tm) at all cost.
Other than that… I hear some people can be founders during the day, programmers during the night. This leads straight to burnout and madness, you can’t do it for long.