Software Creation Mystery - http://softwarecreation.org

How to Become an Expert: Making Ideas Stick

Are ideas born interesting or made interesting? – Chip & Dan Heath
angelderoca

You have 2 options to communicate your ideas:

  1. Tell people what is interesting for you – easy, but unfortunately, your ideas will be wasted because of other people low interest, incomplete knowledge or disagreement.
  2. Make your ideas interesting for other people – hard, but you have chances that other people will pay attention, understand, remember and act upon your ideas.
This post is devoted to people who are interested in the second option.

Why should a programmer care about communicating ideas to other people?

It is true, the primary job of a programmer is to feed computers with ideas. But you cannot quietly hide behind a computer forever. You have to deal with other people:

  • team – to contribute and explain your programming ideas
  • customers – to discuss and build trust in your solutions
  • end-users – to make your programming ideas useful for users
  • programmers of the world – to share your knowledge and exchange ideas
  • capitalists – to sell your ideas
  • low tech crowd – to promote technology ideas

Why is it so hard to make ideas interesting for other people?

  1. Curse of knowledge – once you know something, it is hard to imagine not knowing it and communicate to novices
  2. Resistance – many people ignore or resist new ideas
  3. Limited brains – people have short attention span and can be easily overwhelmed by new and complex information

The turning point in my professional life was Kent Beck’s book – Extreme Programming Explained. Kent Beck made me think beyond technical aspects of software development. In addition to algorithms, computer languages and technologies, I started to realize very important factors – simplicity, feedback, business value and people interactions. Kent Beck influenced not only me, but millions of programmers by introducing Agile approach (Extreme Programming), iterations, user stories, refactoring, unit testing, pair programming, continuous integration and other practices. Kent transformed new and existing ideas into the form that made them widely accepted and used by almost any professional programming team now. Kent Beck knows how to make his ideas sticky.

Principles of Stickiness

Chip and Dave Heath defined 6 principles of sticky ideas in the book Made to Stick: Simple Unexpected Concrete Credible Emotional Stories (SUCCESs).

Simple

Usually people will remember only one idea from your message. They will remember nothing, if your ideas are complex and difficult to get. Therefore, distill your ideas into the simple and compact form.

  1. Find core of your idea – remove all unimportant information, keep bare essential minimum
  2. Prepare Commander Intent – plain statement of the purpose of the operation and the desired end state. Example: The goal of this iteration is to build minimal end-to-end order flow – capture and save order, display it to an administrator.
  3. Build people understanding on familiar knowledge – introduce new ideas gradually, compare and merge with existing. Example: Design patterns – we can use Factory method here to have full control over object creation.
  4. Use metaphors and analogies as a base for the new thinking. Substitute something easy for something difficult. Best examples are proverbs: “A bird in the hand is worth two in the bush” – lets build first version on the proven technology to avoid risk of missing release date.
  5. Establish common language – with the same meaning to everybody. Domain Driven Design has ubiquitous language as a core principle for communication between business and technology people.

Unexpected

The sad truth is that people won’t get your idea if they don’t pay attention. You have to get and hold attention if you are serious about success of your ideas. It is similar to judo – once you get good grip on your opponent, you become in control and open possibility for many effective techniques. You cannot do much without solid grip.

  1. Surprise people and violate their expectations. Example: my idea will remove half of the existing code and make the system much faster
  2. Stimulate curiosity: open gaps in knowledge and fill them with interesting answers, be provocative: We can increase traffic to your website 10 times in two weeks. Do you want to know how?
  3. Make you message interesting for people. Use new information, twists, suspense and humor. Example: Do you know that you current system is open for hackers and important information is leaking to Internet?

Concrete

People have hard time to understand abstract vague language. Use instead definite and concrete language. Often bullshit is disguised as abstract and conceptual language.
Compare A to B:
A. Our IT governance mandate requires us to carefully consider all the aspects of software quality, scalability and performance. We use comprehensive QA methods to meet wide range of possible live system usage scenarios and challenges. We employ best resources to accomplish this mission.
B. We need one more week for thorough testing.

  1. Make ideas clear and tangible – everybody should understand your message the same way
  2. Provide real examples, discuss real scenarios to nail down understanding, let customers play with concrete working implementation as early as possible
  3. Help to visualize ideas – one image is worth thousands words – build prototypes, wireframes, draw on paper

Credible

People will believe in your ideas only if they are credible. Establish credibility with

  1. Facts, statistics and arguments – build a strong case for your idea, provide clear explanation and rationale
  2. Proven solutions – reference similar ideas that are already implemented and successfully working
  3. Past success – quotes, testimonials and live examples of your previous solutions; use Sinatra test: if you can make it there, you can make it anywhere (he referred to success in New York)
  4. Reliable methods – disclose your QA and verification process, monitoring and troubleshooting procedures; build trust in your ability to deliver quality implementation
  5. Control and transparency – give impression of control to your clients by providing testable solutions and full information to understand and manage the system independently.

Emotional

People can do wonders if they care. They will care about your ideas if you wake their emotions and feelings. Emotions motivate and move us.

  1. Make ideas connected with people, not abstractions. Tell them about Joe who was frustrated with our search or Jenny who was so excited with our website new features.
  2. Appeal to the senses of responsibility and professional dignity – make people conscience aware about quality problems, system security concerns, low user satisfaction
  3. Use self-interest – what is in this idea for the person: survival in the company, career growth opportunity or interesting challenge
  4. Appeal to identity – people care about their image and status: “what could someone like me do in this situation?” A good developer not only cares about working code, but also about usability of a solution.

Stories

Stories are the best and oldest communication tool. The brain even process them differently (with episodic memory). We remember stories longer and recall them better. Stories are

  1. Inspirationsabout a developer who build overnight prototype of super fast search fixing most frequent complain for past year.
  2. Simulationsabout crashes of the system and hours of downtime, long desperate troubleshooting under guns of management that were caused by a small bug with infinite loop
  3. Lessonsabout the programmer who committed code without testing
  4. Awarenessabout users who couldn’t figure out how to complete simple tasks on a website

Finally,

Programmers expertise grows not only with increased technical knowledge, but also with ability to transform and communicate ideas. Expert programmers know how to make their ideas interesting, working and successful.

In short, their ideas are
  • simple – to understand
  • unexpected – to pay attention
  • concrete – to make sense
  • credible – to believe
  • emotional – to care
  • stories – to remember

I wish you many great ideas that people will love, remember and follow.

Reference:

AddThis Social Bookmark Button AddThis Feed Button


Comments

Very Nice!

Sometimes some smart people have good ideas, but they don’t know how to sell/transmite them!

Great post.

Comment by William Antônio Siqueira | January 21, 2010 7:20 am

Excellent summary of an excellent book.

Comment by Andries Inzé | January 31, 2010 4:22 am

This issue of how programmers should communicate with clients is a very interesting one. I especially like what you say about the Curse of Knowledge: as a writer from a non-tech background doing research for tech writing, I frequently come across literature by experts who simply cannot imagine what it might be like to know no principles, with the result that their explanations remain obscure. In the spirit of sharing tips on effective communication, here are a couple of blogs which discuss the client-developer relations:

http://blog.bitzesty.com/what-to-expect-from-an-agile-web-development

and

http://blog.bitzesty.com/5-ways-to-keep-a-web-project-on-the-rails-0

Comment by Emma | April 29, 2010 10:09 am

This blog have little value without you and your comments, thoughts and discussions. Please, leave your comments. You are welcome to debate and criticize any idea, but, please, don't attack other people. Thanks for your contribution!

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Subscribe without commenting

Software Creation Mystery - http://softwarecreation.org
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License .