3 ms·
I have worked on software in domains including DARPA, defense, and robotics, among others. While I agree with many of the things said here, from my experience,
by davidthewatson 9y ago
I have worked on software in domains including DARPA, defense, and robotics, among others. While I agree with many of the things said here, from my experience, the single biggest factor affecting the cost of software is complexity.
When I say complexity, I don’t mean the kind that is inherent to the problem being solved. What I mean is synthetic complexity; that is, complexity that is artificially and unintentionally introduced by the solution.
This kind of complexity is common in software and usually stems from 1) poorly defined or rapidly changing requirements, 2) technical incompetence, 3) lack of technical oversight, code review and feedback loops, or 4) mismanagement of technical debt.
The larger problem is that the aforementioned problems, in concert, are corrosive and toxic to the culture of the work, and that in turn becomes its own cost factor in terms of the care and feeding of teams.
The largest problem is the realization that the factors I’ve enumerated here are clearly observable while being difficult if not impossible to measure. Cyclomatic complexity scores will tell you that you've got complexity issues, but not that you've reimplemented half of the standard library badly. Thus, these factors are among the reasons that software remains as much art as science.