Advanced Curriculum For The Software Craftsman
This document is intended as a guidance for new developers joining our teams at FLYERALARM. Because we think it might help others as well we open-sourced it. If you know something that's missing feel free to send us a Pull-Request.
Basics
- How The Web Works
- HTTP on Wikipedia
- What Happens When
- What to learn next
- An Introduction To HTTP Basics
- Choosing an HTTP Status Code β Stop Making It Hard
- TCP/IP Protocol Fundamentals Explained with a Diagram
- Google Developer Training For The Web
- Visualising data structures and algorithms through animation
- Algorithms, Data Structures, and Design Patterns for Self-Taught Developers
- HTTP: The Protocol Every Web Developer Must Know
- An Introduction to Networking Terminology, Interfaces, and Protocols
- How Browser Caching Works
- The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets
- What Every Programmer Should Know About Memory
- What Every Developer Should Know About Time
- A story about an angry carrot and a floating point fairy
Design And Architecture Of Software
- Clean Code
- DesignPatternsPHP
- What's a design pattern?
- All the cool kids...
- 18 must-watch PHP architecture talks
- Object Design Style Guide
- Practical Object-Oriented Design in Ruby
- Patterns of Enterprise Application Architecture
- Domain Driven Design
- Introduction to CQRS
- CQRS and Event Sourcing
- Your Code as a Crime Scene
- Awesome API
- An introduction to APIs
- Architectural Katas
PHP
- PHP The Right Way
- PHP The Wrong Way
- A response to PHP The Wrong Way
- PHP Framework Interoperability Group
- PSR - PHP Standard Recommendation
- PHP Library Discovery
- PHP Logging Basics
- Awesome PHP (A curated list of amazingly awesome PHP libraries, resources and shiny things)
- Reference - What does this error mean in PHP?
Kotlin
- Resources To Learn Kotlin The Right Way
- Programming Kotlin by Venkat Subramaniam
- Awesome Kotlin
- Mastering Kotlin standard functions: run, with, let, also and apply
- KotlinConf 2018 - Kotlin Coroutines in Practice by Roman Elizarov
- Ktor: Web backend framework for Kotlin. Easy to use, fun and asynchronous.
JavaScript & Frontend
- JS for Cats
- JavaScript for impatient programmers
- You don't know JS
- Eloquent Javascript
- Essential Javascript Patterns
- MDN - Mozilla Developer Network
- CSS-Tricks
- Netflix UI Engineers Youtube Channel
- Don't make me think - Web Usability
Tools
- git
- Atlassian git Tutorials
- Interactive git Cheatsheet
- Composer - Dependency Manager For PHP
- Packagist - The PHP Package Repository
- Gradle Guide
- PHPStan
- PHPUnit
- Introduction to PHP Unit
- Twelve Benefits of Writing Unit Tests First
- A Beginner's Guide to npm
Environment
- Basic UNIX commands
- Explain Shell - Let it explain you what's going on
- Effective DevOps
- Docker Docs
- Docker Swarms Introduction
- What is Kubernetes
- Request routing with Traefik
- How to write Ansible Playbooks
- Ansible Docs
- Artifactory User Guide
Persistence
- SQL Performance Explained - Short and useful book about SQL performance for developers
- Use the index, Luke - a guide to database performance for developers
- The Little Redis Book
Monitoring & Alerting
- How to monitor system metrics with the TICK stack - Can also be used for gathering business metrics
- How to setup & use Icinga2
- Using InfluxDB with Grafana
- Grafana Docs
- InfluxDB Docs
Apache Kafka
- Kafka as a Platform: the Ecosystem from the Ground Up
- Apache Kafka in a Nutshell
- Why Avro for Kafka Data?
- Deal with Failure in an Event-Driven System
Processes & Culture
- The Agile Manifesto
- Agile Retrospectives
- The Phoenix Project
- Team Geek - A Software Developer's Guide to Working Well with Others
Information Security
- OWASP - Open Web Application Security Project
- A Gentle Introduction to Application Security
- Juice Shop - A vulnerable web app to play around
Best Practices
- The Best Code is No Code At All
- The Pragmatic Programmer
- The Clean Coder
- Simple Made Easy
- A Philosophy of Software Design
- Refactoring: Improving the Design of Existing Code
- The full stackoverflow developer
- Measure anything, measure everything
- Go to a local user group
- Read open-source code on GitHub
- Never stop building stuff
On a side note: We are searching for talented people to join our various teams of developers in multiple locations