This is written for all of you project managers out there who are having problems keeping your software engineers happy. Actually, it’s written for anyone employing software engineers… period. Whether you think you are keeping them happy or not. I’m no expert on project management, but I am a software engineer and I do know what irritates the crap out of me. So here goes.
1) Give Us Problems, Not Solutions
This is by far one of the biggest irritations I have with PMs. You receive the problem from the customer and you relay that problem to “us”, the software engineer… if it doesn’t go through some sort of support system first. That’s it. Give a nice detailed description of the problem and then let us do our jobs. You are not the engineer and you are not the most qualified person to solve the problem… so stop trying to! We do not care about why you think it is happening. We especially do not care how you think we should fix it (unless it is a matter of changing user interface)!
2) Give Us Deadlines, Don’t Ask Us For Completion Dates
Time estimation is a very, very complicated task and it takes a lot out of me. If you (the project manager) are coming to me with a task, please don’t ask me when it will be done. My answer will always be either two weeks or two years. Why? Short, off the cuff, sarcastic, stupid response… take your pick. A much better tool for me is when YOU need this task to be completed by. I will either say a) yes I can get it done by then or b) you are smoking something really good and you need to tell the customer it won’t be done. Now that you’ve given us deadlines for when we need to have things done by, we can prioritize our multiple tasks for our multiple deliveries as we need to in order to maximize our efficiency.
3) Automatically Pad Our Time Estimates
Remember what I said in the last tip about time estimation? Yeah, it’s difficult. In fact I rarely get it right. It’s an ever changing art and you never ever quite get it right. Plus there is always the risk of something coming up to blow things out of the water. Do us ALL a huge favor and add at least 20% to any time estimates that you get from us. That way when we tell you that the newest employee accidentally TRUNCATED the development database and someone forgot to load the backup tapes the previous night we’re all covered.
4) Buffer Us From Customers
The quickest and surest way to never get any work out of your software engineers ever again is to give your customers a direct line to them. That is not our job; that is your job (the project manager). We do not get paid to interface with the customer on a day to day basis. We do not get paid to take complaints. We do not get paid to take bashings. We interface with customers in a controlled and planned environment when there is plenty of coffee and donuts present. Otherwise we do not want to talk to them.
5) Feed Us When Working Through
If we are working hard to meet a deadline for you, feed us! We get hungry. Pizza is the breakfast, lunch and dinner of champion programmers around the world. For vegetarian programmers they even have the veggie pizza! If you’re one of those extreme vegans… well then order some humus or something. Seriously though, if we’re in the coding zone and we don’t have to worry about a growling stomache you’ll get much more productivity out of us.
Thanks are always welcome… public or private. This could be in the form of an email, a thank you note, a verbal, “Hey, great job!”, an ice sculpture in the main lobby, tickets to the latest local event… use your imagination. We’re people just like everyone else and we like to be appreciated. We are also intelligent people and we realize that we could be making a LOT more money if we had decided to go into management or sales or project management. Guess what? We love what we do! and without us your product would stink! So show us a little love. It doesn’t have to be extravagant; a little thank you goes a long way. You’ll be glad you made the effort on the next project because you’ll have happy engineers and happy engineers make happy software. 🙂