Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Being An Apprentice Software Crafter

Being An Apprentice Software Crafter

Erkan Erol

April 30, 2019
Tweet

More Decks by Erkan Erol

Other Decks in Programming

Transcript

  1. DISCLAIMER This presentation contains so much copy/paste content from some

    conference talks, blog posts and books. References are available in the speaker notes. bit.ly/erkanerol-apprenticeship Opinions are my own and not the views of my employer.
  2. Cicero Denounces Catiline, fresco by Cesare Maccari 1882–1888 Code of

    Hammurabi 1754 BCE LEGAL: presumption of innocence
  3. universal computing machine • m-configurations • states • a tape

    • symbols • scanned from a square • printed to a square
  4. 1945: TURING WRITES CODE • In binary. (base 32 reversed)

    • Uses integer “add” and logical “not” • Invents subroutine • Invents code stack • Invents floating point
  5. 1945 “We shall need a great number of mathematicians of

    ability because there will probably be a good deal of work of this kind to be done.”
  6. 1945 “One of our difficulties will be the maintenance of

    an appropriate discipline, so that we do not lose track of what we are doing”
  7. 1965 • Not Enough: Engineers, Scientists, Mathematicians • No CS

    Grads • Programmers drawn from: Best and brightest Accountants, Planners, etc.
  8. 1965 Though not mathematicians, they were. They are experienced, disciplined

    and professionals. Turing would likely have approved.
  9. Now Remember • Up to now programmers were disciplined professionals.

    • They didn’t need a lot of management • They knew how to manage their time, communicate, and work together.
  10. MIRACLES! • IBM 360 Virtual Memory OS • NASA: Mercury,

    Gemini, Apollo • Structured, Functional, Object-Oriented • Fortran, Cobol, Algol, Lisp, C, Unix
  11. 1970s Tens of thousands of new CS & EE Grads

    They were all young and almost all male.
  12. 1970s-1990s The idea was to equate software engineering with physical

    engineering and borrow as much as possible from the design and building actual.
  13. Software Crisis • over-budget • over-time • inefficient • low

    quality • does not meet requirements • difficult to maintain • never delivered
  14. 1995 Original cohort of disciplined professionals retires. The first wave

    of career programmers comes of age (well over 40). They foresee the need for change.
  15. Irony A goal for Agile: Healing of the divide between

    business and programming. - Kent Beck
  16. Software Craftsmanship is not • Beautiful code • Test-Driven Development

    • Self-selected group of people • Specific technologies or methodologies • Certifications • Religion
  17. UNCLE BOB We must Grow Up Define our profession Choose

    our practices and disciplines Reunify Agile / Craftsmanship
  18. You can not do this job with laziness (The story

    of Fatih Arslan is continuing)
  19. THEY ARE LEARNING LIKE CRAZY • Books • Blogs •

    Videos • Conferences • Meetups
  20. The second law of thermodynamics: the total entropy of an

    isolated system can never decrease over time. chemists know “MATTER”
  21. THEY KNOW PRINCIPLES • Inversion of Control • Cohesion /

    Coupling • Separation of Concerns • KISS • SOLID • Law of Demeter • Orthogonality
  22. THEY HAVE CONCRETE SKILLS C++ UNIX JAVA HTTP GO JS

    ECLIPSE VIM k8s VSCODE RAILS SPRING DOCKER GIT REACT
  23. Egoless Programming • You are not your code. • Critique

    code instead of people – be kind to the coder, not to the code. • Treat people who know less than you with respect, deference, and patience. • Fight for what you believe, but gracefully accept defeat.
  24. The Humble Programmer “The competent programmer is fully aware of

    the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague.” - Edsger W. Dijkstra