There have been a whole bookshelf of books, if not more, on the market about software development practices, both methodological and practical approaches. They are also covered in the book The Software Craftsman by Sandro Mancuso, with a more practical and thoughtful touch.
That's not what make this book special though. Highlights of this book is its attention to the career development of software developers. It will be an enlightening experience for all developers who love their trade more than a job to finish the book.
Bear in mind that it may not be an easy trip, especially not for ones without adequately open mind. We are so used to all the mistakes criticized in the book that most of the time we just accepted them blindly, until Sandro pointed them out, and, as a professional consultant would do, provided far better alternatives. We understand everyone has her own context and challenges in reality, like different cultural influence at different country, or common approaches in the market. Those alternatives would nevertheless be the start of a reflection of the world we are.
I had the same doubts in the ideas too, before I came to London from Shanghai, even at the beginning of my new career in Codurance, the company Sandro Mancuso co-founded. Yet after witnessing all those changes in the daily work environment, and having adapted to the new ways, I could confidently say, the possibility to find the cure to the industry is on the horizon. It starts with most developers being serious about their career, to be a craftsman.
Basically you're free to call yourself a software craftsman if you believe the software should be made well-crafted rather than just with workable functionality. It's not perfectionism, it's to solve the problems our industry have been suffering all the time:
- Failure to respond to business change rapidly
- Low quality (in the strict definition)
- Loss of focus on business value
- Diminishing ROI with the aging of software
- Low morality and self-esteem among developers, even well-paid
It's mentioned by Sandro that if he had to name single criterion for recruitment of developers, it will be passion. From my own experience, academic achievement is far less valuable than passion in the long run of the career.
Then the developers and managers should stop treating them as workers on the assembly line. A professional developer would be more exponentially more efficient than a mediocre one, not in the sense of key typing, but of delivering value to business. They should be able to solve problems both ideologically and methodologically.
It might be mind-blowing to see Sandro's opinions on career building, especially taking in account of his current role as a business owner.
- Developers should be responsible for their own careers, rather than depending on the employer.
- His average stay in one job is about 2 years
- An annual turnover rate around 15-30% is a healthy figure for a software company
A developer should only care about his mastery of skills, not salary at most of the time, when choosing next job. A good developer would never be worried of losing jobs, because he is always highly wanted in the market. Under current job market, it's no point to pursuit financial return directly which would come along with the skills.
People should start recruiting developers based on the same criteria they want from coworkers in daily work. That will be how they approach problems, how they code, how they join discussions.
Not some algorithm questions we never really need to write in reality. Or coding on paper if that's not how we work. Do code pairing interview, do whiteboard session with real business case, do discussion on issues you care about.
I've worked in the same industry with similar tech stacks, delivered projects by waterfall for ten years before joining Codurance as an apprentice. Those experience doesn't help me to be a better developer than my coworkers who have put into practice various Agile and technical approaches, and actively joined community activities.
This book is among the best of its kind summarizing the objectives and practices in modern software development. It may not be the best one to have a thorough understanding, but never failed to bring a smile to readers who have practical experiences in those fields. It's also a great guide to start the journey by having an overview of those movements and their relations.