I have been an actively employed developer for almost 15 years now. I started my career in Oregon as a developer for a small property management company. I later moved to a resort, to a government contractor (CSC), to an infomercial company (The JuiceMan), to a software/newsletter publisher, and finally as a consultant. I always think back to the moment when I really hit my stride as a developer. It was at the infomercial company. When I was hired my manager told me that I would be working with the best programmers he could find in all of Seattle. This was a very intriguing statement and I was excited to take the job.
When I started there I went to work with Eric Ranft, Scott Kirk, and later Mark Davis. In a year and a half we created one of (what I consider) the best order entry/fulfillment applications ever created for a DOS platform. And you know that these guys were pretty good developers. This one job is where I learned how to create very user friendly, scalable, and powerful applications (all on 386 diskless workstations no less). The real learning experience came from the other developers. We worked as a team, not a figurative one, but a real one. We challenged each other to do better work, we sometimes worked around the clock and sometime we simply had fun at a basketball game or shooting pool. This was one of the BEST times I ever had developing software.
What is the best way to learn how to develop software? I believe that the best way to learn how to develop software is to work with other developers. Every developer has his or her point of view on how something can or should be done. Sharing this information is very important to a developer's learning process. In the first two years of my career I was the “lone wolf” programmer. I learned quite a lot in college but was really on my own in the environment I was working in. At that time I spent some of my time cruising CompuServe at 2400 baud looking for code samples to learn from. I also remember taking a trip to Portland, OR and discovering Data Based Advisor and DBMS magazines. These were my salvation to expanding my programming abilities.
Later, when I moved to Seattle I expanded my horizons even further. I began going to user group meetings. I met some really great developers (and friends) here. Ron Talmage and Jeff Winchell are two of these developers I am speaking of. I have learned tons from these two guys over the years.
Another venue I have used to continue my development education has been computer conferences. I attended my first conference 11 years ago and was just at two conferences in the last months. Conferences are a great way to exchange ideas. One of the best conference experiences I attended was in Germany many years ago. We had an informal “bonus” session where we just experimented with ideas in front of a small audience. We learned some great stuff that night (and the beer wasn't too bad either).
So where does all of this ranting about continuing education come from? Well it comes from a user group meeting in Montreal. I was the featured speaker and was talking about techniques for building Web services-based applications. I got almost to the end of my discussion when a person in the audience made a great suggestion that significantly affected the method I was talking about. After the meeting was over I tried the technique he suggested and then went back to my hotel and completely re-wrote a large Web application I was working on. I would have NEVER discovered this if I had not been in attendance at that user group.
So my point is: The best way to learn development is from other developers. If you want to expand your knowledge there are numerous resources: read a book, a magazine (this one, and while you're at it, hop up to www.code-magazine.com and tell us how you'd like to see it improve, or tell us we are doing GREAT!), go to a user group, start a user group, attend a conference, attend a seminar and more important: Have Fun!