Your hardware is well tuned. Your software uses the latest techniques. But your projects still fail. Why? It probably is buggy peopleware. Peopleware are the political, culture and social issues in software development - which often gets a back seat to technical issues. Peopleware problems often are the key to why projects fail.
Do you have low developer productivity on your team where not much good quality code gets written? It may be poor teamwork where people aren't working well together, or even actively disrupting the project. I've seen projects where it seems someone from the project is purely there to cause trouble. Then there is bad group dynamics where just things just don't jell and you can't get the data that you want from the users that are involved or other things of that nature.
Peopleware issues have been studied for about 15 or 20 years but they are not so widely known. Just in case you’ve never heard of the book Peopleware by Tom DeMarco and Timothy Lister then highly recommend checking out. It is required reading on many Microsoft software development teams.
One of the first things is make sure you hire smart people for your team. Personally I look beyond resumes and interviews and give candidates a practical programming test to do. Unfortunately I have found in my over 35 years of software development experience that some poor programmers are great at BS. But seeing the results of what a developer actually codes will show efficient coding ability, communication skills and the maintainability of their code. And can not be faked.
Having hired smart people, trust them and don't micro manage them. Trust them to make the right decisions on the project given the written vision, requirements and parameters for it.
Office space and interruptions
Do your developers have a private office with a window? The privacy is helpful because programming takes a lot of thinking and often, if you're working on a complex piece of code, it takes 15 or 20 minutes to really get into the flow of writing that code. Then, if you get interrupted, it takes another 15 minutes to get back into the flow after the interruption has gone away. So a private office helps you keeping the interruptions down. If you're in the middle of a coding spree then turn your phone to go to voice mail without ringing and turn off email notifications too.
What is a good boss for software developers?
A good peopleware manager will protect your developers from senior executives or corporate politics that might get in the way of you getting productive work done, rather than interfering and micromanaging with what you're doing. Dilbert’s Pointy Haired Boss need not apply for the job.
Company policies affect software quality
Company policies can either support good code of they can totally get in the way of doing it. Having someone higher up in the organization to protect the programming and project team from people that interfere can be very helpful.
Peopleware survey results
I did a survey of developers and software development managers during a recent webinar with the following results:
- No private office with door and windows 55%
- Too many interruptions to get into programming flow 68%
- Corporate politics 45%,
- Bad hiring practices 18%
- Other peopleware issues 14%
Nearly two thirds of people get too many interruptions to get stuff done. That explains why so many people do a lot of their work by coming into the office early, working from home or staying late after hours when the number of interruptions goes down.
There are all workarounds for this issue, but really, if you can set up the environment where you don't get interruptions in the first place, that would be better. Really, in ColdFusion projects, it's not how many hours you put in, it's how much good code you get written. And the environment affects that a lot.
In my lifetime as a programmer and project manager, I have experienced many different peopleware situations. I can tell you from experience that improving your peopleware directly improves software quality and project goal attainment. For example after we worked to reduce programmer interruptions and office noise we saw code quality increase. Improving our hiring practices ten years ago led to great programmer productivity and happier clients.