What is your strategy for becoming a better developer?

Writing

This post is my first post about you. Yes, you. I have been thinking a lot recently about what I can do in my everyday practice in order to make myself a better developer. I had thought up a few ways in which I can better myself on a day to day basis, but they all seemed a bit shallow and cliche. So, this is where you come in. What can we, as developers, do on a day to day basis to improve ourselves as developers? What small changes in our habits can we make that will have lasting impacts on us?

Since I started this blog in order to make you and I better developers, let’s take this chance to collaborate and come up with a truly awesome list of things that we can do in order to improve ourselves. Please, feel free to add a comment with a suggestion or pass this question along on your blog and let me know what your readers come up with. I am going to take all of the feedback that I get and try to create a list with the best ideas on how we can be better developers. If you blog about it, make sure you provide me a link to your post so that I can link to it! Just don’t call it a meme or my friend Scott will kill me! (he thinks that a special place in hell is reserved for people who use the word “meme”)

I have wanted to get create a post like this for a while now, but I wanted to make sure that my readership was large enough to get some good feedback. Well, I recently passed 1000 blog subscribers (yeah, I know, tooting my own horn 🙂 and so I feel like I should be able to get a few responses. Don’t prove me wrong dear readers!

Now, I am not completely going to cop out and leave this up to you guys. I am going to put two of my ideas on here, and then let you guys take it from there.

1) Emulate – I am not talking about emulating code, but I am talking about emulating programmers. There are always going to be programmers around you that are better than you. And if you think that is not the case, then you are probably just seriously deluded, or you are on a team of one. If you do have some great programmers around you, watch what they do and how they work and you might pick up a few tips that you never thought of!

2) Involve yourself in your local developer community – For me, this has probably been then most important thing I have done in order to make myself a better developer. There is something about surrounding yourself with other smart, driven, and dedicated developers that just keeps the fires of learning going. I know that since I have been involved in my local user group I have made more great friendships and met more awesome developers than I could ever count. Just for kicks I am going to call out a few right now, so cheers Kevin Hazzard, Andy Leonard, Kevin Israel, Harper Trow, Andrew Duthie, James Avery, Jeremiah Ivan, Al Tenhundfeld, and many many more.

So, is there a tool, technique, or habit that gives you that edge? Well then share it with us!

Oh, and I just decided this, but I am going to throw in three copies of “The Pragmatic Programmer” (affiliate link) to the top three best ideas that are submitted. This is one of the best development books I have ever read and it certainly made me a better developer. I will pick the ideas that I think are close to the top and then put a poll up at the end to decide the best of the best. If anyone in the top three already has copies of the book, then let me know so that someone further down the list can get it. Remember, this is all about making you a better developer!

Update: I may have started this off on the wrong foot by throwing out some very generic ideas, but I do want to see some specifics. For example, Rick below said “Read” and Angel said “Practice” which are both excellent suggestions. But is there a specific blog or book that you have read which has made you a better developer? Even better if it is outside of the normal books that most people can think of. Is there a specific paper that you read, or algorithm that you have learned? Was there a specific project Euler task that you completed which turned on a light in your head? Was there a blog post that inspired you? On top of broad suggestions, I also want to see specific things that you did or experienced which made you a better developer!

Update: I am going to start putting links here to other people’s posts who have replied to this:

Loved the article? Hated it? Didn’t even read it?

We’d love to hear from you.

Reach Out

