Every “real world” situation has some unpleasant bits. I always thought the world of computer programming had only ones and zeros—and the people who love and respect them. This documents my disillusionment. Yes, this text is angry. Yes, it could mean the end of my “career” if I happen to refer to this web page during each new job interview. But I cannot tell you how much of a relief it is to be able articulate what was happening to me over the past few years of my working life. I thought I would make this personal matter public. I assume that it will do more good than harm. Pink Floyd sang—quoting some dead writer—“Hanging on in quiet desperation is the English way.” I want you to face the facts folks: I am not English.
I am an IT professional and I want to do a good job.1 I want to do good work. Really. I can do good work when I am working with “good” people. These people know what they want—and they have always known what they want. These people know exactly what I am capable of and how my talents can help them get what they want.2 In over four years of working in IT, I have never met these people but I will write about them anyway.
I am convinced that I will never encounter visionary, IT team leaders. I am beginning to believe I am talking about exceptional human beings. Imagine working for a company full of these people—this is damn near impossible! In the previous paragraph I wrote, These people know what they want—and they have always known what they want. This translates into IT-speak as, “These people have a clear and coherent technology plan.”3 I can’t think of any examples of this clarity, I can only think of the negative—because this is what I have seen.
I know I am not working with visionaries when their enterprise shows signs of what I call “toxic chaos.” I look for the IT equivalent of messy shelves in a clothing store because no one is folding the sweaters and jeans properly. Over the years, here are some of things I have seen in many IT shops:
Mystery code. The enterprise contains vast amounts of code that is undocumented and uncommented because “hey, dude, we’ll get to that later.” However I find myself running into this mystery code and sifting through it daily (without any explicitly sanctioned time to document it). Working with code without documentation is like death marching for miles through thick mud.
Reactionary moves. When I am allowed to document code, it is only because the chaos is so bad it has to be documented. This request may imply that a contractor who did most of the coding before I came “on board” as a “perm” is about to leave the company. In the worst case, I am not given enough time to do it and the work I am doing has no perceived value—so I am regarded as dead weight (a “super” cost center). The bottom line is that this is a reactionary move not a proactive one.
Fires. Mission-critical, production applications catch on fire more than once a week—and no one knows why it happens but they “fix” the problem through some labor-intensive, brute-force method. In the worst cases, certain IT “team members” depend on the popular mystique of technology to intimidate the users of the applications to put up with these failures. Moreover, the people that fix these problems are considered heroes which encourage these gung-ho peons to work more 12- to 16-hour days and get paged in the middle of the night. Soon an Aztec-like culture of sacrifice develops (the IT equivalent of Montezuma’s Revenge). When a defensive manager insists that an application “works” they really mean “watch out for the back draft.”
Awaiting the apocalypse. The overall goal of the IT team is not to gradually change the enterprise in a series of evolutionary steps to keep up with user demands but they rather depend on a massive apocalyptic upgrade that will occur at some moment in the future. However, it is clear that to run this 900-foot messianic system in parallel with production is impossible. In the mean time: business as usual with the lumbering legacy system. And the so-called “users” hurl feelings of hate and suffering while the IT high priests swing smoke bombs at the flock.
Cannon fodder. The IT powers that be tend to solve big problems by throwing “new resources” at them. This means hiring more people. Simultaneously, I become convinced that the powers that be have not considered the possibility that adding more people can actually slow things down even more—especially in an enterprise already full of other forms of toxic chaos. The worst case scenario is when I find out (months after a subtly misleading job interview) that I am one of those new resources (IT cannon fodder).
Incoherent planning. I find myself putting one project on hold in order to start on a new one. This happens more than once a month and I do not know why (because of poor communication) and I have no idea when this will be done again. I am effectively placed on a need-to-know basis—in a world of uncertainty. In all fairness to the “superiors” this is perhaps because they themselves are in a world of uncertainty.
Geek agnosticism. I discover that the IT shop does not really care where its technology came from, why it exists or where it is going. This lack of concern comes from the top and rains down in the form of, say, not encouraging attendance of trade shows and vendor seminars on company time. This is an unhealthy relationship to “the now.” Living for the present in this manner is as short-sighted as investing in the stock market solely for instantaneous capital gains.
Digital existentialism. I am moved to the conclusion that the IT Shop management makes sense and use of its technology independently of the vendors that sold them the technology. This form of expressing “independence” or “freedom” often backfires—and I end up paying for it. I find myself fighting on two fronts: providing the solution needed in the shop and working against the vendors who supplies and supports my tools to provide the solution.
“QA is for girls.” There is no QA department. There are no QA people. There is no formal concept of QA. There is a lot of testing in production because, “Hey, dude, we can handle it cowboy style at Internet speed. Don’t make a mistake or you’re fired.”
Messy network drives. The network is full of mysterious folders and files that accumulated “naturally” over time because “hey, dude, it’s not a big deal.”
Mystery databases. The database servers are full of mysterious databases and the databases are full of mysterious tables and stored procedures that accumulated “naturally” over time because “hey, dude, it’s not a big deal.”
Improper use of slang. There is no effort to come up with a standardized way of naming database tables, stored procedures, computers, etc. because “hey, guy, join the party—put on your giant, faux afro wig and get with it!”
User hatred. Whether on the web, the Intranet or the desktop, the users of the enterprise applications hate them. All of the users hate them. I mean all of them. But we’re supposed to not care because we are doing “the best we can”—or, in the worst case, the lead designers get rococo on your ass and say, “Let them eat cake.”
Unpleasant discoveries. I find myself discovering something is wrong in the enterprise—never is there an occasion when I find people proactively telling me that something is wrong.
Swamp things. My direct supervisor (who really should consider himself a project leader—not my direct supervisor4) can’t answer my email. Because he (and I deliberately mean “he”) is “totally swamped” with hundreds of other messages. I believe his intention was to impress upon me how numerically large his responsibilities are—I immediately assume that there is too much useless chatter in the email and my “chatter” has no value to him.
Email chatter. Too much useless chatter in the internal corporate email. This can be a potential liability for an organization. I regard email traffic as useless chatter when most of the email coming to my desktop is not addressed to me. It also suggests that the organization’s groupware is not being used to its full potential.
Jovial informality. My direct supervisor (project manager!) never gives me instructions in writing: everything is quickly scribbled or verbally passed (at Internet speed). His sentences begin with, “Remember what we talked about…?” (My answer to this question, by the way, will always be, Nope. I will always consider this “jovial” informality disrespectful and unprofessional.) I will not play The Dresser’s Tom Courtenay opposite Albert Finney.
Air guitar. The IT Team leaders actually make attempts to remedy many of the situations mentioned above but it’s more like playing air guitar than actually seriously learning how to be a musician. Recall all the times that the Los Angeles Police Department promised to reform itself and apply that spirit in this context. All IT employees take a five-day, offsite course in Silicon Sensitivity Training while none of the timid principles presented are actually enforced on-site in real time.
Accusations of laziness. All of the items mentioned above are considered “work” or “work-related” by the folks signing the checks. To openly frown upon or not want to deal with any of the above points is looked upon as “not being a team player”—in the worst cases, I am despised as an arrogant and lazy person. In the penultimate scenario, I find myself temporarily unemployed.
So, you see, I am an IT fundamentalist. My IT is about intellectual property. My intellectual property is about intellection turned into language. My language is about order. I have a logical reason why I am an IT fundamentalist and a social one. I will tell you the logical one now and leave the social one for later.
Here is the logical reason: a coherent and orderly IT environment allows maximum flexibility for its workers. All the IT workers have to worry about are the project plan and the technology used to implement the plan. Any existing code, databases or computers are self-explanatory. More importantly, everything—100 percent (or, dammit, at least 90 percent) of what you see in the enterprise is there for a reason. It is not there because some guy forgot to delete it.
In this ideal world, the chaos exists only in the flesh of the workers—they can jump around from project to project with little or no effort because somebody had enough “ego” to “extravagantly” document and prepare for third parties while they were working. I often find that the “third party” is my future self—I sometimes forget about the fine details of a project I worked on three or six months ago. I document what I did to refresh my memory and hit the ground running when I go back to it.
Well anyway, back to the real world: the reason why my IT visionary is so hard to find is because they have to see what the users (or customers) want and have mastery of the technology needed to serve the users. This is quite a rare person. This person has both a technical side and business side—and both sides of them are very, very good. In the real world, generally, these sides are divided among two or more people. Look at Steve Jobs and Steve Wozniak. And I think the same thing applies to William Gates and Paul Allen. Maybe not.
Now there was this wall built by the French after World War One to keep the Germans out. The vision was clear: keep the Germans out with an impregnable wall from the Swiss border to the Belgian. The project manager was the French minister of war between 1923 and 1929, André Maginot. My wonderful ideal looks to have come true! I seem to have a historical real-word basis for my argument—and all the Germans did was blitzkrieg around it in a funky flanking maneuver. I bring up this example to demonstrate that I can somewhat sympathize with my captors—er, I mean, “team leaders.” These people are dealing with time-to-market issues. These people are afraid of building a Maginot Line only to have their ass kicked by a bunch of corporate Nazis.
I believe I hear this fear when the authority figures tell me things like, “Dude, we kind of like have no time to, like, build this ‘perfect’ application.” I become insulted when I hear the word “perfect.” This sounds like the motion from one extreme to another. We have moved from actual, all-out toxic chaos to theoretical, pristine laboratory conditions. It seems that I am hearing a person who has effectively flipped my Bozo Bit, tuning me out.
More appropriate sounds to make are conciliatory tones. I should hear things like, “What would be first steps you would take to move toward a more coherent environment?” This question could be honestly posed or used as a sophomoric ruse to reduce me to the absurd. In both cases, it’s a good question. My answers to the authority figures over the years, in various work situations, might have been the following:
In general, all of the above ask for self-awareness and explicit language. Most people can’t accomplish this in their personal lives, so to “demand” that a company be so lucid is damn near crazy. So I’m crazy. I’m crazy about language (for humans and machines) and effective communication. So now that you know this you can quietly step away from me making sure you are keeping your hands where my eyes can see them. I suppose I’ll go get my shopping cart and get myself ready to wash your windows for spare change during your commute to a “real” job.
Now I come to the social reasons behind my fundamentalism. When an IT shop takes the time to clean up their environment and use explicit language to describe it, they are formally welcoming educated strangers into their world. The IT culture is effectively saying, “We were expecting you. We don’t know who you are but if you can read and understand our documentation—and successfully execute your assigned tasks—then we are pleased to have you. We don’t know how much melanin you have. We don’t know what country you come from. But if you can get along with our beloved software and nurtured hardware you have a pretty good chance with us.” Most contemporary human resources departments in North American corporations seem to understand this concept. When new employees get colorful packets explaining almost all of what they need to know in writing, the message is clear, “This is almost all of what you need to know in writing.”
I am almost certain that the history of human resources functions in non governmental organizations dates that of electronic computing by decades. A good HR department shows a healthy respect for the concept of rule of law—this must be because the laws ruling come from the government of the United States of America. Some IT shop cultures are like what working closely with Stalin or Hitler must have been like. Both cultures are steeped in unwritten laws. With Hitler-style computing there isn’t much betrayal within the inner circle and everything would be fine as long as you believe in the baseless, nebulous rhetoric and think of yourself as a clean cut, exquisitely manicured machine. A Stalinesque IT shop, however, is based on neurotic whimsy and could mean unexpected death or inexplicable exile for those that are not extremely careful within the inner circle.
I have not been careful within the inner circle. It took me quite a while to figure out that I was in an “inner circle.” I often lapse into thinking of IT shops as college study sessions, academic laboratories, Internet news groups or moderated chat rooms. In these places, the passage of information is the focus—not social relationships based on tribal forms of hierarchy. I often walk right into these hierarchies like a bull in a china shop (with a glass ceiling). I am taken by surprise by my lack of finesse. I spend most of my time taking computers apart and putting them back together like a good soldier with his rifle. I immerse myself in world where language can come to life and make machines behave precisely how I want them to. Logic literally works when I am allowed to do my work. I have no idea how to navigate these non-logical inner circles because I have not spent my life learning how to do it. I find it difficult to actually see the boundaries of these circles. Over the years, however, these are things I have heard from the inner circle:
“We are a terrified company. Obviously, by the way you talk, you cannot possibly imagine the level of risk we are facing. What you are saying scares us even more. Now I am going to make a joke at which we will all laugh uneasily and we will all run away. Ready?”
“We’re a boys club (with girls working the phones) and you don’t get anywhere unless you know the secret handshake. Don’t show intelligence by writing good code and communicating effectively with your peers about professional matters. Show how smart you are through the use of excellent social skills bordering on fine courtly manners for purposes having nothing to do with technical job you were hired to do. One clue about that handshake: bend over. It’s good to be the king.”
“We are so busy trying to get ready for our IPO. We don’t have time to write anything down that is not obviously related to making gratuitous amounts of money. Be a part of the solution (the IPO); or be a part of the problem (wasted time on your termination paperwork).”
“We dropped out of college to start this company. We are not academically pretentious enough to ‘record our findings.’ We have no idea why the word ‘science’ is in the subject computer science. We do not respect or acknowledge open source software concepts such as thinking of code as a publication but we do use open source products. We are busy planning the company ski trip. Now go buy some warm clothes and boots.”
“Who the hell do you think you are? Don’t you know that it is a privilege for you to work here? I can’t believe this? I give you a chance to join our dysfunctional family and all you can do is criticize the way we do things! We have a communication problem! You don’t know how to work with other people’s code! I really liked you, man—like how Doctor McCoy loves Spock. He was always cracking jokes about his damn Vulcan blood…Yelling in a playful manner. I really hate to see you go. Here’s $10,000. Sign this letter saying you won’t sue me. You are fired. You will never work in this town again. Good luck.”
“Hey, bro’, you are showing an extreme lack of flexibility. Not every environment is going to be exactly the way you want it. Remember that I’m a millionaire and you are not. Did you watch that MPEG of Evel Knievel breaking every bone in is body in slow motion? It’s on the development server downloaded via Scour Exchange. Did you see it? Now that’s cool. That’s a guy showing extreme flexibility. He gets the job done. Now go get on your scooter and get ready to jump or hit the locker room. By the way, pal, where do you want to go for lunch?”
“We are a big, fat, bloated, inefficient company founded in an age when American corporations could get away with being big, fat, bloated and inefficient.6 We have no idea what you are talking about and we don’t care. Now, we will outsource most of our IT needs to pimps and hustlers that know how to make us feel good but have products of questionable quality. Now you can either become the Official Company Whiner of Corpulent Corporation, you can quit or you can shut up. By the way, here’s $10,000.”
“My middle manager tells me you are an idiot. Since I don’t know anything about computers and I don’t know you, I’m going to have to trust the word of my middle manager. And, in any case, if my middle manager is wrong then that would mean I’m an idiot too. I can’t have that happen. Upon no grounds whatsoever I question your technical ability. It’s my word against yours. I’m CEO and you are…? You are fired—oh, I mean ‘voluntarily terminated.’ Talk to my HR-hand because this executive-face ain’t listening no more.”
“We are waiting for this company to complete its merger with another company that will replace this IT department entirely. We failed to tell you this because this is our business not yours. You should have kept your mouth shut and raked in the cash doing mindless busy work. Obviously you think you are better than I am. I used to be a developer too! I still have my old FORTRAN punch cards! One mistake and you’ve got to start all over! That’s a full day’s work lad! Oh, well. Now that you know the truth, I guess you’re off to look for ‘other opportunities.’”
“We were both hired relatively recently. I was hired a little before you were hired so I knew how screwed up things were while I was interviewing you. I only inherited this mess and misery loves company. To tell you how stupidly we run our IT shop would have been a stupid thing to do. You were supposed to quietly discover how screwed up things are here and become a part of the solution or become a part of the high turnover. You don’t go telling a losing team how much of a bunch of losers they are! They will only misdirect their hatred of the situation toward you—away from the real problem. Contemplate this on the Tree of Woe, while I accept your resignation. Here’s two weeks’ pay. Because you dared to volunteer your unsolicited opinion you have pissed me off. If anyone calls me about you I will say legally bad stuff about you so you will never work in this town again. I am not being vengeful. I am just doing my job well within the limits of the culture and history that precedes me. I know almost instinctively that people like you should not survive.”
I simply hate being a part of a losing team. And, as of this writing, I end up making that losing team hate me. Here’s how I know I am working with a bunch of losers: the products and/or services suck and I can’t help them stop the sucking. It’s not rocket science or even computer science. Three months pass and their products and/or services still suck—and I still can’t help them stop the sucking. Eventually I discover that they don’t want my help! Hey, the company is making the money. The investors are happy. Hey, the product “works” more or less. What’s the big deal? The deals have already been made. I’m insulted! I discover that I am just marooned sitting in a cubicle-shaped life raft waiting for the big rescue. Or maybe they are trying to turn me into a suck head just like them! Maybe I’m the loser and they are the winners! All of the survivors of the Donner Party were winners—right?
Not every toxically chaotic technical project goes up in flames like the Space Shuttle Challenger, taking human lives in public.7 Unfortunately, IT projects are rarely that dramatic.8 I can console myself with the idea that there are other “whiners” out there, not willing to hang on in quiet desperation, taking it for the team. I look at web sites like NetSlaves.com. Books like Death March by Edward Yourdon, or Dynamics of Software Development by Jim McCarthy are far more authoritative and articulate than I am on this matter. (As of this writing, I have yet to read The Mythical Man-Month, Rapid Development or Peopleware but I plan to have more time on my hands to do so soon.)
I am certain that the future of healthy IT culture lies close to the open source software movement. People like Tim O’Reilly can elegantly explain the ideals of the open source movement per se. What I want to highlight are some cultural influences this movement can have on IT shops working for hard-core capitalists:
I really can’t go on writing about open source style shops because I have never worked in one. I think I have done enough dreaming and pissing in my sleep for now. Got to go to work in the morning. I can assure you that I won’t be meeting any visionary, IT team leaders tomorrow. In fact, since I am over thirty, I may be forced out of this line of business any day now. I’ll be a bitter old man but that’s nothing new. Grrr! America wastes more of its natural resources! Let this public document be my epitaph in the IT burial ground. The tomb of the Unknown Coder.
“The mass of men lead lives of quiet desperation. What is called resignation is confirmed desperation. From the desperate city you go into the desperate country, and have to console yourself with the bravery of minks and muskrats. A stereotyped but unconscious despair is concealed even under what are called the games and amusements of mankind. There is no play in them for this comes after work. But it is a characteristic of wisdom not to do desperate things.”
—Henry David Thoreau
1 When I use the term IT, I mean Information Technology. I don’t care if it’s a software company or a bank—all companies that use computers have IT shops to me.
2 This sentence sounds like I want to work with a bunch of telepaths! How can a person know what I am capable of? All I know is that I can ask a few questions on a given subject with which I am familiar and know, within a few queries, if I am talking to an informed individual. Lawyers do this all the time—for money. Good chess players do this without speaking or hearing a word—for love. It’s humanity, man! Why am I wasting my time defending humanity here!
3 Jim McCarthy writes, “The technology plan is the contract among the team members, the constitution of the group. Updated once or twice a year, it expresses the communal intentions of all the individuals. This makes people relax. They can trust in the future.” What this says to me is that the leaders of the enterprise nurture the free flow of ideas and that this free flow gels into a technology plan. It is safe to assume that the “communal intentions” of your professionals is not to make money and pick up chicks (or dicks)—surely these people are genuinely interested in technology. By involving everyone in this planning process you know what to expect from each team member instead of indulging in prejudiced guessing. Since I don’t look like a stereotypical hard-core programmer, I am very sensitive to this matter.In the real world, when any one of us shows up to a Brand A Computer Club meeting, we all know implicitly what the technology plan is. It has something to do with Brand A and our undying love for Brand A. In the real world, when we show up for work, we are never told at the front door that this company is slavishly devoted to outdated Novell products. We have to “discover” this horrible truth on our own. It would be great to read a document that spelled out in black in white these facts. It would also be great to drive flying cars and wear silver jump suits.Jim McCarthy, Dynamics of Software Development, p. 24.
4 The question I am always wanting to ask in a job interview is, Do you manage projects or do you manage people? Those powers that be, leaning toward the latter, usually end up pissing me off. I’ve already worked in shopping malls on retail sales floors. I know what it means to be scrutinized by the minute. I’ve paid my dues. I don’t need to have my whereabouts questioned, what time I went to lunch and shit like that. The boys in charge should only ask themselves, “Is the project on schedule?” “Are all the deliverables here?” “Did everyone show up to the status meeting on time?” When they start to get negative answers (well before any critical deadlines) they should start wondering where I am. Incidentally, as a contractor I do agree to be scrutinized by the hour—even though it sucks.
5 Billionaire Warren Buffet chimes in on the IT world: “We understand technology products and what they do for people. But we don’t understand the economics ten years out—the predictability of it. Is it comprehensible? We do think about it, but we don’t get anyplace. We would be skeptical of anyone who says they can. Even my friend Bill Gates would agree.” TurtleTrader.com.
6 Davis and Watson writes, “Few of us really want to face the truth that American industry has never been noted for efficiency—even when it was run totally by white males. Its great productive capacity was due to cheap, sometimes almost free labor and plentiful raw materials at home and cheap ones from abroad before underdeveloped countries who owned these raw materials became strong enough or sophisticated enough to start charging higher prices for them.” These gentlemen would have saved a lot of words of they had used just two: Banana Republic.George Davis and Glegg Watson, Black Life in Corporate : Swimming in the Mainstream, p. 62.
7 Ironically (for me) the software on the Space Shuttle Challenger was blameless on that fateful day January 28, 1986 but the renowned physicist (and bongo player) Feynman warns, “To summarize then, the computer software checking system and attitude is of the highest quality. There appears to be no process of gradually fooling oneself while degrading standards so characteristic of the Solid Rocket Booster or Space Shuttle Main Engine safety systems. To be sure, there have been recent suggestions by management to curtail such elaborate and expensive tests as being unnecessary at this late date in Shuttle history. This must be resisted for it does not appreciate the mutual subtle influences, and sources of error generated by even small changes of one part of a program on another. There are perpetual requests for changes as new payloads and new demands and modifications are suggested by the users. Changes are expensive because they require extensive testing. The proper way to save money is to curtail the number of requested changes, not the quality of testing for each.” The University of Kentucky.
8 The Y2K Bug was one of the few examples that showed the general public how fucked up IT shops can be. AOL 5.x completely trashing certain Windows networking subsystems upon installation is another famous candidate of user hatred.
9 The real Pappy Boynington, during WWII, was a far better man than televised by NBC. I mention him here because when I saw the TV show (which I loved as a child), Pappy and the boys were always fixing their airplanes with string and bobby pins from cute nurses, flying by the seat of their pants. The TV show communicated to its American audience that one can be successful with little or no effort. Fortunately, my father, who is a licensed pilot and a commercial aircraft mechanic, taught his boy better.