While it's certainly useful to learn by rolling projects from the ground up, you can learn a whole lot more by contributing to an established project and experiencing how their code standards, review process, etc. all feel in comparison to other projects. One big thing I lacked was simply having someone say "We write static functions LIKE THIS because they have THAT ROLE within the scope of this project."