Comments (30)

  1. Dedicate time to reading (as Rick suggets in his post), but then actually use some of the concepts you learn about. Doesn’t have to be a work project (don’t use the tool if it isn’t right for the task at hand), but you could put it to use on a personal project. The easiest way to retain what you learn is to apply it to something!

    Also, feed off other developers who are also passionate on improving their craft. This could be coworkers, user group attendees, or bloggers. In addition to this blog, I would suggest subscribing to Jean-Paul Boodhoo’s blog (http://www.jpboodhoo.com/) as well as Kyle Baley’s blog (http://codebetter.com/blogs/kyle.baley/).

  2. @Rick Thanks! I certainly agree with your suggestion to "read". I too subscribe to over 100 blogs, and in fact I have considered posting my list of blogs so that others can have a good starting point for getting the pulse of the .net community.

    @John Agreed, feeding off other developers passion is what keeps the whole engine going. And I concur that JP’s blog and Kyle’s blog are both excellent sources of info and inspiration.

  3. Teach.

    I know we have the whole "those that can, do, those that can’t, teach" mantra running around in certain circles, but few things make you really learn a concept like trying to teach it to people who don’t know it.

    So try teaching the concepts to others.

    Or do the next laziest thing: hang out on IRC (##csharp on freenode.net is good) and help answer some of the many questions that come up, some C# focused, some library focused (WPF, etc.), and some design focused (how would you design such and such).

    This also builds on the "involve yourself in your … developer community" suggestion. Your developer community is more than just the people in your local physical area. Online can add another dimension, such as the aforementioned IRC or stackoverflow.com…

  4. Read this book: [b]Agile Principles, Patterns, and Practices in C#[/b] by Robert C. Martin.

    I bought this book at my first DDD conference in London. I think that this book, combined with going out to more community events and reading technical blogs, has improved my coding skill 3-fold! It contains so many great ideas and practices which can/will improve your code!

    PS. Cool blog Justin 🙂

  5. @Kyle Thanks for pointing me to that post on Justice’s blog. I think his idea was to read a lot of books in order to become a better developer. (and that is not at all a bad idea!) I want to see more than that though. We all know that reading can make us better developers, but what other tips do people have?

    For instance, I learned long ago that keeping legal pads of info makes me a better developer. I keep legal pads and I scrawl anything and everything on them, then they provide a temporal history of everything I have done, and thoughts that I have had. What did I do three weeks ago, well, I can just flip back through my legal pad and it tells me. What blog post ideas did I have? I can just go find them. While this has nothing directly to do with programming, I believe that it has made me a much better developer.

  6. I like Jonathan’s comment (Teach) and Rick’s (Read). I don’t subscribe to blogs but I do read a fair bit from Google searches.

    Maybe the most important thing is being focused on being a better developer rather than getting paid $$$. Although $$$ is nice.

  7. While I don’t have any specific blogs or books to recommend, I can’t not tell you how much surrounding yourself with those that are better/smarter than yourself.

    Finding people that do what you do but have been doing it longer than you is a valuable resource. As they can tell you things that you never thought about or considered.

    Another idea is to actually talk and discuss things with those people you meet. Find someone who will challenge your ideas and concepts and also allow you to challenge theirs. You will learn so much from discussion and debate that you won’t even realize it until the next time you have a discussion with someone else.

    I also learn by listening to those discussions and debates. You don’t always have to have a voice. Sometimes just listening can teach you something.

  8. I agree with all the answers so far but would like to add that reading lots of code has really helped me lately. Reading through the code for Rhino Mocks, IronRuby, Asp MVC … Reading code for any good sized project that is interesting (and preferably led/developed by some talented people, though reading bad code is useful in it’s own right).

  9. I would say that you should start out by choosing your area of expertise. Not many people are good at all areas of everything…
    Find ‘gurus’ that do well in this area, if you are into architecture juval lowy is a great person go follow.
    And listen to podcasts like dotnetrocks and hanselminutes

  10. @Michael Agreed, surrounding yourself with smart people is one of the fastest shortcuts to becoming a better developer. Sometimes it is easier to have someone tell you that you are doing it wrong, rather than have to go through the pain of discovering it yourself.

    @Klaus Excellent suggestion. I had never really thought of "choosing an area of expertise" as a way to make yourself a better developer. But I think you are absolutely correct. Sometimes I feel like there is so much out there to learn it can be overwhelming, but to take a small piece of the pie and learn it very well can certainly help you focus and make you a better developer.

  11. For me: Practice, practice, practice.

    Unless your day job has a whole lot of latitude there probably aren’t enough opportunities to a) try different approaches to the same problem and b) be prepared to totally scrap what you’ve been doing.

  12. @joe I think that practice is important in all areas.

    @SuperJason Hilarious title, I’m assuming there was a bit humor in there. It is a good list of qualities that make a good developer.

    @Chris Jetbrains is a great tools, but how does it make you a better developer? I know for me, it makes me faster. But does it enable you to be more thorough, and if so, how does it do so?

  13. There’s one excellent book that will make you better programmer. Not even that you’ll be one of the best if you will follow its rules and suggestions. I’m talking about the following perl:
    Author: Steve McConnell, Book Title: The Code Complete (http://cc2e.com/)

  14. Justin,

    here are two blog entries of mine, that are centered around that topic:

    ‘Helpful’ Attitudes of a software developer:
    http://gleichmann.wordpress.com/2007/11/22/is-it-about-fancy-titles-in-software-development-no-its-about-your-attitudes/

    Some Books, that influenced me most, on my way as a software developer:
    http://gleichmann.wordpress.com/2008/09/19/yet-another-book-recommendation-list-software-development/

    Greetings

    Mario Gleichmann

  15. Code a little, test a little, code a little, test a little, and keep coding a little and testing a little until your code is complete and tested. Do not just write unit tests, but integration tests as well. Automate and maintain your tests and use them to verify your code before committing it to the repository. Never check in blindly. Always check in tested code that you know works correctly as expected. If in doubt, write more tests.

  16. In the same vein as emulate, but more specific.

    The majority of your learning will take place at work, so choose where you work carefully. Work somewhere where you can learn new things, a place that will challenge you. I was extremely fortunate to have an excellent dev manager right out of university, and it has helped me (and my employers) immensely.

    His advice: If you are no longer learning new things or no longer being challenged, it is well past time to find more challenging work.

  17. I think the best thing you can do is to find out where everything you use breaks. Every process, tool, technology, and methodology were designed for a problem domain that is, of necessity, limited. Find out where those limitations are and know the edge cases that explore them.

    A good thing that makes for better developers that gets little attention is to learn the business domain. This includes (and should start with) learning sound business principles. Each aspect of a company deserves some attention from you, even if you work for a software company that serves a very specific niche. Accounting, marketing, operations and management all have their specific concerns and the more you learn of them, the better you’ll be able to communicate and navigate the white-water sections of your career.

  18. Don’t ask me about neuro-science or how brain works, but you should try to learn how to play a musical instrument, It will ease your brain, then you will desing and code better.

    I’m trying harmonica… I’m having a good time even when I’m a really bad player.

  19. 1] Try out different languages,libraries and SDKs. I feel this is a great way to earn practical knowledge rather than reading books.

    2] Practice..regularly. Yes ! I never believed in ‘only reading’. I try always want to keep myself busy writing code, no matter for which platform/language. Most developers, as they go up the ladder, start taking on management/lead roles (at least here in India).

    3] Diversify ! I am not aiming to become master of all. But I have often realized that knowledge or familiarity of diverse topics, helps you become better developer in your language/platform. This is source of new ideas.

    4] Work for some open source project. It is my dream to be part of such a team, at least for ashort period. Lot of innovations and hard core programmings happening in OSS.

    5] Visit this site daily : ‘slashdot.org’ 🙂

  20. I think one of the best ways to learn is to [b]constantly[/b] keep a sandbox project on the side to continually rewrite code whenever a new concept is released.

    For me, I learn by doing, reading other blogs, and trying their ideas to see if it works for my style.

    Also, McConnell’s Code Complete was an amazing help in terms of how to structure code at a basic level.

    Good talk tonight, Justin. It was nice to finally meet you.

Leave a comment

Leave a Reply

Your email address will not be published. Required fields are marked *

More Insights

View All