- Do you impose one text editor upon all your employees?
- Do run a daemon continuously, randomly or periodically on all your employee systems to detect other editors and either scream or tattle when it does?
- Must variable names be selected from a predefined list of those allowed?
- Do you have a programmable way of checking all variable names to ensure that list is complied with?
I hope you can see how these examples can be extended to all your other "useful tool" examples.
The problem with "useful tools" is that they come and go. In fads.
- In the '70s and '80s it was 3GLs.
For every one of the myriad successful languages that was used by one or more groups of programmers somewhere, and the list is huge, there are 10 more largely unsuccessful ones that was imposed upon some group of programmers, somewhere, for a while.
- In the '80s and early '90s it was 4GLs.
Aims: admirable. Execution (of the 4 or 5 I used for a time and several more I know a little of): abyssmal.
(IMO) Perl 5 (base syntax and semantics) is the closest anyone has gotten to what they were searching for. Perhaps 3.5GL. (To borrow a trick from the mobile industry.)
(IMO) Perl 6 (base syntax and semantics as best I know them) has the potential to become the first true 4GL.
Devoid of all the justifictions; artificial constraints; NIH syndromes; historical dogmas; all encompassing and overarching grand designs; political and mathematical correctness; and any other faddy, of-the-moment featuritis & futuritis; paradigms and methodologies.
Forget all the GUIs, and CASE & UML modelling tools, that were all at one time or another considered by some or many as an essential part of what constituted a "4GL".
Forget also (for now, but do not dismiss completely), quantitative definitions like "Jones defines the various generations of programming languages in terms of developer productivity, measured in function points per staff-month. A 4GL is defined as a language that supports 12 - 20 FP/SM.".
Anyone read The Mythical Man Month?
Instead concentrate soley upon one early sentence from the link above:
In the evolution of computing, the 4GL followed the 3GL in an upward trend toward higher abstraction and statement power.
And think about how many of the Perl::Critic rules are there soley to inhibit the use of Perl's higher abstraction and statement power?
The relatively short history of computing is littered with the bodies of many thousands of productivity aids and other "useful tools". Some have left their mark. Many have vanished completely.
How sure are you that your current set of opinions on what constitutes "Best Practices" will stand the tests of time?
- Sure enough to try them for yourself?
- Sure enough to recommend them to others?
- Sure enough to impose them on your team?
- Sure enough to impose them upon your company?
- Sure enough to impose them upon the world?
Now re-read that list substituting "Sure enough to risk their imposition upon ...".
Does either list give you any pause for thought?
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.