Whaddaya Mean, You Can’t Find Programmers?

Ask any software CEO these days what their biggest problem is, and they’ll usually complain about how hard it is to find good programmers. “There’s just nobody out there,” they say. “I can’t hire anyone.”

Frankly, this is baloney. In microeconomic terms: the market is clearing. There are hundreds of thousands of programmers out there, and you can hire them, if you know how. This article is about the “programmer’s perspective” on how to find people and convince them to work for you.

First of all, let me motivate you a little.

If you go down to your neighborhood Starbucks (a large coffee shop chain) and ask them if they have job openings, they’ll say something, “yes, we have n openings now,” where n is a nice round integer like “0” or “4”. Once they hire n people, they don’t have any more openings and they won’t hire any more people. That’s because for a given coffee shop, customer demand is fixed. You have to have enough employees to meet that demand, or the lines will be too long and people will walk out, but after that point, hiring more people is pointless.

But with software companies, that’s not the case. Customer demand is directly related to how many problems you solve, how good your product is, and how many features it has that address potential customers’ needs. Adding another programmer means you have time to implement more features, optimize and debug code, make file format converters, and other things which get you more customers. So almost every software company or Internet startup I’ve visited has generally had a policy of “we’ll hire any good technical people we can get.” (I wrote an article about this which you can read here.)

Now, let’s review some microeconomics. In a free market, it is almost axiomatic that the market always clears. That’s a technical term that means that when somebody tries to sell something, if they are willing to accept the market price, they will be able to sell it, and when somebody wants to buy something, if they are willing to pay the market price, they will be able to buy it. It’s just a matter of both sides accepting the market price.

The trouble comes when people are not realistic about market prices. A two bedroom, two bathroom coop apartment in my neighborhood sells for about $500,000. Sellers who believe that will be able to sell their apartment. Sellers who don’t believe that and list their apartment for $800,000 are going to wait years without selling their apartment, and they won’t know why.

A top notch web programmer in New York City at a top web development firm, working on a consulting basis, is going to bill about $250 an hour. People who believe that are going to be able to hire consulting firms to build their web sites. People who don’t believe that aren’t going to understand why they can’t hire anyone.

You can hire programmers if you are willing to pay at or above the market price. This past spring, a company in Texas took out full page ads in the Yale Daily News and the Harvard Crimson saying “Attention seniors: We are going to hire the best 5 computer science graduates, and we’re going to give them a $200,000 per year salary and a BMW.” This happens to be a lot more than the going rate for recent CompSci graduates of those schools (which is more like $65,000), but I’m sure they filled those positions.

“Well, yes,” you say, “if I’m willing to vastly overpay, I can hire people. But how do I hire people without shelling out $200,000 a year?”

Aha! We’re onto something here. The trick is that money is not everyone’s number one motivator, in fact, it’s not even the number one consideration for most people. There are other things that matter more, and, luckily, most of those things are cheaper than money. So the next trick is, how do we whittle down that market price to something a little bit more affordable by substituting the kind of non-monetary benefits that excite people?

There are a lot of other things that you can “give” programmers, for example, you can give them the feeling that they’re working on something worthwhile, which has actual cash value for most people and therefore reduces the amount you have to pay them.

I love Julia Roberts. And I loved her the most when she threw a tantrum in the movie Erin Brockovich:

“That is my work! my sweat! my time away from my kids! If that’s not personal, I don’t know what is!”

And this is the key to making people want to work for you: you have to understand that people spend most of their waking hours at work, and they are going to take it personally, and they are not going to be willing to suffer throughout their career just for a little extra cash they can spend when they retire. Work needs to be rewarding and pleasant. Doing things that make work rewarding and pleasant is the most important part of attracting people.

I recommend a three-pronged approach to hiring people:

  1. Make the workplace attractive,
  2. Eliminate obstacles, and
  3. Provide benefits which are more valuable than the money they cost.

1: Make the workplace attractive

