Eventual home for SoftwareDevelopmentIsGambling. "Gambling" is not quite the right word, and thus that topic needs a rename. Any objections?
Yes, I object, as this title fits even less. I prefer the current title, as it is more dramatic. Software development is sometimes a business "venture" and sometimes just for fun, and sometimes for the *ell of it, etc. On the business side, it is a "calculated risk venture" where one takes a chance that their hunches and calculations are correct, in that at the end of the day they will make some profit or at least recoup some of their expenses (sometimes the best one can hope for is to break even without pay for man-hours/labor). It's often a labor of love, or for fame, only. Perhaps: SoftwareDevelopmentIsRiskManagement?
I was thinking more in terms of sub-project decisions, such as DecisionMathAndYagni, not the value of the project itself. Design is largely weighing many trade-offs.
My bad, however SoftwareDevelopmentIsInvestmentManagement? or SoftwareDevelopmentIsRiskManagement? may be more applicable.
Hmm. Why is it that software development is singled out as a risky part of any product development? Isn't all product development a risk at some level? Even if it is just a feature enhancement of an existing product one can't know if the users who asked for the feature will actually buy it. I know, I know -- this is what marketing and market research are there to resolve. But any investment in development is always a risk, so mechanical engineering and electronics engineering and software engineering are all in the same boat as far as that goes. Is this not the case?
Doesn't "software development" also include later changes? After all, one is "developing" changes. If not, what would be a better title?As far as the amount of uncertainty, software tends to be higher in that category because the similarity between projects is lower. This is partly due to the fact domain similarities and tool similarities are generally orthogonal. If a software consulting company specializes in say payroll, they still have to deal with myriad different programming languages, libraries/frameworks, and systems. If you instead focus on say Java, then you cannot also specialize in a given domain. Otherwise, your target customer audience is too small.
[[ I don't suppose it would do any good to suggest that software development is software development and that the best way to get better at it is to stop making noise and learn something about it. ]]
You have to know what your goals are in software development. You have to strive to optimize toward something(s), otherwise you make a mess. There are so many ways to do it wrong.