How to make it work for you
Creating, customizing, and testing an obstacle course is time consuming, and refining the program is an ongoing process. You need the concentrated efforts of senior developers and QA staff to create the specs for a course, and the support of management to invest resources in the course's development and testing. The long-term benefits to employees and customers, however, make it a valuable project. Consider the following lessons learned as you create an obstacle course tailored to your own company's developers:
1. Emphasize technology, not business logic
. The object of such a course is to help developers learn new technology and brush up on programming skills they may not have used in a while. Make the most of participants' time by providing them with complete specs that contain all the business process information they will need to create the application and complete the obstacle course.
2. Exercise all essential skills
. Identify the most critical elements of programming that are relevant to your business. For marchFIRST, these included:
Directory Services (LDAP)
SMTP mail with attachments
HTTPS (secure socket layer encryption)
HTTP file upload
Database access, including transaction processing
Be sure the obstacle course you invent requires participants to practice each of the essential skills. Worry less about the usefulness of the final product than about the value of the development process itself. 3. Create an individual exercise, not a team exercise. Even if you typically work in development teams, as marchFIRST does, obstacle courses should be completed in their entirety by individual developers. If participants work in teams, they'll divide up the work according to the expertise of each member, which limits the learning opportunity. Also, the logistics of having an entire development team free for several days are difficult, and would make it less likely that the course would actually be used. If at some point you need a team-building exercise, the specs could be easily modified to accommodate that type of training. 4. Involve other functional groups. While an obstacle course is primarily an exercise for developers, it can also be used by other groups within your company. For example, involving your quality assurance department in load testing and evaluating solutions gives them an opportunity to hone skills, gets even more mileage out of your course, and introduces new employees to other departments. 5. Reinforce company procedures. Especially for new employees, an obstacle course is a good way to get to know how your company works. Develop specs for the course using your usual specification format. Use "real" project procedures for completing and evaluating the work. New employees will become familiar with your internal methods as well as the new technology. 6. Involve both new and experienced developers. While training is often viewed as instruction for rookies, a good obstacle course can be just as valuable for experienced developers. Technology continues to change, which means no one is an expert for long. Also, programmers with several years' experience may have become specialized, and completing the entire obstacle course gives them the opportunity to practice elements of development they may not have used recently. Don't view your obstacle course merely as an orientation tool for recent graduates. 7. Make it platform-independent. Provide complete specs, but don't totally architect the solution. That allows you to use the same obstacle to teach different products and prevents the course from becoming outdated before it's finished. Flexibility is the key to the enduring value of the course. 8. Use results to provide metrics. The product of the obstacle course can be just as valuable as the process. Similar obstacle course solutions run on different platforms can yield valuable metrics that may help you recommend solutions to future customers. Different solutions run on the same platform may also provide valuable performance information. 9. Gather and evaluate what was learned. To make the investment in an obstacle course pay off, don't ignore completed projects. Create a method for reviewing and evaluating solutions, providing feedback to participants, and recording lessons learned for your real-world projects. The completed projects can also serve as a working example in each product or platform and provide platform vs. platform benchmarks. 10. Motivate your staff to participate. Developers should view the obstacle course as a fun opportunity to enhance their skills. Beware of treating the course as a test or as a mandated obligation. Instead, promote the obstacle course as a mini-vacation of sorts, something that is valuable to developers' careers and to the company. Don't make staff complete it on their own time, and don't make it count against their utilization. Your obstacle course should be a refreshing change that lets developers challenge their skills, learn new technology without pressure from a client, and spend some time focusing on development--which is, after all, what they love to do. // Marco Leon is Associate Partner for Quality Assurance in marchFIRST Inc.'s New York office. Ajaz Rana is Senior Architect and JAVA Best Practice Leader in marchFIRST's New York office. They can be reached at marco.leon@marchFIRST.com and ajaz.rana@marchFIRST.com .