Software Craftsmanship
”Working software is the primary measure of progress.”
— The Agile Manifesto
Software Craftsmanship är ett uttryck för att beskriva det som utgör skicklighet i arbetet som utvecklare. Att skriva kod som är produktionsmässig kräver att man upprätthåller ett antal goda vanor.
God kod fungerar korrekt, är läsbar och är underhållsvänlig. När den inte är det, kallar vi det ”legacy code” och då finns det tekniker för att hantera det.
Den här kursen innehåller det som en riktig utvecklare ska kunna.
Innehållet i en företagsintern kurs anpassas efter ert behov. Se det som följer som ett smörgåsbord där ni kan plocka det som intresserar.
- Grunderna i testdriven utveckling, TDD
- Verktyg: JUnit
- Vana och attityd, hur skaffar man sig det?
- Varför använda TDD? (https://blog.crisp.se/2013/12
/25/perlundholm/varfor-tdd-del )-1-i-tdd-pa-svenska - Vad är testnivå, testmetod och testtyp?
- Refactoring
- Vad är det?
- När gör man det?
- Hur bryter man ”refactoring ping-pong”?
- Mocking
- Isolera enheter med mocks
- Verktyg: Mockito
- Legacy Code
- Bryta ner befintliga system och testa
- Strangler pattern
- Svärdet och skölden (https://blog.crisp.se/2015/11
/03/perlundholm/the-sword-and- )the-shield
- SOLID
- Single responsibility
- Open/Closed principle
- Liskov’s principle
- Interface segregation
- Dependency inversion
- Clean Code
- Att skriva läsbar kod (https://blog.crisp.se/2015/03
/05/perlundholm/7-rules-on-cod )e-readability - Scoutregeln
- Verktyg för att kontrollera koden, SonarQube
- Att skriva läsbar kod (https://blog.crisp.se/2015/03
- Testdata och testförutsättningar
- Testdata
- Tidsberoende tester (https://blog.crisp.se/2009/04
/29/perlundholm/mock-the-clock )
- Lagarbete
- Parprogrammering
- Mobprogrammering
- Kodgranskning (pull requests)
- Specification by Example/BDD
- Hur man fångar krav och konverterar till testfall
- Verktyg: FitNesse, Cucumber, Behave och Spock
- Continuous Integration
- Byggpipan (build pipeline) i Jenkins
- Versionshantering
- Introduktion till Git
- Pull requests
- Architecture
- How architecture affects system qualities