As a first step a senior developer along with myself sat down and decided what the requirements, design and scope of the project should be. We then interviewed these students and realised that they did not know C# but they had an aptitude to compute. So we first gave them some assignments in C# which they quickly learnt and completed. We then trained them on the design of the application and gave them a sample page that made use of the design. We then asked them to code all the pages similar to the sample. We then told them to code pages that were a little different from the sample and in the end we asked them to code completely new stuff.
What was interesting and a great learning experience was that how 3 students who did not know C# were able to develop a production application in 6 weeks. You can read their blog Summer at Inforica to understand a little more about what they went through. Some of the learning's we took away are
- It is very important to have very clear requirements and scope defined for the project. We did the mock ups of the pages using an application called axure and we wrote the help for the application explaining the flows and the fields using Html Help Wizard from Microsoft which comes bundled with Visual Studio 2005. This ensured that the requirements and the scope of the project was very clearly documented.
- The architecture, both application and database should be documented with a sample application to show that it works and meets all the requirements. We did a prototype using the architecture and we developed the database architecture and gave it to them. This set a clear direction in how things had to be done.
- Take them one step at a time through the initial pages. We used to have one hour sessions with them where we used to show them how each feature needed to be developed and then they would go and work on it themselves thus ensuring that they clearly understood how and why things were done that way. As they progressed in the project
- Constant interaction and mentoring is needed to ensure that they are going in the right direction. To ensure this we used to have a one hour technical meeting almost everyday that ironed out any technical issues and we used to ask them to blog about the status they made each day and the issues that they were facing so that we could address them and this seemed to have worked very well.
On the whole it was an excellent learning opportunity for all of us to try out new things. We have already incorporated a lot of these learning's in the projects that we are currently doing and we can already notice the improvements in quality and delivery. Kiran the senior developer has blogged some of his experiences in his blog.