How to be a better developer?
This is my follow-up to Rodrigo's excellent post "How to be a better developer?", where he makes some good points, by the way.
I pretty much agree with him on the topics he pointed out, and without exhausting the subject, I would add the following topics:
Know what your framework has to offer. Use it.
It is common to see experienced developers coming from other languages, recreating classes that already exists in .NET Framework. I can't remember how many versions of the System.IO.Path class, I've seen in the last few years. How many projects you joined that used this "Utils" class with lots of methods that just recreates existing features of several classes from .NET Framework?
Another example would be the .NET Role-Based Security model. It looks like only a few people really know about it, and I can't get tired of seeing independent role-based models developed from scratch. Learn how this "provider" concept works, and start creating only your customized "providers", instead of creating the whole "services".
Extend the wheel. Do not reinvent it.
There are common solutions for common problems. Learn design patterns, know which one is better for each situation, and apply the ones that fit in your project. By using well-known design patterns, you will probably solve the problem in the best way, and will also make it easier to other developers understand what you did.
Write technical articles
Yes. By writing technical articles you force yourself to get a deeper knowledge of a subject, and it gets even better when you get feedback from your readers. Start your own blog would be a good way to start, but in any way, publish your articles also in one of the web sites of the CodeZone Community, to get a bigger (and qualified) audience.
Give technical presentations
Giving technical presentations, is another way to force yourself to get deeper knowledge of a subject. You could do simple internal presentations in your company, or in the user group of your region. Even better, if you like teaching, consider becoming a Microsoft Certified Trainer (MCT), and teach some courses once in a while. You will learn a lot while you prepare yourself for each course, and also from the huge amount of questions raised during the training (sometimes even in the coffee-break :)). Did I mention you can also make a few bucks with it?
Write quality code
There are several rules and guidelines of what you should do, and how should you do, for each technology. Learn from this guidelines, adopt the ones that makes sense on your project, add your own guidelines, and make sure you and your team keep following this guidelines.
Do not write "temporary code"
If you know how to solve a problem in the right way, just do it. If you write temporary code instead of implementing the real solution, the chances are that your temporary code will last forever in you application. Remember that, most of the times, doing it the right way takes the same effort as doing it in the dirty way.
Test your code
It doesn't matter if you do Test-Driven Development Unit Testing or Plain Old Unit Testing. Create and maintain an updated test suite for you project, make sure you are covering as much code as possible, and make sure your code pass all the tests before going into production. Unit Testing is a fantastic way to make sure your code is doing what it is supposed to do. Be the first to discover a bug in your code. Not your user.
What about you? What would you add to this list? What would you remove?
Why?
Edit:
Arnaud Weil also wrote his opinion on "How to be a better developer" and Thomas Krehbiel also wrote his opinion on "How to be a better developer"
.NET Framework 3.5 Beta Exams Extended
The BETA certification exams for .NET Framework 3.5 have been extended through February 8th 2008, and it still possible to take one of the exams below for free:
- 71-502 TS: Microsoft .NET Framework 3.5 - Windows Presentation Foundation
- 71-504 TS: Microsoft .NET Framework 3.5 – Windows Workflow Foundation
To take the exam, just follow these steps:
- Register on Prometric's website.
- Find a Prometric center near you.
- Choose the date and time to take the exam, and use the code 502B1 for the exam 71-502 (WPF), or the code 504B1 for the exam 71-504 (WWF), to get 100% discount on the exam price.
Enjoy!
via Gerry O'Brien.
Paperclip Themes for BlogEngine.NET
Background
When I decided to start this blog, I spent some time figuring out which CMS / blogging engine would be the best choice for me, and the main constraints was:
- It should be a lightweight system, to run reasonably fast in my mega-cheaper hosting provider.
- It should allow me to easily customize it and/or create extensions for it.
In the past, I had great experiences with WordPress and Drupal, implementing for some customers, and also creating the PDAExpert Community, which is totally based on WordPress. Therefore, going to WordPress would be the natural choice for me, but the thing is: WordPress is developed in PHP, and I'm not that fan of PHP. I certainly would prefer to create add-ins and implementing new features in C# or VB .NET for example, thus, I decided to include the one more constraint: It should be .NET-based. It's a blog about .NET anyway... Why would I use any other technologies? :).
After evaluating lots of good options like SubText, BlogEngine.NET, Community Server, among others, I realized that BlogEngine.NET would be the best choice for me. It's simple, lightweight, and open-source. Community Server is, by far, the most powerful of them all, and I actually tested it for a few days, but besides being 3x slower than BlogEngine.NET (which is perfectly understandable, given all the features it supports that BlogEngine doesn't), the idea of having the source-code, and being able to adapt it to do exactly what I need was perfect.
I've chosen BlogEngine.NET then, and started to look for a theme to use, and get the blog running. Although there's good themes available for BlogEngine.NET, Community Server comes with this very nice theme called "Paperclip", which has at least four variations: Cactus, Summer, Fall and Winter. If you are a developer, you probably have seen this theme, as it is used by most of the MSDN and ASP .NET Community blogger's.
I decided that "Paperclip" was the way to go, and then I adapted the theme to BlogEngine.NET, and finally I'm ready to run the blog with it, and also to share the theme with the BlogEngine.NET community.
You can download the four variations of the PaperClip theme below. I hope you enjoy it.
Paperclip Theme for BlogEngine.NET