So why do we need software design after all? Taken from my own experience, the very reason why investing in design activities upfront pays off is that alternatives are far more expensive.
Namely, doing no design upfront can be prohibitively expensive, similar to doing too much design upfront. As with many things in life, design is all about finding the right balance in every case and at the right time.
We all need some design in software development because thinking things through before doing them is almost always beneficial, at least up until we're trying to think through aspects outside our knowledge or even control. In addition, drawing things up upfront leads to asking the right questions by the product owners, similarly as designing interfaces will lead us to end-user feedback in a much shorter time.
Doing enough thinking upfront that provides some software designs up-front is way cheaper than implementing it in code and testing - simply because the work of a designer or an architect is so much cheaper than the work of the software development team.
In fact, the argument for software design lies at the heart of agile, which emphasises spending enough time on designing software over planning implementation in too much detail. For instance, Extreme Programming (XP) emphasises the design's simplicity and encourages making the most straightforward solution that works. At the same time, Scrum focuses on designing increments that represent a working software every Sprint (which typically lasts 2-4 weeks).
Many other agile methodologies also emphasise software design, but not directly. Of course, finding the point where "right enough" design activities match the sweet spot of return on investment is hard to pin down, but this is where exactly software designers should share their excellent experience to point the customers to the right offer.
- Comments
- Leave a Comment