Un-Dynamics of Software Development, or, Don't Bite the Flip Bozo
In Jim McCarthy's excellent book Dynamics of Software Development, Jim cautions that we should not flip the bozo bit too soon. Flipping the bozo bit means to make a mental note that a particular person is a bozo and everything they say in the future should be ignored or looked upon as the meanderings of a slightly annoying, occasionally amusing child or a drunken uncle. But when Jim wrote that, he was working at Microsoft; maybe Microsoft screens for bozos better than the average company. There are a lot of bozos out here.
In this article, I have jotted down some observations I have made over the years that I'd like to share with you. Perhaps if you have flipped the bozo bit on someone, after reading this you will either feel vindicated in doing so or give that person a second chance.
Software Development Truisms
I am a freelance software architect. I work for a lot of different companies on both very short and sometimes very long projects on a contract basis. Often, I am asked to manage teams as an outsider, occasionally making hiring and firing decisions (which is tough as a contractor). Either way, I have witnessed a lot of good and some not so good events, have had both good and bad experiences, and seen some of the same bozo behavior in a lot of different places. Maybe you will recognize some of your experiences in these collected truisms.
It is still the wild, wild, west out here and anything goes. A programmer working alone may be prone to think that everything they do is right, and everything anyone else does is wrong. This applies to ideas as simple as coding standards, and something as important as not designing a solution first. There are many best practices that are well-documented, but there is no standards body, so programmers are free to do what they want to do. Often, what one programmer does will seem bizarre to another programmer, and, before you know it, the bozo bit is flipped by one or both parties.
Change is constant but people will seldom thank you even for good changes. Consider prefix notations. Prefix notations were adopted for weakly typed languages such as C and older versions of VB. But, weakly typed languages are ending up on the scrap heap because they are, well, weak. Hence, even Microsoft is not encouraging the use of prefix notations anymore. Are they still being used? Yes. Will the person next to you thank you for telling him or her about the history of prefix notations? No. In fact, they are likely to look at your constructive comments or historical perspective as a criticism. And, it is. Flip. Worse still, if the person next to you uses goofy prefix notations that you think make the code an eyesore, they are likely to cast disparaging comments about your lack of ability or professionalism.
The squeaky wheel gets the grease. Translation: Often, decisions are made to shut up the shrillest or most passionate person in the room. If you are bored and want to have some fun, make a decision that is really goofy and then see if you can sell it even in the face of its obvious lack of merit simply by being really outspoken and passionate. Odds are that if you are the last one talking, you win. Passion often overrules reason because people are emotional in nature more than they are rational. Have you ever heard the saying emotion sells? It is true. If it weren't true, arguments—like tax cuts—are only for the rich and Dick Cheney's friends at Halliburton are getting a sweetheart deal would seem silly to everyone. However, a rational person might concede that if one pays more taxes, one should get a bigger refund. Forget Halliburton. I am not even going there because it is too emotional.
When someone says a software project is going to be late, they are never lying. Delivering bad news is a risky proposition because messengers get shot all the time. (Socrates said none love the bearer of ill news. And, didn't they make him drink hemlock?) Software projects are late more than they are early by a huge margin. There is no way a Vegas odds maker would ever bet on an early project, yet project managers ignore news about late projects all the time. Flip.
Reading is Fun-da-mental
I have my theory about the phrase reading is fundamental because a lot of bad software is being written by people who don't read. It can't be an accident that the root words fun and mental are so strongly associated with reading. Be very wary of programmers who don't read. (Besides the fact that I don't get royalties for my books from these people,) non-readers ideas are based on their own gut instinct. Some very smart people have solved a lot of programs each of us will face and have taken the time to write them down, but some people are so smart that they can do it better the first time out. Flip.
Too many people believe too much of what they read. Simply because something appears on the front page of a newspaper doesn't make it true. The same is true of books. We authors are diligent, the editors are careful, but we make mistakes and give bad advice all of the time. Worse still, if the information is dated, it may be anachronistically wrong. For example, if you are reading a 1970s book on C Programming and it uses a prefix notation, it doesn't make it gospel. For this reason, it is a good idea to consider several sources before believing what you read. If anything you read in a book sounds wrong or fishy, it probably is. Read another source that contradicts the first and use your own judgment or gather your own empirical data, then decide. And if some bozo comes along and doesn't agree with you, consider the fact that they may have read something you haven't or that their evidence—which contradicted yours—was equally convincing to them.
Authors aren't smarter then you are; they just read more. A funny thing happened to me. A couple of people claimed to have read something by a particular author, and claimed to have adopted it as gospel. The funny part is that their adopted apostle is just one guy, and the other funny part is that they only adopted about half of the suggestions as gospel and made up the other half. As I said, anything goes. Flip.