The forgotten part of successful craftsmanship

From late Middle Ages master craftsmen have produced beautiful and practical products. To create these products they used valuable resources from their limited inventory. The creative process required that they had a vision of what they where about to build. Without the vision, a goal, craftsmen would only waste valuable and useful resources.

Why should we focus on our Vision? At least two big reasons:

Purpose & Motivation
Decision making

image

Purpose & Motivation

In our daily life we wake up every morning. We do our morning routines and then we spend most of our waking time doing work. We all want to feel that our work is meaningful.

A good vision describes what we want to achieve and why. If a vision is compelling for us we can find purpose, feel our work is important and meaningful. Finding purpose will result in higher motivation.

If you are working on something exciting that you really care about, you don’t have to be pushed. The vision pulls you

– Steve Jobs

Decision making

Craftsmen are not machines, they have brains and have to do many decisions on a daily basis. How are we doing these decisions? How do we know, if the decision is bringing us closer to our destination?

A shared vision shows us where we are going, like a map is telling where we should drive. Navigating with a low detail map gives us sense of direction and this helps us to make those decisions. A vision shows us the direction but doesn’t restrict us. We should always be curious and creative, innovate and find new solutions.

Limited problem solving scope

Usually agile projects run in sprints. Teams plan their work for next few weeks and define a sprint goal. During a sprint we encounter situations where we have to make decisions. When the vision is not clear decisions are often made using the short term goal. It would be much more valuable if we would focus on the big picture.

Where is the vision?

In my experience many agile software projects fail to communicate the vision. As a result, teams find them working without a clear direction and this leads to poor commitment.

Successful start-ups are good at sharing their vision. Why? For two reasons, they need to know what they are doing and to attract outside investors.

We should ask ourselves, where is our vision?

In your work, find or define a vision that everybody can relate to. A good vision shows direction, gives purpose to our work and is emotional.

How not to suck as an agile team member?

Do you think of agile development as an act of freestyling and cappuccino drinking with no plans attached? Let’s just do something and deliver it to the customer, they will surely appreciate it?

I have news for you: that could not be further from the truth. My experience says that agile team and agile team member needs two thing above everything else. Those things are discipline and communication. The latter is quite self explaining (I’ll come to that later) but discipline? Is that like waterfall?

Agile is about reacting to changes and delivering small deliverables often. And to be able to do that a team must have a structured process and agreed ways of working.

Let’s take for example DoD which stands for Definition of Done. DoD tells the team what are the conditions a requirement has to fullfill in order to be called “done”. Like unit tests and code review. What happens if somebody is not disciplined and didn’t write unit tests for a task? The rest of the team thinks that they are done! And yes, I do know that there are ways to make sure that no untested code get’s into master branch in version control. Another example could be a scrum board. What if a team member doesn’t update his/her progress in real time? The rest of the team doesn’t have a clue how the team is progressing. Discipline.

One attribute of a successful agile team is continuous improvement. Of their processes. It is impossible to have a perfect process in place from day one. And if you don’t improve you rot. Teams start with some process and work actively to improve it. One way to make improvement happen is to agree on an intermediate goal and actively work to reach it. Everybody in the team has to do their part. Discipline.

So discipline makes sure that the team is moving into right direction and the whole team is in the same boat. And communication is the way to make sure discipline is in place.

Thoughts about technology leadership

Nowadays we see the software development more like product development. It’s more common to work in teams instead of separate rooms alone (and communicating over tools). Today the team can really affect the working methods, tools etc. (like Agile Manifesto says).

Still there’s organisations who still prefer to use the old “traditional” way of managing top to bottom style, but assuming working agile. Strict processes might be recommended or required when we are dealing with for example life-critical systems.

If we look at the picture of Evolution of Management (above), it says that management and authority and trust is moving inside of teams. That’s a good direction because especially in software development the coders really have to know what to do to write the right business logic – so they have the actual authority to build the right solution which is based even more on Lean startup approach. There’s no responsibility handovers anymore – people are taking responsibility as a team, not based on roles or hierarchical levels – e.g. It’s not a designer’s responsibility to test  or code the system. Everyone must do everything they can to build a perfect solution regardless what the actual roles are – there’s only team of people, not team of roles.

About leading the people instead of commanding and controlling the resources and processes: it’s understandable hard to reborn as a leader instead of commander especially if the career has started in waterfall era. Nowadays managers are required to have a great social skills like empathy and flexibility. Today’s leadership in technology field is all about continuous improvement by making blockers or waste visible and focusing to removing them.

I see technology as a material like wood or metal. Technology can be crafted by developers. Somedays developers need to craft the tools of their own to do the things right, actually that’s pretty rare because there’s a pretty high level of standardisation of tech tools (for VCS or ALM).

The main focus of tech lead is to reduce the time between getting to know what to do and production installation:

Screen Shot 2017-09-07 at 9.54.32

Technology leadership is rarely evolved only in technology nowadays, because we have so much out-of-the-box tools or overall solutions for implementing the common scenarios, such as forms, wizards, web shops etc. It’s more about dealing within the team in social level (to enhance the team dynamics) – and at my point of view it’s definitely shouldn’t be related to technology at all. I see that the technology is going more high-end (naturally), but human-to-human communication should be in natural face-to-face form instead of communicating over tools. When interacting face-to-face, we have all senses in use, but if we work constantly remotely, it’s always harder to communicate over Skype – then you have only voice, maybe video, but there’s so much information you don’t see, and I see that harmful to team dynamics. It’s important to encourage the team to work as much face-to-face it’s possible – especially when the development is just started. It’s understandable not to strictly avoid remote work either – flexibility is one of the key assets of modern work culture.

Screen Shot 2017-09-07 at 9.56.36

Agile implementations like Scrum gives the framework to focus on the right things to answering the needs of rapidly changing world. As a tech lead it’s important to see also the social level as valuable as code – I mean how the team members support each other and really focus on the process and improving constantly.

There’s pretty effective principle for leading the tech team: If the product is broken in production, the problem is in the process – so fix the process to build the perfect product (actually it’s never perfect, or it shouldn’t be because of Kaizen).