I'm totally buying the idea of why we should specialise eg. in Android, like Alex mentioned a number of times, because you're more employable for a large company if you're really good at one thing.
I'm less interested in large companies, I want to continue working in startups and at some point start one myself. I've got a background in ML and have been picking up "full-stack" web development over the past year, to be able to make simple products myself. I like the whole lifecycle of a product from talking to users, to design and engineering. Things I like the most though are backend and machine learning development.
Do you think it still makes sense to specialise given my career goals, or perhaps the advices given here were only for big-tech engineers?
I don't think specializing would hurt your chances to land a job at a startup, and could help. However, if you don't have basic generalist skills then you are hurting your chances to succeed.
For context I think there's a difference between
At a startup, most of the time you need a wide array of skills to succeed. And generally with hiring, they tend to care more about generalists. But this isn't always the case for getting hired. We all know there can often be a large delta between what is screened for in hiring and what is actually done on the job. For example, you get hired as a frontend web dev at a small startup, but then they pivot to an app and now you now have to mobile development instead. But in this example, someone who specialized in frontend web dev would have a better chance at getting the job, but if they don't have experience in mobile (or can't pick it up quickly), then they will struggle at the job. Plus, startups often need people to hit the ground running so having experience in a specific stack is better as they don't have the time for slower onboarding. So generalist is good enough, but generalist + specialist is ideal.
The nice thing is that from my experience startups often have less technically demanding then large tech companies. So, being mildly proficient in a domain should be sufficient to do the work required to succeed. So, my general process to maximize my chances at a startup would be
Finishing step 2 should be plenty to get you a job in a startup, step 3 just improves your chances in some positions. The main difficulty here is it's harder to specialize in step 3 when at a startup since the work involves wide breadth, but with the right position or a good ability to advocate for projects this can be achieved.
The good news is that this process aligns well with the process for getting into Big Tech if you ever want to pivot as
However, depending on the role you may want to have two versions of resume. One that leads more towards generalist and another leads towards specific expertise.
Also another thing to keep in mind is that these things are often variable based on company culture, the companies economic situation, specific team, region, etc. So although this general pattern of generalist at startup and specialist at Big Tech may statistically significant, there will be counter examples in each category. So best determine this from information about a specific company vs whether or not it's FAANG or not.
I think this depends on the startup you're aiming to join, specifically along two dimensions:
As I talk about in this question, startups are bifurcated into pre-PMF and post-PMF. If the startup is pre-PMF, you should probably expect to be more generalist since the company will have to try a few products or customers to figure out what actually works.
The other dimension is about what the startup is selling. If you're a startup selling a technology, e.g. a database solution, you should expect that the specialist skillset is most valuable. But if you're building a consumer product, for example, the generalist skillset will likely be more valuable.
Also related, checkout this great discussion about How to evaluate a startup.