Skip to content
Teach me how to code

Table of contents

This is the outline of the whole Dev Concepts collection. The table of contents will continue to evolve over time. Note that this version is intentionally kept "short". The actual outline is much longer.

Dev Concepts Volumes

01
Software craft
02
What clients need
03
Architecture
04
Software design
05
Computer architecture and OS basics
06
Coding basics
07
Best practices
08
Back-end development
09
Front-end development
10
IT Infrastructure
11
Security
12
PM and SW. approaches

Volume 1: Software craft

Dev Concepts Volume 1

This volume explains the different skills that you’ll need to acquire and improve over the course of your career to become a software crafter. There are no secrets and no magic to become one. It’s mostly a question of work, dedication, passion, and fun.


This volume is much less about technology than about personality traits and psychology. Even if we all start with our own background, strengths and weaknesses, there are things to know, tips and tricks that will guide you on the path towards becoming a software crafter.

In this volume:

  1. Introduction
  2. What is software development
  3. What is software engineering
  4. What is a software developer/engineer/coder/programmer
  5. Evolution
  6. What is a software crafter
  7. Quality vs user satisfaction
  8. Important skills and practical advice
    1. Enjoy solving problems
    2. Improve your analytical skills
    3. Be creative and open-minded
    4. Be organized
    5. Always Be Curious (ABC)
    6. Improve continuously
    7. Build habits
    8. Learn your craft
    9. Understand client needs
    10. Go above and beyond
    11. Learn to deal with hard problems
    12. Learn to deal with failure
    13. Focus on quality
    14. Focus on security
    15. Be reliable
    16. Be pragmatic
    17. Be super productive
    18. Work in a structured manner
    19. Have fun
    20. Be a good communicator
    21. Be a true team member
    22. Be an Innovator and Influence others
    23. Be a great decision maker
    24. Manage your career
    25. Preserve yourself

Volume 2: What clients need

Dev Concepts Volume 2

All software development endeavors have one thing in common: they aim to solve real-world problems.


This volume focuses on how to understand what clients truly need. It covers concepts such as functional & non-functional requirements, techniques that you can use to understand business problems and end user goals. It also covers what specifications are and why they matter.


These ideas are important because, no matter how good a software developer you are, it doesn’t matter at all if you end up building something that solves the wrong problems.

In this volume:

  1. Introduction
  2. What do clients need?
  3. Requirements
    1. Functional requirements and jobs to be done
    2. Non-functional requirements
    3. Software Requirements Specification (SRS)
    4. Actors, use cases and user stories
    5. Business domain and Ubiquitous language
  4. Requirements discovery
    1. Requirements always change
    2. Event storming
    3. Discovery tools and techniques
    4. Clarify and refine gradually
  5. User Centered Design (UCD)
    1. User Research
    2. Jobs to be done
    3. Design Thinking
  6. User Experience Design (UX)
    1. What UX designers focus on
    2. UX Concepts overview
      1. UX User Research
      2. User personas
      3. User path, scenario, journey, and journey mapping
      4. Human-Computer Interaction (HCI)
      5. Interaction Design (IxD)
      6. Usability and ergonomics
      7. Accessibility
      8. Information architecture & content strategy
      9. UX/UI Design Patterns
      10. A/B testing
    3. UX Workflow
    4. Tools
  7. Design Sprints
  8. The Lean Startup and Minimum Lovable Products
  9. Specifications
  10. Conclusion

Volume 3: Architecture

Dev Concepts Volume 3

Once you have accumulated enough understanding about the requirements, you need to create IT solutions that efficiently solve the problems.


Before diving into design and code, you need to get in the shoes of an architect and devise solutions. Software crafters are not necessarily architects, but they should at least understand what architects do and should be able to provide useful input to them.


Sometimes, you’ll also have to play the role of the architect (e.g., in small startups) and when that happens, you need to know what needs to be done to avoid disasters. Here, we'll explore some key ideas about IT architecture in general and software architecture in particular.

