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
- 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
- A Gentle Introduction to Algorithms for Web 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
- 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
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)
- Efficient Data structures for PHP 7
JavaScript
- Learn JavaScript Essentials
- Awesome JavaScript
- You don't know JS
- JavaScript reference - MDN (Mozilla Developer Network)
- Eloquent Javascript
- Babel.js - ES6 today
- Essential Javascript Patterns
Kotlin
- How I fell in love with a programming language
- 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.
Tools
- git
- Atlassian git Tutorials
- Interactive git Cheatsheet
- Composer - Dependency Manager For PHP
- Packagist - The PHP Package Repository
- 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
- Docker Docs
- Docker Swarms Introduction
- How to write Anible 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
- Building an Event Storage
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
Processes & Culture
- The Agile Manifesto
- Agile Retrospectives
- Team Geek - A Software Developer's Guide to Working Well with Others
Frontend & UI/UX
- MDN - Mozilla Developer Network
- Talks To Help You Become A Better Front-End Engineer
- Netflix UI Engineers Youtube Channel
- Twitter Bootstrap
- Don't make me think - Web Usability
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
- Simple Made Easy
- Refactoring: Improving the Design of Existing Code
- The full stackoverflow developer
- Measure anything, measure everything
- Papers from the computer science community to read and discuss
- 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