We rarely invent anything new in commercial software development. Most of what we do is to apply well known patterns and technologies to the domain we are working in. Now, this does not mean what we do is trivial or easy, but generally, we are not inventing anything new.
So then, why are so many software projects, late, bloated, over budget or failures? According to Tom Demarco, in his classic book, Peopleware, it's not because of technology issues, its because of people issues.
That's right, you don't have a technology problem, you have a people problem.
Bad communication, egos, ignorance, office politics, inexperience, weird personalities all are bigger problems than technology issues. These things all get in the way of success. Unfortunately, the vast majority of technology leadership struggles with dealing with people issues.
It's easier to deal with a build problem, or to fix a bug, then it is to figure out why Sally and Mike are not getting along on their project. Technology problems are discrete and deterministic, people are messy and emotional.
I have found that finding leadership that is both technical and people-oriented is very hard, and when you have someone who has both, hold on to them, but have to build these soft skills in your existing staff. I do this following some loose principles:
- Technology leadership needs to be technical. This is critical - you can't lead people unless you know what they do so that you can participate, lead and provide input. You have to know how to code.
- Focus on "doing the right thing", not pleasing some internal stake holder. When you focus on doing the right thing, politics and bickering takes a back seat.
- Don't worry about who get the credit. This is easy to say, hard to do, but when you have a team that really believes this, great things can happen.
- Remember that software development is a team sport. Empower the team to make decisions and allow them to be responsible for their actions. Treat them like adults.
- Take time to talk and listen. Spending an hour listening to a person who is struggling with a decision, giving input (not telling them what to do), and helping them make a decision is a critical management responsibility. I make sure I have time every day to talk to people and listen.
- Treat people like adults, not like children. Management is not like parenting. The people that work for you are adults, treat them as such and respect what they do.
It is true, there is a lot malpractice in this industry related to technology, but the issues all start with people. People design, implement and test software. Focus on your people problems first and your technology problems second, and you will have a lot more success.
No comments:
Post a Comment