When I last wrote, I was working on a new startup. It did not succeed, but was easily one of the most rewarding things I’ve done in the past few years. Because in this last startup, I learned to code. This is something a lot of business founders are curious about, possibly scared of, and unsure of how to do it or if it’s worth it. So I wanted to share the story of my path from non-technical to technical and some thoughts on the pros and cons of business founders learning to code.
My Story
I started with the alphabet. Way back when Geocities was the hot thing on the web, I learned my first bits of HTML, and later when I started blogging I learned CSS to do basic style and layout customizations. These are learning-the-alphabet level skills; I can’t emphasize this enough. They’re scary when you’re still illiterate, but as soon as you make the effort, you’re spelling your name and writing sentences soon after.
I used the basics and stretched just a little. CSS became a strong suit long before I could do any ‘real’ programming. WordPress was doing something with some kind of database; that was still a black box to me. But editing CSS was a great way to get comfortable with some web dev fundamentals. Then when I wanted to do more with my blog than just change the style, I dug into WordPress. I copied and pasted PHP code I didn’t understand from WordPress tutorials, but could tinker with until it did what I wanted. That may not sound educational, but the basic familiarity I got was helped later when learning things like objects and functions.
At a high level, I kept learning about tech to understand the possibilities. Like many frustrating non-technical people, I learned just enough about how different pieces of tech worked to be dangerous. Projects I pursued with my friend Andrew (a wonderful programmer who rose from lead developer to chief architect officer at his dayjob) followed a common pattern of me proposing an idea, him doubting such a thing could be done, me searching and suggesting some methods he could look into, and him eventually admitting we could do it.
This wasn’t always the case — sometimes Andrew clearly explained that idea #346 was not possible, because thing X did not work that way. But the more I became aware of technology, the more I understood what the possibilities were. And the more frustrated I became that I couldn’t explore any of them without help.
I wrote the logic, and watched it get translated into code. Ultimately, programming is about logic; defining structures and steps they go through to get to the result they want. Not just: “if the user clicks here, this should happen”. What information needs to be transmitted, and then how does it need to be processed, and then where does it go? In my early startups and hackathons I worked with my friends to outline this logic, and watched how they transformed it into code.
I started coding with a clear idea of what I wanted to do, and asked / Googled my way through. Just getting started ultimately helped me make the most progress. But the key for me is that I was trying to do something specific, not just ‘learn how to code’. In one of our tools for RiverInsights, I took ownership of one of the core pieces of functionality, a process to get tweets, filter and score them according to my criteria, and store them with info about them in our database.
My co-founder, Bob Cavezza (another wonderful programmer I’ve been fortunate enough to work with), answered countless questions from me about syntax and structures and if I was doing this right, while StackOverflow and the PHP documentation racked up hits from my Google searches for function names and example uses. As I kept at it, the less I was copying, pasting, and tinkering, and the more I was actually writing code.
So, was it worth it?
Pros and Cons of Business Founders Learning to Code
Con: It’s not just learning to code, and that’s a long learning curve. Outside of blogging services that let you use learning-the-alphabet level skills with built-in conveniences like text boxes to put your custom CSS into, there’s actually a lot of other tools and knowledge you need to have that already-technical people take for granted. Things that I have learned piecemeal, at a basic level, that enable me to build something for the web:
- how a browser works
- how to set up web hosting
- how to set up a domain
- using a code editor
- using browser debug tools
- how to use FTP
- how to use shell
- how web server software works
- how URLs work
- server directory structure
- using code libraries
- how a relational database works
- how to use phpMyAdmin
- how PHP, MySQL, HTML, and JavaScript actually work together.
- what a cron job is, and how to use it
- what an API is, and how to use them
I’m sure there’s a bunch that I’ve left out, and there’s more on the way. Things like caching and version control and SSL that I’ve either not yet needed or have had hand-holding assistance with. The bad news for business founders who want to become technical is that web development involves a lot of tech you’ll need to understand to do it on your own. The good news is that to get started, each piece you really just need a basic level of understanding of, and each will come in a spread out series as you’re moving forward.
Con: You can’t multi-task while coding. Coding takes focus. It’s not a linear process the way writing an email is, where what you’re writing now is mostly independent of what you wrote before, and you can stop mid-sentence and finish later with ease just by re-reading. Most of what you develop will require you to hold a synopsis of the larger system in your head, and adding something new to it requires remembering and connecting correctly with many other parts.
Distractions and multi-tasking that takes you out of the development workflow will force you to recreate your mental synopsis of that system before you can proceed again, and parts left unfinished can leave you mystified as to what you were doing if you didn’t get a chance to leave in-code comments. Doing development will force you to set aside blocks of time just to do development — there’s no switching into email or twitter or calls during it.
Pro: You can learn a little and contribute a lot. Let’s say you’re not a solo founder. Even if you only learn front-end skills (HTML, CSS, maybe some JavaScript), it can be a big help in saving time on product development. If you make the effort to learn back-end skills, you can help you track down and fix bugs, freeing up your real technical talent to focus on moving the product forward and fixing just the hard stuff.
Pro: You can do much more on your own. You can get things started without a technical team. You can answer your own questions about if things are possible or not. And most importantly, your prototype can become a limited but working piece of software instead of a collection of mockups, capable of gaining users and showing real traction to investors or potential partners.
Pro: Your ability to network, relate with, and communicate with developers greatly increases. Ultimately, your job as a founder is to assemble an amazing team. Even if becoming technical removes barriers for you to start on your own, it’s unlikely you’ll succeed long-term as a team of one. So another benefit of learning to code is that you gain the ability to network with other developers as a peer and student, instead of just a recruiter. It’s not only easier to make relationships with people this way, it’s also easier to interest them in what you’re doing when you’re able to tell and show them the technical details of it.
Pro: You become a maker, and gain a maker’s understanding. It’s hard to overstate the satisfaction of simply being able to create. To make the tools you think of and build something that makes your life easier. And as a bonus, you get a better understanding of how everyone else’s tools are built, enabling you to learn more from the world around you and get new ideas for your own ventures.
Is it worth it learning to code if you want to start a startup?
Right now, yes. In the United States, our labor market is hugely under-supplied in developers, and the substitutes are poor. Getting started is the limiting factor in startups right now. I don’t want to undervalue business and marketing skills; there are plenty of talented technology companies that fail because they don’t have people good enough at these things identifying product-market fit, creating partnerships, and finding customers. But there are many, many more startups failing because they can’t get past the idea stage, or aren’t making quick enough progress on the product itself.
Learning to code will take time. But I suspect that if you make the effort, you’ll find yourself further down the road on your startup than if you had spent the time searching for a technical cofounder, seeking investment, or trying to build traction without a working product. Make the effort.