Learning different kinds of things, e.g. distributed databases, functional languages, metaprogramming methods, etc makes you appreciate what they can do and makes you better because you can choose to apply some of those structures in more popular environments when they are beneficial (e.g. use of immutability vs shared mutable states).
Working on larger codebases with many developers, and for a long duration lets you grow from programming to software engineering for longer term goals that optimize effectiveness both in implementations but also the people processes that can work well or poorly depending on the choices made.
Agreed.
work on code bases written by people that are much more skilled than you
Two problems here. First, you can’t really be sure if they are skilled or publicly confident. Although learning confidence is useful too, for the same reason.
Second, you can only see what they do, not what they learned to avoid. The best way to get better is to write your own code, assuming you’re at least fluent. That will teach you what to avoid and you also learn your general predispositions and code anxiety/perfectionism levels. Good reflection on that will improve you a lot. I don’t think just parroting someone’s code makes you better, unless you’re very beginner.
I once had to work the codebase of a consultant who build up his business by having less of a T profile and more of a slightly thick, incredibly long _____ profile. His code was attrocious and borderline impossible to refactor because he never stuck to a language long and consistently enough to actually learn anything resembling code discipline or hygiene. He was always too busy learning the quirks of the language and framework, which took precedence over elegance
Usually you can go to GitHub, find a project with a lot of stars for the language you want and start browsing the code. It is worth paying attention to the general attributes of good codebase: tests, documentation, build automation. If all this is there, then most likely you will definitely find something interesting or new for yourself.