In this volume:

  1. IT Architecture Overview
  2. Enterprise Applications
  3. The Hype Cycle
  4. Enterprise Architecture (EA)
  5. Solution architecture
  6. Software architecture
    1. The role of a software architect
    2. Overview
    3. A basic example
    4. Agile and Minimum Viable Architecture
    5. Patterns
      1. Modular and multi-tier architectures
      2. Layered
      3. Monoliths
      4. Microservices architecture & bounded contexts
      5. Cloud-native applications
      6. Serverless & Functions as a Service (FaaS)
      7. Command Query Responsibility Segregation (CQRS)
      8. Event-Driven Architecture (EDA)
      9. Event Sourcing (ES)
      10. Communications (protocols, HTTP, WebSockets, Message Queues, REST, GraphQL, SOAP, etc)
    6. Architecture and scalability
    7. Technical stack selection
  7. Information/Data architecture
    1. Data modeling
    2. Data storage
    3. Data integration
      1. Extract Transform Load (ETL)
      2. Change Data Capture (CDC)
      3. Web Services / SOA
    4. Data governance
    5. Big Data
    6. Data analytics
      1. Data Mining
      2. Business Intelligence (BI)
      3. Artificial Intelligence (AI)
  8. Infrastructure architecture
  9. Security architecture

Volume 4: Software design

Dev Concepts Volume 4

Software design is where the real action begins. Previous volumes covered much higher level concepts. Solving the wrong problem means game over, a bad architecture means tons of waste, and bad software design means costly maintenance. Here, we explore software design, explain why it is critical for mental health (seriously!) and key concepts that you’ll use on a daily basis during your software crafter’s career.

In this volume:

  1. Technical design
    1. Data
      1. Data models
      2. Data structures
      3. State machines (FSM)
    2. Business rules
    3. Database design
    4. Algorithms
      1. Complexity and the Big-O notation
    5. Workflows
    6. Code design principles
      1. Problem partitioning
      2. Design strategies
      3. Abstraction
      4. Modularity
      5. Encapsulation
      6. Law of Demeter (LoD)
      7. Separation of concerns
      8. SOLID principles
      9. Don't Repeat Yourself (DRY)
      10. Don't reinvent the wheel
      11. You aren't gonna need it (YAGNI)
      12. Pareto principle
      13. Convention over configuration
      14. API design
      15. Refactoring/Refinement
    7. Design patterns
    8. Naming
    9. Choosing frameworks and libraries
    10. Documentation
      1. Diagrams / Notations
  2. Domain Driven Design (DDD)

Volume 5: Computer architecture and OS basics

Dev Concepts Volume 5

This volume is dedicated to real beginners who first want to understand computers and operating systems. We all need to start somewhere, and this is an excellent introduction to basic principles underlying everything that we do as software crafters. Whether our code runs locally on our computer or somewhere in the cloud, it is always executed by a CPU (physical or virtual), accesses memory, reads/writes files, etc.


If you want to learn about CPUs, memory, file systems, files, processes, scheduling and whatnot, then this volume is for you.

In this volume:

  1. Introduction
  2. Computer architecture basics
    1. Central Processing Unit (CPU)
    2. Memory (RAM)
    3. Graphical Processing Unit (GPU)
    4. Binary
    5. Hexadecimal
  3. Operating system basics
    1. Major components
    2. Programs
    3. Processes and process management
    4. Memory management
    5. I/O management
    6. File systems and files
    7. Users and groups
    8. Inter-Process Communication (IPC)
    9. Ports
    10. POSIX
    11. Built-in programs
    12. Shells
    13. Environment variables
    14. Services/Daemons
    15. Scheduled tasks
    16. Virtualization
    17. Containerization

Volume 6: Coding basics

Dev Concepts Volume 6

This volume is dedicated to real beginners who’d like to learn how to C-O-D-E. We will only scratch the surface but this volume is a great and practical introduction to coding concepts that all software crafters must know and use literally all the time.

