Software Engineering Quick Start Guide
Below you will find some resources that define my engineering ethos. These are categorised into the three main pillars of every change I make.
- The Why ( Values, Documentation, Commit messages, Comments )
- The What ( Principles, Documentation, Tests )
- The How ( Process, Architecture, Code, Tools )
Why
- Documentation
- Diataxis a great giode for starting to document in code
- Tutorials for learning.
- How to guides for reaching goals.
- Explanations to aid understanding.
- Reference for detailed information.
- C4 Model a great way to declaratively create the core system diagrams
- Arc 42 templates a base structure on how to document a software system, can be as simple as as a single page or complext as you need it to be.
- Kepp a change log track your changes in human readable form.
- Conventional Commits track your changes in detail.
- Documenting Architecture Decisions track your decisions in human readable form.
- Mermaid Markdown free form declaritive diagramming.
- Diataxis a great giode for starting to document in code
What
- Test Driven Development (TDD)
- Test first: Red, Green, Refactor
- Test naming: Given_When_Then
- Structure: Arrange, Act, Assert
- Process:
- Start with degenerate test cases first.
- As the tests get more specific, the code becomes more generic.
- Katas:
- Two TDD styles, London vs Chicago more concretely covered by Sandro Mancuso below
- Uncle bobs response to TDD Harms Architecture
- Interesting debate
- Why TDD sometimes feels hard
- TDD for those who don’t need it
How
- Agile manifesto
- The values and principles are key to understanding no matter what agile methodology is used.
- Clean Architecture
- Architecture 101
- Jason Taylors - Clean Architecture repo and here it is Explained
- Here is Steve Smiths version for a comparison
- Clean Architecture and Design by Robert C. Martin (Uncle Bob)
- Linking TDD and Clean Architecture by Sandro Mancuso. Does TDD Really Lead to Good Design?
- Clean Code
Must Watch Software Talks For Software Engineers
- Christin Gorman “Gordon Ramsay Doesn’t Use Cake Mixes” ➡️ https://vimeo.com/28885655
- Bryan Liles “Test all the f*^&ing time” ➡️ https://youtu.be/iwUR0kOVNs8
- Gojko Adzic “Make Impacts, not Software” ➡️ https://youtu.be/GnK_n9Udhhs
- Jeff Patton “User Story Mapping” ➡️ https://youtu.be/AzBuohuOU6g
- Michael Nygard “Uncoupling” ➡️ https://youtu.be/mAw4ygX1c-4
- Gregor Hohpe “Enterprise Architecture = Architecting the Enterprise?” ➡️ https://youtu.be/DdJNLeYldUs
- Eric Evans “Tackling the complexity at the heart of software” ➡️ https://youtu.be/dnUFEg68ESM
- Jim Webber, “The Present and Future of Native Graph Technology” ➡️ https://youtu.be/_CQehnb6A6o
- Jez Humble, “CD sounds great, but can’t work here” ➡️ https://youtu.be/IvWr29afDF8
- Anita Sengupta, “The future of Mars exploration" ➡️ https://youtu.be/iuzZYzns-Yg
- Hanna Fry, “How to be human in the age of the machine” ➡️ https://youtu.be/Rzhpf1Ai7Z4
- Better Coding playlist