Learning Better Dev Skills by Programming in Public
Learning to develop professionally involves a lot more than just writing code. Major required skills include keeping code stable long-term, sharing tasks within a team, and building understandable interfaces so your code can be connected to and run from other programs. Learning these skills is going to involve a lot of mistakes, but fortunately there are tools out there to help you get you ahead of the curve before joining your first team.
My first programs were homework problems. I wasn't a computer science student, so only the answers were important and none of the code I wrote was ever meant to be used or seen by anyone else. Occasionally I would remember something useful and copy-paste it from a file, but it was always a minor piece of the whole program. In the end I learned to code, but I didn't learn to collaborate and code as part of a team. Coding by myself didn't open me up to errors such as overwriting someone else's code or breaking an interface that another server relied on.
Find a Community, Follow, and Learn
Unlike when I started programming, online communities make it far easier to learn how to code in a team. Just like dev teams at work, there are people with many different skill levels talking and sharing.
Stack Overflow is a great community for asking and answering questions related to coding. As a new programmer you could use an answer here as a quick fix for a specific bug. To seasoned developers, it's a place to learn by answering questions as well as a resume-builder; some companies give a great deal of credit to high point ratings on Stack Overflow and other sites in the Stack Exchange network. This is because part of professional programming involves asking and answering questions. Solving problems collaboratively and knowing when to ask for help are valuable skills in the work place.
These are both the open source CMS'es we use here at Metal Toad. Both sites have forums where questions can be asked and answered, but the real value in becoming a pro is in learning to contribute code to either system. As open source software, both Drupal contributions and WordPress contributions are made by thousands of developers, which have made both projects stable enough to be used on millions of websites.
Looking at the thousands of lines of code, you soon realize it's all formatted consistently despite coming from hundreds of different developers. This is because open source contributors are required to learn code standards, log activity in a status-tracking system, and use a version control system. Coding on a team happens on both Wordpress and Drupal, but the bar is set incredibly high to actually get code into the core of either system. Everything in the cores run on millions of sites and servers, so you need to learn to read the existing code, test your own additions, and keep everything fast and stable for the future.
As the most popular version control system of choice for most public developers, Github makes it easy to copy or reuse code from developers on your team and beyond. To push your skills here, make changes or fix bugs on a public project and then issue a pull request to "give them back." This will help build more stability and collaboration skills.
Take your learning to a new level by creating your own Github project and creating code for others to start using. Code on Github could end up in just a few systems, or potentially a few million, so learn from the most-popular projects. Adding good interfaces or APIs and clear documentation is important for projects on Github, as well as when you work on a development team.
Teams Share the Load
Every one of these examples involves sharing code. That's one of the most important skills as a professional developer, and not one you can learn working on your own. Plus, all of the sites above provide profiles or other ways to track your contributions, great things to include in your resume once you're applying for jobs. So sign up on any of these and start programming in public!