Advice to my young self: don't expect too much from side projects
I’ve always been suspicious of the idea of being attached to a company.
It could be because of the leftist spirit of my generation in France, or because of my readings during my student years, or because of my familial history (which saw way more self-employed, farmers, nurses or teachers than company employees), but I’ve never accepted the idea of giving even a tiny portion of my independence of mind to a company. When I was a student, I wasn’t dreaming about joining a company like Google, who seemed too sectarian to me, to rather prefer boring companies, where we only expect you to work well. Keeping a distance from my company was, I thought, the way to stay who I am, without being infected by an external force.
It doesn’t mean that I didn’t care about my job. I’ve always been involved in my work, being proactive in bringing new technologies, mentoring the other developers, helping the team to grow, but I was doing this just because I liked my job. I was not considering this as something important in my career, simply because I didn’t want too. To develop my career, I was spending a lot of time outside work reading technical books, doing toy projects, going to meetups, browsing Hacker News. I was finding here what my company was fundamentally unable to give me, and I was feeling holding my fate in my own hands. I thought it was the best recipe to end with a successful career, while remaining free and protected from the meanders of corporate culture (or corporate politics, actually).
I was wrong.
First, most recruiters don’t care about your personal projects or how many meetups you went during the year. What matters the most is your current company - and by that I mean the name of your current company. It was saddening me before, but now that I’m on the other side today, with a manager position, I better understand this. This is plain common sense. You can generally assume that a developer coming from a cutting-edge company has better chances to be a great developer than a developer coming from a Java 1.4 shop. He may not be smarter, but he has been hired by a company with a most demanding hiring process, and has been surrounded by some of the smartest developers.
Worse, having too many personal projects can raise a flag and be scary for the recruiter. When my entrepreneurial experience has been over, I was disappointed and somewhat regretful of some of our choices, but generally proud of everything we did and excited to share my story to recruiters. I was surprised to see that most of them were only asking questions about my previous experiences as an employee. My CTO experience was an anomaly, at best two lost years, at worst a sign that I was too independent, too individualistic, not a good team player. Only relatively small and ambitious startups, like the one I’m in today, were valuing this experience.
Today, I recommend not hiding your side projects, but to not displaying them as a primary part of your identity, to not scare the recruiter and let him feel that you have a secondary plan.
Secondly, I don’t think that multiplying the side projects is useful unless they are substantial. Side projects that we consider futile, that we do just to get away from our daily work, don’t make us better in our job. The things that make us progress are the issues we want to avoid and that generally come only when your toy project has been transformed into a product and when you have to deal with users, production issues, and money (your money). Basically, all the things that no one wants to do on his free time. Even from a purely technical point of view, you will not really understand a library or a framework by just sticking to the tutorial or its basic features. You’ll have to dig into and to face its most painful aspects to deeply understand it.
Shallow side projects are useful to develop a first opinion about a technology that will need to be confirmed with a more elaborate project. I’d compare them to school.
When I was a teenager, I remember what we were saying about it: it will never help us in our future job. After all, how teachings about antiderivatives, Rimbaud’s poetry or Napoleonic wars could be useful for our future adult life? We were right. Most of what we learned is pretty useless today, whether you are a cook, a hairdresser or a developer.
But this formed a complete package that infuses our adult life. Junior school is great because you don’t learn to find a job. You’re at school to grow as a citizen, not to prepare to your future life, and actually you’re better not to think about your future if you don’t want to question yourself about the meaning of your existence. This is the same thing for side projects. See them as a way to discover a new topic and enlarge your horizon, not as something that you could action in your current position or to find a new job. Otherwise, you expose yourself to severe disillusions.
The best way to dig a new technology is to practice it in your daily job. You’ll spend seven hours a day on it and will quickly become infinitely more proficient than if you just barely used it on nights and weekends. You may tell me that we face a chicken or egg problem here. How to get a job where you’ll work on a really attractive technology if you never used it before? Well, instead of spending nights superficially learning this technology, spend your nights preparing interviews. Read “Cracking the code interview”, learn everything you need to know about algorithms and binary trees. As we all know, the interview process is broken. Instead of deploring it, take advantage of it.
I don’t want to make this blog post a rant against side projects. In fact, I’m advocating the exact opposite. Continue to do as many side projects as ever, code on nights and weekends if you want to, but don’t do them because you think they could be useful to you to get a new job. This is wrong. I know too many developers who are stuck into this pipe dream. This is an illusion and this leads to a waste of time and energy.
Don’t create a project just to prove that you know Vue.js, but use this weird technology that you saw yesterday on Hacker News and that intrigues you. Don’t think about what are the best (and boring) blog post topics that could expand your personal branding, but write poetry or a review of the last movie you saw. Create the apps, services, websites, or video games you want to use. These side-projects are truly great. They may not make your portfolio or your public image convincing for the next recruiter you’ll meet, but this is how you will be able to express all that you have in you and end up affirming yourself. At least, you should end having something meaningful to show, something to be proud about.
You want to feel free and have time for your projects? Focus your efforts on joining a great company. This will make your career considerably easier and will make you as free as you wanted to be initially. The link you’ll develop with your company will be a source of discomfort sometimes, but it will protect you from the never-ending competition on the job market. The satisfaction of seeing your career flourishing while you will use all your free time to do what you like (including… side projects) will give you a valuable peace of mind.
By trading a little bit of what you think is your independence, you’ll get the real one.