Software Development – Reinventing The Wheel vs. Extreme Programming

Why developers so often reinventing the wheel? There are so many ready to use solutions, there are so many Persistence Layers, controllers, libraries and components, build tools, templates and so on. Why anybody wants create DAO while there is Hibernate (or other competitors)? Why anybody wants create custom presentation layer while there is Tapestry, Spring and Struts? Well, usual arguments are:

  • “This framework is a crap and we should not use it”
  • “Did you see source code? It’s a hell on the Earth!”
  • “Its functionality is incomplete. We have to use tricky-feature-for-transactions, but it is not there”
  • “Its too complex to learn and too heavy to work with”
  • “We can’t integrate all that stuff. It will never work”

While in several cases these arguments are valid, in most cases they hide the following thoughts:

  • “Sounds interesting, but I am pretty sure that we will not use it properly and end up with something messy. I don’t thing we will be able to apply this technology properly”
  • “I don’t want to learn new tool. I am pretty comfortable with Java language and new framework don’t attract me”
  • “This is too complex for me. What if my boss discovers my weakness?”

So most often developers just don’t want to try new things, they afraid to expose their weaknesses, or they just do not believe in framework or approach.

I think this is just a lack of courage and trust in the team. Extreme Programming may help to resolve these problems by changing working environment and team’s atmosphere. It is really hard to do XP without courage. It is really hard to hide weaknesses while programming in pairs. People change after doing XP several months. They adapt to accept criticism, to express they thoughts with no fear and believe in team. Or they leave.

XP teams has more courage to try new approaches, new frameworks and new methods. However, there is a reverse of the medal. Sometimes XP teams try to bring too many new things into development process. I saw it by myself, and result was very bad. Project was stopped. Well, there was quite good progress in fact, but top management felt that time might be spent more efficiently.

Ok, getting back to the main topic. I think another reason to not try new frameworks is a choice. Really, to decide what O/R mapping framework is great for your, you should spend pretty much time on comparison. You may try dozen tools and still don’t decide what to choose. Often time pressure is hard and you should *KNOW* your tools, but not investigate them.

I personally spend some time every week to evaluate new tools and approaches in software development. I learn constantly. And very often I know what to use in particular situation.

4 thoughts on “Software Development – Reinventing The Wheel vs. Extreme Programming”

  1. Why do so many programmers keep reinventing the wheel? For the same reason that each vehicle has its own design of wheel. What fits a saloon car does not fit a racing car does not fit an invalid carriage does not fit a tractor does not fit a bicycle does not fit a ….. whatever. Need I say more?

    If I want an infrastructure for language X it’s a waste a time looking at those written for language Y.

    If I need an infrastructure with certain attributes then why waste my time looking at infrastructures which do not have those attributes.

    Besides, there is no such thing as “one size infrastructure fits all”.

    Tony Marston
    http://www.tonymarston.net

    Like

  2. Most Java frameworks just plainly suck resulting in DIY syndrome (of course there are some exceptions):
    http://talk.mail.ru/thread_article.html?ID=31778564

    And don’t forget about framework-vs-seedwork argument:
    http://www.martinfowler.com/bliki/Seedwork.html

    Also I disagree with the post title. RTW issue is orthogonal to XP. Sometimes XP reinvents it, sometimes refactors to an existing wheel. Whatever suites DTSTTCPW principle best in a given situation.

    Like

  3. 2 Anonymous.

    I agree with you, however there are so many cases when developers just don’t know about very good and appropriate existing solutions.

    Sure, there is no silver bullet, but in many cases you can get open source solution, spent 2 weeks and customize it if you need very specific features.

    I saw so many examples of bad decisions and ‘wasting time’ activities! Many developers just don’t know their tools. That’s it.

    Like

  4. >>Also I disagree with the post title.

    The title just emphasize importance of courage in software development (courage is one of the XP principle). Often people do not have courage to try something new thus RTW.

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s