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.

Winning the Competive Edge with Learning Organizations

A learning organization encourages individuals and teams to continuous learning and improvement. Strong values and clear vision head those organizations. And their direction is to work closer to the customer and responding to the change quicker. They tend to learn from others and question their own behaviour. Learning organizations also tolerate flaws and even learn from them. This should be the reality for any agile team and organisztion.

Learning is the lifeblood of organization

lifeblood-1
People face change all kinds of changes in their work life all the time. This means that learning continues in different forms through out the whole career. Also the life cycle of an organization include constant learning. They face new things, operating models, situations and so forth which needs adaptation. And that requires learning. Changes in information technology has increased the need to react faster to change. Real competitive edge comes from that the organization learns faster than its competitors. Thus importance of competence and know-how to success has increased.
Succeeding in fast changing and unpredictable environment demands constant change and recurrence, learning. Only innovative organization can produce better services and end up beating its rivals. Organization’s results must improve all the time. And so the performance of organization and its employee must get better. So effectiveness is dependent on learning. Learning faster than competitors wins you the Competitive edge!

Learning within the team and the organization

Learning is a process where individual gains new skills, competences, experiences and contacts. Learning is in fact creating knowledge by shaping experiences. The process starts from the will to learn from experiences. Then, one should have time to ponder different opinions and facts to gain knowledge. Finally one should understand and apply new knowledge to generate new experiences. And so the learning process starts again.
Let’s look all this from the organization point of view. By following this process, it has the ability to renew itself. This happens by transforming its values, processes and ways of working. In practice this happens by acquiring new competence and make use of it immediately. Organizational learning is also a process that integrates individual and team level learning. Individual learning is often intuitive and interacted to team level as shared knowledge. This can again solidify as practices within the organization.
Learning-Organization
The learning objectives must derive from the strategy. This ensures that organizational learning is more than the sum of individuals’ learning. The organization should encourage and support employees to experiment outside their job description. It should also increase supportive interaction. This can happen by removing focus on single department results and hastiness. Making small everyday insights and improvements beats big radical inventions!
Good contact networks between individuals and teams contributes to whole organization’s learning capabilities. Individuals facilitates continuous learning. Teams enable sharing knowledge. Shared vision and values of the organization guides learning towards something great.

Is the Learning Organization too much asked for?

Every organization learns. But successful organization learns, adapts and changes faster than its competitors. It also allows mistakes. Learning organization guides itself: reduce, crystallize, simplify, focus and see the whole. It balances efficiency, learning and wellbeing.
Learning organization has ten theses:
  1. Learning organization is a whole
  2. Learning organization needs values that support learning
  3. Goal-oriented action requires goal-oriented learning
  4. Learner crafts own motives to learn along the the organizations goals
  5. Knowing and mastering are important. Learning and learning to learn are more important
  6. Give people opportunity to engage – change will succeed better
  7. Management’s mission is to build frames and to support learning in organization
  8. Value the past, but help abandon it
  9. Training is important, but one requires other means too
  10. Don’t start changes if you can’t finish them
The learning organization has many definitions:
It is an undivided whole, led consciously. It’s key organization and individual level factors affiliates into common direction. It focuses on identifying impediments, applying and evaluating means.
A learning organization is one that seeks to create its own future. That assumes learning is an ongoing and creative process for its members. A process that develops, adapts, and transforms itself. It responses to the needs and aspirations of people, both inside and outside itself.
What should we learn within the learning organization? Learning to learn is in the essence. And that leads to reflection, using retrospectives to gain insight on improvement actions. Every task should appear as an opportunity to learn and improve. Learning from everyday tasks links new insights into concrete actions. Ten most valuable learning skills for organizational learning are:
  1. Systems thinking
  2. Models leading internal action
  3. Strategic learning
  4. Feedback systems on individual, team and organization level
  5. Self-management
  6. Team learning
  7. Dialog
  8. Shared vision
  9. Benefiting from information systems
  10. Sharing of knowledge

Mental-model

Want your organization to rock at learning?

Superstar learning organization needs new dimensions to leadership. You need builders and trendsetters. Questioners and facilitators. Provokers and assessors of whole. You need to enable cooperation and collaboration to create lean and progressive organization.
So as a leader introduce principles from Lean to your organization. Remind individuals and teams about relentless reflection (Hansei) – even daily. Show them secrets of continuous improvement (Kaizen) on small steps. Create pattern of retrospectives to support both of these. Consider applying Shu-Ha-Ri into your organization. We in Siili Solutions have done this for example with our Master & Apprentice programs.
Remember to learn daily and that learning should be fun.

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).

Evolution of CI/CD pipeline

Back in the days there weren’t any tools for continuous integration or delivery (like Jenkins or Ansible etc). There was only ad-hoc build, manual testing and deployment done by developers from their own computers – and that was suprisingly ok (or they actually didn’t know the power of CI/CD tools yet). Actually it’s fine even today if we are looking CI/CD pipieline from a Lean perspective: to automate only the necessary parts of the value stream to get things done, BUT remembering to measure and improve the processes if needed (by creating a feedback loop and continuously measuring the process in retrospectives).

Sometimes it would be better to make your own tools instead of forcing to use ready made ones. I remember the times before Ansible when I was scripting a bit vague deployment pipeline with Powershell to deploy some PHP and Java artefacts to Windows environment alongside of .NET stuff packed into Nuget packages over TeamCity and Octopus Deploy. I know that was pretty questionable solution and I’m sure I’ll not do that again, but in the moment it felt a good enough (compromise) and I learned pretty much what it is to build things pretty much from the scratch. I found that a complex CI/CD processes could be an indicator of massive technical debt or cultural or process problems – but anyway, it was working and what was the most important thing. Customer got the solution and our team delivered a working software to production many times in a day.

Nowadays CI and CD pipelines can be presented as a code and stored to the VCS instead of managing configurations from the tool’s own GUI. Presenting configuration as a code is good because e.g. Ansible/Docker/Jenkins configurations are as valuable as the code of the main business logic and it’s fair to manage them over the same processes (for example pull requests, show-and-tell sessions , testing etc.). That approach turns the focus on the actual value and leads the change closer to DevOps culture.

Another good thing of modern CI is easier parallel processing set up. Today it’s possible to bring a flexible amount of Jenkins slaves in Docker containers if needed, or execute unit, integration and system tests in parallel by various tools like Gradle, Selenium Grid2 or Robot with pabot (for parallel end-to-end testing). Of course the cloud based CI services like Travis or CircleCI are pretty handy tools when project is suitable for using them.

But still the basic idea for me is to see the CI/CD pipeline as a part of the value stream. It’s all about choosing the right tools for the right case, or crafting the own tools if there’s no suitable one available.

More about configuration as a code: