SCLondon is for people with the mindset of a Software Craftsperson
and for whom delivering software on time simply isn’t enough.
Software Craftsmanship Conference London was a great event which gathered software craftspeople from all around the world. We were looking forward to it since it has been announced as here at Novoda we identify ourselves with the software craftsperson mindset.
Here are the talks that caught our eye:
Software Craftsmanship - 8 years by Sandro Mancuso
The conference kicked off with Sandro delving into the history of Software Craft and the evolution of the community around the world both with its ups and downs.
A few takeaways:
The software craftsmanship movement is a reaction to what happened to agile
Up until 2016 the focus was mainly technical (extreme programming, cross-pollination, deliberate practice, micro design / clean code)
Software craftsmanship is becoming mainstream, but we are still inside our own bubble, a tiny bubble
If you want to be treated as a professional, start behaving like one: be in control of your career
Practices are means to an end; we should be attached to the value they provide, not to the practices themselves
Software craftsmanship is not XP
The future of Software craftsmanship will be driven by investing into innovation, architecture, learning how to drive technical changes, collaboration and sharing
Software Craftsmanship is about sharing our knowledge, preparing the next generation, and moving our industry forward
The Novoda Craft University by Paul Blundell
Our Head of Engineering - Paul - walked us through the challenges and rewards of the journey of a craftsperson.
At Novoda, we are encouraging and supporting this journey of learning, so we created the NCU (Novoda Craft University). This was the first time it has been presented to a wider audience.
One thing that isn’t in the definition of craft is pragmatism. We value crafting, but we also value pragmatism
The NCU is our way to introduce our new hires to Software Crafting practices. It walks the student through 5 modules which involve platform specific learnings, language best practices, clean code, testing and refactoring, agility,processes, and professionalism.
You can read more on the NCU and how it developed here
Get Kata by Kevlin Henney
In his usual manner, Kevlin has delighted us with his talk on katas, their origin, their meaning and why they are important to practice.
The distinction from daily work is you do deliberate practice to master the task not to complete the task.
Often times we only concentrate on getting things done and that’s it, but, similarly to other fields like music or sports, coding takes practice on your journey to mastery. This is where katas come into picture.
Next, Kevlin took us on a journey on exploring different ways of coding the popular FizzBuzz problem, by thinking outside of the box.
Craft Thinking by Mashooq Badar
In this talk, Mashooq took a philosophical look of what craftsmanship is and what does it means to us.
He explained that software craftsmanship is not a metaphor, is a direct description of the work we do. Craftsmanship is directly applicable to our profession, because software is a craft
Craftsmanship is a Human impulse. We all want to do a good job and we all take pleasure and satisfaction out of it. But motivation matters more than talent. With talent but without the right kind of motivation you can get obsessed about the practice itself but not the value you are bringing out of that practice.
Experimentation is key. We learn from observation and experimentation, but often the first time we are learning something is when we write the production code.
We need to understand there’s a balance between perfection and pragmatism. Only the organised obsession is a good thing
Pragmatism is not just compromise. Pragmatism is a force that helps you create the best possible thing, leveraging the strengths and weakness of the material you need to work with
When there’s an unnatural gap between the doing and seeing the result your mind is no longer into the problem. This feedback loop of doing and feeling is important and we need to make it as short as possible.
Are we using a sledgehammer to crack a nut? Even before thinking about what problem we want to solve we are already thinking about what framework, libraries or languages we are going to use to solve it.
Generic tools let you do many things, but they require lot of skill. Specific tools do just one job very well and they require very little skill to use them. But it is not about one vs the other. It’s about understanding when to use which and mastering both
The importance of syntax in Clean Code by Hadi Hariri
Hadi Hariri is a developer advocate at Jetbrains and one of the most well known faces behind Kotlin.
In his talk, Hadi started presenting different definitions of what Clean Code means to come to the conclusion that what Clean Code is varies from person to person. It’s a subjective term.
What everyone seems to agree on is in what is Messy Code. Noisy and distracting code is generally accepted as bad code.
Kotlin focus on the developer’s intent. It’s a language that helps programmers express themselves better through code and, hence, removes noise.
Syntax contributes to clutter and noise and, if Clean Code is about comprehension, then it matters
Closing Keynote by Rachel Davies
In the closing Keynote Rachel talked about introducing new learnings into our organisations.
Learning makes us happy and software development is a continuous stream of problems to solve, but introducing changes to an organisation is not easy.
Change happens one person at a time and very slowly
The number #1 tip for introducing any change in any organisation: don’t push it too hard
Go slowly but keep going.
You’ll need to invest time in your own learning but also in helping other people learn.
Make your learning process open and welcome people into it by creating a space for learning together in your work week. Try to find opportunities where people can step back from work and try things out.
Finally, Rachel gave some practical tips to introduce new learnings from her experience at Unruly:
- Do pair/mob programming to learn new things
- Introduce Dojos where navigator-driver rotate every 5-7 minutes. At Novoda, we use our own dojos repository where people can add or practice existing katas
- Do lightning talks on the new things you learnt about
- Try to find learning time during work time
- Sharing learnings at the end of the week (chat about it or present something if you like)
- Swapping teams: every 2-3 months ask if there’s someone who want to swap
- Swapping organisations: developer exchanges for a week. Needs some official paperwork. Must be with company with similar practises but not in the same business.
- Take turns to organise stuff
- Track learning (a chart or matrix where you record how you are learning: pairing, taking 20% off time for learning, etc..)
Be the change you wish to see in the world.
All in all, Software Craftsmanship London 2017 was a great conference, packed with a lot of insightful content and top of the industry speakers. No matter the experience and skill set, being either a novice or a master, there is always something to learn from the Software Craftsmanship community.
If you would like to find out more about the software crafter mindset, we highly recommend The Software Craftsman: Professionalism, Pragmatism, Pride by Sandro Mancuso. It is a great and easy read, touching on both technical and non-technical points. Check out our new starter reading list here.
We are looking forward to next year’s edition!