In this volume:

  1. Introduction
  2. Programming concepts
    1. Pseudocode
    2. Variables
    3. Constants
    4. References
    5. Special values
    6. Operators
    7. Statements
    8. Expressions
    9. Keywords
    10. Data types
    11. Mutability
    12. Conditional structures
    13. Functions
    14. Loops
    15. Errors/Exceptions
    16. Generics
    17. Decorators/annotations
    18. Regular expressions (Regex)
    19. Recursion
    20. Serialization
    21. Modules/Packages
    22. Concurrency
    23. Streams
    24. Libraries
    25. Frameworks
    26. Bugs
    27. Debugging
  3. Programming paradigms
    1. Imperative
      1. Procedural
      2. Object-Oriented Programming (OOP)
    2. Declarative
      1. Functional Programming (FP)
      2. Functional Reactive Programming (FRP)
    3. Aspect Oriented Programming (AOP)
  4. Programming languages & platforms
    1. Generations
    2. Families
    3. Characteristics
    4. Examples
    5. How to choose
  5. Development tools
    1. Integrated Development Environment (IDE)
    2. Source Control Management client
    3. Build tools
    4. Development environment setup
  6. Free and Open Source Software (FOSS)
  7. Databases
    1. Database transactions
    2. Relational Database Management Systems (RDBMS)
    3. NoSQL
  8. Character encoding
  9. Internet
    1. How does it work?
    2. Hypertext Transfer Protocol (HTTP)
      1. Server/Clients
      2. Requests/Responses
      3. URLs
      4. Verbs
      5. Headers
      6. Status codes
      7. Protocol versions
      8. Tools
  10. Full Text Search (FTS)

Volume 7: Best practices

Dev Concepts Volume 7

This volume is dedicated to elements that must be taken care of everywhere; whether you’re doing back-end or front-end software development. Note that I also consider those necessary for infrastructure scripting (but it’s always hard to make IT operations personnel realize that they are also software developers ;-)


This is a critical volume for true software crafters because many of these points are unfortunately often overlooked for various reasons (mostly bad ones). If you want to become a true software crafter, then you’ll make sure to always pay attention to those and to convince everyone else to do the same; even if it means going against some pointy-haired manager ;-)

In this volume:

  1. Error handling
  2. Code quality & Quality Assurance (QA)
    1. Broken windows theory
    2. Technical debt
    3. Code quality checks
      1. Static Code Analysis (SCA)
        1. Metrics
        2. Tools
    4. Testing
    5. Clean code advice
      1. General
        1. Code duplication
        2. Coding conventions
        3. Defensive programming
        4. Dead code elimination
        5. Code quality checklist
        6. Code comments
      2. Variables
      3. Functions
      4. Conditionals
      5. Error handling
      6. Testing
      7. Performance
    6. Continuous Integration (CI)
    7. Code review process
    8. Issue/Bug tracking
  3. Logging
  4. Performance/resource usage
  5. Internationalization (i18n) and localization (l10n)
  6. Encoding
  7. Caching
    1. Concepts
    2. Types
    3. Patterns
  8. Feature flagging
  9. How to fix bugs
  10. Version management
  11. Source Control Management (SCM)
    1. Workflows
    2. Monorepos
    3. Practical advice
  12. Continuous Delivery/Deployment
  13. Operational Maturity (OM)
    1. Business Continuity Management (BCM)
    2. IT Service Management (ITSM)
    3. Backup/restore
    4. Disaster Recovery (DR)
  14. Security

Volume 8: Back-end development

Dev Concepts Volume 8

This volume is all about back-end software, where most of the action occurs under the hood… without anyone knowing. Back-end developers have to focus on very different aspects of IT systems, compared to front-end developers. Software crafters need to understand those differences.

In this volume:

  1. What back-end developers focus on and why
  2. Data
    1. Models
    2. Persistence / Retrieval / Search
    3. Exposure through APIs
    4. Batch processing
  3. Usual layers and responsibilities
    1. Domain
    2. Repository
    3. Business
    4. Web services
    5. Integration
    6. Batch
    7. Shared
    8. Cross-cutting
  4. Security
  5. Performance
  6. Scalability
  7. APIs
    1. Types
      1. RESTful
      2. GraphQL
      3. SOAP
      4. GRPC
    2. Comparison
    3. Tools
  8. Frameworks and major libraries
  9. Going full-stack

