Posted by RTomlinson
5/22/2011 6:56 AM |
Follow The Leader
Software development is still in its infancy. When you consider other industries, such as manufacturing, writing software has a very short history. The word “software” was first used in print in 1958 and many of the software visionaries today are still alive. As a result we don’t have hundreds of years of research, guidelines and experience to have rigidity in our daily practices.
As we learn and look to the evangelists and proposers of best practice there stands the inevitability that many of us will play follow the leader and follow their gospel without forethought and questioning of WHY.
Current trends, and there are many of them, such as development methodologies; TDD, BDD and DDD, practices such as unit testing and patterns e.g. inversion of control, dependency injection, repository pattern, have heavy focus at the minute and so they should. The problem comes when best practice is followed and implemented without the reasoning, justification and understanding of why. In other industries early adoption is made more difficult by legislation and industry governance. That's not to say that early adoption is necessarily bad but in a rapidly changing market developers need to be aware of the pitfalls.
So what is the answer?
- Question everything. Yes the repository pattern makes sense, but is it appropriate in your situation? WHY are you using it and what are the benefits? Consider the impact of alternative solutions.
- Think ahead. Be hype-agnostic and consider that your decision for adoption of a particular technology/framework/pattern has future impact. Consider product support in choosing a particular technology. Is this developed by a single person as a person project? Will it be dropped shortly down the line? How active is the community of support?
- Keep it simple. Don't become an architect astronaut. Don't spend forever architecting and adopting every pattern that is currently popular or that your favorite Microsoft evangelist is touting.
Of course there is never any guarantee. Even if a technology/framework is from a large organisation (read Microsoft) this does not mean that it is the right choice for you and it doesn't mean that it will continue to be supported.
Speak to your fellow developers. Whether it be in your team, at a local developer event or old colleagues. I find they usually throw up ideas that you haven't even considered and your products will usually be better for it.