After I finished my bike trip, I applied for a couple of different jobs in New York City, one at AT&T and the other at Viacom. They were roughly equivalent. The salaries were pretty close. But I just couldn’t stop thinking about one thing: the AT&T offices were dingy and dark, in some kind of a stone age office that smelled of 1930s bureaucracy. People were starting to look like mushrooms. There were torn Dilbert cartoons all over the cubicles. (Warning sign number one.) The furniture was falling apart. It was just nasty. But Viacom was in a nice, shiny, modern, bright office building that felt like lawyers’ offices. It was clean and new and pleasant. I know I should have been thinking about something more substantial as I made my decision, but I just could not get over how unpleasant it would be to spend my days working in the AT&T dungeon.

It reminded me of a visit I made to EDS once when I was working for Microsoft. EDS had modern, clean, well lit offices, but they were just seas of cubicles. Any kind of personalization of the workspace was forbidden. Fluorescent lights everywhere. Windows were strictly for managers. If you’ve seen the movie Office Space, you know what I mean. As I left the building with my Microsoft colleagues, I remember saying, “you know, if I had to work in a place like that, I’d cry for two hours when I got to work in the morning.”

There’s a whole list of things you can do to create a pleasant and attractive workplace. People spend so much of their time at work that you can’t blame them for wanting to work in a nice place, not a dilbertesque cubicle farm. Think of a university professor’s office, or a lawyer’s. Is it quiet? Do people have enough space to get some privacy? Does your workplace feel like a Moroccan marketplace, or the English department at Princeton? Is there sun? Or is it all fluorescent lighting?

Cubicles have become such an icon of nasty workplaces that it’s shocking that the companies who manufacture them still have the chutzpah to pretend that they’re efficient, productive, and pleasant. Peopleware calls this “lying by repeated assertion.”

Put yourself in the job candidate’s shoes. Company number 1 shows you a big crowded room, with a bunch of desks shoved in tightly, lots of marketing guys shouting on the phone next to the programmers and a bunch of sales jocks shouting tasteless jokes. “You would sit here, in this cubicle with Doris from Accounts Payable.” Doris has a whiny, high-pitched voice and self-affirmation notes to herself pinned up on the dividers. The half-height cubicle they show you is completely lit by a fluorescent light which is on the fritz.

Company number 2 shows you through a quiet hallways, shows you a sunlit, plush office with a window, big plants, a door that closes, a nice Aeron chair, the smell of fresh-brewed coffee from the espresso machine in the kitchen, cool mahogany stuff and Ansel Adams prints, and says “this would be your office.” There’s a patio outside for lunch when it’s warm and a lounge where people meet for afternoon tea. Doris is nowhere to be seen. 

All else being equal, which job are you going to take?

It’s human nature for people to jump to snap judgments based on all kinds of external factors. If they come to visit you on the interview and something just doesn’t smell right, they’re not going to work for you. First impressions count for a lot. The fountain in the lobby, the fully-stocked kitchen with Snapple and Perrier as well as cheap drinks like Coke — it all seems trivial, but it’s making an impression.

2: Eliminate Obstacles

Make a list of the obstacles that are likely to keep someone from wanting to work for you, and figure out creative ways to solve them.

First of all, get your recruiting department to stop being an obstacle. I don’t know how many companies I’ve seen that have disorganized recruiters who just forget candidates and don’t call them back. It took my last employer something like 3 months from the time I first contacted them to make me an offer. There’s just no excuse for that.

Another thing I don’t understand is why people have so much trouble telling candidates “no thanks.” You would not believe how many companies I know that just don’t tell the candidate anything, hoping they “get the hint.” They do this even when there’s a devoted recruiting staff whose whole job is saying “no thanks” 93 times a day.

When a candidate applies for a job, you should be able to schedule an interview immediately. After the interview, you should be able to give the candidate a straight yes or no answer on the spot. If you have to wait for references, you should be able to take care of that in a day or two, and keep the candidate apprised daily.

Next, find out what things are worrying your job candidates. In the US, a common problem is getting work visas for people from other countries. Get a great immigration lawyer and pay all expenses.

In some markets, especially Silicon Valley and New York City, the housing situation is insane. Apartments are absurdly expensive and real estate brokers are sharks. This worries people. Solve the problem for them: offer them temporary, furnished housing for a couple of months while they look for an apartment. Retain an local real estate expert to find them housing — somebody who you trust will only show them nice apartments, not ratty dumps, and pay all the broker fees.

