Why I Desperately Needed to Learn to Code
I really don't enjoy writing code. I think programming is rather dull. Spending hours hunting for an errant punctuation mark is infuriating. I'm a marketer. I love writing copy, optimizing campaigns, scaling traffic sources. Building software isn't really my thing.
I bootstrapped my first internet marketing company in the middle of Wisconsin, competing against much larger businesses in a ruthless market.
I was wasting enormous amounts of time manually doing tasks that could be automated. Everyone in the industry was.
My attempts at outsourcing failed miserably, and I couldn't afford to hire locally. Maybe it was the distance from Silicon Valley, but the thought of looking for engineers who would work for free never occurred to me. I doubt I would have found anyone interested in equity over cash anyway.
But I desperately needed an alternative to my manual labor to exist. My competitors weren't automating, but they had enough money to hire 20 people to manually complete the tasks I was struggling with. If I didn't come up with an automated, scalable solution, my business would die.
I had no choice.
Slowly, piece by piece, I started reading tutorials to fill in the gaps.
HTML. PHP. MySQL. Jquery.
No time to learn fundamentals, or the right way to do things. Just enough to build something, anything that would help me move faster and get more done, because if I don't move faster than the competition, I don't eat.
I learned just enough to get by and somehow solve the problem I was facing at the moment, usually with a clunky, inefficient script that was barely working.
I multithreaded my PHP scripts by opening lots of terminal windows and pasting in the command to run the script in each one. That sort of thing.
I'm in a very different position now. I'm running a funded startup. I have a great technical cofounder and work with an incredible team of talented engineers.
But the lessons I've learned from actually building and launching products are invaluable.
- I never ask for specific estimates or set hard deadlines for finishing a project. I know firsthand that the last 10% of a project can take 90% of the time.
- I don't say things like “This looks really easy to do, you can throw it together in a couple hours, right?” The most complex projects can look deceptively simple.
- I can explain clearly what I'm looking for and visualize how all of the parts of the project come together. I won't completely change my mind and force developers to start over because “I imagined it would look different.”
- I know how effective you can be when you get in the “zone”, and how destructive meetings and other interruptions can be to an engineer's productivity.
I don't think I'll ever be good at programming. I don't need to be. But I've become pretty good at prototyping. I can read and understand API docs and write a quick Python script to pull in the data I need. I can set up a MySQL database and run simple CRUD queries on the data. I can use Bootstrap to design a simple UI for a quick demo. I think my ability to build a quick and dirty proof of concept helps everything I do as a startup founder.
And, most importantly, I have a deep appreciation for the work software engineers do and what it really takes to create a product.
Unless you're passionate about making it your career, learning to code is not about becoming a great engineer. It's about gaining insight and perspective. I think if your ambition is to found or work at a technology company, there's no substitute to that perspective.
You have to learn to code.
This seems like a good opportunity to mention that my startup MixRank is hiring engineers. If you're interested, please send an email to jobs at mixrank.com.
Don't worry. I won't be the one doing the technical interview.