Software development consists of four major parts: coding, testing, listening, and designing.

  • Coding: It’s important to communicate with other programmers

  • Testing: Unit test, Acceptance Test and System-wide integration testing all needed. Acceptance verifies program satisfy customer’s requirements.

  • Listening: Talk to the business side and give feedback what might work and what might not.

  • Designing: Good design comes a long way.


Values: communication, simplicity, feedback, and courage.

  • Communication: both verbal and literal. Write good documentation to give all devs shared view of system.

  • Simplicity: Write codes that is needed today. Add extra functionality later. YAGNI as in You aren’t gonna need it. Coding and designing for uncertain future requirement implies the risk of spending resources on something that might not be needed.

  • Feedback: from system test, from customer and from the team.

  • Courage: Courage enables developers to feel comfortable with refactoring their code when necessary.