September 05, 2016
Thought-provoking book, I like it. Don’t want to waste time on whining about software engineering problems. Let’s talk about things we can take from traditional engineering to improve software engineering.
Chapter about flying-quality specifications impressed me the most. The lesson we can learn is that it is possible to describe subjective qualities with objective specification. You may complain that people are too messy and unpredictable. But giving up is not a solution.
As a more practical takeaways:
- Don’t forget you can specify ranges of values, you don’t need to come up with exact number.
- Objective specification for subjective problem is not means of end.
Thus, for the designer, the quantities set down in performance specifications are themselves objective ends; the quantities prescribed in specifications of flying qualities are objective means to an associated subjective end.
Walter G. Vincenti. What Engineers Know and How They Know It: Analytical Studies from Aeronautical History. Johns Hopkins University Press, 1993. Page 100, emphasis in the original.
From other chapters I put together following rules.
Rely more on existing knowledge. Both scientific and engineering knowledge is built incrementally, based on previous knowledge. Software developers are using their experience but they are less deliberate in referencing prior work.
Pay more attention to documentation. Documentation is a long-lasting artifact and people do read the documentation. It is important to understand advantages and limitations of informal discussions and benefits of formal documentation.
Move towards mass-production approaches, don’t craft everything by hand. Mass-production is a separate problem with it’s own challenges. And it requires conscious work, it won’t get solved accidentally.
Overall, software engineering can benefit from more visibility into software workings. For example, for airplanes everybody can see that early prototypes were failing because they weren’t flying. But for software products even basic shortcomings are harder to notice.