first_page

The IT Workplace: Doing it Basil Style

Scrum Cycle

It is healthy and prudent practice to record what one would consider a workplace “incident”—there is a Blog still dedicated to such health and prudence, called “The Black Factor.” Of course there is a “real world” of people who are proud to not “whine” and “complain”—and I would argue that these people are not very healthy over the long term (but they should have more many than me, earned well, to cover their healthcare costs—assuming that people are still stupid enough to call it “healthcare” in the American future).

So I mentioned earlier that I’m getting used to the scrum agile way. In one sprint a young, relatively inexperienced developer, Basil (let’s call him “Basil”—after Basil Fawlty of Fawlty Towers), was put in charge of a story. He assigned me to the task of adding functionality to DataGrid cells that requires the use of DataGridColumnTemplate elements. First of all, he (or no other developer on the team) knew what DataGridColumnTemplate elements are—this is the first red flag for me. Let’s freeze the frame right here: I am taking the team into the unknown. I am an outsider—the newest developer on the team and I have not “earned the trust” of the team. So we had to take a meeting to “explore” why we need these DataGridColumnTemplate things. I was willing to accept this level non-trust and explained my position—my decision was apparently accepted (but it is important to know that my position is a reaction to Basil’s need to use a DataGrid—so my action here should be seen as accommodation instead of the beginning of a “problem” resulting in the “incident.”

Basil decided to use the DataGrid in the first place. His primary concern is defending why he decided to use this control (which not a part of WPF proper) instead of having enough experience to explicitly reduce to the absurd anyone who would dare question him. I would rather go through this explicit learning experience instead of hearing punk-ass fragments of defense here and there.

My use of the DataGridColumnTemplate was weighed down by the need to support an “unknown” number of columns (over 70). This means that data-binding the composite controls cannot be done declaratively in XAML. The binding (and the generating of the grid columns has to take place imperatively in code). This imperative way is what I jokingly called again and again ‘Basil style.’ This also means that I had to write code right on top of Basil’s code (which is poor Team-Foundation-Server planning by the way). So Basil knows that I have read his code—the Basil style.

You see, folks, Basil is a “cheerful” fellow. He jokes a lot. He expresses concern a lot. He even offered to walk me out of the building when we were working late one night. He often compulsively asks the same question (like “How’s it going?”) every ten minutes—seemingly not recalling the previous answer. Basil is 20-something years old, has a girlfriend and likes coffee. Suddenly, his cheer went away this morning when he heard my ‘Basil style’ joke, again. The most cheerful guy on the team is suddenly, visibly annoyed by this kidding. It is important to understand that I did not intend to piss him off—but since he went there I went with him there. What a real-world, church-going homeowner would have done is apologize to Basil right then and there to diffuse the situation and re-secure access to that paycheck by reducing risk.

Once I pissed Basil off, he revealed the following:

  • He has been waiting for me for “four days” to get my part of his sprint done.

  • He does not really know what I am talking about most of the time—but he is confident that whatever I am saying is not that important.

  • He comes in early and leaves late.This incident sparked a developer meeting. This was a surprise to me—because in other workplace situations the priority for management is to maintain what they would call “order”—so shutting everyone up and other police actions usually happen. However, during the meeting most of the advice and direct instruction was for me. I think I was told:

  • Really, really let other developers know that I need help. I was asking for help continually—and continually no one could help me. But I need to ask more emphatically anyway. This is just stupid—but this dumb-ass advice does not make me upset (because it did not come from Basil or a manager).

  • There was something else but I can’t remember it right now…So I eventually got the problem solved (alone) and turned in my code. Basil overwrote my 1:30pm check in (which apparently is easy to do in Team Foundation Server—all you have to do is “roll back” before 1:30pm work and then submit, overwriting the server). To me this is a serious infraction especially for someone who comes in early and leaves late. But Basil has a choice here: he can assume that I do not know how to check in code (because he often hyperactively stands over my shoulder repeatedly walking me through the same Team Foundation Server procedures—my lack of caffeine swiftness here easily allows him to assume that I am unaware of how this thing works) or he can accept the fact that he bungled and overwrote my changes. The background radiation of racial politics helps him to assume that it is me who made the mistake. So he tried to rewrite what he overwrote (I had to write it again properly) and sent himself through more suffering on my account.

Here are my points:

  • The developer in charge of the sprint should have some technical idea of what needs to be done—or put all of their trust in the people on their team until this trust is explicitly and verifiably broken. I intensely disregard persons—and there are plenty of you preemptive strike assholes passing though my world—who try to pretend to know the content of my character without actually knowing me.
  • The developer in charge of the sprint should have documented proof that they waited for “four days” for any sprint deliverable. I (and management) should have known early and often that there is a problem. This task was not sitting alone in a vacuum with me blankly staring at it for “four days.”
  • The developer in charge of the sprint should make every effort to keep multiple developers from working in the same code file. When it becomes clear that overlap is occurring this should be considered an emergency situation requiring constant monitoring (which is what cheerful hyperactivity is actually for in an IT shop).
  • Basil is still unconcerned about openly sharing any technical issues (with me) about how I solved ‘his’ problem in particular and the state of the art in general. He held this position long before the “incident” with me and others. He is certainly reading my code and learning from it but, like any smart kid, will surely avoid asking me any questions. He does understand that I am dismissive of him entirely so it is only emotionally reciprocal to do the same “back” to me. But my reasons for dismissing him are objective and strategic toward getting a technical task accomplished (even when I’m not getting a paycheck) while he simply just does not “like” me for relatively petty reasons (but petty shit makes the “real world” go ’round). He knows nothing about WPF—but more importantly he is apparently unconcerned about this lack of knowledge. He seems cheerfully satisfied with the non-MVVM condition of the application in general (and how this imperative-heavy, not-really-unit-testable design affects his work). He talks more about his new Lexus than the technology. He was always useless to me even though he is certainly regarded by management as a hard worker. There is another developer on the team with about the same level of experience (and also very little WPF experience) but I do not consider him useless. Anyone who, through fear and insecurity, seems determined to not understand what I am talking about is useless to me… By definition, I am unable to communicate. I have had over 40 years to communicate with diverse groups of people—my time’s up.
  • Management put me in charge of the next sprint—and there was a comment about me not including Basil in my task list. Well, I will probably not get my sprint done on time (as I am terrible about estimating how long things take) so let’s not put Basil through that shame… Get him his coffee.

Comments

Victor, 2010-01-02 20:32:07

I encourage you really think about what you blog about as members of your team, such as me, might read them and can cause tension at the workplace. Also, I encourage you to follow my "Dumb-Ass" advice because I know what I am talking about and I am trying to help you not get shit-canned; if you are stuck you need to make that clear so that people on your team and management don't think you are incompetent and that is exactly what is going on. Further, you mentioned that there are two team members that have little to no WPF experience. I, on the other hand, have extensive WPF experience and much more than yourself. If you are willing to work with me and the team we all can learn from each other. These types of blogs will hinder that type of symbiotic relationship. Victor

rasx(), 2010-01-03 22:20:44

Victor, I will continue to write these Blog posts as long as I can afford to pay the bill---and the type of hosting company can stay open. Based on your assessment of my incompetence (which is, ironically, incompetent), I should not be able to pay this bill for very long... It's very expensive ...all very expensive---but sometimes worth it.

Victor, 2010-01-04 15:25:31

Read my post, I did not say you were incompetent.

rasx(), 2010-01-04 21:05:34

...only time will tell what is "exactly what is going on"... by the way, Victor, your managerial advice in no affects your awesome WPF/Expression Blend skills!

rasx()