When I was growing up there were "cool" places to work if you wanted a career in tech. Places like Google, Facebook, and Amazon. I noticed people in other industries had their own "cool" companies too. For example, all the aspiring consultants wanted to work at McKinsey, Bain, or BCG. I naturally assumed all the best people in each industry must work at places like this and spend their days solving the most interesting problems in their field and learning a lot.
This was what I intended to do when I grew up, but fortunately (mostly by luck), the first "job" I had was starting a company. Over the years I've been lucky enough to work at companies of varying sizes and "coolness" and with a wide range of people from different backgrounds. I've realised that by the time a company is cool, it's probably also big, and big companies aren't the best place to learn. Here's why:
1) You learn more transferrable skills at small companies
At large companies more of what you spend time on, and learn is specific to that company. The time you spend learning and executing company-specific processes is most valuable at that company, but you will have to start again at the next place you go. Small companies have less established processes, which means you spend more time learning the transferrable skills of "figuring things out".
2) You have more ownership at small companies
Large companies have larger projects, more people, and each individual has a narrower scope of work. Small companies have smaller projects and fewer people, meaning that individuals are responsible for more. This gives you exposure to a wider range of tasks and more ownership and accountability of the final result.
3) You learn more quickly at small companies
Feedback time is how long it takes to have an idea, implement it, see results, and then learn from those results. At large companies, it generally takes longer to get things done than at small companies. This means feedback loops are longer, and the experimental learning process is slower.
Large companies aren't all bad when it comes to learning though. They offer the benefit of validated methods - processes that have been refined through years of iteration and improvement. Large companies learn valuable lessons when they grow, and it's a lot faster to learn these from them than to reinvent the wheel.
Where does this leave someone who wants to optimise for learning? Small companies, with smart people who have experience from large companies, offer the best of both worlds. You will learn more transferrable skills, be exposed to a wider variety of tasks, and have faster feedback loops whilst still having the benefit of working with people who can share useful knowledge from a larger company.