When are you too old to become an engineer?
I started programming at 22. Let’s give you a timeline.
22 — I learn what an “if statement” is.
24 — I get a job at Facebook as an analyst.
25 — I get a job at Facebook as an engineer
26 — I leave Facebook because a “side-project” started making enough revenue that I couldn’t take it while being an employee at Facebook, I became a startup Founder. Went through Y-combinator, got a bunch of $$$ in funding from a top VC.
I’m still 26.
I may have been lucky, but I’m not special. If you are dedicated, you can do this too. I’m going to tell you the story of how this happened to me in the hopes that it encourages you to follow your interests, and not ever think it’s “too late” to totally switch jobs and learn something new.
This is in response to a Quora answer I posted, and now have an inbox with a ton of requests (mostly from college kids in India?) to share this story.
If you want to just read how I’d recommend learning to code, just go to the end.
If you want to ask me stuff, I’m on Twitter as @whatsdonisdon
A much more detailed timeline:
2007 (age 18): Freshman Vassar College, pre-med.
I decide, like every other Freshman, that I will be pre-med.
2008 (19): Sophomore Vassar College, Switch to Econ major.
Drank a fair amount of cheap beer. Went skiing. Got much more interested in economics.
2009 (20): Junior Vassar College, realized textbooks can teach you things.
Got mono. Spent a lot of time in bed. Couldn’t attend classes, so I had to just read the textbooks. Realized that when you read a textbook, you learn things. Wish I had known this before the end of my formal education.
2010 May (21): Senior Vassar College, finally get good grades.
Ok that’s hyperbole. I got decent grades in the past, but this was the first year I got straight A’s. (…in my last year of 16 years of school.)
Until senior year, I usually studied or worked 1 day a week in high school and early college. I figured out the bare minimum to get B’s. In hindsight, this was important. I prioritized my work, so I’d have to do the bare minimum to pass classes. This meant I knew how to get myself free time to pursue other things.
Now that I could learn from reading, mixed with the ability to prioritize work, I finally got A’s. (And some really good / patient professors)
2010 July (22): Graduate College. Start working as a Data Analyst at Morningstar.
I was hired as a data analyst at Morningstar, a finance company. I do not know how to code at all.
2010 August (22): I have an idea for a new Morningstar website, they like it.
Current Project: FindData
I come up with an idea for a new web application for Morningstar. They like the idea, and I’m given a team of 5 part-time new-hires to build the product.
It was my first experience ‘managing’ a project or having people build my idea. It was very difficult, and I made many mistakes. The biggest mistake was not listening to my team. If you only know one thing about managing a team where you need creativity, it’s give your team ownership and autonomy to execute, then listen to them. Your time should be spent making sure they have everything they need (because you listened to them), then trying to do all the work they don’t have time for (usually talking to a ton of potential customers).
Anyways, I had ideas, but I couldn’t build anything. The execution of my product was dependent on my team. They had their main jobs to care of in addition to my project — but I wanted to see things go faster. So I began to learn to code.
2010 December (22): I BEGIN LEARNING TO CODE.
Current Project: FindData
I started with www.w3schools.com. There I learnt HTML and CSS. I made a webpage for my dad’s company. It sucked and he didn’t use it (good choice).
Then on lynda.com, I learnt PHP and MySQL. Now I could store data in a database, and have a “backend” for my website. At this point, I be came a “full-stack” developer, and I could build an entire web application by myself.
In 2 months, I went from knowing nothing about code, to being able to build an entire web application. The web applications weren’t good, but they worked.
2011 (23): Morningstar doesn’t launch my product. I build 4 websites.
Current Projects: FindData, BarCraft, Morningstar Interactive Graphics, Amuse.me
Morningstar didn’t like my product (called FindData). They didn’t launch it. In hindsight it was a good choice, I wouldn’t have launched it either.
But I took the rejection personally. I was transferred to another team, where I spent all day in Excel. I didn’t like it. I went back to my old college habits of working 1 day a week to just meet expectations, and using the other 4 days to spend all of my time coding. I built a new site every month, for about 5 months.
2012 (24): 12 interviews later, I become an analyst at Facebook. Learn a lot, build more websites.
Current Projects: Tickur.com, Lookgr.am, Roomidex.com, Searchnwork.com
12 interviews isn’t standard for Facebook. I originally applied to be a Product Manager, and after a few interviews, I was rejected.
But the Analytics team was interested in me. I was fascinated by consumer websites, and I could do math and talk business from my brief time in finance. I had another round of interviews with the analytics team. They hired me.
During the day, at Facebook, I was pushed to grow mentally. I was surrounded by people who were way smarter than me. I’d try my hardest, and get my ass kicked. In the same way that college pushed me to another level of thinking, Facebook pushed me again.
I couldn’t BS an answer, and have people accept it because they were too lazy to criticize it or think the logic through themselves. If I said something wrong, I was instantly called on it. When I said something right, I was expected to take it farther. I grew.
I also learnt how the best consumer tech company executes. Buzzwords that were thrown around in tech like “data driven” and “minimum viable product” mean something else when you’re watching Mark Zuckerberg make a decision. I would read what newspapers and bloggers said about the world, then I’d go to Friday Question & Answer with Mark (a company routine), and hear the truth (or at least a very VERY expert opinion).
So during the day, I learnt how to run a product, a project, and a business.
At night, I kept coding and building my own ideas. They were bad, in hindsight. But I became better at coding, and learnt what didn’t work. I became faster at building sites.
2013 (25): Became an Engineer at Facebook
Current Projects: DataFinder (Facebook work)
I was not a good engineer. I understood inheritance, and had a good handle of PHP from building so many personal projects, but that’s it. I don’t know what a “sort” really is. I didn’t know ANYTHING about algorithms or data structures.
What I knew… was what improvements to internal (web based) data tools the Analytics team needed. And I knew enough to build them. I joined the Data Tools team as an engineer.
Even though I probably coded at 10% the speed of a formally trained Facebook engineer, my identification of analyst needs and ability to do some interaction & visual design meant that the things I made had a positive response internally.
2013 (April): Blockspring.com begins
Current Project: Blockspring
I worked on a side-project with a brilliant & hard working (to put it mildly) buddy from high school. He was even less of an engineer than me, but he still knew some basics. He had quit his job in consulting to make his own start-up.
I had worked on many side-projects at this point. Paul was the first co-founder I could realistically begin a company with.
Every other co-founder had been doing our project part-time. Paul was the first to do it full-time.
Every other co-founder ate up our time and energy debating colors on the site, and whether to add small features, while they were supposed to be marketing while I built. Paul put thousands of people on the site every month, while teaching himself to code and helping me build it.
It’s not that my first co-founders were bad, it’s more that I didn’t know how to manage the relationship and set expectations for my role. When you have your own startup, setting expectations and broad ownership of areas of the company will be one of the most important things you do.
We made Blockspring.
2014 March (26): Blockspring.com gets a client
We tried to convince companies to use it, they didn’t.
We posted it on a blog, and a smart guy in New York saw its potential. We flew out to New York to make a sale. We didn’t get the sale, but he did offer to pay us to stay for the week and work on Blockspring.
I was still full-time at Facebook. I scheduled an ‘emergency’ vacation for the week, and stayed in New York to work on Blockspring.
Moonlighting isn’t against the rules at Facebook. Every engineer has side projects and interests. If you want to retain entrepreneurial people, you have to let them pursue their “preneurs”, while making your work environment so attractive that they will prefer their day job (whoa isn’t that a crazy idea?!). Go work at Facebook.
But getting paid for Blockspring, or spending time to the extent that it distracted me from Facebook work would have not been fair to the company, or my team. If I wanted to keep working on Blockspring (a website with few users, and one potential client), I would have to leave Facebook (in my opinion one of the best eng jobs in the world, cushy salary and perks, friends, etc).
So I left Facebook.
2014 (June): Y-Combinator
We make it into Y-Combinator, the best accelerator in the world (by valuation of graduating companies).
For 3 months, 16 hours a day, we work.
It was not fun. Some alumni call it a “pressure cooker”, which is an under statement. When most people work on a project for 2 days, you get bored of it. At the start of Y-Combinator, we put the number 85 on a whiteboard. 85 days until demo-day. 85 days to make it big. We worked, we slept (sort of), we worked, we told our girlfriends that they were the most understanding people in the world. Then we worked some more.
85 days later, we presented at demo day, and raised money.
2014 (August): Recalled to life
We finished Y-combinator, and moved into an office in San Francisco. I started spending Saturdays & Sundays not working on Blockspring. That lasted for about 1 month. Now even on the weekends I’m coding again, on things that are tengential to Blockspring. Learning illustration, animation, blogging (hi you), watching how people have conversations online, etc.
So thats my story.
To sum it up, I was good at getting people within my companies to be interested in my ideas. At the same time, I taught myself coding. This meant I could advance my career and exposure to good product management, while also advancing my own ability to execute.
If you want to become an Engineer right now here is your to-do list:
- go to w3schools.com and learn HTML and CSS
- think of a website you want built. got one? good, you’re going to build it and not let anyone tell you it’s too complicated.
- open some text editor on your computer (not Word), save it as index.html. Use your HTML and CSS from w3schools.com to try to make things appear on your webpage. see how far you can get.
- go to lynda.com and watch a beginner video on HTML & CSS.
- Make your index.html file look more like what’s in your mind. Copy colors from sites you like. When you don’t know something, make a “jsfiddle.com” and post a question with it on StackOverflow.
- go to lynda.com and watch a beginner video on jquery. This will let you make your page interactive really easily
- Add jquery to your index.html file. This will let your page behave as if it’s a real web application. You can fake interactions on it. You can now prototype a website.
- go to lynda.com and watch a beginner video on Ruby on Rails. This will let you make your prototype into an actual web application.
- turn your index.html into a Rails project. You are now a full-stack web developer. You may suck, but you can do it. Now you just need to get better.
- Keep working on your project. Google what you don’t know. Post on StackOverflow when you have questions. You’ll be surprised how quickly you learn.
- Keep building.
“But, Don this isn’t detailed at all, and I heard w3schools sucks, and my friends say I should only code in GO.”
“Well Timmy, the biggest skill when you’re an engineer is figuring shit out on your own. So this will take you up the learning curve, and you’ll learn to actually build from your own ideas and the basics, which will give you faith that you can build anything.”
Ok thats done. Let’s go post this junk on Quora…