It is strange how the gradual repetition of advice that was once guarded, nuanced, and garnished with conditions, transforms it into cast-iron rules. I keep coming across blog posts, or nuggets of corporate policy, that turn sense into absurdity, by reducing an article to a bullet point. In SQL Server, for example, some of the most fatuous ‘best practices’, such as ‘Don’t use temporary tables in store procedures because they ruin your query plans’, arise originally from sage advice. Even the apparent dead certainties, such as the wickedness of heaps, are a simplification.
Obviously, there are a few good rules, but mostly, the features of SQL Server are there to be used. It is a resilient system that is designed to optimise the common requirements of the bulk of its users. If features were as toxic as to require prescriptive advice such as ‘Don’t ever use Table Variables’, then Microsoft would fix them.
It has long been a dream of IT management that the skilled job of a professional programmer can be reduced, by means of ‘best practices’, prescriptive rules, coding ‘policies’ and other devices, into a routine job for the semi-skilled. If it was likely to happen, it would have been achieved by now: instead, the history of IT is littered with spectacular failures due to poor code quality. These failures provided a lesson to IT management, but one that has to be relearned by every generation. Whereas you or I can ignore prescriptive ‘best practice’ and coding ‘standards’, because experience tells us that so much advice depends on circumstances, they often become cemented into a rock-like mythology in the thinking of IT management. Many times, I’ve seen arrant nonsense in corporate IT policies which has got there because sage advice has been stripped of its conditions or context, boiled down to a soundbite.
For certain, any IT team development requires plenty of methods of working that maximise productivity, but coding standards and ‘best practices’ have to be treated with caution. Programming rules can’t replace professional judgement