This is the english version of my "¿Cómo ser un mejor desarrollador?" article
Maybe we have asked this question to ourselves a bunch of times. With so many technologies, acronyms and learning options available today it seems that the answer to this question is not as easy as it seems.
Maybe so many of you will respond right now: "Studying" or "Taking a Training Course", but: Is that enough?
Here’s the list of things that -in my personal life- I try to do in order to be a better developer. The main idea behind the following list is to enrich it with your ideas and collaboration.
I don’t know anything
Why? This is the most important start point and the most critic because the fundamental idea -like in any other learning process- is to recognize and accept our ignorance in so many and so huge topics and technologies. Take off our egocentrism allows us to open our mind to other kind of knowledge and other kind of questions. After all, we learn something from everyone each day. Remember that monotony is the mother of mediocrity.
Listen to PodCasts
Why? You can listen to the podcast at any time you want using your iPod, Zen, Zune, etc. in your car, at the office, at the gym, before sleep (please… BEFORE sleeping not WHILE YOU ARE sleeping ), etc. I mean: you can stay in contact with the specific topic whenever you want and you can combine it with another kind of activity (please be careful when driving because you couldn’t say to the officer "I’m so sorry, I’ve crashed the car because I was listening how to create a workflow in WF…"). But which ones? Alright take these as a recommendation: Scott Hanselman’s Hanselminutes and Ron Jacobs’ ArCast. In these podcasts you can listen to so many topics about recent and upcoming technologies and in the other hand they are fun! Those guys really know what they’re talking about…seriously.
Why? I like Webcasts because they show and explain visually a specific topic; meanwhile the podcasts are audio-only. But which ones? I recommend: http://www.microsoft.com/events/default.mspx
Why? A ScreenCast is a small video file that shows an specific technology topic in a "how-to" way. They just are awesome knowledge sources because they teach us how to perform the required tasks for the problem we’re trying to resolve. But which ones? Obviously, it depends on the technology we’re using. What about the ASP.NET, AJAX, Silverlight and Workflow Foundation as a startup?
Why? The forums are a basic resource when we have a specific doubt related to technology. With the word Forum I refer to those Web-based and Newsgroups as well. Also we have the opportunity to answer the questions of any other people in the world that has a problem and maybe you know how to fix it. But which ones? Each technology has its own forum. Personally, I often visit the Workflow Foundation and Silverlight ones.
User groups meetings / Community meetings
Why? There’s no better way of learning from others but in person, front to front about an specific topic. That’s what .NET User Groups are for, to schedule meetings between different people geographically related in order to talk and show the technology. But which ones? There’s always a .NET User Group near you. Visit MSN Groups to find more information about it.
Why? The answer is obvious. Books are an ancient source of any kind of knowledge (hundreds and hundreds of years of manual and automatic printing can’t be wrong). But which ones? Personally, I like Programmer-To-Programmer books from Wrox (yeah, the red ones). Another great development books are Microsoft .NET Development Series books because they are written by truly experts.
Why? A web log is a personal log from other’s ideas, thoughts and technical articles from its author and it’s accessible via Web. A good example is this blog where I’m writing my own opinions in how to be a better developer. Is this The Ultimate Special Platinum Double-Pack Director’s Cut Extended Anniversary Edition Article about it? Of course not! And it’s not meant to be like that tho. It’s just a way to synthesize what I do in order to be a better developer and it’s a mechanism to share it and to obtain feedback about it. But which ones? I could write down here all my feeds but I’ll just write the ones that I read day by day:
Learn to use other technologies
Why? Yes. We are geeks. And we love Microsoft development technologies, but we would be blind or crazy if we wouldn’t recognize that there’s a bunch of other excellent technologies and that not everyone in this world use the same tools as we do. In the other hand, they’re not absolutely necessary to be non-Microsoft technologies. For example, IronRuby is a technology that I don’t know how to use it but it seems to me very powerful and interesting enough to try to learn from it. But which ones? There’s a lot right in front of our eyes. For example I’m currently using and learning ActiveRecord. Other technologies in my "To-Learn" list are: IronRuby, IronPython, F#, Microsoft Sync Framework and ASP.NET MVC Framework.
Adopt a Development Methodology
(Very special thanks to Misael for this one)
Why? A methodic person has more control over the things he performs, and he can identify where he is and what step follows in his development path: Identify, Measure, Document, Secure and Control are steps that can be reached using the correct methodology. But which ones? There are so many methodologies but the must important could be the following:
Do not procrastinate
Why? Up to this point, we have mentioned a list of learning resources that we can use in order to be better developers. But we need the tactics and strategy, and these are of course: Discipline. We need a great effort and discipline in order to accomplish our goal and to stop using and doing the things that waste our time. YouTube, FaceBook, MSN Messenger are just a few of those things that come to my mind right now. No excuses (like Alice in Chains once said) please. Remember how we worked 10 years ago. Let’s measure our procrastination level: If you think this is a very drastic solution then you have a very serious procrastination problem. But, if you are willing to stop wasting your time (you know you do!) then: Congratulations, your procrastination problem can be cured.
Try to hang up with people that love software development
At last but not least, it’s very important to look for people that are just as restless as you are and have the same learning goals (please refer to point number one). Once you find them then it will be very helpful to talk and chat with them, and get support from them in your process of personal improvement. That process would be less painful and more fun!
This article was not meant to be a meme but I would like for this topic that the following people could share their own thoughts and ideas: