- Business objectives can be messy: assumptions behind them can be wrong or there may be confusion about the objectives themselves.
- Project lifecycles can vary immensely and may become unpredictable.
- Software development often relies on stitching together existing tools and libraries. It can be difficult to see beforehand whether the chosen tools are actually suitable for the job.
- Refining project specifications is harder because software is abstract.
- Often, the person commissioning the project does not know what the solution should look like. Specifications are fuzzy at best.
- It is up to the developer to articulate a solution and see whether it fits the expectations. It is not just a logical activity, it requires creative problem-solving.
Full post here, 10 mins read time