Every time we start a new development project, we end up using new set of technologies, some are similar, others completely different. For example the following are the combination for technologies used in our projects in last two years
- Drupal, PHP, MySQL
- Flex, Cairngorm, BlazeDS, Jersey, Java, Servlet, EJB, Oracle, DB2
- Struts2, Metro, Spring, Spring Batch, Hibernate, JPA, MySQL
- Ruby on Rails, Capistrano, Mongrel, Nginx, MySQL
- JSF, Spring, Hibernate, Oracle
- Spring MVC, Spring, Hibernate, jQuery, Oracle, SQLServer
- Struts, Spring, iBatis, JQuery, Oracle
Each of these combination brings unique advantage to particular projects, but how to get the right set of people in place. Even if you hire, we may not get people with all combination, and it is a few weeks/months process. Exiting people can learn on the job, but can't expect a quality output.
The solution is to organize 'throwaway micro projects' with all the key technologies,
the key aspect of this approach:
- Real time problem similar to the project
- Agile approach with 3 hrs Iteration/Sprint cycle
- Duration: 3 to 5 days
- No deadline
- Complete throwaway project - no expectation of reuse or any kind
This approach allows the team to understand and experiment technologies, quickly tryout some practical scenarios, understand the limitations of used technologies, quickly learn from the failure and identify best practices. Also this allow different individuals to come together as a team.