Hi,
I'm currently reading Head First's Object Oriented Analysis and Design. The book states that to write great software (i.e. software that is well-designed, well-coded, easy to maintain, reuse, and extend) you need to do three things:
- Firstly, make sure the software does everything the customer wants it to do
- Once step 1 is completed, apply Object Oriented principles and techniques to eliminate any duplicate code that might have slipped in
- Once steps 1 and 2 are complete, then apply design patterns to make sure the software is maintainable and reusable for years to come.
My question is, do you follow these steps, and in this order, when developing great software? If not, what steps do you usually follow inorder to ensure it's well designed, well-coded, easy to maintain, reuse and extend?