SCLConf is for people with the mindset of a Software Craftsperson and for whom delivering software on time simply isn’t enough. Read on for some insights into Software Crafting 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 to some of the world’s leading thinkers and doers in the world of Agile and Software Craftsmanship.
So sit back, relax and take a sneak peek. Oh, and if you like this and want more then you should also check out sc-london.com, where you can immerse yourself in two-days of talks; discussions and networking with the authors of the blogs...
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 just published 'clean code' by Robert C Martin. I was struck by the perscriptive 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 '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 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 their to code 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 on the team or around them. When you get to stage four 'unconscious competence' you have the freedom to consider other things and understand that perhaps...because of other factors some pragmatism is needed in your practices. This allows for deadlines, demo's, unforeseen outside influence and shipping dates.
Perhaps the future of Craftsmanship will be some backlash to this stage three perfectionism, every now and then I see people Mob programming and this 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 transformations. Digital Transformation is basically transforming the organisation 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 emphasise 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 fan fare. I think the next steps for IDE's 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 IDE's (like Android Studio or XCode).
Client acceptance for Software Craftsmanship, we always found clients not convinced by our methods but soon they see the value in the results, including 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 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 a big tech city in the UK outside of London and you can contribute a small step towards this. :-) We are always looking for monthly meetup speakers, you can get in touch at email@example.com and see more here www.meetup.com/GDG-Liverpool/
Novoda is a real believer in open source, 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