Software Creation Mystery -

Three Dimensions of a Software Programmer: How to get things done

What you are as a person is far more important that what you are as a basketball player. – John Wooden

People are amazing, surprising and interesting. They change reality with power of thought and make things happen. What is most exciting – all people are completely different in their attitudes and behavior. But this comes with price – it is difficult to understand people and even more difficult to find the best way to deal with them.
Many people, who see programmers as extensions of their computer systems, will be surprised to discover that programmers are amazing individuals too. Programmers exhibit similar to other people behavior, they have different personalities and need individual approach.

I offer in this post a simple theory about Three Dimensions of a Software Programmer that could help to put relations with these individuals on some rational basis.


There are two basic axioms in foundation of the theory

  1. Constancy – some programmers consistently outperform others under same conditions.
  2. Variability – performance of a programmer varies under different conditions.

Talents (constants)

Talents are recurring patterns of thoughts, feelings and behavior that can be productively applied. – First, Break All the Rules
Genes and upbringing form an adult human with specific talents and personality, strengths and weaknesses. These core individual characteristics of a programmer are difficult to change (except some limited success with consumption of large quantities of beer). Programmers are different – creative, thorough, funny, systematic, laid-back, curious, analytical, spontaneous and so on. Some people cannot be programmers at all.
Each unique programmer has a base performance level that is constant and almost impossible to change.

Three Dimensions (variables)

Now we can move to the part of equation that can be changed. Can we make programmers permanently performing above their base level? To answer this question lets review three variables of programmer’s performance.

X. Energy
measures amount of work and power of ideas that could change and improve reality.
Here I consider a specific kind of energy – creative positive energy that is directed to build better software and aligned with company and customers goals. Individual’s desire to act, create and achieve is the source of this energy. As we discussed above, part of this energy is based on character and predetermined. However, there is a big variable component of individual energy that is driven by motivation and environment.

Y. Discipline
measures ability to focus and follow necessary steps to achieve goals with good quality.
Accountability, self-organization and focus are core elements that keep individuals to perform on a high level. Personality matters here – some people will promise and forget immediately, give up experiencing first difficulties or become distracted by more interesting tasks. Some will fight until the end and go beyond limits to meet commitments, exceed expectations and bring excellent results. However, significant part of programmer’s discipline is variable and depends on context and expectations.

Z. Expertise
measures knowledge and experience in programming, technology and a customer domain.
Expertise includes know how to build software, make right decisions and implement good solutions with minimal troubles. There is no doubt that expertise is growing with time, but individual variations are big. Many people consider expertise as the only important characteristic of a programmer. I believe that it has much lower value without two other variables.

Programmer’s Archetypes

Energy Discipline Expertise Description

Highly productive, creative and successful, know how and what to do; have energy, discipline and desire to accomplish tasks on the highest level

Great drive and energy to make things happen; however makes unnecessary mistakes and poor decisions

A talented and experienced individual who could create great solutions; however inconsistent and unpredictable

A disciplined and knowledgeable programmer, who is strong in implementation, but lacks creativity and drive
Noise Maker

A lot of energy and movement without much useful results

Consistent and rational, but does not have creative energy and knowledge to be productive

Deep knowledge and vast experience without willigness to perform and change anything
Lost soul

Don’t want to do anything and don’t know how to do it anyway


How to Improve

A programmer can be 10 times more productive than other programmer and 10 times more productive than himself under different conditions. Therefore right people under right conditions could be 100 times more productive than others.

How can you influence programmer’s performance with these three dimensions? Hopefully, you found right people with right talents. It is a waste of time to change personality and push in direction where talent is absent. However, it is possible to amplify natural strengths and create conditions for super productivity.

goal: make people empowered, motivated, interested and satisfied; engage them to perform above their base level of energy

job design

  • interesting work – brings inspiration and motivation
  • control – over own work and decisions – pushes people forward
  • self-organization – opportunities to find own ways that bring best results
  • creative tension – goals on the edge of capabilities to focus energy and open new energy sources
  • defined outcomes – clear direction that reduces anxiety and doubt and increases productivity


  • flow – put mind in a state of energized focus, full involvement, and success
  • positive experience – good emotions and healthy team relations; comfortable and trusted environment
  • personal interests – decision making considers and takes care of individual interests
  • right incentives – compensation, rewards, recognition are the great source of energy and motivation


  • space for mistakes – tolerance and open ways to fix mistakes make people think about moving forward instead of covering assess
  • productive environment – where people think about work instead of nuisances
  • fit – between personal and company goals, culture and views – amplify people desire to work
  • reasonable pressure – normal workload, minimal stress, time slack to avoid energy drains

goal: make people focused, responsible and aligned; make them performing in the right way

support system

  • established process – align actions with goals and support their execution (Agile is the best way to go)
  • transparency – reasons for decisions should be clear, problems should surface quickly
  • pull system (kanban) – signaling system to trigger action based on actual needs
  • control mechanisms, check and balances, audit, risk management (e.g. iterations)