What other fears do they have? A new school for the kids? A job for their spouse? All these are things you can help with by being creative. You can hire relocation specialists who are experts at smoothing these things over (but make sure they’re good, or you’ll do more damage than good).

Want to hire someone who has been working in Europe? They’re probably used to 6 weeks a year of paid vacations. Match it. Giving somebody six weeks instead of three weeks vacation is like paying them about 6% more salary. Many people who like to travel or spend long weeks at the beach with their family would be happy to get more vacation in exchange for lower base salary, and they’ll be more productive to boot.

3. Provide benefits which are more valuable than the money they cost

Have you ever gotten junk mail from a phone company offering you a $50 savings bond if you switch to their service?

Most people think that a $50 savings bond is worth $50. Nope. It’s worth $25.

Have you ever gotten a free T-shirt at a trade show?

Most people think that a t-shirt is worth about $15, because that’s how much they cost at the Gap. Nope. It’s worth about 50 cents.

There are a whole bunch of things you can give employees which cost less than they seem to be worth. Almost every software company has free soft drinks. Massages seem to be popular in Silicon Valley. I’ve heard of a consulting company that is setting up beach houses and ski houses for employees to use. Microsoft has subsidized espresso carts in practically every building. Google has a gourmet chef with free lunches and dinners. Health club memberships cost a lot less than you think if you buy them for all your employees, because only a fraction of them actually take advantage of them.

Every Microsoft manager has a morale budget to use as they see fit. Whenever a new Star Trek movie comes out, Microsoft rents out an entire movie theater for the afternoon and takes the whole damn company out to the movies. Movie theatres are usually empty in the afternoon, so this costs a heck of a lot less than you think.

Think about what you can do to show people how much you appreciate them. Here’s an example. When you call someone up to say, “you’ve got the job,” if you’re organized, you probably have a little post-in note stuck on your finger you got from The Big Boss which says something like $100-$105. That’s to remind you that you’re going to offer them $100,000, but if they balk, you have the authority to go as far as $105. Now imagine that you call the candidate up and offer them $100. They accept. Great! You saved the company $5,000 a year!

Oh my. Big deal. $5,000 a year. Wait a day, call them right back, and say, “I know you accepted at $100, but we’ve decided to set your salary at $105.”

Aha. Now sit back and watch the law of reciprocity kick in. Having agreed that the “fair” price for their services is $100, you’ve thrown them a gift of an extra $5, and they’re going to feel some level of extra obligation towards you in exchange. It’s human nature. And it’s going to keep them from taking another job. (If you haven’t heard about the law of reciprocity, read Cialdini.)

And then think about the things that attract employees which do not even cost money. Give people authority. Let them work with smart people and learn from the best. Have an exciting project to work on. Make sure they keep learning and are always doing something new, not just the same old thing. Read all the other essays on my site about making a healthy work environment. Read Peopleware and make everyone else read it, too.


Ask any software CEO these days what their biggest problem is, and they’ll usually complain about how hard it is to find good programmers. “There’s just nobody out there,” they say. “I can’t hire anyone.”

Frankly, this is baloney. In microeconomic terms: the market is clearing. There are hundreds of thousands of programmers out there, and you can hire them, if you know how. This article is about the “programmer’s perspective” on how to find people and convince them to work for you.

Whaddaya mean, you can’t find programmers?

Strategy Letter III: Let Me Go Back!

When you’re trying to get people to switch from a competitor to your product, you need to understand barriers to entry, and you need to understand them a lot better than you think, or people won’t switch and you’ll be waiting tables.

In an earlier letter, I wrote about the difference between two kinds of companies: the Ben and Jerry’s kind of company which is trying to take over from established competition, versus the Amazon.com kind of company which is trying a “land grab” in a new field where there is no established competition. When I worked on Microsoft Excel in the early 90’s, it was a card-carrying member of the Ben and Jerry’s camp. Lotus 123, the established competitor, had an almost complete monopoly in the market for spreadsheets. Sure, there were new users buying computers who started out with Excel, but for the most part, if Microsoft wanted to sell spreadsheets, they were going to have to get people to switch.

