Learning to program humans 2

The title of the post is wrong– humans aren’t like machines, you can’t program them. But if I had named the post “A few techniques that may help you get along chummy with other humans, maybe”, none of you would have clicked on it. Rather than having a simple and straight forward set of rules, humans follow a complicated set of principles, many of which are hidden in the subconsious mind, and so aren’t easily hackable. But there are a few tried and tested methods that will help you.


Learn to Empathise

Unless you are a psychopath, most people can empathise with other people. This includes understanding how they view the world, and how they react to stuff happening around them. Empathy doesn’t mean you have to agree with the other person, just understand why they think that way. An old Native American saying says:

Don’t judge me until you have walked five kilometers in my shoes.

If you want to work with people, you have to empathise. People see the world differently from you, and you have to see the world from their view if you ever want to get them to co-operate. A fifty year old CEO sees the world differently from  a pimply faced twenty five year old programmer. So when that same programmer goes into the CEO’s office with an attitude, complaining that the CEO doesn’t “get” him, you know the CEO will turn off.

If the same programmer learned to talk the way the CEO does, and tried to explain his problem using language the CEO understands, like profit and loss, you bet the CEO will listen. Even if the CEO isn’t convinced, he will at least try to understand the programmers view, and may get someone else to look at the programmer’s issues.

Learn to see the world from the others view. It will make your life a lot easier.


What’s in it for me?

One way to see the others person is to answer this simple question:

What’s in it for me?

Any time you go to see someone whose help you need(whether a manager, a customer, a potential date), remember this: Just because something is important for you, doesn’t mean the other person cares.

This is the reason many startups fail: They build this great product, and never bother to ask the customer if they even want it. So when they try to ask money, the customer just shrugs and says “meh.” And everyone is shocked, except for the customers, who were never asked their opinion in the first place.

This isn’t just a programmer issue. I was reading a book on sales (I can’t remember the name, though). The author gives an example of some bankers talking to some customers. While the customer was describing his problem, the bankers put him on hold and started discussing about all the cool products they could make for him. All the while ignoring what he was actually trying to say. No surprise, the customer moved elsewhere.

It’s the same if you want to ask someone out on a date. If you want to date the prettiest boy/girl, you have to ask yourself honestly: What do you bring to the table? What’s in it for the other person?

If the only thing you can come up with is “I’m a good guy,” you might as well go back to playing your video games, because attractive people meet “nice guys” all the time. This great Cracked article talks about this in more detail. Seriously, go read it.


Understand and fulfill personal needs

One thing that separates failed managers and wannabe startup founders from the real deal is this: The successful people understand that whether you are selling yourself or your product (or open source project), the decision is never a matter of simple logical thinking. You are never just selling a boxed product or downloadable software (or software as a service). You are solving someone’s need. And to really ace it, you need to understand you are solving not just someone’s business needs, but someone’s personal needs.

Say you write a cool online accounting tool, that you think is the bees knees. And now you want to sell it to the bug guys. How do you go about doing so?

Terrible way, but one which almost every programmer will use: List all the two hundred features you cool tool has. 200! Who wouldn’t want to buy your software with that? Start emailing people, cold calling customers. Wait for the big venture capitalists to call you. Hire a secretary to field all the calls you will get.

A better way: Show how your software will save a big corporations thousands every month. You have the same feature as the market leader, but at a tenth of the cost. You also give discounts for yearly subscriptions.

While the above may make the accounting department happy, you will most likely still not get the contract. And the reason for that is: You did not fulfill anyone’s personal needs. Saving money is a business need, but doesn’t help anyone’s career. Instead, the manager will be taking a risk by betting on you, an unknown company. For him, the safest thing is to give the contract to the largest company, even if they are ten times more expensive. As the saying goes, No one got fired for hiring IBM.

So how do you get out of this conundrum?

The best way: Find the customers manager, and show him how your software can save him hours everyday. That sales report he has to create every week, and that takes him hours; show him he can now do it in ten minutes with your software. Now, the customer looks cool in front of his boss. “Look boss, this cool software saved me hours; now I can look at that tricky customer we haven’t been able to land.”

Do you see the difference? Rather than trying to solve some vague business need, you have solved someone personal need. You can bet the manager will recommend your software, and even fight for you, without you having to do anything.

The business case becomes redundant. You no longer need to price your software at 10% the competitors. You can and should charge more. For most companies, there is no difference in writing a cheque for $50 or $500 or $2500, so you might as well charge at the upper limit.


Talk to the heart, not the brain

This will go against everything you have learnt as a programmer. But you must not waste any time talking to the logical being, instead talk to the emotional being. Show how your argument will help the other person emotionally. Don’t even waste a second talking about cold logic, as that never works.

Don’t believe me? Look at all these holy wars- Python vs Ruby, Git vs Mercurial. Logically, they don’t make sense. Anyone who knows Python can pick up Ruby in hours or days (and vice versa). It makes no logical sense debating which one is better, as the time you spend searching for and reading all those pointless debates, you could have just learned both the languages and decided for yourself. So why do people waste time in these holy wars?

Because they take us back to our tribal roots. We love forming tribes, creating an us-vs-them mentality. “They” are the enemy, and we must band up against them. Open source projects that succeed in creating this tribal mentality succeed over their more logical counterparts. Don’t believe me? Look at Mercurial. They tried the logical approach, while Git tried the “We have to burn anyone who doesn’t use Git!” approach. I’ll let you decide who won, but last time I checked, almost every open source project now uses Git.

So how do you talk to the heart? You may have moral objections to being manipulative, but you don’t have to be if you don’t want to. If you understood the previous section on fulfilling personal needs, you are half way there. Every time you advertise your software (which may just be a free trial on your own website), think about how your program makes others feel. Is it easy to use, making them feel smart? Or is it rude, stupid and insulting, and constantly interrupts them to tell them just how wrong they are?

Don’t assume. Get a non-programmer to try out your software. You will realise exactly how they feel. Now imagine this person is a prospective client. Would they pay you money? Be honest with yourself, you will go a long way.

And finally….

Always remember human beings are complicated things, driver by many desires and hopes, many of them hidden in the subconcious. This includes you. Never do anything that makes you uncomfortable, trust your gut instinct. If your gut says go for, really go for it! Good luck.

PS: Want a free 1+ hour video course, Introduction to Web Scraping and Data Analysis? Also get a free mini-book, Python: From Apprentice to Master.

* indicates required

I will never spam you. Unsubscribe anytime.


3 things every programmer must learn (and no one teaches you)

You’re not special, and no one cares about you

Leave a Reply

2 thoughts on “Learning to program humans

  • James

    From the moment i got your site from ycombinator news, i stuck with it every day. Its so awesome and you hit every point of software engineer. Thank you so much for your time and efforts.