zone of responsibility

  • clear areas of responsibility – what is included and what is not
  • balance of responsibility and authority – adequate authority to accomplish goals; restrictions to avoid damage
  • rules of engagements – when, where, and how force (bold actions) shall be used
  • match confidence with responsibilities – an individual is prepared and ready for the new responsibilities


  • safety regulations – mandatory rules for everyone
  • professional standards – recommended parameters of work and products (security, performance, availability, etc.)
  • best practices – spread approaches that work

goal: make people knowledgeable, experienced and growing based on their talents


  • right career path – built on persons strengths – enable growth in area of competence and natural strengths without switching into paths that don’t match talents (e.g. management). Avoid consequences of raising to the level of incompetence (Peter Principle).
  • broadbanding – build levels of achievements and pay schemes that allow to achieve and earn more within the same profession
  • match expertise and challenges- keep people always interested and challenged, avoid boring or over complicated tasks
  • assist self-discovery – help search for the better career and role


  • diversity in tasks and activities – accelerates growth and understanding
  • big picture, direct communication with customer – informed people make more optimal decisions
  • exposure to different subject areas – broader knowledge opens new possibilities and solutions outside the narrow specialization

learning and practice

  • feedback loop – continuous evaluation and improvements based on feedback
  • opportunities for learning – grow expertise beside direct work tasks
  • sharing, coaching, communication – peer and experts access and support for growth

There is no standard way to increase performance of an individual programmer. Each individual is unique and requires personal approach. The theory of Three Dimensions of a Software Programmer suggests framework for these approaches.
It takes a huge effort to understand every programmer in your team individually and craft personalized approach, path and conditions. But it makes sense to do. People will be productive, engaged and happy. The company will grow and succeed.

What could be a better outcome in our civilized hard working world?

AddThis Social Bookmark Button AddThis Feed Button


Fantastic post.

You’re right that much of a programmer’s energy can be influenced by their environment, and this can be directly controlled by management. See my blog for a discussion on how leaders should should lead and motivate.

Comment by Ian Hickman | June 25, 2009 2:21 am

Excellent Post. Appreciate you very much for this. The fact is that, in real world, organizations are more focused on projects rather than people and as a result of this, they fail to treat humans as Humans. For most of the organizations, people are no different than plug and play devices. You should be blessed if your manager allows some room for making mistakes and correcting them. Hope Wisdom will prevail one day !

Comment by Karthikeyan | June 26, 2009 1:12 am

Awesome first-class marvelous sensational post! Bookmarked.

Comment by Alvarez | June 26, 2009 5:54 am

[…] Software Creation Mystery » Three Dimensions of a Software Programmer: How to get things done […]

Pingback by Daily Links for Friday, June 26th, 2009 | June 26, 2009 6:34 am

[…] 3 dimensions of a software programmer: how to get things done […]

Pingback by Tweets from purplehayz on 2009-06-26 « Aleph Naught & the Null Set | June 28, 2009 9:37 am

[…] Three Dimensions of a Software Programmer: How to get things done Software Creation Mystery (tags: programming career) […]

Pingback by links for 2009-06-30 « pabloidz | June 30, 2009 7:03 am

Excellent post with great insight !!!

Comment by Jomit | July 24, 2009 6:35 am

I laughed when I saw this. Very true.

“A programmer can be 10 times more productive than other programmer and 10 times more productive than himself under different conditions. Therefore right people under right conditions could be 100 times more productive than others.”

I am sure you meant to say “A hacker”, and also, “other programmers”

Outstanding work!

Comment by paultag | July 30, 2009 10:13 am

This is so well expressed.
Very good job by the writer.

Hats Off!

Comment by Jay Thakkar | November 11, 2009 11:08 am

Nice post mate!
just a small comment about colleagues, teams and competitive attitude. Sometimes the true skills of a programmer are not really exploited in a project just because of the people that are around you.

Btw, nice post!

Comment by Francesco | December 9, 2009 12:37 pm

Very informative post.
Thanks for sharing 🙂

Comment by M.V.Priyank | November 19, 2010 12:34 am

This is pure unadulterated bullshit. Vague meaningless terms are thrown around willy-nilly (and what’s sad is that the average Joe is impressed by them). What empirical evidence is any of this based on? Without that you can’t call it a theory (, it’s meaningless speculation.

Comment by skeptic | November 19, 2010 9:32 am

This is bloody amazing.

Solidly, solidly well done.

Thank you.

Comment by Teltaris | November 21, 2010 6:07 pm

[…] Shared Software Creation Mystery » Three Dimensions of a Software Programmer: How to get things done. […]

Pingback by Elsewhere, on November 25th - Once a nomad, always a nomad | November 25, 2010 3:52 pm

[…] Andriy Solovey sagte dazu sehr treffend: “Many people, who see programmers as extensions of their computer […]

Pingback by Neues Jahr - neues (Geek) Blog! - web + software solutions | December 28, 2010 11:37 pm

[…] I believe that it has much lower value with­out two other variables. Read more: Posted via email from Priyank’s […]

Pingback by Three Dimensions of a Software Programmer: How to get things done - The Tech Hub | The Tech Hub | April 24, 2011 12:55 pm

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 -
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License .