Just like one of the favourite startup queries by non-technical founders is “how to find a CTO” (see my blog post here), another one is the recurring question whether founders should “learn how to code”. If you are a non-technical founder, wondering if it’s time to start programming yourself, please read on.
With non-technical founders often struggling to find a technical co-founder or a budget to hire developers, or maybe being stuck in an inefficient technical development agency relationship or outsourcing agreement, I can understand where the wish to turn into a coding hero themselves comes from. Wouldn’t it be nice if any idea could be implemented immediately, if any change to the website could be rolled out instantly, and if that A/B testing campaign could start right in the middle of the meeting where it was conceived ? If you could build your own ebay and Facebook in a week, after attending a weekend workshop in “Ruby on Rails” ? Wouldn’t it be a wonderful world ?
The founders of one of the startups I am involved with came out of some workshop a while ago, announcing in the most energetic way possible, that they are going to learn how to code now, “because everyone in a tech startup should know how to code”. A few months later I put this to the test, and I distributed some instructions on how to run SQL queries to generate statistics reports to some team members, and I explained how to customise the queries depending on their needs. I have yet to see any evidence of any reports generated that way.
Just like with many other skills and professions, you have to expect years of experience before producing commercially viable results – would you trust an architect, a car mechanic or a brain surgeon with 100 hours of experience ? So what makes you think you could clone the Facebook mobile app, the Angry Birds game, or the ebay website, after attending a coding workshop, where the products you are comparing yourself with have been built by teams with combined experience of dozens or Hundreds of years and nearly unlimited funding?
When I did “Computer Science” lessons in school, we used the PASCAL programming language to build an analogue clock, where we had to “draw” the dial with numbers in a programmatical way on screen and animate the “hands” on it. Would that programme have been fit to run in the NASA Cape Canaveral space mission control centre ? Maybe not.
Let’s see what’s actually achievable.
I definitely agree that each member of a tech startup should understand certain technical buzzwords – and learn how and when not to use them.
There is nothing worse than non-technical founders blasting out technical buzzwords and pseudo-knowledge to prove their competence and startup worthiness, for example how they are “going live with their e-commerce site hosted for free on an Amazon EC2 micro instance”, or how they have to “rebuild their website with Python because it will improve their SEO”, or how they are “off to a recruitment fair to hire a full-stack developer to build their mobile app”. How often do people talk about “back-end” and what they mean is some “back office” / admin site like the WordPress admin panel.
It is super useful to understand enough of how a website and a mobile app actually work, from a high level perspective, to have more meaningful conversations with developers, designers, investors etc.
- What is web hosting,
- What is “cloud”,
- What is a database,
- How does a development life cycle look like,
- What are the typical roles in a technical development team,
- What are popular development languages,
- What platforms and languages are your competitors using.
That would already be a great starting point, before delving into the “node.js” book or joining the jQuery seminar. Or even knowing which of the endless languages or frameworks would actually be suitable for what you are trying to achieve.
After learning how to interpret and selectively ignore the buzzwords and learning what each of the other technical terms actually mean, at a high level “first paragraph on Wikipedia” kind of way, you have to set yourself a realistic target.
Fact is, founders are very busy people. How much time do you really have, between working on the marketing strategy, finding advertisers for your website, recruiting a social media intern, appointing an accountant, updating the pitch deck, and filling in that trademark application ? Maybe while still doing a full-time day job ?!?
Unless your ambition is general career change, or you already have some technical background, I don’t think taking a year out of the business (a year for a startup is more like five or ten years for a more grown up business) or even spending 4 hours time each day learning programming, will be time well spent for a busy startup founder. By the time you can contribute in a meaningful way as development resource your business will probably be dead.
What might be better use of your time is:
– Learn about prototyping: Often what you need to demonstrate an idea to others does not require the pain of a full product being built, sometimes all you need is a prototype that can show a concept, and allows you to gather feedback; it will also make it easier to communicate your requirements to both non-technical and technical people. A popular one is invisionapp.com. Spend your time on building a killer prototype and use that to convince a technical co-founder to join your team ! Or to find investment to hire one !
– A variation of the previous point – mobile app prototyping : Delve into ways of creating mobile app prototypes without the need for much coding, with tools like goodbarber.com/ or buildfire.com/ – these tools have limitations but will give you a real mobile app to install on your phone or tablet.
If you just looked into some of the tools I mentioned above and this is already looking too technical for you – focus on de-mystifying the terminology first. Maybe do a taster weekend workshop – not with the expectation to become the technical co-founder and developer hero over a weekend, but to find out how far you want to go, and to enable yourself to have more competent high-level technical conversations.