The other day, someone posted to a discussion list I’m on with this subject line:
How to become master writing C# code
The discussion that followed had a lot of great ideas and insights, from many well-respected and experienced C# developers. It would be a shame not to share some of the ideas that were offered. Since it’s a private list, I’m refraining from crediting ideas with those who presented them, but if any individual contributor wants to give me permission I’ll be happy to include your name with your idea(s) and a link to your blog or twitter profile.
The initial question:
I have some goals and one of these goals is to become a senior dev. For that, I need to improve my code quality and practice a lot. What do I need to do to become a senior dev? How can I practice at home? Are there any links with many exercises for practice?
The answers fell into several categories, which I’ll sum up here according to the kind of resource being recommended.
- Microsoft’s .NET Application Architecture books (free)
- Clean Code
- Agile Principles, Patterns, and Practices in C#
- Code Complete (2nd Ed.) – “a must read for any developer and/or architect”
- Design Patterns
- Design Patterns Library
- SOLID Principles of OO Design
- Advanced Unit Testing
- Domain-Driven Design Fundamentals
- Refactoring Fundamentals (which discusses code smells to look for and how to fix them)
Practice code problems on these sites:
Open Source Projects
- Humanitarian Toolbox – A great way to get started in open source and for a good cause. Uses the latest ASP.NET Core technology stack.
- .NET Docs on GitHub – Submit PRs for the .NET documentation. Look for issues labeled “Up for Grabs” as good starters.
- Roslyn analyzer projects like CodeCracker – A great way to get deep on the language itself rather than broader architectural concepts
General Tips and Advice
- Contribute to open source projects
- Just taking a course won’t make you a senior dev – you need experience. Education is helpful but is only the basics to get the experience.
- Specialize on something you really like and feel motivated to explore more and go all the way to understand every last bit and piece. Then, move on to the next topic and repeat.
- For topics you really like, build a presentation around it to share with your team or at a user group meeting.
- Learning resources like those above are great, but need to be part of a bigger picture. Not just learning C#, but also application design and patterns through exercises and larger projects.
- Share what you learn, as you learn it. “To teach is to learn twice.”