All the time I am reading tips on how to become a good developer, and there are many programming courses. But I am pretty sure that there is no strict method to become a good developer. The main reason that there are very good developers — almost on every place in the world — is not about their education, also is not about their methodologies and even is not about their passion for programming. There is a renewal trick, because they are always seeking new stuff to learn, and that keeps their mind fresh and clear about how they can solve each problems that they are facing. Almost the best developers that I know, are always learning, reading books and they keep searching information about related topics.
Due to the extensibility of what refers to programming as activity, you should not only learn about new programming languages. You must also understand theoretical topics, approaches and techniques, mainly if you want to stay on top. Almost everyone that left all those activities, are ending their career as programmers very early, and they finish their programming career as project managers, sales manager, and similar positions. But almost not related to programming itself. Depending on their culture, is not so well seen if they keep their position as programmers, and where the development department is called factory, usually the programmer has the lowest position on the company hierarchy — on what refers to their market — and you will find programmers from the average to the bottom, but not higher.
In effect, having the lowest position in a hierarchical company is the worst stuff that you can do on any career, so you are force to seek an ascending position. In other companies, like agile ones, is not seen as a defect to not to seek an ascending position, because they are not entirely hierarchical. That makes a great difference, because agile companies are seeking more cohesion on their teams rather than seeking a hierarchical structure of the company, where you can see that hierarchical structure leaving the programmers with more than one project manager delivering instructions. So, you can have one programmer working in two or more projects at once, and each project with different project managers.
A programmer that never has invested on a programming or theoretical book, is probably a bad programmer. Also a good programmer will recognize that books are addictive, and once you read and understand one programming book, you will love to earn more of them. And surely they will want to have a list of well known classics, like “The Art of Computer Programming” and similar ones. And finally, that knowledge is used by good programmers, even in their career and their programming practices. Every great programmer that I know is frequently practicing programming and seeking programming problems to solve, otherwise you have an average programmer that never cares about learning new stuff. And every programming interview that I handle is filtered and I try to avoid getting hired by that kind of company where they have a factory, and the programmer position is considered as the lowest position. Mainly on outsourcing companies.
Just as an example, I have been learning — seriously — Haskell for the last two years with almost every theoretical background that it requires. Where did I learn it? Alone, using books, reading posts and practicing. You do not need anything else, nobody has guided me, my previous experience with functional languages was Lisp, which is a programming language that I learnt long time ago. And each technical topic on Haskell has a deep theoretical background that was in some manner covered with its study.