The Software Craftsman Kitabından Aldığım Notlar - 1
- hacer_bakirci

- Feb 27, 2021
- 4 min read
Ben herhangi bir kitabı okurken, önemsediğim yerlerin altını çizerek okumayı çok seviyorum. Özelikle teknik kitaplarda bu durum daha fazla tabiki. Cümlelerin altını çizerek aslında kendime “burası önemli, mutlaka geri dönüp tekrar bak, tekrar et” diyorum. Fakat farklı meşguliyetlerden dolayı o kitap rafta kalıyor genelde. Bundan dolayı uzun zamandır aklımda şu vardı; okuduğum kitapların altını çizdiğim yerlerini tek bir platformda toparlamak ve onlara kolayca ulaşabilmek. Şimdi harekete geçme vakti!
Kitabın tam ismi The Software Craftsman Professionalism, Pragmatism, Pride.
Sandro Mancuso' nun yazmış olduğu bu kitap, yazılım sektöründe çalışan herkesin mutlaka okuması gereken, aşırı ilham kaynağı içeren mükemmel bir kitap bana göre.
Okurken düşündüren, her cümlesinin tek tek özümsenmesi gereken harika bir eser.
Ben de sindire sindire okudum diyebilirim ve bazı paragraflarda gözümü bir noktaya daldırıp uzun uzun düşünürken, aklımdan film şeridi gibi geçen "ne kadar da yanlış yapıyormuşuz çoğu şeyi" dediğim anılarla boğuşurken yakalıyordum kendimi.
Sanırım bu yüzden kitabı sadece okumuyorsun, adeta yaşıyorsun.
Aslında kitabı okumadan önce kitabın konu başlıklarını, neler anlattığını, ana fikrini, nerdeyse tümüne katıldığım SCTurkey (Software Craftsman Turkey) topluluğu etkinliklerinde Lemi Orhan Ergin Hocanın anlatımıyla birçok kez dinleme fırsatım olmuştu. Hatta Sandro Mancuso SCTurkey topluluğuna canlı yayın üzerinden bir söyleşi de yapmıştı. Dolayısıyla bu kitapla ve “Software Craftsman” kavramıyla tanışmam bu topluluk sayesinde olmuştur.
Benim de amacım gerçekten iyi bir “Software Craftsman” olabilmek.
Artık altını çizdiğim yerleri listelemeye geçiyorum.
SENIORITY
Software developers are normally considered senior according to the number of years they have worked in the industry and not according to their knowledge. There is a huge difference between having ten years of experience and having one year of experience repeated ten times. Ten years spent working on different projects, with different technologies, and for different companies is different from ten years working for the same company, on the same project, and with the same people and same technology.
Seniority is not just about writing code or being very familiar with a language or framework. Modern developers need to know how to speak to customers, automate tests and deployment, make technological choices that may affect the entire business, work in distributed teams, help clients to define and prioritize requirements, report progress, manage changes and expectations, present products to potential clients or partners, help with pre-sales activities, estimate time and costs, interview new team members, design and evolve the software architecture, deal with nonfunctional requirements and service level agreements (SLAs), understand business goals, make decisions based on trade-offs, keep an eye on new technologies and better ways to do things, worry about the value delivered to their customers, and many other things.
A NEW REALITY
The old attitude we had—if it is not coding, it’s not my problem—is now unacceptable.
Companies are looking for developers who, besides being great at writing code, can also help in many other areas of the business.
Being able to change the software fast, with quality, and increase the value provided to clients became a massive competitive advantage.
Clients are replacing bureaucratic service companies with rigid processes and deep hierarchical structures with smaller and more agile service companies.
The Lean startup model—get it out there quickly, get feedback, iterate—completely changed the game.
Companies are demanding professional software developers and not just cheap coders who do whatever they are told to do.
PROCESS-ORIENTED AGILE DISCIPLINES
Process-oriented disciplines help teams to keep the focus on what is really important and valuable to the business. Using these methodologies is a great way to make sure the team is building the right thing.
TECHNICAL-ORIENTED DISCIPLINES
Test-Driven Development, pair programming, continuous integration, and simple design are a few examples of these practices and techniques. Technical-oriented disciplines help teams to focus on the quality of the software they are producing and help teams to make sure they are building the thing right.
WHAT IS IT TO BE AGILE?
Instead of just being someone who could write some code according to a predefined (quite often ill-defined) plan, developers started taking an active role in planning, estimation, requirements, team organization, analysis, architecture, production readiness, prioritization, demos, and collecting feedback from users and stakeholders on a regular basis.
Being good at writing code is the minimum skill expected from software professionals. Testing, analysis, ability to understand the business, good communication, and a more extroverted personality became part of the skill set that software professionals need today.
In order to achieve quality, we need to provide a great feedback system, at all levels.
Having a good process but bad delivery capability will not make software projects succeed. Having amazing developers who can produce high-quality code but having a process that does not enable them to work well will also not make projects succeed.
The important thing is to identify where the problems are as soon as possible and act on them. It is never too late to make things better—it just becomes far more painful when you delay it.
AGILE VERSUS SOFTWARE CRAFTSMANSHIP
Agile methodologies help companies to do the right thing. Software Craftsmanship is about professionalism in software development. Software Craftsmanship is an ideology, which many developers decided to adopt in order to get better at what they do. Besides promoting many technical practices and ways in which developers can get better at writing good and well-crafted code, it also promotes the idea that developers should do far more to help their clients than just writing code. Software Craftsmanship helps developers and companies to do the thing right.
Improving the process without improving technical excellence is pointless.
We need developers who can deliver software that is fully tested and that can be easily changed. For a full Agile transformation, companies need to embrace Software Craftsmanship.
- Sandro Mancuso





Comments