Category Archives: Work Psychology

Rule of Two for Pair Programming

Video

Coding Software Engineering Work Psychology

SidiousVaderPromo“Always two there are. No more, no less. A master and an apprentice.” – Yoda

See a nice video on Pair Programming and Rule of Two. Pair work is not only a programming practice, but is a standard military practice ( https://en.wikipedia.org/wiki/Wingman and https://fi.wikipedia.org/wiki/Taistelijapari ) can be applied to any knowledge work such as sales and accounting, too.

Pair Programming is a agile practice with 2 people in front of 1 computer and keyboard. There are 2 roles: the Navigator one tells what to do, the Driver holds the keyboard and writes (“one police man can read, the other can write”). You switch the roles frequently. Seniors should be paired with Juniors, Customers with Coders and Sysadmins with Frontend Developers.

Pair Programming is a controversial practice where doing pair programming wrong is worse than not doing it at all. There is a vast amounts of scientific findings related to pair programming:

Programmers working in pairs usually produce shorter programs, with better designs and fewer bugs, than programmers working alone. See http://en.wikipedia.org/wiki/Pair_programming

  • Pairs typically consider more design alternatives than programmers working solo, and arrive at simpler, more-maintainable designs; they also catch design defects early.
  • Pairs usually complete work faster than one programmer assigned to the same task (but it takes 2x the effort, but this is better than well compensated by the improved productivity)
  • Programmers are less likely to skip writing unit tests, spend time web-surfing or on personal email
  • Additional benefits reported include increased morale of the team.

While Pair Programming works for the Sith, it is known to be kryptonite for

  • incompetent introverts
  • control freaks
  • super hero programmers
  • cowboy coders

See http://blogs.atlassian.com/2009/06/pair_programming_is_kryptonite/

More pair programming information is available from

Published by:

Y2038 and Sustainable Software

Coding Testing Work Psychology

Today we were fixing some old unit tests for our large marketplace software, when I stumbled upon a peculiar test case. The test, written in 2005 assumed that a suitable date far in the Future would be 2015-01-01, and was now failing.

We fixed the test case by the DoTheSimplestThingThatCouldPossiblyWork and extended the future date until Y2038.

Anyway, the morale of the story is that at least at PHZ.fi, where we endeavor to build Sustainable Software, let’s expect that our software will be used for more than 10 years, before somebody rewrites it! In our case we are still using more than 10 year old software, but since we have unit tests (that now pass 100% again), it can still produce (a lot) business value. For a developer building sustainable software over building low quality, throw-away software, makes a big difference on the impact you contribute to the world.

 

Published by:

PHZ.fi Values

Careers Coding Company Management Strategy Work Psychology

At PHZ.fi we have found a better way to develop sustainable software by following the core values of Agile Manifesto
http://www.agilemanifesto.org

Jeff Sutherland, the inventor of Scrum has elaborated the meaning of values further.
https://msdn.microsoft.com/en-us/library/dd997578.aspx

We should Individuals and interactions over processes and tools

Our core value is teamwork, which enables Collective Code Ownership and continuous learning. The sysadmins will pair with frontend developers and customers with the backend developers, trainees with senior developers. Studies have shown that when all communication obstacles have been removed, the team will perform up to 50x better than the industry average.

  • Respect for the worth of every person
  • Truth in every communication
  • Transparency of all data, actions and decisions
  • Trust that each person will support the team
  • Commitment to the team and to the team’s goals

Working software over Comprehensive documentation

By constantly refactoring the software by doing Test Driven Development, the best documentation for the software is 100% passing automated tests.

  • Define acceptance tests when defining the feature
  • Implement features serially and in priority order
  • Run acceptance tests on each feature as soon as they are implemented
  • Fix bugs that are identified as highest priority as soon as possible

Customer collaboration over contract negotiation

We have found out that the Truth doesn’t reside in our office, but we should go out of the building and find out the real customer. Since it is difficult to get the customer to come over to our office, we normally nomadically roam on-site at customer premises.

  • When the team cannot work on-site with the customer (such as consumer projects), the team must appoint a customer proxy, product owner, who is always available at the office

Responding to change over following a plan

  • It is better to adapt to change quickly rather than agree and follow a fixed contract or a plan. We have found out that even a 2 week iteration might be a too long period to fix on a certain plan, customer typically wants to change the plan even faster especially on consumer services that are in production maintaned by PHZ.fi Devops.
  • At PHZ.fi we unfortunately do not excel at fixed price and scope projects, but try to avoid them. Instead we provide an agile team for an hourly rate, and the customer can decide on the scope, priority and the length of the project flexibly. By prioritizing the highest value and highest risk customer stories to be implemented first and released frequently (daily or weekly), the highest business value can be delivered quickly and the total project risk diminishes quickly towards the end of the project.

Summary

The core PHZ.fi values are

  • High Skill
  • Teamwork
  • Feedback
  • High Quality
Published by:

Your deadly sins – Finding your personality

Management Start-up Work Psychology

I think there is good resemblance between the Enneagram  and Belbin Team Roles .

Enneagram

The Enneagram shows also the linkage (“wings”) between different role groups, which seems also to match my (limited) study of co-workers. For example I think most people (or at least the coders 🙂 are on the “inner triangle” of 3-6-9 (Achiever, Loyalist, Peacemaker = Implementer, Completer Finisher, Team Worker. Further, the Myers-Briggs personality indicator is also closely related, but somewhat different.

I quickly tried to figure out a draft mapping between the Belbin Team Roles and the Enneagram:

Blue Inner Circle
3 Achiever = Implementer		(doing)
6 Loyalist = Completer Finisher?	(doing)
9 Peacemaker = Team Worker		(social)

Red Changer
5 Investigator = Plant			(thinking)
7 Enthusiastic = Resource Investigator?	(social)
8 Challenger = Shaper?			(leading)

Black Maintainer
1 Reformer = Monitor Evaluator		(thinking)
2 Helper = Coordinator			(leading)
4 Individualist = Spacialist		(doing)

What I found was that while the Belbin Team Roles gives a quantitative psychometric and good descriptions of the roles, but lacks further analysis and grouping of the arch-typical role groups. I have found that the same roles tend to appear with each other, while Belbin does not suggest this. However, the Enneagram suggests exactly this. For example the role Implementer is usually occurring with Teamworker (high diligence and drive for team cohesiveness), and Plant with Resource Investigator and Shaper (high inclination towards constant change). The Enneagram gives a try to map the groupings, while lacking the quantitative measurement tools and exact weighting of the Belbin’s test. By combining the both you get both quantitative exactness and good overview to guide for example forming of the optimum team structure and how to manage different personalities individually.

I have grouped the team roles in three colors by the inclination towards the change. The blue roles (“inner circle”) are rather indifferent to change or following the opinion leaders, while the black roles are resisting any change. The red roles are the drivers or initiators of the change. However, actually the Enneagram might be giving a better overview of the attitudes towards change having the “red” roles on the left and “black” roles on the right. This would mean that the role 6 (Loyalist/Completer Finisher) on the Inner Circle is actually pro-change, while the role 3 Achiever/Implementer is resisting changes to plans or existing procedures (as described by Belbin).

The Details
While my personal role is firmly on the red side (5-7-8), I find the descriptions to match rather well between the Belbin Team Roles, Myers-Briggs and the Enneagram. However, the Enneagram has also the “wing roles” with stress and security (or integration/disintegration) points describing the behaviour under stress or in a relaxed environment. For the role 5 (Investigator/Plant) I find, however, that the points are flipped.

According to the Myerrs-Briggs the 5-7-8 archtype actually thrives under pressure (role 8 Challenger/Shaper), while the Ennegram suggests role 7. Similarly I find that under relaxed situation I rather act like role 7 Enthusiastic/Resource Investigator (rather than 8 Challenger/Shaper) having vice of gluttony rather than forcefulness. Anyhow, although flipped, there seems to be linkage which is very similar to the psychometric results given by the Belbin’s and Briggs-Myers’ tests.

Leading Different Personality Types and Building an Optimal Team

Actually I started to investigate the Enneagram while I was analyzing the motivational factors of different Belbin’s team roles. For example to motivate a Shaper, you need to threaten his goal, or to provocate him. A Resource Investigator looses quickly momentum, unless he is stimulated by constant social interaction of opportunities and ideas. To motivate an Implementer/Team Worker one needs to establish rapport, promote co-operation and common social norms, rituals and procedures. The Enneagram actually gives a very good guidance of the basic fears, desires, vices and temptations of different personality types, giving a good ideas for individual coaching and leadership.

The key is to first map out the role mix of the team by doing the Belbin’s team role test. To build a successful team the role mix should be balanced, with a few considerations. For example the there should be only one person with role 5 (Investigator/Plant), since the Plants have tendency to disagree and fight each other. Also only one Leading role can be dominant, either the role 2 or 8. For a note, the Enneagram shows the Stress & Security points linkage between roles 2 and 8. I’m not sure, but I think this is an erroneous linkage,
since most probably one person can’t have two leading roles, which are conflicting so strongly (please give me an example if you have witnessed this nemesis-role :).
Similarly, I’m not sure if there is a similar schism between roles 1 (Monitor Evaluator) and 7 (Resource Investigator). It might be that this contradiction is not so important since these roles are not competing on the leadership of the team, and the role 1 is lacking drive to inspire others (he has tendency to demotivate at least Resource Investigators by being overly critical, though).
Test Your Personality
Here is a link to the Belbin’s Team Role test (unfortunately in Finnish) http://www.fujitsu.fi/cgi-bin/roolitesti.pl
Published by: