System Design
Gathering requirements and helping clients shape and define
their project is my favourite part of the development life
cycle.
Oddly it's often the part of the life cycle developers hate. I
find engaging with the client and unlocking and realising their
idea/vision is incredibly satisfying.
For large projects I view gathering requirements and writing a
specification a project in itself. Once complete the client has a
detailed specification and the freedom to take the it to other
companies; although that not happened yet!
Starting a project with clear, well written specification speeds
up development, makes deadlines easier to hit and ensures all
parties know where they stand (avoiding any unexpected surprises).
In fact it's those unexpected surprises that cause projects to over
run and developer-client relationships to fall apart.
Just don't start calling me a Business Analyst, I still love
developing.