I’m relatively new to .NET programming (and OOP in general) and I want to make sure I’m not developing bad beginner habits when designing my applications.
If you were hiring a new .NET developer and had to get him up to speed relatively quickly, but also wanted to make sure he adopts best practices (e.g., single responsibility principle, unit testing, separation of concerns), what would be your recommended learning path?
I’ve been listening to the Polymorphic Podcast lately and, while listening to discussion of best practices is helpful, I’m finding a lack of screencasts and code examples aimed at providing an introduction to these best practices.
There are two separate, though related, goals:
and
Being excellent at the latter will require being at least good at the former, but both will require hard work. Don’t get locked into the Microsoft mindset, or even a .NET one – you need to develop familiarity across a wide range of the field.
If you have the flexibility to do so, find yourself a job or a team where someone experienced is willing to do some mentoring.
Next, recognise that you’ll need to do a lot of reading, both online and off. If your reading speed is average or lower (around 250 words per minute or less), then you should consider attending a training course on reading techniques. I’ve done a course with Write Group (New Zealand) and trebled my reading speed.
In terms of books, Object Thinking from the Microsoft Press would be a good starting point; I’d follow that with Programming .NET Components (Juval Lowy) and Smalltalk Best Practice patterns (Kent Beck), then The Pragmatic Programmer (Hunt and Thomas).
After that, trawl around (on StackOverflow or elsewhere) and find lists of recommended books and blogs. Keep reading – try to read a new book on a new topic at least every two months, if not monthly.