Volume 9: Front-end development

Dev Concepts Volume 9

This volume is all about front-end systems, which are the tip of the iceberg; the one concrete part that end users see and can feel. Given the visual nature of front-end applications, front-end developers have to focus on very different aspects, compared to back-end developers. Software crafters must not necessarily be artists, but they still have to pay attention to the aesthetics… among many other things.

In this volume:

  1. What front-end developers focus on and why
  2. Usual layers and responsibilities
  3. Component architecture
    1. Smart components
    2. Dumb components
    3. Component libraries
  4. User Interface Design (UI)
    1. Principles
    2. Elements
    3. Design systems
    4. Mockups/prototypes & fidelity
  5. Web Design
    1. Technologies
    2. Progressive enhancement
    3. Graceful degradation
    4. Responsive Web Design (RWD)
    5. Cross-browser testing
  6. Accessibility (a11y)
    1. Standards
    2. Tools
  7. Performance
    1. Testing/Scoring
    2. Tools
  8. The Web Platform
    1. Main technologies of the Web
    2. How Web browsers work
    3. Web standards
  9. HTML basics
  10. CSS basics
  11. Metadata on the Web
  12. Data entry
    1. HTML forms
    2. Captcha & security
  13. Approaches to create Web applications
    1. Old school
    2. Single Page Applications (SPAs)
    3. Server-Side Rendering (SSR)
    4. Static sites
    5. Micro front-ends
  14. Progressive Web Apps (PWAs)
  15. UI state management
    1. Types
    2. Redux
      1. Architecture
      2. Libraries
  16. Scalable Vector Graphics (SVG)
  17. Web fonts
  18. Desktop/Mobile apps
  19. Frameworks and major libraries

Volume 10: IT Infrastructure

Dev Concepts Volume 10

Back-end software is conceptually below the front-end in terms of visibility, but IT infrastructure goes way further down, from services, servers and networks down to cable and electrical signals; phew! ;-)


Having a good understanding of where our applications are hosted, how the environment is configured/secured/monitored, etc is super valuable and makes the difference between someone who “just” writes code and someone who contributes to developing end-to-end solutions. This volume explains some important concepts about IT infrastructure. All DevSecOps engineers (and thus software crafters) should be aware of at least a part of those ideas.

