Tips for Picking the Right Software Technology
When all you have is a hammer, everything looks like a nail. You may have heard this quote from Abraham Maslow's The Psychology of Science before, but it applies well to software technology choices. Often, development teams who are experienced with a particular technology set tend to lean toward their technology of choice for each and every software solution.
The flip side of the coin is those who are constantly seeking to try new things. Have you heard all the hype about NoSQL? It must be perfect for our next mission-critical project; it's in every technical headline!
The key to choosing an appropriate technology for a software solution is to avoid bias and carefully consider the requirements you know. As an agile proponent, exhaustively considering all requirements is out of the question as this falls under the mantra of big-design upfront. A high-level understanding of the general needs of the system can suffice if you simply know the right questions to ask.
If a team were deciding between a NoSQL and a more traditional relational database, they would need to look at several aspects of the problem. Is eventual consistency reasonable or is transactional behavior a business-critical need? What type of scalability and replication needs does the application have? What type of database solution do software solutions similar to ours generally use?
The answers to questions like these go a long way toward ensuring that, at least from a high level, the technology choices are sound. Simply look at the major feature differences between the technology choices and form a checklist that you can apply to the requirements you have. Prototyping and tracer-bullet implementations are also a good idea when firming up technology choices, especially when those choices include technologies you may only have a cursory understanding of.
So the next time a software project comes up, only use a hammer if it's the right tool for the job. But, don't choose a new tool just because it's the hot new technology everyone is talking about. Make sure you carefully evaluate your choices and pick the technology that meets the needs you know you have.