Design patterns are a kind of Object oriented programmer’s degree

I’m not an active contributor to Dzone but I always keep an eye on its top list. One day, I was surprised because a link called “Design Patterns are not a Silver Bullet and the State of the Programming Blogosphere” was on the top 5. To summarize briefly my understanding of this post, the author criticizes that, in the “blogosphere”, many developers write that you are not a good developer if you don’t know the GOF’s design patterns. Even if I understand his point of view, I’m still convinced that it’s a “must-have” skill, especially for young developers.

Work as a team

First, I need to come back on what a good programmer is for me. In his book “Refactoring: Improving the Design of Existing Code“, Martin Fowler wrote this quote:

Any fool can write code that a computer can understand. Good programmers write code that humans can understand

I agree on his definition of good programmers. This value is so often taken into account when we talk about agile methodologies: pair programming or code ownership tries to limit the “compile-only” code or the common sentence “It works on my machine”. When you read code, it is important to be able to read it quickly : if you can’t, it is probably because you are in front of a technical debt and that this source code has to be improved. When you’re not the writer of it, before modifying/debugging it, you will have to understand the intent of the developer in order to avoid any regressions. It’s one of the reasons why Design Patterns are so important: using one of them, you clearly describe to others what you are trying to do, you put a name on it and it enables you to write code for humans.

I’m convinced that people who know design patterns are better than the others when they have to work as a team.You share a same common language!

Long-term value

The biggest deal of a paid developer is to find stuffs to learn/know which improve his/her value on the market. Nowadays, object oriented is clearly the most researched skill. When an employer wants to hire a developer, he/she will test his/her technical skills and his/her human skills (keep in mind that you want to hire technical talents). Knowing Java and/or C++ doesn’t indicate that you write “good” code. I have read so much code from C++ guy which is in fact… C code. Knowing Design patterns indicates to your future employer that you know what an object is and that you prefer composition to inheritance. And my point of view is that it’s a long-term value compared to knowing a language!

Learning cost is low

I’m a little bit mixed about the debate whether we have (or not) to know Design Patterns (reason of this post). In my opinion, it is a must-have skill and the learning cost is low: I don’t understand why a good developer don’t want to learn them. The first book (Design Patterns: elements of Reusable Object-Oriented Software) is a reference one and so, a bad one to learn them. I really recommend to read Head First Design Patterns (low cost and read in one week) and then, to keep a wonderful cheatsheet on your desktop (consult the list there).

So, as a conclusion, don’t worry about not knowing them, just invest few days to learn them. In my opinion, they are like a OOP’s degree : you can be good without it but your skills are easier to show when you have it.

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Reddit
  • Yahoo! Buzz

Comments 4

  1. Mike Borozdin wrote:

    Hi,

    I’m the author of the above mentioned article.

    You may have some valid points that being aware of design patterns can add bring you some value when looking for a job, but…

    > I have read so much code from
    >C++ guy which is in fact… C code

    What’s wrong with C code?

    Yes, C isn’t an object-oriented language? So, what? Can’t you produce good code without OOP? If so, I’m sorry, you just admit you are a bad programmer.

    Posted 15 Feb 2010 at 8:44 pm
  2. coder-friendly wrote:

    Hi Mike,
    Sorry, maybe my sentence is not well written. What I mean is that if you want an OO programmer, the fact he/she uses C++ doesn’t mean he/she knows what an object is (the same in Java ;-) ).

    I completely agree that you can produce really good code in C! I respect so much the developers of the Linux kernel.

    Thank you for your comment, I hope this answer clearly states that we agree about great C developers :-) .
    - Coderfriendly

    Posted 15 Feb 2010 at 9:18 pm
  3. andrea wrote:

    thanks for your post, is very exciting

    Posted 16 Feb 2010 at 7:30 pm
  4. coder-friendly wrote:

    Hi Andrea,

    I’m glad to read that you like this post.

    Thank you for your comment and I hope I see you again on my blog.
    - Coderfriendly

    Posted 16 Feb 2010 at 9:53 pm

Post a Comment

Your email is never published nor shared. Required fields are marked *

Additional comments powered by BackType