I’m working on a project written in C++, which, as many other projects, suffers from various bugs popping here and there. One of the best things to do in such situation, as recommended by Bruce Eckel, is to use unit testing to ensure that various pieces of software work properly.
I was utterly surprised to learn that the main programmer (D.) disapproved one of the changes needed by unit testing. Class interfaces, which in C++ are called pure abstract classes are well known and widely adapted. It’s mentioned in most C++ books, such as Bjarne Stroustrup’s C++ Language, Bruce Eckel’s Thinking in C++ and the Gang of Four’s Design Patterns.
It has became clear to me that the problem is not technical. It’s sociological.
Looking for help, I started reading teamwork-related pages on Wikipedia. My girlfriend asked what I was looking for and pointed me at the right term: bullying.
It’s the first time I had became a target of bullying. I only recently started to see the pattern in which D. acts. Until now, I was trying to find higher reasons for him to make my life difficult. I was sure that there was a reason, but I wouldn’t see it.
It’s a lots of small events which start to make sense altogether. For instance, my first two days at the new work, he was absent! There wasn’t really anybody who would get me started. The professor did his best, but he couldn’t really introduce the guts of the program to me. After that, it wasn’t any better, really. D. didn’t help me with anything. He wouldn’t care if I had all I needed to do my job. I did manage somehow, but it was nothing like proper task delegating. Being a new employee, I didn’t want to make too much noise. I just sat down and worked hard to get my job done.
If it was bullying I experienced first few days, is hard to tell. However, bullying is not a single event. It’s a series of events, where each event can be rationalized and explained. “I was absent because this and that.” or “I didn’t tell him that because I didn’t know that he didn’t know.” It’s the pattern that betrays bullying.
Bullying in school is often primitive. However, in a workplace, bullying can take subtle forms. In this case everything takes place in world of programming, technology and code. In this world, I’m one on one with the aggressor. Nobody around can really tell what’s going on. On the surface, people only see me sitting there in silence, working on my laptop.
Looking for more information, I found Bully on-line, which is a great source of information about bullying. I read lots of interesting things there, like: What makes one vulnerable to bullying? What’s typical bully like? What’s the typical motive?
From what I read there, the typical situation is when someone with a strong position but lacking competence is turning against someone competent, but with weaker position.
D., as far as I know, has no computer science education. I heard that he is a statistician, who learned C++ “on the way”. Perhaps D. has a problem with that and he wants to show the world that he can program better than a computer science MSc.
D. is deadly effective so far, destroying all my contribution to the project. He refused to use Autotools, he vetoed class interfaces (needed by unit testing), doubled my work in many places and generally refused cooperation (not explicitly, of course).
I’m going to talk to my boss about this on Monday. So far, he always avoids this topic. I try to tell him that the source of the problem might be not technological. Every time I try that, he says something like “let’s just, for now, do…” and some non-solution follows.
How it will end, is hard to tell. I will be working with D. for at least one and a half month more.