Software Craftsmanship is a well-known movement that reunites all software developers around the world who strives towards quality. These developers aim to provide an edge to the software development by organizing annual conferences globally. They also organize local meetups that enable developers to share their experience.
The idea of software craftsmanship is to encourage software developers to strive for excellence in their work and to add value steadily. A great software is a masterpiece developed by a perfect combination of computer science, creative design decisions, and pragmatic judgement calls. Some of the science is taught in universities, but what of the art and judgement? How do software developers learn their craft?
Simply put, software craftsmanship is a tactic to software development that strongly focusses on software developers’ coding skills. It can be referred to as an approach followed by the software develope community to perceive drawback of the mainstream software industry. This also includes prioritization of financial concerns over developer accountability.
So, those software developers who take an active part in software craftsmanship movement always improve their craft and put quality software before anything else. These developers are not afraid of proposing new ideas, sharing their experiences, coming up with new software products, revolutionizing the industry. They pass on their tricks, the reasoning behind their decisions.
The idea behind the software craftsmanship is very well stated in their Manifesto:
Not only working software, but also well-crafted software
Not only responding to change, but also steadily adding value
Not only individuals and interactions, but also a community of professionals
Not only customer collaboration, but also productive partnerships
If you go their page, you will be scrolling down reading the names of software developers who signed to take part in this movement for 1 hour or more. I understood why so many developers had signed it. The concept is appealing. And they can be proud of what they are doing. Unfortunately, right now people sacrifice quality over speed and in the long term it transforms into a headache for product owners, developers, and all the stakeholders.
Software crafters prefer to do everything right from the beginning. To become a craftsman, you have not only to code correctly, but also to think about the way the application is built and to consider the team’s responsibility over it. Design plays an integral part in this. The use of methodologies like TDD, high unit test coverage and the understanding of the business features certainly help. Software craftsmanship is about continuous feedback.
Another widespread craftsmanship concept is pair programming, in which programmers work together in pairs at a single workstation. Also, there is “refactoring,” the process of refining the existing code. The goal is to edit the code to better understand it and have fewer bugs.
Software Crafters event
Even though there is a huge amount of material on this topic, the problem of maintainable, sustainable and successful software development is not yet solved, so it is important to have events dedicated to this topic, where people can learn and collaborate on how to deal with these problems and how to push to find better solutions. And the importance of software craftsmanship is increasing constantly. People start noticing that the software which is built right from the beginning is actually easier to maintain and it is cheaper in the long run. Also, they start seeing that software development made right can unlock a lot of hidden potential in organizations, and conferences like Software Crafters help companies to understand how important it is to invest in the way they develop.
The conference is organized in different cities like London, Barcelona, etc and normally has three pillars:
- Language agnostic methods and best practices: TDD, BDD, DDD, CI, security, performance, software architecture.
- Team/ organizational level topics and best practices like agile, DevOps, etc. that can help companies work more effectively.
- It is becoming increasingly important to be familiar with new trends and emerging technologies.