Knowledge-base
  • Home
  • Samman Technical Coaching
  • Software craftsmanship
    • Practices
      • Pair Programming
      • Code Review
      • Co-designs
      • Design sessions
      • Interview Domain Experts
      • Dev ethics
    • The Software Craftsman
    • Egoless Crafting
    • Technical debt workshop
    • Functional Programming made easy in C# with Language-ext
    • F# for OO programmers
    • Domain Modeling Made Functional
    • Testing
      • Clean Tests
      • Improve the design and testing of your micro-services through CDC Tests
        • CDC testing made simple with Pact
        • Pact broker : the missing piece of your Consumer-Driven Contract approach
      • Improve your test quality with Mutation testing
      • How to name our Unit Tests
      • How to write better assertions
    • Katas
      • TDD
        • Stack kata
        • Fizzbuzz
        • Outside-in TDD (London Style)
      • Improve your software quality with Property-Based Testing
        • A journey to Property-Based Testing
      • Clean Code
      • Clean Architecture
      • Write S.O.L.I.D code
      • Mocking
      • Gilded Rose (Approval Testing)
      • Mikado method
        • Mikado kata
      • Pure functions
      • Theatrical players refactoring Kata
        • Let's refactor (OOP style)
        • Let's refactor (FP style)
      • Functional Programming made easy in Java & C#
      • Refactoring journey
      • Refactoring du Bouchonnois
        • 1) Se faire une idée du code
        • 2) "Treat warnings as errors"
        • 3) Let's kill some mutants
        • 4) Améliorer la lisibilité des tests
        • 5) "Approve Everything"
        • 6) Définir des propriétés
        • 7) Tests d'architecture
        • 8) Use Cases
        • 9) Tell Don't Ask
        • 10) "Avoid Primitives" - Commands
        • 11) "Avoid Exceptions"
        • 12) "Event Sourcing"
    • Software Design X-Rays
      • Workshop
    • The Programmer's Brain
      • How to read code better
  • Software Architecture
    • Fundamentals of Software Architecture
    • Aligning Product & Software Design
    • DDD re-distilled
    • Test your architecture with Archunit
    • NoSQL
  • Agile coaching
    • How to run a Community of Practices (COP)
    • The developers — the forgotten of agility
      • The secrets to re-on-board the devs in agility
    • Coaching toolbox
      • Echelle
      • Learning expedition
    • How to improve Team Decision making ?
      • Decision Making Principles and Practices
    • Learning 3.0
    • Retrospectives
      • Back to the Future
      • Mission Impossible
      • Movie themes
      • Rétro dont vous êtes le héros
      • Sad/Mad/Glad
      • Speed boat
      • Star wars theme
      • Story cubes
    • Technical Agile Coaching with the Samman Method
    • Xanpan - a team centric agile method story
    • XTREM WATCH — Découvrez la puissance de la veille collective
    • Become a better speaker through peer feedback
    • Project-to-Product Principles
  • Leadership
    • Bref. J'ai pris une tarte dans la gueule (et ça fait extrêmement de bien)
    • Forward Summit 2020
    • Learn leadership from the Navy SEALs
    • Learn to lead and help your team(s) to be successful
    • Towards a learning organization and beyond
    • Leadership is language
  • Serious games
    • My serious games
    • Libérez vos entretiens d’embauche avec la gamification
    • How to create a game
    • How to debrief a game ?
    • Lego Serious Play (LSP)
      • LSP in your job interviews
  • Xtrem Reading
    • Cultivate Team Learning with Xtrem Reading
    • My Book Infographics
    • How to make book infographics
    • En route vers l’apprenance avec Xtrem Reading
    • Resources
      • Book notes
        • Agile People: A Radical Approach for HR & Managers
        • Agile testing : A Practical Guide for Testers and Agile Teams
        • Boite à outils de l'intelligence émotionnelle
        • Building a better business using Lego Serious Play method
        • Building evolutionary architectures
        • Code that fits in your head
        • Culture Agile
        • Culture is everything
        • Domain-Driven Design: The First 15 Years
        • Dynamic Reteaming - The Art and Wisdom of Changing Teams
        • How to avoid a Climate Disaster
        • La liberté du commandement
        • Réaliser ses rêves, ça s'apprend
        • Refactoring at Scale
        • Succeeding with OKRs in Agile
        • Team Topologies
        • The Good Life
        • Tu fais quoi dans la vie
        • Who Does What By How Much?
  • My Activity
    • Retour sur mon année 2020
