Steps before coding
- Interview the users and management on how the system will be used
- Write down user requirements based upon interviews of users and mgmt
- Break up the software into logical subsystems or groups
- Break up the software into deliverable phases
- Create a software specification document
- Assign developers to subsystems and groups
- Assign programming tasks to each developer
Developer designing and coding tasks
- Research anything that is murky, unclear, or difficult about the programming task first
- Create a quick prototype that can be shown to get early feedback
- Give the developer access to the customer
- Try to define interfaces with other developers before coding starts
- Design the component using pseudocode and optionally a diagram
- Review the design with the backup developer and manager or group lead
- Code the component from the design
- Review the code with the backup developer and manager or group lead
- Write a test stub for other developers if conditions warrant
- Complete coding everything before moving on to testing
Developer testing tasks
- Debug the code line by line to verify that the code runs as intended
- Write the unit tests
- Write the interface tests
- Almost never run all of the acceptance tests
- Acceptance test resolution procedure
Additional practices
- Use an object-oriented approach
- Trust the developer to design the component
- Don’t prepare estimates for how long programming tasks will take
- Provide a quiet environment with plenty of space for each developer
- Assign a backup developer for each developer