
I got caught in a flypaper conversation a while back during which one of my fellow developers asked for suggestions on how to keep his .NET skills current. Professional development, as it is generally called, isn't something I think about often. I read a lot, read lots of blogs, speak and write about .NET development, and experiment with lots of new technologies as they become available. Professional development is only a side-effect of my curiosities and interests.
If my observations are anything close to reality, I find that most developers do not spend nearly enough time sharpening their saws. Steven Covey, who coined the phrase in his book 7 Habits of Highly Effective People, describes sharpening the saw as "having a balanced program for self-renewal in the four areas
of your life: physical, social/emotional, mental, and spiritual", with the mental area concisely described as "learning, reading, writing, and teaching." The part of the saw that I am talking about is in the mental department.
Other than the 'soft' skills required for advancing in any team environment, a developer must constantly be sharpening his skills in software development in order to continue to be a successful software developer. Developers need to be knowledgeable enough about a broad range of topics to bring the right tool to the table when a need arises. Even if you aren't an expert with the tool, or even very proficient, you need to know where to start. For developers who make a habit of keeping their saws sharp, not everything will look like a nail just because they know a lot about hammers.
Back to the question of skills. So I thought about the things I do. Here is a brief list of the things I do that I think help keep my .NET skills current.
Magazines
Unfortunately, there don't seem to be many mainstream magazines that specifically cover .NET development. However, we have some pretty good ones. If you are on a budget, you will find that you can find the content of most magazines available online.
MSDN Magazine is probably the most well known .NET/Microsoft development magazine, although it isn't my favorite. In my opinion, the articles are too long and detailed (does that sound backward?). In most cases, I am looking for bite-sized, ADHD-friendly, articles that cover the "why, what, and so what" questions along with enough technical detail to get me started on a project. I would prefer more articles that dive deep on more narrowly focused subjects so that I can pick the topics I am interested in. Nonetheless, it is still a very good magazine for staying current with Microsoft technologies - especially the new and yet-to-be released technologies.
Visual Studio Magazine, while it almost faded out of existence several years ago, is experiencing somewhat of a revival. Good authors have been contributing some great content and the magazine has become something I read more regularly.
Along the same lines, CoDe Magazine provides some pretty good .NET technical content as well, but hasn't made it into the group of sources I consult regularly for .NET content (no can explain). One very nice feature that I love about CoDe's website is their topical index. Click any one of numerous topics such as WCF, AJAX, XML, etc. to see a list of articles covering the topic (similar to a tag cloud on a blog).
Find It Online
In addition to reading magazines, preferable online versions, you will find that there are lots of web sites devoted to .NET development topics. I will suggest some, but there really are too many to try to list here. My suggestion is to find several that focus on the area of programming that you want to learn about, and check back with the site regularly for content of interest. Most of them allow you to subscribe to a syndication (RSS/Atom) or email feed to have regular updates pushed to you when new content hits the site. Subscribe to a few and spend a little time each week reviewing the new content and reading/skimming the articles that interest you.
Before getting to the online-only sites, keep in mind that most print magazines (including MSDN Magazine, Visual Studio Magazine, and CoDe Magazine, all mentioned above) can be read online.
One of my favorite programming web sites has always been DevX. <FullDisclosureStatement>I must point out that I also write periodically for DevX, but that is only because after searching around several years ago, DevX was the online publication I liked the most.</FullDisclosureStatement> DevX is a very broadly scoped programming site - it does not specialize in any single type of development and they generally don't dive overly deep on any single topic. Instead, DevX offers a very broad set of content for software developers of all types and ranges of experience. Subscribe to their email digest in the programming areas you are interested in.
The Code Project is also a favorite of mine. The Code Project is a site where developers go to post how-tos, sample code and articles about software development. Like DevX, The Code Project serves a very diverse audience. However, there are so many new contributions every week that you can typically find several different articles on any subject (most with sample code) you are searching for.
Two others that I follow very closely are InfoQ and TheServerSide.NET. InfoQ is a very broadly based architecture and development community news site. It covers everything from Java and open source development to .NET development. If you consider your role to encompass that of architecture, make sure you keep up with the news flowing out of InfoQ. TheServerSide.NET is slanted more towards boots-on-the-ground developers practicing the art of .NET development. Both are good places to keep up with the world of development.
Even better than reconnoitering the web site on a regular basis, which you are likely to forget to do on a regular basis, sign up for the periodic emails from the sites. It pushes the content right under your nose. If you spend the time to read through these messages, you will have no trouble staying on top of the goings on in the industry.
Blogs
Blogs might initially seem similar to online magazine articles, but after reading through them for a while you will find that they are generally much different. Blogs are typically more narrowly focused streams of content. You will find authors blogging about things they come across in their jobs: programming VB.NET, software architecture, WinForms control development, etc. What's better, most blogs support subscriptions so you can not only be notified of new content, but also so you can read the content at your leisure from any of a number of great blog readers (if you don't have one you already LOVE, try Google Reader). The idea here is to pick lots of blogs from authors that post about topics that interest you. Plan to add more blog subscriptions as you find more content and to unsubscribe from blogs that go stale.
If you are a .NET developer, check out Scott Guthrie's blog. He posts on lots of topics of general interest to .NET developers.
Do a Google search for ".net programming blogs". Subscribe to the ones that interest you. I find it helpful to browse the actual blog web site occasionally to find links to other interesting blogs. Do this periodically to keep your list of blogs fresh and interesting to you.
Although not of specific interest to .NET developers, one of my favorite techy blogs is Coding Horror, hosted by Jeff Atwood. The topic isn't always about programming, but Jeff normally writes about topics that are of interest to developers with a sense of humor that is sure to please all but my wife, who doesn't seem to find humor funny.
Books
There really aren't a lot of general purpose .NET programming books that I can recommend, since a good book has a narrow focus on a particular subject area. However, I have listed a few good places to start below.
Code Complete, by Steve McConnell, is one of the most widely read books about solid coding practices that exists. It is now in its second edition (I own both) and has been revised to include more .NET coverage.
A topic that ALL developers should know more about is design patterns. The best book on the market for learning design patterns is Head First Design Patterns. It is one of a number of books from the Head First series, which takes a narrative and almost Socratic approach to teaching design patterns. After reading Head First Design Patterns and when you have come to understand when a design pattern is useful and how it works, you can pick up Professional Design Patterns in VB.NET or purchase download-able code for each of the patterns from the Data & Object Factory. While I don't recommend it because it is more academic that most developers need, I will get beat up (no, seriously) if I don't also mention the so-called gang of four design patterns book: Design Patterns: Elements of Reusable Object-Oriented Software.
Another great way to stay fresh is to get certified as a Microsoft Certified Professional Developer. While I don't value certification for most developers, it is a big help for either new developers or developers getting out in the job market. A MCPD line on your resume can stand out when large numbers of resumes are being reviewed. If you are happily employed, the training can yield lots of nuggets of new information you didn't previously know and, in some cases, get you a small bonus or bump in pay.
There are lots of other books you can consider. There are only a few that I can recommend to a broad audience:
Practices of an Agile Developer should be required reading for developers. Even if your development group doesn't practice agile development, read this book. It should have been named Practices of a Professional Developer.
Peopleware and The Mythical Man-Month are age-old favorites that seasoned software developers know and bring up, often in a passing way, in hallway conversations. They are good bedside reading because they will put you to sleep and because there are sound management principles covered throughout both books.
Also, as a general rule of thumb, don't shy away from management books. Having noodled over some of the issues faced by managers might be a benefit one day when you have the opportunity to lead a group of developers. Management books are also good because they can help a developer to be more self-aware of himself when it comes to how managers view developers.
Conferences/Training
The most popular conferences are the large national conferences hosted around the country. The biggest conference with the broadest diversity of content available is DevConnections, held twice a year: Orlando in the Spring and Las Vegas in the Fall. This conference draws the best speakers every time.
Another big conference to check out is VSLive. VSLive is very similar to DevConnections, except on a smaller scale. VSLive travels to more venues so you might find one closer to home.
I am very happy to see that there are smaller locally hosted conferences popping up all over the country. These are often non-profit and often hosted by a local user group. They don't have nearly as many nationally recognized speakers, but are LOTS cheaper, don't require travel, and last only 1-3 days. These factors make local conferences easy to get approved by your manager. Ask around at a local user group or check out Community Megaphone to find a conference near you. If you live in or near Nashville or Knoxville (Tennessee), check out DevLink (Nashville) or CodeStock (Knoxville) - both are great examples of local conferences offering great content at unbeatable prices.
Microsoft hosts events in lots of cities all over the country to promote their servers and development tools. Don't miss the free training and an opportunity to network with other developers in your area. Check the MSDN Events site regularly.
Another avenue you can pursue is focused developer training from one of many training providers. In most big cities, you will probably find several training providers that offer a wide range of training. Be careful though - many training providers simply choose to use the Microsoft-authored training curriculum, which is good enough to get you started if you are starting near zero. The best training providers that I know of are Pluralsight and DevelopMentor. Both have written top-notch custom training programs covering many .NET subject areas. Pluralsight edges out DevelopMentor (seems to me that most of the best talent from DevelopMentor moved to Pluralsight several years back) in terms of high-power talent teaching and authoring the courses, but DevelopMentor has considerably broader course offerings, more training locations, it offers each course much more often, and offers several courses in Guerrilla format (10-12 hours per day for 5 days).
Conclusion
I have undoubtedly missed some important points because I pulled this together very quickly. If I have missed something you think important to mention, leave me a comment.