Powered by GitBook
On this page
  • Infography
  • Book notes
  • Introduction
  • Ideology
  • The Manifesto for Software Craftsmanship (2008)
  • Definition
  • Technical Practices

Was this helpful?

  1. Software craftsmanship

The Software Craftsman

Abstract of the book "The Software Craftsman" from Sandro Mancuso

PreviousDev ethicsNextEgoless Crafting

Last updated 3 years ago

Was this helpful?

I really loved this from .

Infography

I love this book so much that I have created an infography :

Book notes

Introduction

  • Good senior developer in the 90's : No one else can understand his code

  • Working code

    • The minimum for a professional

    • How it is done is as important as getting it done

  • Is

    • A mindset

      • For developers

      • For companies

    • Adoption of (XP)

      • Practices

      • Disciplines

    • Not a methodology

Ideology

A new reality

What modern developers do :

  • Coding (But not only)

  • Speak to customers

  • Automate tests/deployment

  • Make technical choices

  • Work in distributed teams

  • Help clients to define and prioritize requirements

  • Present products to potential clients/partners

  • Help with pre-sales activities

  • Estimate time & costs

  • Interview new team members

  • Design and evolve software architecture

  • Understand business goals

  • Make decisions based on trade-offs

  • Keep an eye on new technologies/methodologies

  • ...

With agile methodologies, mentality is evolving. More collaboration and dev are now more proud to be dev

Agile

  • 2 types of disciplines

    • Process oriented (Value)

      • Plan

      • Measure velocity

      • Roles people should play

      • Meetings

      • ...

    • Technical Oriented

      • TDD

      • Continuous integration

      • ...

Agility is about building the right thing, Craftsmanship is about building the thing right

  • "Craftsmanship over crap", Robert C. Martin (2008)

  • Team = responsible of the realization (all aspects)

  • Being good at writing code is the minimum skill expected from software professionals"

Why do agile transformations fail ?

  • In software project

    • Most important deliverable = software itself

  • Change their process through coaching

  • Nothing to help writing better software

  • Agile coaches

    • Mainly focused on process

    • Not focused on technical excellence

Abstract

  • To remain competitive companies need to deliver

    • Software faster

    • With better quality

  • Agile vs software craftsmanship

    • Agile

      • Adopting Scrum

      • Daily stand-up

      • Manage backlog

      • Manage W.I.P

    • Agility does not

      • Improve magically the quality of the software

      • Make developers better

  • Complements each other / need to be focused on both

    • Improve the process

    • Improve technical excellence

The Manifesto for Software Craftsmanship (2008)

4 values

Not only working software, but also well-crafted software

  • Think about a software

    • Without

      • Tests

      • Team to explain code

    • You have to maintain and develop on it

    • It is a working software...

  • Reasons of failures

    • Bad business strategy

    • Bad project management

    • Big Time To Market Organization do not pay attention to code quality

  • Well-crafted

    • Automated tests

    • TDD

    • Business language in code

    • Simple design

  • Quality of the code

    • Only visible by dev

    • No time allowed to refactor

Quality of the code may not guarantee the success of a project But can be the main cause of failure.

Not only responding to change, but also steadily adding value

  • Not just

    • Adding new features

    • Fixing bugs

  • BUT also

    • Improve constantly structure of the code

    • Keep it clean

    • Testable

    • Extendable

    • Change must be fast enough

  • High Quality Software

