Andrew
Pham,
Master’s
candidate
David
R.
Cheriton
School
of
Computer
Science
Modern software development workflows are considerably agile, meaning that the work is broken up into individual stories or pieces that are divvied up among the engineers on a team. Each developer is responsible for a certain number of units of work per two-week sprint and must also manage the backlog to make sure that pending features are correctly prioritized, delegated, and removed if necessary.
In industry, there is a lazy belief that design emerges from the day-to-day dealings with Agile. Developers have come to understand Agile as a strategy that regiments the seemingly complex process of software development into predictable morsels. However, treating software development as akin to assembly line manufacturing has resulted in products that are extremely buggy and require fleets of developers just to maintain due to the inherent low quality.
There must be a measure of defense built into the Agile workflow, and evolutionary prototyping is one such possible defense. More than just facilitate feedback gathering from users, evolutionary prototyping offers teams a mechanism that filters out many of the nasty side effects that come with poorly defined requirements and system complexity, regardless of the maturity of the company’s infrastructure. If planning and thinking through a problem in advance are relics of workflows past, then divvying up that effort over a period of working on a prototype is perhaps the least that developers can do to address software quality.
This paper presents a case study of my time at two major software companies: Amazon and Bloomberg. The deficiencies observed indicate the importance of prototyping in delivering high quality software, such that the lack of prototyping might result in increased on-call duties, user dissatisfaction, and other side effects that manifest due to low quality software.