From Aristotle to Software Engineering Practice Management
It is time to grab excellence back from the jaws of mediocrity and focus on honing our skills. We must become excellent by doing excellent work. Applying Aristotle to Software Engineering Practice Management can help us on the journey.
One of the reasons I am attracted to DevOps is the focus on excellence and mastery. I was in the audience when Adam Jacob spoke about DevOps Kung Fu. His focus on mastery resonated with me and became a guiding principle during my DevOps journey. Mastery incidentally is also topic on which an ancient philosopher, Aristotle, has much to say.
The conversation currently in our organisation is around building software engineering practices. We are really thinking hard on how to bring excellence to bear on the way we work. This purpose of this post is to add to the discussion on what makes a good practice and to invite Aristotle to be part of the discourse.
What is a practice?
We have restructured our organisation to work in small feature teams. Feature teams ideally consist of 10 to 12 people and consist of a Scrum Masters Engineer and a Product Owner. Many of these teams work together within a larger portfolio. A typical portfolio might be built around something like Retail Banking. Feature teams are then responsible for specific deliverables within the Portfolio. As much autonomy as possible is delegated to these Feature Teams.
The downside to autonomy is a loss of economies of scale. An Angular JS developer in the “Beneficiary Feature Team” might struggle with something a developer in the “Authorization Feature Team” has already solved. As Kniberg notes in “Scaling Agile at Spotify”, there is no point in having a company if it just consists of small autonomous teams without any coordination.
In our organisation we use the concept of a Practice to denote the community of people having similar skills and working within the same general competency area. The role of the Practice Manager is to grow the skill and the practice towards excellence within a competency.
Aristotle would have love this as he believed that human happiness consists in the exercise of virtues. A virtue in its most basic sense is excellence of any kind (Greek: ἀρετή). Practice Management can be seen as building excellence which in turn contributes to happiness and well being.
The pursuit of Excellence
Greek culture valued excellence. Young men were encouraged to compete with one another in diverse activities like athletics, intellectual pursuits and the arts. For a Greek, what made a horse run fast was its virtue or its excellence. Excellence then could mean a knife that cuts well, an eye that sees well or a teacher that teaches well. In the Information Technology space it might mean a developer that develops well, a tester that tests well or a CIO that manages well. Even though Aristotle focused on the virtues of character, I think the principles can equally be applied to physical excellence or skills.
To improve employee well being and help employees to flourish a Practice Manager should focus on building excellence.
Aristotle’s ergon argument states: Human happiness consists in the exercise of virtues or excellences. A better translation of happiness (Greek: εὐδαιμονία) in this context is “flourishing”. If we want to improve staff engagement or employee well being it is therefore extremely important for organisations to allow people the space to focus on excellence. To improve employee well being and help employees to flourish a Practice Manager should focus on building excellence.
According to Aristotle, to become good one has to do good. The end of study is not knowledge but action. How does one then become excellent? Aristotle states that one first has to acquire knowledge of the subject matter through learning or training and then the learning should turn into action through habits. Pure theoretical knowledge has milted value.
Using this approach, how does one become excellent in a field like Continuous Delivery, for example? Firstly, read a good book or get trained through videos or good lectures. In this specific case a great book that will introduce you to Continuous Delivery is Continuous Delivery by Jezz Humble and David Farley. The book lists the following practices for continuous delivery:
- Keep everything in version control
- Done means released
- Don’t check in on a broken build
- Don’t go home on a broken build
- Fail the build for slow tests
- Only build your binaries once
- Deploy the same way to every environment
Using this analogy a good Development Practice Manager will ensure that all team members are trained on Continuous Delivery. He or she will then make sure that the above list becomes a habit for each team.
A good Practice Manager will make sure his team is trained and that good habits are formed.
In our organisation we started to measure if these practices became habits. In one example we pulled the metrics on daily commits. A metric like this clearly shows if a habit has been formed. A good Practice Manager will make sure his or her team is trained and that good habits are formed.
Building a community
Friendship and politics are important to Aristotle. Both are broad concepts and needs clarification. Friendship in his context could mean a parent’s relationship to their children, kinship between human beings or even amicable relations between business partners. For Aristotle friendship is a virtue. For him all friendships involve goodwill which is reciprocated and of which each party is aware. Friendship is not about liking each other but about usefulness, pleasure or growth or even all three. Practice Managers should work really hard towards relationships within the team that are beneficial, pleasurable and that sustain team growth.
Politics is the relationships outside the team. For Aristotle it means being a good citizen. No team is an island and is always part of a larger ecosystem be that the organisation, the city or a country. Outside Orientation is a key leadership competency and a neglected one for that matter.
A good Practice Manager will build bridges of reciprocal friendship inside and outside the team. He or she is a great community builder.
In our organisation we started to open up and become more outward focused. We started forming guilds that broke the organisational silos. In many cases it was the first time that people actually debated issues across their organisational silos. We also became active in South Africa where together with the other banks we started hosting Industry Days and where we actually began to work together to build skills in our industry. The positive feedback on this was far more than we could have anticipated. A good Practice Manager will build bridges of reciprocal friendship inside and outside the team. He or she is a great community builder.
Virtue or excellence is a mean. As we have seen we become excellent through practice and habits. We can however over or under emphasize this. Let’s take healthy eating as an example. Eating too much or too little can ruin one’s health. If we fear too much we are cowardly and if we fear too little we are rash. Being courageous is just right. If I boast too much I might be seen as boastful and if I boast too little I might be seen as self-deprecating. Being truthful is just right.
A good practice manager does the right thing, at the right time for the right reason. The implication of this is that Practice Managers needs to be seasoned practitioners who though experience have learned to discern good from bad. There is unfortunately no rule for this.
What does this mean for Practice Management? A good practice manager does the right thing, at the right time for the right reason. Aristotle unfortunately does not provide an explicit rule that might be applied in specific situations. We should also not expect one. Practical wisdom is the ability to see situations correctly. The implication of this is that Practice Managers needs to be seasoned practitioners who through experience have learned to discern good from bad.
A while ago a team decided to implement Test Driven development fully. This was rather rash as this is a high maturity practice. It would have been better if they have chosen something simpler to start with and build on. The same holds for Continuous Delivery (CD). It is foolish to even try and attempt full CD if your Continuous Integration (CI) practices are not bedded yet. The same holds for Micro Services: don’t go for a Micro Service Ecosystem if your CD practices are not bedded down yet.
Bringing a virtue ethic to practice management is for me a return to the suspicion of theory and a respect for local practices that have been formed and honed through habits and experience. Practice Management should, through the acquisition of knowledge and the habituation thereof, lead to excellence in our software engineering disciplines.
Nicomancean Ethics by Aristotle. Translated by Roger Crisp:
An example of building knowledge in computer science: Google Interview University
It is a great privilege to write this essay on an Acceleration day. Standard Bank, the company I work for, has decided that we can allocate one day per month to work on anything which might interest us. This post is the product of that.
If you feel we missed something let us know in the responses below.
Thanks for reading.
If you enjoyed this and think others will too, will you please “Recommend” or share with a friend?
Originally published at langerman.co.za