Not only individuals and interactions, but also a community of professionals

  • Sharing

    • Knowledge

    • Ideas

    • Successes and failures

    • Humility

      • Learning from each others

  • Mentoring

    • Prepare the next generation

  • Craftsmen want to work with

    • Passionates

    • Inspiring professionals

Not only customer collaboration, but also productive partnerships

  • Productive partnerships

    • Not only do what you are told to do

      • Not factory workers

    • Passionate & talented people want

      • Success

      • Successful projects

    • We must help our clients

  • Some clients are not ready

    • Software development = industrial process

    • Developer have to follow orders

    • Recrute cheaper devs

    • Will not listen devs Tech leads = outdated people

    • Very difficult environment for craftsman

Software Craftsman

  • Believes that

    • Software is a craft

    • Writing good software requires

      • Skill

      • Careful attention

  • Practices his craft

    • To become more skillful

    • To produce better software

  • A professional

    • Work is consistently of high quality

Goal of the manifesto

Reduce the gap between Agile methodologies Technical world

Definition

  • Is NOT

    • Beautiful code

    • Test Driven Development

    • Self selected group of people

    • Specific technologies/methodologies

    • Certifications

    • Religion

  • Mindset

    • Consider software dev as a craft

    • A long journey to mastery

    • Choose to be responsible for their own careers

    • Constant learning

      • Tools

      • Techniques

    • Key words

      • Responsibility

      • Professionalism

      • Pragmatism

      • Pride

    • Learning from others

    • Share knowledge

    • Caring about what they do

    • Help customers

Attitude

  • Constantly finding ways to become better professional

  • Continuous learning

  • "Who owns your career ?"

    • What if our company

      • Does not buy any books

      • Never sent us to any training course or conferences

      • Does that mean the company is bad ?

    • Ourselves

      • We are professionals

      • We own our careers

      • We must keep us up to date

        • Books

          • Tech specific

          • Conceptual

          • Behavorial

          • Revolutionary

        • Blogs

        • Tech websites

        • Social medias

  • Practice, practice, practice

    • The more we practice, the more comfortable we become

    • Katas

      • Simple coding exercices

      • To practice

        • Techniques/approaches

        • Languages

        • Technologies

    • Pet projects

      • Real projects

        • Without pressure

        • You choose technologies & methodologies

    • Open source

      • Contributes to projects

    • Pair program

      • Enhances team spirit

      • Social activity

      • Knowledge sharing

      • Open minds

        • Learn

        • Share

        • Or both

    • Discovery

      • Second level of ignorance

      • I don't know what I don't know

      • Accept the fact that we have a lot to learn

        • Sign of maturity

        • A first step to mastery

    • Share

"I'm the smartest man in Athens because I know that I know nothing" - Socrates

Abstract

  • Essential to a successful career

    • Determination

    • Passion

  • The day we stop learning & practicing

    • The day we start losing control of our own careers

  • Focus

    • Becoming better professionals

    • Not on "how do I get my promotion/bonus"

Peter's principle : "Only incompetent people are scared to lose their job"

Technical Practices

  • For building the right thing :

    • Feedback loops

    • Visualizing WIP

    • Backlogs

    • Stand ups

    • User Stories

    • Acceptance criteria

    • Definitions : Ready / Done

  • For building the thing right ?

  • How do I sell tech practices ?

    • Focus on the benefits

    • Better understanding of requirements

    • Knowledge sharing

    • Reduction of bugs

    • Quick & automated releases

  • Be pragmatic

    • Always a better way

    • Decide your practices

      • To answer a need

      • Not because someone says to

    • Compare values between practices

great book
Sandro Mancuso
418KB
The Software Craftsman.pdf
pdf
The Software Craftsman Infographic
The Software Craftsman infography