The most important thing to do when you’re in this position is to admit it. Some companies can’t even do this. The management at my last employer, Juno, was unwilling to admit that AOL had already achieved a dominant position. They spoke of the “millions of people not yet online.” They said that “in every market, there is room for two players: Time and Newsweek, Coke and Pepsi, etc.” The only thing they wouldn’t say is “we have to get people to switch away from AOL.” I’m not sure what they were afraid of. Perhaps they thought they were afraid to “wake up the sleeping bear”. When one of Juno’s star programmers (no, not me) had the chutzpah, the unmitigated gall to ask a simple question at a company meeting: “Why aren’t we doing more to get AOL users to switch?” they hauled him off, screamed at him for an hour, and denied him a promotion he had been promised. (Guess who took his talent elsewhere?)

There’s nothing wrong with being in a market that has established competition. In fact, even if your product is radically new, like eBay, you probably have competition: garage sales! Don’t stress too much. If your product is better in some way, you actually have a pretty good chance of getting people to switch. But you have to think strategically about it, and thinking strategically means thinking one step beyond the obvious.

The only strategy in getting people to switch to your product is to eliminate barriers. Imagine that it’s 1991. The dominant spreadsheet, with 100% market share, is Lotus 123. You’re the product manager for Microsoft Excel. Ask yourself: what are the barriers to switching? What keeps users from becoming Excel customers tomorrow?

1. They have to know about Excel and know that it’s better  
2. They have to buy Excel  
3. They have to buy Windows to run Excel  
4. They have to convert their existing spreadsheets from 123 to Excel  
5. They have to rewrite their keyboard macros which won’t run in Excel  
6. They have to learn a new user interface  
7. They need a faster computer with more memory  

And so on, and so on. Think of these barriers as an obstacle course that people have to run before you can count them as your customers. If you start out with a field of 1000 runners, about half of them will trip on the tires; half of the survivors won’t be strong enough to jump the wall; half of those survivors will fall off the rope ladder into the mud, and so on, until only 1 or 2 people actually overcome all the hurdles. With 8 or 9 barriers, everybody will have one non-negotiable deal killer.

This calculus means that eliminating barriers to switching is the most important thing you have to do if you want to take over an existing market, because eliminating just one barrier will likely double your sales. Eliminate two barriers, and you’ll double your sales again. Microsoft looked at the list of barriers and worked on all of them:

Barrier Solution
1. They have to know about Excel and know that it’s better Advertise Excel, send out demo disks, and tour the country showing it off
2. They have to buy Excel Offer a special discount for former 123 users to switch to Excel
3. They have to buy Windows to run Excel Make a runtime version of Windows which ships free with Excel
4. They have to convert their existing spreadsheets from 123 to Excel Give Excel the capability to read 123 spreadsheets
5. They have to rewrite their keyboard macros which won’t run in Excel Give Excel the capability to run 123 macros
6. They have to learn a new user interface Give Excel the ability to understand Lotus keystrokes, in case you were used to the old way of doing things
7. They need a faster computer with more memory Wait for Moore’s law to solve the problem of computer power

And it worked pretty well. By incessant pounding on eliminating barriers, they slowly pried some market share away from Lotus.

One thing you see a lot when there is a transition from an old monopoly to a new monopoly is that there is a magic “tipping point”: one morning, you wake up and your product has 80% market share instead of 20% market share. This flip tends to happen very quickly (VisiCalc to 123 to Excel, WordStar to WordPerfect to Word, Mosaic to Netscape to Internet Explorer, dBase to Access, and so on). It usually happens because the very last barrier to entry has fallen and suddenly it’s logical for everyone to switch.

Obviously, it’s important to work on fixing the obvious barriers to entry, but once you think you’ve addressed those, you need to figure out what the non-so-obvious ones are. And this is where strategy becomes tricky, because there are some non-obvious things that keep people from switching.

Here’s an example. This summer I’m spending most of my time in a house near the beach, but my bills still go to the apartment in New York City. And I travel a lot. There’s a nice web service, PayMyBills.com, which is supposed to simplify your life: you have all your bills sent to them, and they scan them and put them on the web for you to see wherever you may be.

