Software Craftmanship Practices
Effective and efficient software crafting for product development
- Acquiring top-notch architectural, development, build and deployment skills
- Practical guidance and hands-on improvements of your setup and practices by means of Pairing or Mobbing
- Get the most inspiring book to help inspire you to get unstuck in your situations
Make software craftsmanship a competitive advantage in your company
Together with your team(s) we make sure that your Technical Agility is not a constraint towards your Business Agility. Without proper technical practices and a craftsmanship mindset you will not benefit from the Agile adoption you're planning or executing upon. Business agility will require short lived branches or even trunk based development, effective automated testing, top notch continuous integration and flawless deploy mechanisms to keep feedback loops short and allow structure and process changes to reach its full benefit. A shift in mindset!
The concept of deliberate practice is a core component of how we design our technical courses and workshops. This means that all of our sessions are strongly hands-on and designed to have participants apply the techniques. The main idea is to activate the already existing and newly acquired knowledge in a way that the participants will be able to put this in practice the next day at work. We provide a focus towards the challenges you are facing and the practises that will drive the biggest business impact in your environment. These workshops are language agnostic and will be fine tuned to your current and/or future technology stack. If possible and access is allowed, we tailor the courses towards your own product codebase, so there you get immediate benefit directly in your product instead of a playground.
5-Day LeSS Developer Training
This course is targeted at team members of organisations where multiple teams are working on the same product(s), or codebase. Working in a larger scale environment like this does provide the teams and their team members a set of well known coordination and integration challenges. This training contains a lot of hands-on work in pair and mob programming sessions, facilitated workshops with a specific target outcome and active reflections.
In this course we will explore different coordination and integration challenges, understanding of their importance and provide a practical approaches to tackle these challenges from a technical perspective.
Topics we'll address during this 5-day, hands-on course:
- Emerging, clean architecture
- 4 elements of simple design
- Automated verification tests, specification by example
- Fast changing infrastructure
- Product development process
- Software lifecycle, DevOps pipelines
- Continuous Integration and continuous deployment strategies
- Collective code ownership and how it affects branching strategies
- Facilitation techniques for multi-team refinement
- Behavioural analysis of collaboration
- Building an information radiator - your bridge towards the rest of the organisation
The origin from this course is coming from within the LeSS Technical Excellence principle but don't expect to be become a LeSS expert. The course is very much focussed on Technical Excellence for teams that share the same code base and have to produce a highly integrated product release. Even if you don't have or intend to apply LeSS, this course will do magic for your teams!
1-Day Code Retreat
Corey Haines, one of the initiators of the code retreat concept, used a nice metaphor to explain the concept of this thing called a code retreat. Developing software is a bit like playing an instrument. The big difference is that, as a musician, you take a lot of time practicing and only a fraction of your time performing on stage. As a developer at work, we are constantly on stage and we never take enough time to practice.
In our day to day jobs we have the sense of wanting to get it done, and that causes us to rush. So we try to cut corners, but sometimes we do not cut the corners in the best way because we do not know enough.
During a code retreat we use pair-programming, which is wonderful because you can learn a lot from each other. The attendees write code using proper development practices, like TDD and known design patterns. We focus purely on writing clean code, there is no pressure to actually produce a working solution for the problem presented. We are here to expand our ways of thinking about software design and producing code.
During a code retreat pairs iterate on a similar (or same) issue multiple times using different approaches, constraints and design patterns increasing their overall software design and coding practices at each next iteration. To close off the day we have a longer retrospective so learnings are shared amongst all attendees and not kept isolated within the pairs.
All code retreats are language agnostic and can be tailored to your technology stack, the main software craftsmanship principles are the same for each language.
1-Day Legacy Code Retreat
Ever wondered how to deal with legacy system you have to work with day in and day out? Without completely re-writing everything or just starting over?
You know all about test automation, test driven development (TDD), acceptance test driven development (A-TDD), other outside-in development practices and are facing a codebase that does not allow you to actually put these things into practice! Known as legacy code or technical cruelty.
During this retreat you will practice with a lot of different refactoring techniques and ways to add useful tests in small steps. Baby step refactoring, 1-min activities that will lead to huge improvements in the codebase. Decoupling tightly coupled modules using golden masters, isolating behaviour from frameworks, using stubs and mocks, and some things you might not have thought about yet.
This legacy code retreat is language agnostic, the main refactoring and software craftsmanship principles are the same for each language.
3 to 5-Day Refactoring Mob Programming Workshop
During this 3 to 5 day mob programming workshop we will join you team members and focus the refactoring efforts one specific challenge within your current codebase. Together, we apply mob programming to increase shared understanding across all attendees getting down and dirty within the code. Joined forces will increase the overall impact and ability to tackle the challenge at hand. During these workshop we refactor code, remove obsolete code, add test automation and improve workflow where relevant while resolving the challenge at hand.
The end result is improved, better designed production code and new capabilities in your teams to put technical excellence in practice. No excuses allowed anymore!
The people who joined this workshop will also be able to setup and guide other mob programming workshops within their organisation, continuously spreading best practices to a larger crowd. We have observed the viral adoption of mob programming workshops before, tackling legacy code, adding complex capabilities to existing products and so on.
A key element for this workshop is that the people who participate in them are doing so voluntarily. There is no absolute requirement for everyone in the mob to actually have coding skills, the format does provide other solutions for people to contribute to the challenge. Might even be the right thing for you to bridge the tech/non-tech gap in your teams.
1-Day Event Storming Workshop
We have noticed that a lot of today's software developers do not have a full picture of the domain model they are working in. As it is key for software craftspeople to understand the purpose of the item they are focussing on, it is imperative to understand the domain model. The outcome of this workshop is twofold:
- There is an increased shared understanding of the domain model the team(s) are working on
- You have a clear visual representation of your domain model which you can use in future design and refinement sessions
During this workshop we will facilitate a diverse group of people, with different points of view and different skills to build a visual model of their domain or part of their domain. It is crucial that we have a good mix of technically skilled and business skilled people in the room to guarantee the success of the results generated.
In this workshop we will also reflect on the actual flow of event storming as a facilitation technique with the goal to have people comfortable to use this technique themselves during future design and refinement sessions. We will go into the different elements of preparation, facilitation and aftercare in order to maximise the impact, even after we are gone.
Series of Architecture and/or Coding Kata's
One of the more successful practices to acquire Technical Excellence skills are “kata’s”, practicing skills outside the domain of the real battle. Just like they are used in fight sports. You open the space for people to join weekly or 2-weekly kata sessions going from 2h sessions to full day sessions where they can learn new skills. We design and facilitate Kata's for development skills - coding kata's - and architectural skills. This works like a charm but be warned, don’t expect results from day 1, it truly is like the karate kid old version: wax in, wax out, wax in, wax out... or in karate kid new version: put it on, put it off, put it on, put it off...
We recommend to have at least 3 iterations scheduled tackling immediate needs within the teams.
What do you get out of it
Higher Quality Products
The skills learned can immediately be applied on your product, increasing its overall quality and stability
Having stable, qualitative products allows team(s) te extend them rapidly, providing extra capabilities competitors don't have.
Get the most inspiring book to help inspire you to get unstuck in your situations