I'm not going to lie. And as a lifelong software developer, I can say this:
Software developers are notoriously difficult to manage. We're a pain. Just like professional salespeople, we tend to be prima donnas because we know that without us, the company will have a tough time functioning.
Does that sound arrogant? Of course, it does. That's why we're difficult to manage.
The best software developers tend to be the A players and type-A personalities. You can give one of these developers a very quick, concise briefing of a feature or business problem, and they'll run with it and solve it. This is why it's important to have them around.
They also have their own quirks and eccentricities. Some developers like to work with the lights out, and some want all the lights in the room turned on. (When you put both types in the same room, that's a problem.) They want the latest and greatest equipment, so if you're going to skimp on something, don't skimp on the chair, monitor, keyboard, mouse, or computer. They want flexible work hours. They want to sleep in late and write code at night. They take two-hour lunches but solve big problems on Saturday afternoons. They hate meetings, formal processes, and administration. They hate documenting things.
Some like Macs, some like Ubuntu, and some like Windows. Some want workstations and some want laptops. And they want good managers. They want managers who understand them and who understand the systems they are building. They want managers who stay relevant with the ever-increasing rate of change in technology. The list goes on and on.
The trick to managing software developers is to basically give them what they want (within reason) and make them feel important. I've learned this as a manager of software developers: When someone wants something, I'll get it for them.
Because if I do, I'll get a lot higher productivity out of them.
Imagine what your company would be like if you got maximum productivity out of a roomful of A-team software developers. They would be worth their salary, and you would accomplish some amazing things with them.
Now imagine what it would be like if they were unhappy over something simple and inexpensive.
Back in 2002 or 2003, I was working for a major telecom giant as they were starting their downward spiral due to fraudulent accounting practices. Before the RIFs (reduction in force) were announced, they started waves and waves of cost-cutting as a way to save money. One of the things they cut was the office coffee. They just said no more coffee.
It probably didn't save them all that much in the grand scheme of things, but it had the most momentous impact on morale. People were purposely being less productive, just over the coffee. The message the company inadvertently sent to the employees was devastating, and the nominal cost savings were quickly eliminated by the decreased productivity.
If I had been a manager at that time, I would have paid for the coffee out of my own pocket for my team if I knew it would keep them happy and as productive as possible. There’s quite a bit more to the art of managing software developers than that, but it’s amazing how much benefit splurging on lunch at Fogo de Chao for the team once in a while produces.
Attrition and Turnover is Costly and Already High
Recruiting is expensive for any company, regardless of size. And now that we're seeing high unemployment, companies traditionally slow down their hiring processes, dragging a two-or three-week process into many months. Open positions go unfilled and work falls behind further and further as hiring managers get more and more selective. And working with a recruiter often costs 30 – 40 percent more than the candidate's base salary (which is easily in the six-figure range).
Unfulfilled work plus increased recruiting and interviewing costs add to a sluggish bottom line. People often underestimate the intangible costs of interviewing software developers. Good teams involve most of the development team in the hiring process, and if they are interviewing, they aren’t writing code or solving problems. Thorough interview processes are extremely important, but they are also extremely expensive.
And let's not forget the cost of onboarding and getting a new employee up to speed. And with software developers, there's the added delay of getting them to handle someone else's code.
The hardest thing to do as a developer is to come in and maintain someone else's code. Everyone believes they can do it better and do it faster, and that it will take them half the time to rebuild everything than it will to update. So they scrap a large portion of the already-written code in order to fix everything the way they think it should be done.
However, that's a real cost and a time sink. And even if they don’t rewrite or refactor code, it takes time to get their heads wrapped around what the last developer was thinking. You can't just get someone to come in and continue running with the baton that the last developer left. Both the whole "let me start over" phase and the “what the heck is going on here” phase takes time — sometimes months, in fact. You'll easily lose 20 percent of the progress and costs every time an old developer leaves and a new one comes in.
And the more churn you have, the more developers leave, your projects will fall further behind as you recruit, hire, onboard, and train new people and then let them rewrite the last person's code.
Software developers have always been in high demand, and the need has been increasing over the last 10 or 20 years. If they leave, they can always get a job elsewhere, and they know it.
This knowledge makes managing software developers hard. They have the things they want, the things they like, and if they don't get it, they'll leave.
Once I became a manager, I learned very quickly how difficult managing can actually be. It's not just about organizing things and telling people what to do. You have to study the art of management and leadership. You have to study the techniques and apply them.
The bottom line is you have to give your software developers what they want, and they want a lot. If you can keep them happy, you can get full productivity out of them and they'll give your company a competitive edge.
This is one reason why it's so smart to outsource your software development to a professional development firm. They have the staff and the know-how to quickly build your custom software solutions for you, and you don't have to manage the developers directly. Your outsource manager handles all of that for you and can appease those rockstar egos for you.
Outsource developers also have an extensive network of other developers. They can make some phone calls and put a team together quickly, without the added 30 – 40% recruiting costs other professional recruiters have.
In the end, it's much less expensive and easier to work with an outsourcing company than it is to try to build and manage your own software developers and get the most out of them.
To learn more about outsourcing your software development in the Atlanta area, visit the Elegant Software Solutions website or call us at (855) 449-4649.