A belief that a given benefit(s) depends heavily on the personality and internal wiring of the person(s) involved. It is the epic battle over whether SoftwareEngineering
is about managing the external world or internal worlds (WetWare
It can also be characterized as a belief that SoftwareEngineering
celebrities too often mistake personal preferences for global BestPractice
s. Also known as PersonalChoiceElevatedToMoralImperative
Even if BenefitsAreSubjective
, what if the majority
of software developers prefer approach X? It is not worth it for the tools industry to target small minority mind arrangements, and thus it is logical for X to prevail. Also known as TargetRightHandersOnly
Please consider that there are multitudes of subpopulations to consider and multitudes of characteristics to evaluate. Furthermore, preferences are variable and preferences change in intensity over time. Strong preferences of 20 years ago may be weak or nonexistent today. I would suggest that the tools industry is probably a trailing indicator of software developer preferences, indicating that the tools industry is lead by a minority of software developers. The effectiveness of the specific tools is dependent upon how well the subset of developers reflects the preferences and eventual preferences of the majority. In short, there is a very dynamic mixture of influences, and no reason to believe there is a 50.01% majority of software developers making decisions for the remaining 49.99%. There is not yet a majority belief in xUnit test tools, but these are being adopted by the tools industry, and I personally believe that there will be majority acceptance of these tools in the future. On the other hand, there have been strong industry pushes for CASE tools and the like that have collapsed and I predict much of the same for UML tools. The situation is simply too dynamic to fear rule by some amorphous "majority" of software developers.
That hardly demolishes the point. If anything, it illustrates it: there's enough variance to create confusion; what seems self-evident to me isn't always the universal case [though I remain convinced that it should be ... but that's another subject]. Point is, if the horse doesn't want to drink, it really doesn't matter how nicely you've led it to the water. Benign dictatorship generally sucks. (But then again, at times it's all the rage. Go figure!)
Heck, look how often "That's not a bug, that's a feature" is something like true! ;-)
Some believe that software engineering should be or is more like math
, while others believe that it should be or is more like psychology
An interesting question to pose is:
"Does paradigm/methodology X assume something about human nature? If so, what does it assume?"
"Human nature" is the assumption of some level of commonality among people. The establishment of specific paradigms or methodologies is merely a reflection of this assumption. The assumption is that if a specific set of steps worked in a specific situation, then that set of steps would also be successful in more general situations. I think all that is being said about human nature is that humans tend to generalize and see patterns.
I am always amazed that people don't take this for granted. "Best practices" and "design principles" and similar statements are things that a lot of people have found to work a lot of the time. But nobody believes that all of them work all of the time. Mindlessly following paradigms/methodologies, or dismissing principles that didn't work out for you at one time or another, is just stupid. You have to understand these things and decide for yourself what makes sense to you. If you don't understand a principle or technique, then it is unlikely to provide any benefit to you. Unfortunately, it seems necessary to continuously remind people that they need to think for themselves.
If there was one Right Answer that worked all the time, we'd all know what it was and there would be no more arguments. XP and other agile methodologies will not be "the one right answer" any more than RUP, structured analysis, or the waterfall models were. OOP will not be the final programming paradigm, nor will relational database technology be the ultimate solution for all data storage and retrieval needs. Reasonable people understand these things.
I'm glad that "SoftwareEngineering
celebrities" are so forceful in their advocacy of their techniques: such focus is far more valuable than the wishy-washy "ItDepends
" disclaimers that others use to ensure that nobody can prove them wrong. The value of forums such as this wiki is that it allows the rest of us to compare notes on what works and what doesn't work in various situations.
All of it needs to be viewed with a critical eye, and nobody should go out and do anything just because somebody advocated it here, or in a book, or in school, or anywhere else. Your opinions and choices are your
opinions and choices, and you can't hold anyone else responsible for them.
Some benefits are both subjective and objective to some degree. A purely subjective benefit, with no objective measure of worth, is raw opinion and has no basis of discussion. A purely objective benefit, that is experimentally repeatable, is so tightly defined that it is not applicable to other situations. Yes, benefits are subjective to some degree, but they will also be objective to some degree. Both the objective side and subjective side must be considered.
I think that a summary of the above discussion could be:
Subjective is not arbitrary. Furthermore subjective findings may have some value for other subjects.
See Also: HolyWar