Software Craftsmanship With Paul Blundell
Software Craftsmanship With Paul Blundell
In this post, a mobile developer and Software Craftsman sits down with a DZone MVB to discuss what craftsmanship has brought to the dev field.
Join the DZone community and get the full member experience.Join For Free
Discover how TDM Is Essential To Achieving Quality At Speed For Agile, DevOps, And Continuous Delivery. Brought to you in partnership with CA Technologies.
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 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.
Q. When Did You First Come Across Software Craftsmanship?
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 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 '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 behavior. 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 in myself and enabling in others.
Q. What Does Software Craftsmanship Mean to You?
I might have answered this 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 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.
Q. What Do You See as the Future for Software Craftsmanship?
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 recognizing that you need craftsmanship. Consciously 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, demos, unforeseen outside influences, 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 organization 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 organizations.
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.
Q. What Do You Hope People Will Take Away From Your Presentation?
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.
Q. Google and Apple Recently Added Support for Testing in Ides. How Do You See These Ecosystems Developing for XP Practices and What More Could They Do?
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 fan fare. I think the next steps for IDEs, especially in mobile, is to make the loop of testing faster, building faster, and execution cycles, as well as more stable emulators, gives people fewer excuses to avoid testing. I'd love to see unit tests executed on every save for mobile IDEs (like Android Studio or XCode).
Q. What Was the Biggest Obstacle at Novoda When Starting Your Journey Towards Software Craftsmanship?
Client acceptance for Software Craftsmanship. We always found clients not convinced by our methods, but soon they came to 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 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.
Q. Are There Any Projects You'd Like People to Be Aware Of? How Can People Help Out?
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 meet up speakers, you can get in touch at firstname.lastname@example.org 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.
Published at DZone with permission of David Hall , DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.