In this volume:

  1. What IT infrastructure focuses on and why
  2. Networking concepts
    1. OSI Model
    2. Networks
    3. Routing
    4. Network Address Translation (NAT)
    5. Ports
    6. Port Address Translation (PAT)
    7. Network zones
    8. Cloud networks
    9. DHCP
    10. DNS
  3. Network domains
  4. Availability & performance
    1. High Availability (HA)
    2. Clustering
    3. Load Balancing (LB)
  5. Systems maintenance
  6. Systems management
    1. Databases
    2. Configuration management
    3. Compliance management
    4. Naming conventions
  7. Data
    1. Storage
    2. Backup/restore
    3. File services
    4. Enterprise Content Management (ECM)
    5. Databases
  8. Cloud computing
    1. Infrastructure as a Service (IaaS)
    2. Software as a Service (SaaS)
    3. Platform as a Service (PaaS
    4. Cloud types
    5. Workload portability
  9. Hosting
    1. Applications
    2. Services
    3. Functions
  10. Deployments
  11. Environments
  12. Security
  13. Automation
    1. Scripting
    2. Infrastructure as code
    3. GitOps
    4. ChatOps
    5. Tools
  14. API integration

Volume 11: Security

Dev Concepts Volume 11

Once you understand what your clients need (or at least, what they need right now), you can think about the “product”. Product management is a specific job, but as a software crafter, it is important to at least understand what it is and what it entails because, sometimes, you might have to take the lead for some parts of product management.


How are products and their features defined, prioritized, and organized? Dive into this volume to learn about technical product management, product backlogs, product roadmaps as well as how to create, structure, and maintain those.


Explore software development approaches, methodologies, and discover modern project management.


Learn how to become a great team leader and help your team succeed.

In this volume:

  1. Attackers
  2. Key concepts
    1. Attack vectors
    2. Attack surface
    3. Physical security
    4. Confidentiality, Integrity, Availability (CIA)
    5. Non-repudiation
    6. Defense-in-depth
    7. Identification
    8. Authentication, Authorization, Auditing (AAA)
    9. Principle of least privilege
    10. Allow lists and deny lists
    11. Privilege escalation
    12. Need to know
    13. Segregation of duties
    14. Responsibility Assignment Matrix (RACI)
    15. Security by obscurity
    16. Personally Identifiable Information (PII)
  3. Risk management
    1. Operational Risk Management (ORM)
    2. Risk assessment
    3. Risk mitigation
  4. Security controls
    1. Common controls
    2. OWASP
  5. Cryptography
    1. Encryption
    2. Hashing
    3. Digital Signatures
    4. Pseudo-Random Number Generators (PRNG)
    5. Keys
  6. Secure communications
    1. Secure protocols
      1. Why HTTPS matters
      2. Transport Layer Security (TLS)
      3. Perfect Forward Secrecy
    2. Public Key Infrastructure (PKI)
    3. Firewalls
    4. Network segregation
    5. Proxies
    6. NAC, IDS, IPS
  7. Configuration hardening
    1. Accounts security
    2. Hosts security
    3. Web servers security
    4. Domain security
    5. Cloud security
    6. Configuration drift
  8. Secret management
    1. Password management
    2. Privileged Access Management (PAM)
    3. Hardware Security Modules (HSM)
  9. Vulnerability tracking
    1. Vulnerability databases
    2. How to track vulnerabilities
  10. Security testing
    1. Security verification
    2. Penetration testing
    3. Bug bounty programs
  11. Web platform security
    1. Same Origin Policy (SOP)
    2. Mixed content
    3. Browser sandbox
    4. Content Security Policy (CSP)
    5. Cross-Origin Resource Sharing (CORS)
    6. Cookies security
    7. Privacy sandbox
  12. Secure coding
    1. OWASP top vulnerabilities
    2. Integrating security in the SDLC
    3. General advice
    4. Input validation
    5. Output encoding
    6. Authentication
    7. Session management
    8. Authorization
    9. Error handling
    10. Logging and auditing
    11. Data security
    12. ... and more!
  13. Incident response
  14. Security monitoring
  15. Security automation
  16. Administrative measures
  17. Laws and regulations

Volume 12: Project management and development approaches

Dev Concepts Volume 12

Once you understand what your clients need (or at least, what they need right now), you can think about the “product”. Product management is a specific job, but as a software crafter, it is important to at least understand what it is and what it entails because, sometimes, you might have to take the lead for some parts of product management.


How are products and their features defined, prioritized and organized? Dive into this volume to learn about technical product management, product backlogs, product roadmaps as well as how to create, structure and maintain those.

In this volume:

  1. Project roles
  2. Product management
    1. Product manager's role
    2. Product roadmap
      1. Phases/Milestones
      2. User Story Map
  3. Backlog management
    1. Advice
    2. Tools
  4. Software development process
    1. Cowboy coding
    2. Software/System Development Life Cycle (SDLC)
  5. Software development approaches
    1. Waterfall
    2. Rational Unified Process (RUP)
    3. Agile
      1. Scrum
      2. Kanban
      3. Scrumban
      4. Disciplined Agile Delivery (DAD)
      5. Agile Unified Process (AUP)
    4. Lean
      1. Lean thinking
      2. Lean Product Development (LPD)
    5. Extreme Programming (XP)
    6. Feature-driven Development (FDD)
    7. DevOps and DevSecOps
  6. Project management basics
  7. Important definitions for teams
    1. Definition of Ready to implement
    2. Definition of Done
  8. Release management