How software is actually written
- Gather ideas on how to solve the problem
- Find suitable technologies
- Come up with an architecture
- Try to understand badly documented technologies
- Hit a technological dead-end and start from scratch
- Hit a conceptional dead-end and start from scratch
- Identify and solve mistakes
- Fine-tune and cover all cases
- Make the code maintainable