Twenty dirty tricks to train software engineers

Many employers find that graduates and sandwich students come to them poorly prepared for the every day problems encountered at the workplace. Although many university students undertake team projects at their institutions, an education environment has limitations that prevent the participants experiencing the full range of problems encountered in the real world. To overcome this, action was taken on courses at the Plessey Telecommunications company and Loughborough University to disrupt the students’ software development progress. These actions appear mean and vindictive, and are labeled ‘dirty tricks’ in this paper, but their value has been appreciated by both the students and their employers:
- Give an Inadequate Specification
- Make Sure All Assumptions are Wrong
- Change the Requirements and Priorities
- Present an Uncertain and Naive Customer
- Have Conflicting Requirements and Pressures
- Present Customers with Conflicting Ideas
- Present Customers with Different Personalities
- Ban Overtime
- Give Additional Tasks to Disrupt the Schedule
- Change the Deadlines
- Introduce Quality Inspections
- Present a ‘Different Truth’
- Change the Team
- Change the Working Procedures
- Upgrade the Software
- Change the Hardware
- Crash the Hardware
- Slow the Software
- Disrupt the File Store
- Say “I Told You So!”
– Ray Dawson, Proceedings of the 22nd International Conference on Software engineering