Feb 17, 2005 / Software Development - Reinventing The Wheel vs. Extreme Programming

4 comments
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 Comments:

At 7:51 AM, Anonymous Anonymous said...

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

 
At 12:45 AM, Blogger Uladzimir Liashkevich said...

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.

 
At 1:33 AM, Blogger Michael Dubakov said...

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.

 
At 6:40 AM, Blogger Michael Dubakov said...

>>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.

 

Post a Comment

<< Home

Subscribe to the RSS feed
Stay tuned by having the latest updates via RSS
Follow TargetProcess on Twitter
Get in touch with our team

TargetProcess is an agile project management tool. It is designed to solve distributed teams problems and support agile development processes.



Key Features

  • Full Agile Project Management Support (Scrum, XP, Custom)
  • Productivity Tools (Tp.Tray, ToDo list, dashboards, Inline editing)
  • Customizable Development Process
  • Subversion Integration
  • Integrated Bug Tracking, Help Desk, Time Tracking

Get TargetProcess for Free (5 users pack)

Previous Posts



    follow me on Twitter