
Building great software is like building a house. It’s possible to get prefab walls and fixtures and assemble the pieces quickly and have a nice, simple, livable house. In the same way it’s possible to teach yourself the basics of software development and assemble a nice, simple, usable computer program. Of course, if you want to make a change to either, it quickly becomes a very big problem.
If you want a beautiful custom home, you bring in an architect to design it, and craftsmen to build it. These are people who pay attention to detail and apply their knowledge and experience and the proper tools to quickly implement elegant solutions to complex problems. It’s the same in software development.
The best way to develop this knowledge and experience is to learn from someone else who already has years of knowledge and experience. Junior carpenters apprentice to a master and ultimately become master carpenters themselves. Similarly junior software developers learn from their elders.
Not all of us have access to a talented mentor, though, so fortunately for us, we can learn from books and videos and online training, and even source code that we find online. We can learn the best solutions to a problem by seeing how someone else has done it before. If you want to be a great front-end developer, or Java developer, or master test-driven development or pair programming, you can find the best of the best. Using the power of a search engine, you can learn from the leaders of the industry. They make sure to get their ideas out there so you can find them.
The best places to search are Amazon (for their books), Google (for their blog posts), Twitter (for their latest thoughts), YouTube (for any presentations or classes they might have recorded), and GitHub (for any code they have put up as examples.
Learn from the masters: You can see actual work that they have done. You can see their presentations. You can read their books. How do they approach a problem? How is it different from what you would do? What tools do they recommend? What other leaders do they admire? How do they solve problems? What does their code look like?
As you learn from them, copy their techniques. Then you can practice, practice, practice. It may not be perfect, but you will be using the best techniques available.
So what skill would you like to master? Who can you learn from who has mastered this skill? How will you learn from this master? How will you practice? And most importantly: When will you start?

