Jun 24th, 2009 | Job, Management, People, Productivity, Skills

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.

Axioms

There are two basic axioms in foundation of the theory

Constancy – some programmers consistently outperform others under same conditions. 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 Creator

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

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

– A talented and experienced individual who could create great solutions; however inconsistent and unpredictable Doer – 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 Bureaucrat

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

– – 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

FfHII

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.

Energy

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

psychology

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

environment

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

Discipline

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

standards

safety regulations – mandatory rules for everyone

professional standards – recommended parameters of work and products (security, performance, availability, etc.)

best practices – spread approaches that work

Expertise

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

career

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

perspective

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?

Share this: Email

Facebook

Print

Twitter

LinkedIn

Reddit

Pinterest