Now, PayMyBills costs about $9 a month, which sounds reasonable, and I would consider using it, but in the past, I’ve had pretty bad luck with financial services on the Internet, like Datek, which made so many arithmetic mistakes in my statements I couldn’t believe they were licensed. So I’m willing to try PayMyBills, but if I don’t like it, I want to be able to go back to the old way.

The trouble is, after I use PayMyBills, if I don’t like it, I need to call every damn credit card company and change my address again. That’s a lot of work. And so the fear of how hard it will be to switch back is keeping me from using their service. Earlier I called this “stealth lock-in,” and sort of praised it, but if potential customers figure it out, oh boy are you in trouble.

That’s the barrier to entry. Not how hard it is to switch in: it’s how hard it might be to switch out.

And this reminded me of Excel’s tipping point, which happened around the time of Excel 4.0. And the biggest reason was that Excel 4.0 was the first version of Excel that could write Lotus spreadsheets transparently.

Yep, you heard me. Write. Not read. It turns out that what was stopping people from switching to Excel was that everybody else they worked with was still using Lotus 123. They didn’t want a product that would create spreadsheets that nobody else could read: a classic Chicken and Egg problem. When you’re the lone Excel fan in a company where everyone else is using 123, even if you love Excel, you can’t switch until you can participate in the 123 ecology.

To take over a market, you have to address every barrier to entry. If you forget just one barrier which trips up 50% of your potential customers, then by definition, you can’t have more than 50% market share, and you will never displace the dominant player, and you’ll be stuck on the sad (omelet) side of chicken and egg problems.

The trouble is that most managers only think about strategy one step at a time, like chess players who refuse to think one move ahead. Most of them will say, “it’s important to let people convert into your product, but why should I waste my limited engineering budget letting people convert out?

That’s a childish approach to strategy. It reminds me of independent booksellers, who said “why should I make it comfortable for people to read books in my store? I want them to buy the books!” And then one day Barnes and Nobles puts couches and cafes in the stores and practically begged people to read books in their store without buying them. Now you’ve got all these customers sitting in their stores for hours at a time, mittengrabben all the books with their filthy hands, and the probability that they find something they want to buy is linearly proportional to the amount of time they spend in the store, and even the dinkiest Barnes and Nobles superstore in Iowa City rakes in hundreds of dollars a minute while the independent booksellers are going out of business. Honey, Shakespeare and Company on Manhattan’s Upper West Side did not close because Barnes and Nobles had cheaper prices, it closed because Barnes and Nobles had more human beings in the building.

The mature approach to strategy is not to try to force things on potential customers. If somebody isn’t even your customer yet, trying to lock them in just isn’t a good idea. When you have 100% market share, come talk to me about lock-in. Until then, if you try to lock them in now, it’s too early, and if any customer catches you in the act, you’ll just wind up locking them out. Nobody wants to switch to a product that is going to eliminate their freedom in the future.

Let’s take a more current example: ISPs, a highly competitive market. Something that virtually no ISP offers is the ability to get your email forwarded to another email address after you quit their service. This is small-minded thinking of the worst sort, and I’m pretty surprised nobody has figured it out. If you’re a small ISP trying to get people to switch, they are going to be worrying about the biggest barrier: telling all their friends their new email address. So they won’t even want to try your service. If they do try it, they won’t tell their friends the new address for a while, just in case it doesn’t work out. Which means they won’t be getting much email at the new address, which means they won’t really be trying out the service and seeing how much better they like it. Lose-lose.

Now suppose one brave ISP would make the following promise: “Try us. If you don’t like us, we’ll keep your email address functioning, and we’ll forward your email for free to any other ISP. For life. Hop around from ISP to ISP as many times as you want, just let us know, and we’ll be your permanent forwarding service.”

Of course, the business managers would have fits. Why should we make it easy for customers to leave the service? That’s because they are short sighted. These are not your customers now. Try to lock them in before they become your customers, and you’ll just lock them out. But if you make an honest promise that it will be easy to back out of the service if they’re not happy, and suddenly you eliminate one more barrier to entry. And, as we learned, eliminating even a single barrier to entry can have a dramatic effect on conversions, and over time, when you knock down that last barrier to entry, people will start flooding in, and life will be good for a while. Until somebody does the same thing to you.