Code of Contention: What coding/naming/development standards do you use? Do you have any?
Thursday, February 26, 2009 9:10 PM
To what standard to you hold yourself accountable to? Do you use Hungarian notation? What about the C++ "m_" convention? Camel vs Pascal casing? Or do you have no clue what I'm talking about? Read on for more information.
Everywhere I've worked, coding standards are always a source of contention. Everywhere except where I am now. And it's quite ironic! Why is that, the contention I mean?
In my history, the more a company tries to ram a standard down every developer's throat the more resistance there is! Even when the architect dictates "though shalt do it THIS way" there always seems to be ambiguities. What then? The standards document (cause you have to have one of those right? :>) grows, become even more OVER‑BEARING, top heavy and harder to follow and in itself leads to more ambiguities. Oh and when I say ambiguities, I meant to say arguments over who’s right and who’s wrong which usually leads to the more senior dictator, uh, sorry, developer winning that argument. Doesn’t mean the other person was wrong, or just different, they still lose!
Weird, you can be presenting an alternative to something that’s only perceived to be there and still be told you’re wrong? Niiiiiiiiiiice!!!!!!!!!! Oh, that’s sarcasm if you missed it! SB is one of the best at sarcasm I’ve seen in a looong time (no sarcasm there :>). I have a lot to learn from him, but I digress.
The one type of fix I’ve seen attempted at removing the ambiguities, uh, arguments, was eliminating the “standards” document altogether and letting the automatic formatting in your IDE do all the standards enforcement. But that only leads to another round of what’s the standard. And ultimately, there’s always something the IDE's auto reformatting engine can’t enforce and you’re back to that standards document…..yikes, yup, again! :<
Can you see a definition of recursion coming on here? What’s the definition of recursion
So, what’s the alternative? Let the masses run wild? As counter intuitive as it is, YES! Before you get all up in arms, there is standards where I work, they're just not some ISO 9001, formalized in stone (aka some Notes document) or too rigid when the platform changes the standards are all broken. :< No, where I work, there are standards but they are honestly flexible. Formally, they are a variation on the new .NET MS conventions but tweaked to my company's best practises realized over years of releasing products.
How do you get there? Not easy, it's got to do as much with the people as it does with the boss and the environment he/she sets up. The architect hates being called that (SG, he just wants to code :>)! There are no real senior developers. The junior developers partake in design specifications just like the senior guys! The boss is smart enough to trust his people to do their jobs. Ya, I'm sure he get stressed about leaving his people do the work and some times they'll fall flat. :< But I'd put money on it that MORE times than not, his people come out making him look good!
Can you see what I'm getting at here, the development shop is very flat, everyone's equal, developer's are people and everyone works together. Yes, there is an informal type of hierarchy, but it's very "out-there-nothing formal, just go with it" kind of thing where people just know who to goto for questions.
Something I learned Agile is, you let the people doing all the work make all the decisions. Ya, ya, if you’re a power hungry architect, or you’re “da boss” you’ll hate me and blah blah blah, you’re probably not liked anyways (how’s that for flaming the fires? :>), let the people doing the development police their own standards. You might have to come up with some small high level set of standards but in the end, it’s the developer’s themselves who will come up with the working set of standards that work's for themelves, the team and the organization. Cause afterall, if the team’s fighting the standards and behind the scenes not respecting them, uh, are they indeed standards?
irritated Vowel.com: .NET Programming Standards and Naming Conventions