Every Founder Should Know How To Code
There are few topics more polarizing in the message boards and forums of the interwebs than “Should I Learn to Code?”. Not to mention the inevitable follow up questions to that, such as
“What Languages is Best for a Startup”
“What Programming Language is Easiest to Learn”
“Is Ruby on Rails or Node.js Better”
I used to think these questions were legitimate and not asinine, until I got a little bit of experience for myself. I am no YC backed startup founder, but I have done a bit of programming side projects, getting a few off the ground to varying extents, and can tell you one thing without a doubt
Unless you are throwing buckets of money at this side project you’re wanting to grow into a real business, then you need to learn to code….TODAY!
Software is an infinitely scalable product, which is why it’s so revered in many entrepreneurial corners. Do something once and keep selling licenses, subscriptions, or access to your product without ever having to worry about inventory, returns, shipping, or any of the other troubles with physical goods.
However, with those benefits also come some pretty significant development times before you can get any paying customers.
Now granted there are ways to get paying customers before your product is ready, and I certainly advocate a variation of that approach, but the fact is at some point this thing is going to have to be built, and when that time comes your expertise, finances, and focus are going to be drawn towards that build process.
So the question begs, if so much of your time is going to be focused on that process anyhow, why would you not want to take control over the creation of the product anyhow?
I’m not advocating that any startup founder, much less one with a sales or marketing background (who most certainly are more valuable to the company in those roles) should stop getting out there and selling, talking to customers, and better understanding their market. But I am saying that I believe the best startups are those in which the founder built the first product himself, got the thing off the ground with his hard work, sweat, blood, and tears, and knows everything there is to know about the technology behind his app.
With all of that said, I will tackle the questions above.
If we agree that every startup founder should learn to code then the questions remain: what and how.
The what is not terribly simple to answer. If we agree that creating a skillset of developing web applications is the most widely used skillset then that really narrows the choices down to the most popular web languages and their most popular frameworks.: Ruby on Rails, Python/Django, and Node.js with Express.
Each of these definitely has their advantages and I’ll leave you to Google your way through them. I’ll cut straight to the answer I chose, and that is that Ruby on Rails has the established community, available Gems to extend the framework, depth of freely available training, and frankly it is wildly popular in the startup space as a preferred method of getting a Minimum Viable Product out the door. Silicone Valley loves it for those very reasons.
Not every one of these reasons alone is a reason to choose Rails over Node and Python, but put them together and they make a very convincing argument. It’s kind of like asking out the Homecoming King or Queen. Nobody’s going to fault you for that choice.
Not that Javascript and Python aren’t solid choices, but both have a couple of limitations that drew me away from them. RoR really didn’t aside from concerns about “scaling” and possible limitations of the language, neither of which I’m worried about in building out initial versions of web applications. I want to build something in 2 weeks and get people paying for it…then I’ll worry about optimizing, scaling, and tinkering. Or more likely I will hire a true expert to do all of those things for me.
Ok, now we’ve settled on the fact that it’s smart to learn to code, that learning how to create web applications is the most versatile form of programming, and that Ruby on Rails is a very solid choice for learning to do that, we now must decide on how to learn.
Thankfully there is a metric ton of information online for learning Rails. However, be warned that simply reading a few blog posts titled “An Intro to Rails” will probably confuse you more than anything.
In my experience you need to start from the absolute basics and continually build on top of that to the point where you’re doing really advanced things and don’t even notice it. This comes with consistency, a fundamental understanding of what you’re doing, and a well structured lesson plan.
Resources such as Team Tree House and Code School are excellent ways by which people can easily immerse themselves in almost any language they choose. These are both large companies (not just some dorky guy in his basement doing screen casts) and have dozens of employees working on just one track of their modules. That’s how the quality can be so high in their productions.
I’m choosing to do a different structure, and have opted for the One Month Rails course by the folks over at OneMonth.com. I am most impressed with the first few lessons, and will report back here once I am done with the 30 day crash course. I’ll be live blogging about it on my site as I go, so please follow along there. I’ll be including some brief notes from each of the 30 “Days”, more as a learning tool for myself than anything but I think you’ll find them useful too.
I’d be very interested to hear from you if you’ve recently taken on the challenge of learning a programming language the right way. There are so many resources out there that it’s simple to get lost in the noise. Finding a good way to learn seems to be a big part of the challenge.