SCLConf is for software craftspeople for whom delivering software on time simply isn’t enough. Read on for some insights into crafting software at Novoda.
This is a cross-post from the Software Craftsmanship Conference London 2017 website, a quick Q&A session with our Head of Engineering: Paul Blundell.
In this series of ‘3-minute Q&As’ we give you an insight into some of the world’s leading thinkers and doers in the world of agile and software development.
So sit back, relax and take a sneak peek. Oh, and if you like this and want more then check out sc-london.com, where you can immerse yourself in two days of talks, discussions and networking with the blog authors.
I first came across software craftsmanship when I was working as a graduate software engineer in the web space, this was before I moved to mobile. A colleague had a copy of the recently published Clean Code by Robert C Martin. I was struck by the prescriptive nature of an answer to every scenario, and it intrigued me to seek out these scenarios and apply the practices to learn and improve.
Later on when I read The Clean Coder it really hit home that being a good developer is not just about the code you write, but how you react to interactions and having a bar for your professional behaviour. This is the side of software craftsmanship that I really enjoy, the psychology and professional best practices.
Developers have a responsibility to share knowledge and enable others on their team to understand the why and how of their reasoning and this is what I enjoy improving for myself and enabling in others.
I might have answered a little already. If we relate back to the manifesto, I see craftsmanship as, not only individuals and interactions, but also a community of professionals and not only customer collaboration, but also productive partnerships. For me, this means showing others in your team, or showing the client that developers/engineers are not just there to code with their heads down. We shouldn't just leave the business of why the product potentially wasn't what the company wanted to others.
Software craftsmanship means you have the capabilities to talk to non-technical people, to translate what they want into working software and to translate back improvements or reasons why things may need to change from the coding or framework level. Software craftsmanship means good communication at all levels, all developers being able to understand the code and all team members being able to understand the developers.
That is a hard question. As I've matured and gained experience my feelings towards craftsmanship have also changed. It's like the four stages of competence, you start off unconscious and incompetent, not crafting very well and not recognising you need craftsmanship. Conscious incompetent, you learn about craftsmanship but you fail to apply it consistently. Conscious competence, you know what you are doing but you have to concentrate when applying it. Unconscious competence, craftsmanship is second nature, you apply it without thought whilst taking other things into account.
I feel many developers stay at stage 3 'conscious competence' and rigorously apply what they deem as craftsmanship without thought for what else is going on in the team. When you get to stage four 'unconscious competence' you have the freedom to consider other things and understand that you sometime need to apply some pragmatism in your practices. This allows for deadlines, demos, unforeseen outside influences and shipping deadlines.
Perhaps the future of craftsmanship will be some backlash to this stage three perfectionism, every now and then I see people mob programming, which is all about a whole team agreeing on ideas and setting out a rough framework of the code. It's not "crafting" but it should be a tool in a craftsman's toolbox.
Developers should be getting more involved in how businesses operate and applying craftsmanship to the bigger picture. Craftsmanship will have its part in digital transformation, helping the organisation to evolve around software delivery, as software is the main medium for communication with the customer. That, in turn, sets a focus on software and craftsmanship. As we see more and more transformation (like Spotify) we will see more emphasis on craftsmanship within organisations.
The future is hard to predict and maybe I'm rambling a bit, but I see the future of software craftsmanship in embracing more pragmatism and people starting to talk about outside influences and quantifying value gained from each practice.
The other side of the future is - how inclusive is the word "craftsmanship" and should the whole idea be reinvented/reworded to allow for diversity and difference.
That learning is a journey, you meet people on the way, share and grow together. Continuous learning is what keeps life exciting and your brain active.
I see the ecosystems developing slowly. There is always a big emphasis on acceptance/UI testing when it is enabled inside an IDE, but the real benefits of testing come from the unit tests and the lower levels which don't get so much of a fanfare. I think the next steps for IDEs especially in mobile is to make the loop of testing faster, faster build and execution cycles as well as more stable emulators gives people less excuses to avoid testing. I'd love to see unit tests executed on every save for mobile IDEs (like Android Studio or XCode).
Client acceptance for software craftsmanship. We found that some clients took a little convincing about our methods initially, but they soon saw the value in the speed of delivery and lack of bugs and regressions. It's hard to quantify software craftsmanship, clean code and best practices to a business and most of the literature out there is aimed at convincing developers. So turning software craftsmanship values into explainable value for the business was the biggest challenge.
I help run the Liverpool Google Developer Group. I have a dream of creating another big tech city in the UK outside of London and you can contribute a small step towards this :-) We are always looking for monthly meet-up speakers, so get in touch at mailto:firstname.lastname@example.org and see more here www.meetup.com/GDG-Liverpool/
Novoda is a big supporter of open source software. We have many OSS repositories including helper libraries and demos. You can check them out here https://github.com/novoda/ and pull requests are always welcome.
We plan, design, and develop the world’s most desirable software products. Our team’s expertise helps brands like Sony, Motorola, Tesco, Channel4, BBC, and News Corp build fully customized Android devices or simply make their mobile experiences the best on the market. Since 2008, our full in-house teams work from London, Liverpool, Berlin, Barcelona, and NYC.
Let’s get in contact