|« Golf pro suing Florida company over Wikipedia article||Down Under: Use an iPod, go to jail? »|
If you're going to get management to understand the reasons for better treatment of programmers, you have to make a business case argument. The simple matter is to argue (in the sense of making a proposal, not in the sense of expressing anger) that it is more cost effective to do it this way.
Software developers are skilled professionals - or they should be, anyway - and professionals need proper tools and resources to be at their highest productivity levels. Higher productivity means more value for every peso spent. No one would expect even a moderately competent surgeon to work in a dark and cramped operating room with dull tools, doing every job in the operating room with no support staff, and expect anything but sub-par, low grade work with a very high mortality rate. And you wouldn't expect it of a world-class surgeon either.
And this is exactly the state of software development today in the places that don't make it possible for their software development staff to do anything but sub-par, low grade work with a high probability of failure and an strong likelihood of cancellation of projects as unfinished and a waste of valuable resources.
The purpose in having a programming staff is to deveop the software tools that allow your organization to obtain the one thing that no other organization in the world has: a competitive advantage and a reason for the customer to select your company over all of your competitors.
Every piece of hardware you can purchase commercially, and every piece of shrink-wrapped software you buy does nothing but give you the same tools as your competitors have, because you all can (and do) buy from the same suppliers. Software either makes your company more efficient - that it can get more done with less resources than your competitors - or it gives you the capacity to offer products or services that are markedly better than anyone else, or potentially unavailable from anyone else.
If software isn't there to give you a competitive edge relative to your customers, then what do you have software developers for? Why even bother to have them if you aren't getting something more than every other company with a checkbook? Fire them all and use off-the-shelf applications. If you have software developers, the whole idea is that what they are capable of doing, that no other people can do, is supply you with something different that no other company has, that you can use that difference as a competitive edge that makes your company more valuable to your customers than any of your competitors.
An advertising company can purchase office supplies from anyone else, they can hire - or freelance - artists to do drawings, photographers and models for ad campaigns, announcers for voice overs, but none of these things can give them a competitive edge because everyone else can buy from the same suppliers, and none of these things will make a difference other than in the technical quality of the ads they produce. The competitive edge is in the people who can think up a great idea for an ad campaign that works to sell the customer's product or service. That competitive edge is something you can't buy, you need high-quality people who can think to get it.
If you're in the business of selling a commodity product or service that they can buy from anyone else, your sales people are the stars that allow you to make a difference because your salespeople can give your customers new ideas on how to use your product or service more effectively, or show your customers reasons to use your product or service over anyone else. And for that, sales people are paid high salaries, or they get special compensation packages. Because the extra resources that they get provide the company with a competitive advantage.
The same thing applies to any company that uses software developers to create software used in their business. If your business is the development of software, this is an even more imperative issue, because the software you sell is the only thing that differentiates you from everyone else who sells something similar to do the same or an equivalent task.
Now, if we consider that the software developers you have are a competitive edge that differentiates your company from all the others who can buy every other thing except the great ideas that your people can produce, and thus the software you produce is either your company's product that you sell that makes you different from everyoine else selling a similar software product, or the software is a competitive advantage that makes your company different from all your competitors, it makes sense from a business case to make it possible for your people to produce the best possible work they are capable of.
A software developer's stock in trade is, quite simply, the figments of their imagination. They translate pure ideas into a software system capable of producing a unique and special capability which no one else who does not posess that software system can have. To the extent that system provides you with capacities and features that you need, that are not available to anyone else, that system is part of the competitive edge that provides your company a reason for its customers to want to deal with you instead of your competitors.
All of the things that programmers usually want:
- Large monitors
- Private offices
- Good software tools
- A well-stocked reference library, including high-speed internet access
- Better chairs
- Better training
- Support staff to allow them to concentrate on the things that only they can do
- (Any other factor useful for them to do their jobs that I have failed to name.)
All point toward one thing: allowing them the capability to do better work. These are not 'perks' any more than allowing surgeons to have razor-sharp scalpels over dull ones, and adequate lighting are 'perks', unless you consider the ability to do world-class development over commodity development - the same commodity development that every one of your competitors can and do get and does not give them a competitive advantage - is a 'perk'.
Professional people, such as executives, are paid to think. All of the tools that executives get: good quality chairs, support staff, quiet offices, are there to allow them to do their job better. And software designers are just as much professionals as the CEO of a company.
Now, realize that unless your company is Microsoft, Google or one of the really big software companies, you have the same disadvantage over hiring good people as everyone else. Or in retaining good people. Everybody else can offer the same salaries, same benefits, same monetary values as anyone else. And maybe your competitors can afford to throw more money at people than you can. You don't have a damn thing you can offer that every other similar company can offer too, and some of them can offer more than you can. Or do you?
Is there something you can do to attract, and keep, the software developers who can provide your company with a competitive edge that all of your competitors can't also do? And there is your answer. Your competitors don't want to offer private offices. They don't want to offer adequate support staff. And all the other things that mean the difference between whether your people can provide quality work, or you get the same undifferentiated crap that everyone else has. And if all you have are the same things as everyone else, why should your customers pick you?
And these are the reasons to offer software developers all these things. Because giving them a better work environment gives you two things. It allows you to acquire and retain the best people available for what you can afford, and in the long run, to spend less money because you don't have to pay more to get people, and because you lose fewer people to your competitors so you don't have high rehiring costs. And it allows your people to do their best work possible in providing you with the software systems that allow you to provide a competitive advantage over your competitors.