A letter to a stranger on choosing your first tech job
How would you advise someone, who's 22 years old, to choose between two job offers? Offer A is part of a team at a large and established tech/gaming company. Offer B is as employee 5 at a funded, but not yet launched tech startup. Financially, the offers are the same.
What are some questions you'd ask?
I graduated in the summer of 2006, and spent that summer looking for tech jobs in England. I'd been freelancing as a web developer for most of that year already, so interviewed with a handful of agencies and studios, and also (weirdly) a massive defense contractor. One day, out of nowhere, I was contacted by a start-up looking for a developer with my skills, who had found me through my blog. I interviewed, got an offer, got the modest money I asked for, and went to work for them. I was employee #5, and I knew nothing of the world.
They ran out of money 6 months later, I crashed back home, and took a job with Yahoo in London instead. I was lucky, in that I took a risk, it didn't work out, but then everything did work out, and now I'm here in San Francisco.
In my short time in the doomed start-up, I got to play at being a software engineer years beyond my experience. I got to take responsibility for front end, database architecture, deployment, operations, product design. I was 22 and everything was made from chocolate. Presented with the opportunity to build things instinctively, the way I felt like, make mistakes and be responsibile for my own learning. It's empowering, a huge amount of fun, and I think accelerated my development around product-sense, and the spontaneous development methodology that dominates our industry.
On the other hand, after the initial stretch of applying all my skills at once, the lack of mentorship, experience, and support around me was clearly a negative, and the collapse of that company pushing me to Yahoo when it did turned out to be hugely significant in my life.
Moving to Yahoo was a drastic reset. I realised how little I knew, and readjusted to listening and learning from people much smarter and more experienced than me. These people—amongst the best people I've ever worked with—knew about building things well, at scale, robustly, properly. It also led me to specialise in front end web development, rather than the wildly generalist role in the start-up.
Both experiences are very valuable to me. But I wonder that if the start-up hadn't failed I might not have learned the discipline, professionalism, and expertise that I think is essential to where I am now. If that start-up had succeeded, I'd have been improvising all along, until such a time as I was unable to do the work any more.
I learned a lot about asking questions of start-up founders from the questions I didn't ask. I was naïve, nervous, flattered from having been approached, too sure of myself. I also knew nothing about tech start-ups. They were offering me a job, so I trusted that they had the funding to pay me. Laughable. I didn't question them on their skills, or what they did for the company. I didn't identify the potential for mentors, I didn't look for recognition or understanding in the things I was talking about, they were trusting me—a fresh-faced graduated—at my word too.
So what should you do? You're young and inexperienced, so you can afford some risk. If it doesn't work out, you're still young. You'll get a thrill out of working for a start-up, and the fact you already know they're funded puts you a step beyond where I was. Consider the others in the company. Are they experienced? Are they experts in their field? If they will offer you mentorship, and a solid professional foundation, you may have a really special opportunity.
Larger companies also provide important experiences. By the time I left, Yahoo was certainly suffering a dearth around innovation, and possible creative irrelevance in our industry, yet even there you are exposed to more mature development methods, techniques, and practices. There is learned advice all around you, and the peers reviewing your code will provide all kinds of lessons and pointers that will send you off in many directions to learn new things about the technology your career is built on. People will actually review your code at all; that's good in and of itself. You'll build software for an immediately larger scale, and depending on the team, you can still be participating in product development and emotionally invested in the output. You'll probably leave this company having come to resent some of the processes and formality, looking for an opportunity to reset some of them and enjoy more of the spontaneity you'll find in the start-up. But that's not a bad thing, that's just how this works.
Both experiences are valuable; essential, I think. If you learn the rules you learn to break them, and if you work without rules you eventually learn why they get written, and you try to write better ones. Moving between these worlds and mixing with people from each has done me a lot of good in my professional life, and I'm hard pressed to discourage either experience for the other (although I do feel that each successive project I work on from now on will probably be smaller than the last.)
In considering the start-up, make sure that you'll be in an environment to develop and mature. Be confident that the people you're going to work with will help you grow rather than holding you back, leaving you to your own devices; you still have a lot to learn about learning. If a company of any size can offer you that, your choice comes down to your interest in whatever it is they are building. Go, have fun. Learn things. Apply, and repeat.