Steele Consulting aspires to help enrich the businesses and lives of our customers, but we dually strive to enrich the lives of our employees. One way that we’ve done this is by encouraging and implementing software craftsmanship in our offices. In short, software craftsmanship is a practice that promotes effort towards constant advancement and a growth mentality in software development skills. In this article, we’ll cover more specifics of the mindset, and practices of software craftsmen, as well as cover the benefits of implementing them and list some resources to help you get started.
In his book, The Software Craftsman, Sandro Mancuso defines software craftsmanship as this: “Software Craftsmanship is a long journey to mastery. It’s a mindset where software developers choose to be responsible for their own careers, constantly learning new tools and techniques and constantly bettering themselves. Software Craftsmanship is all about putting responsibility, professionalism, pragmatism, and pride back into software development.”
One important element of software craftsmanship is a growth mindset. Researcher Carol Dweck says that there are two kinds of mindsets; a fixed mindset and a growth mindset. Someone with a fixed mindset believes that their abilities are fixed traits that they were born with, and they cannot be added to or improved. They believe that no effort is required to succeed, but rather success is achieved by raw talent. By comparison, someone with a growth mindset believes that their abilities and intelligence are developed by means of effort, persistence, and a willingness to learn. A growth mindset is
Some of the disciplines necessary for software craftsmanship are deliberate practice, high-quality code, and good communication. Because software craftsmanship is largely based on effort and progress, naturally, taking initiative to practice consistently and build on your skills is a huge part of it. This can be anything from taking PluralSight classes to learning new languages, to reading books or blogs, etc. – anything that can help you grow as a software developer. If it’s something that helps you progress and something you can do consistently, then you’ll be fulfilling a major part of software craftsmanship.
Another important practice for a software craftsman is maintaining high-quality code. As a company, Steele Consulting encourages test-driven development and continuous integration/deployments (
The final main practice of a software craftsman is good communication. Good communication is very important, both internally and externally – bad internal communication can cause code to get mixed up among other issues, while bad external communication can cause a client to feel left out of the process of their product development. Version control systems and branching are both good ways to support internal communication when it comes to code itself, but it’s also a good idea to have consistent team meetings so that everyone is aware of not just what they’re doing, but also what the rest of the team is doing so that the big picture remains intact. One main aspect of software craftsmen and software consultants
One of the two main benefits of software craftsmanship is that it encourages passion. Both within and outside of Steele Consulting, it saddens us to see people who work where they do just for the paycheck. Ideally, no one would work for the weekend, and everyone would have and/or develop a passion for their job. Software Craftsmanship can play a big role in that because passion can follow the effort that software craftsmanship entails. Another benefit of software craftsmanship, which is almost obvious, is that the quality of your work will improve. The result will be a happy customer with a better product. More likely than not, this will open doors to more projects for you and your company, which ultimately adds value all around.
Here are some good resources to help you get started on your journey to software craftsmanship:
- The Pragmatic Programmer by Andy Hunt & Dave Thomas
- Clean Code by Robert Cecil Martin
- Code Complete 2 by Steve McConnell
- The Phoenix Project by Gene Kim, George Spafford, and Kevin Behr
- Design Patterns by Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm
- The Software Craftsman by Sandro
- Coding courses: https://www.pluralsight.com/
- Code playground: https://codepen.io/
- Code games to practice new languages: https://www.codingame.com/start
- Software Craftsmanship Manifesto: http://manifesto.softwarecraftsmanship.org/
If you’d like to keep up with more of Steele Consulting’s developer insights, follow us on Twitter to get notified of new posts.