Thialala / software-engineering-learning-guide

Apprendre à devenir un bon développeur logiciel en ayant des fondations solides et pratiques

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Guide d'apprentissage pour développeur logiciel

Ce guide a pour but de regrouper toutes les ressources nécessaires afin de développer des logiciels solides, stables, pratiques et évolutifs qui répondent aux besoins métier.

Nous allons ainsi se focaliser sur 3 grands domaines dans l'ordre d'apprentissage:

  • Software Craftsmanship
  • Software Architecture
  • DevOps

Il faut savoir qu'il y a énormément de ressources (livres, vidéos, meetups, blogs, podcasts, etc...) sur ce domaine et ça peut être très vite écrasant en terme d'apprentissage et de montée en compétences. Je ne parle même pas des notions et acronymes: DRY, SOLID (acronyme d'acronymes 😀), TDD, BDD, DDD, KISS, YAGNI, CQRS, ES, CI, CD, etc........

Ce guide a pour but de vous permettre de comprendre toutes ces notions de manière incrémentale et de voir ainsi leurs différentes connexions.

Software Craftsmanship

C'est un mouvement et comme tout bon mouvement il a son manifesto : http://manifesto.softwarecraftsmanship.org/

Pour cette partie, voici les livres que je recommande dans l'ordre de lecture:

  1. The Pragmatic Programmer: From Journeyman to Master
  2. Clean Code: A Handbook of Agile Software Craftsmanship
  3. Test Driven Development: By Example
  4. Growing Object-Oriented Software, Guided by Tests by Steve Freeman Nat Pryce
  5. Refactoring: Improving the Design of Existing Code. Il y'a une nouvelle édition mais je n'ai pas lu. A vous de voir.
  6. Refactoring to Patterns
  7. Working Effectively with Legacy Code

Software Architecture

L'architecture d'une application fait aussi partie du rôle de développeur, donc il est important d'en comprendre les notions afin de pouvoir mettre en place la bonne architecture liée à votre application. Voici les livres que je recommande et toujours dans l'ordre:

  1. Head First Design Patterns. Une très bonne alternative : Dive into design Patterns
  2. Patterns of Enterprise Application Architecture
  3. Pour les devs Java ou autre : Implementing Domain-Driven Design
  4. Pour les devs C# ou autre : Patterns, Principles, and Practices of Domain-Driven Design et Hands On Domain-driven design with .NET Core
  5. The System Design Primer

DevOps

Tout d'abord, je vous recommande de lire fortement cet excellent article sur le sujet: DevOps Explained.

  1. The Phoenix Project
  2. Continuous Integration: Improving Software Quality and Reducing Risk
  3. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation

Autres ressources

Encore une fois, il y'a énormément de ressources. Cette liste de livres est liée à mon expérience personnelle.

Si vous n'êtes pas trop "lecture", vous allez retrouver tout ça sur Pluralsight sous forme de vidéos. Mais il vous faudra rechercher les bons cours et construire votre parcours d'apprentissage.

Vous avez ces roadmaps qui ne sont pas mal aussi: https://github.com/kamranahmedse/developer-roadmap

Pour ceux qui cherchent de l'algorithmie ou veulent entrer dans les GAFAM, vous pouvez suivre ce guide: https://github.com/jwasham/coding-interview-university.

J'ai aussi bien aimé ce livre de Rob Conery, je le recommande aussi car il couvre beaucoup de choses: THE IMPOSTER’S HANDBOOK. On pourrait même commencer avec ce livre pour avoir une vision plus globale de notre domaine.

Ce guide continuera à être enrichi selon les retours.

About

Apprendre à devenir un bon développeur logiciel en ayant des fondations solides et pratiques