Developer time doesn't come cheap -- yet in some shops, maintaining developer productivity can be a struggle. Justin James discusses a number of ways to remove the obstacles that may be keeping your developers from working at full capacity.
Programmers are expensive employees to hire and employ. They make better-than-average salaries compared to other office workers with similar experience and education levels, and they are hard to find in many parts of the country. Needless to say, with the cost of developer time being what it is, it makes sense to take steps to improve the efficiency and productivity of your development staff. Here are 10 tips to help you do just that.
Note: This information is also available as a PDF download.
#1: Minimize distractions
Most managers are aware that programming is a job that requires long periods of intense concentration. What they don't realize is that they are not doing a very good job at letting their team focus on their work. Distractions can take all sorts of forms: instant messaging, e-mails, requests for status reports, goofing off... the list is endless. What can a manager do?
One thing that can help is to change the way you communicate; start using face-to-face and phone conversations for time-critical items, and ask that your team keep e-mail and IM closed for much of the day. If possible, locate your team members in private offices so that the things happening around them do not distract them. And try to not request so many status reports!
#2: Maximize working time
There are eight hours in a workday, and it's up to you to get the most out of your team over the course of those eight hours. Many managers think that the key to higher productivity is to work more than eight hours. In reality, you will see that much of an eight-hour workday is wasted time. Meetings, for example, require not just the time for the meeting, but the time preparing for the meeting, getting to and from the meeting, arriving early to the meeting, and so on. A meeting that is scheduled for 30 minutes can easily consume 60 minutes' worth of time. Talk with your team and find out where they are "losing" a lot of time and try to eliminate those wasted hours wherever possible. Believe me, your team would rather work to be more effective in eight hours than learn to love 10-hour days.
#3: Encourage physical and mental health
Sound physical and mental health are essential to effective workers. Put simply, it is impossible to be of much use at the job when you are stressed out. And poor physical health makes it harder to stay alert and comfortable in an office environment. You can't force the people on your team to go to the gym or to start handling stress well. But you can take steps to encourage healthy lifestyles. For example, request that the vending machines be stocked with some healthy alternatives to the usual 20 oz. bottles of corn syrup and caffeine.Look for the signs of stress or burnout within your team and find a way to help alleviate it.
#4: Stop hammering nails with a screwdriver
There is something about the world of software development that leads many managers to think that all of the tools are free. Maybe it's the abundance of some really good open source and freeware tools out there. But insisting that they make do with whatever they can find for free online will kill the efficiency of your team.
If they need the full version of a tool, buy it. Many of the tools that can help your team are not open source or freeware, for better or for worse. There are few tools on the market that cost more than a week's salary for a programmer, but there are many times when using the wrong tools or no tools wastes much more than a week. That means that you will need to occasionally purchase software for them to help them do their jobs. Get used to it, and try to make the process as easy as possible. It also means that instead of your team members trying to trick evaluation copies of software into functioning beyond the time period, they can get to work.
#5: Stick to programming
A few years ago, I needed to book a flight to attend a training session. I spent about 10 minutes searching and found a flight at a price that seemed reasonable. My boss did not like the price and told me to find a better one. I spent the next day-and-a-half looking for flights. I ended up saving $50 compared to the original flight I found. Losing 12 hours of billable hours alone was more than the cost of the flight. The moral of the story? Let your programmers program. Anything outside of their job description is, by definition, a waste of their time. They are not doing what they were hired to do. Have the office administrator book flights and order office supplies; that's what they're there for.
#6: Get clear project specs
Every development project begins with a specification of one kind or another. Poor specifications lead to work being thrown out or time being wasted as the development team keeps asking for further clarification. Talk to your team and find out if the requests they receive are well written and convey the information that is necessary to minimize lost and wasted time. Chances are, your project definition process could be improved, and by doing so, you will save a ton of time on development.
#7: Make sure the environment is safe and comfortable
Your office environment plays a role in how well your team performs -- and I'm not talking about the office recycling policy. Are you purchasing high quality, comfortable chairs and desks for people that allow them to work without pain? Or are you buying junk from the local college's surplus store? Are your programmers battling the eye strain from bright overhead fluorescent lights glaring on their monitors or do they have full spectrum task lights available? Is your office at a ridiculous temperature? A good environment is not just about "creature comforts," it's about providing people with a space to work with minimal risk of injury and pain. You will also see that the people on your team will have a better attitude and will be able to work better with a friendlier office environment.
#8: Pay attention to your attitude
My experience has been that the attitude of a group leader quickly affects the entire team, for better or for worse. When the leader of a group has a good attitude, that group works harder and better and helps each other out. When the leader of a group has a bad attitude, the group underperforms and fights among itself. How is your attitude affecting your team?
#9: Don't overlook mentors, training, and education
One of the most common complaints I hear from other developers is that their employers invest little-to-no money or time into their continued growth. Developers are expected to learn new techniques and skills on their own time on their own dime. Many good programmers simply do not have the time, money, or desire to do this. As a result, they often lag in terms of learning new skills or improving existing ones. If you want to have better programmers on your team, take a look at having the more knowledgeable people on your team mentor the less experienced members. You also want to look at training opportunities. Even if training is not possible due to budgetary constraints, it is wholly possible to conduct internal training sessions or to allow employees to spend a portion of their time on self-education. As your developers get better at their jobs, they will be more productive.
#10: Code reviews
When does not writing code help you write code faster and better? When you are performing a code review. Schedule regular times to have code reviews performed. One of the best types of code reviews is when you have a good programmer who is only loosely familiar with the project looking at the code. When authors need to explain details, they learn their code better, and sometimes an outsider will see problems that the insiders all missed. Code reviews cost nothing but time, and often save much more time than they take to conduct.
Justin James is the Lead Architect for Conigent.