This post was inspired by a tweet one of my old professors re-tweeted. The tweet basically said this:
"wahh my teammates dont work". I don't want to hear that. I tell them suck-it-up. If you're a leader u make it work. @ProfessorF and @olga_lavrovaThis will mostly be from the perspective of a student, however I will go over a real world example.
Working in a team is hard. Even when you can pick your teammates it can be tricky. Unless you've worked with them before and you have a good idea what their work ethic is like, its really like shooting fish in a barrel. You're essentially trying to pull off something that companies have a hard time doing with dedicated staffs, with weeks, resumes, phone and in person interviews, all in about 5 minutes at the end of class, or worse yet you're TOLD who you should work with. Like companies, you don't discover that the person was the wrong choice until you're far enough along you can't just get rid of them and get someone new. The cost is too high, the deadline is too tight. Training a new person just isn't feasible.
This leaves you with very few choices. You can just ignore the person and absorb their work. You confront the person and sometimes that works, but more often then not you absorb their work (and if you weren't irritated before now you're way more irritated that you've told them they're not pulling their weight AND you're still having to do their work). Or you drop them from the team, they get a bad grade and you have to absorb their work. Do you see a pattern here? It's a lose lose situation for the "leader/teammate" in almost all cases. (This is assuming the leaders job entails more than simply telling the others what to do, if that's the case, the leader never loses, because he is doing his job).
I had a similar problem back in college, confronted the individual, and nothing changed, I've had that problem in the real world at work, the (high level) recommendation I got? Keep micromanaging them. I have my own work to do, I'm not a manager, but we brought someone in to help with a tight deadline and I would be expected to micromanage them while still maintaining my tight schedule? What options would I have (I'm not a manager remember), I have no authority. My ONLY authority is the ability to annoy the person, and if I want to get my job done, I don't have time to do that, so what happens? That person slides along, and nothing changes, eventually the work reverts back to myself or another person who gets work done. The next assignment they get, they can do the same thing, the only time they have to actually show a specific output is if their job is on the line (this is not the case for all people, I'm just giving an example).
What makes this problem worse is that *most* people who chose to go into engineering/software development, have an aversion to conflict, and/or dealing with people. While it's great that we are expected to learn how to deal with it, (nothing wrong with learning to go outside your comfort zone on occasion), no one teaches how to deal with this problem. That behavior simply compounds the problem, because we would rather see work get done than deal with other people, those people are allowed to continue that behavior. If you drop them from the project they *usually* find another team that will let them just skate along and still can continue their behavior anyways, if not, they repeat the course and guess what, find another team to not do anything on. The scary part is that sometimes those people somehow become managers and now the person who does the work is being told by the person who really hasn't done any work in their life what to do, how to do it, AND when to have it done by. (I'm fortunate in that I have a manager who is very technically competent and can understand most questions related to my field and offer useful suggestions).
We are taught how to think (in theory) but we're not really taught how to handle working with other people when everything is great, everything is terrible, and everything in between. Why is that? If we enjoyed dealing with this interpersonal relationships, communicating, etc, we'd get a MBA (I'm being facetious), but we didn't, we have a curiosity for how things work. As long as they're not people. I suspect that teachers hear these complaints all the time, if the answer is figure it out, then what's the point, we should be fixing this problem from the beginning? This behavior is unacceptable, from Why Can't Programmers Program, it's pretty obvious we're letting more and more people who would rather do nothing slide through the system. I'd love to rant why, but I'll leave that for another time. As Professionals, Teachers, we have a moral obligation to fix this, otherwise our society will continue to our trend of being high volume consumers, but low value producers, and from a economic standpoint that's devastating. The reason for the claimed "engineer shortage" is because we are not training engineers we're training 1:2 engineers:managers when we think we're training 1:1 engineers (and that 2 is a conservative estimate, I'm willing to bet it's more like 1:5 or something crazy).
My challenge to you the reader is to think about how we can solve this problem. What "algorithm" can we tell our engineering students to follow to achieve success in this (seemingly) always losing game?
I would rather not lead, I'd rather have a team that has momentum and can carry themselves where they need to go. Where "leading" isn't so much leading, as it is guiding a solid set of people where they never thought they could go.
People who write blogs are supposed to have all the answers. I don't in fact I think my questions outweigh my answers by orders of magnitude, I'd love to hear your input, maybe WE can solve the problem. (sometimes asking the right questions leads to the right answer, even if you don't realize it).