Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Fonaments de programació

Els conceptes que no depenen d’un llenguatge concret: com s’executa un programa, com es dissenya perquè es pugui canviar, com es prova i com es lliura en equip. Els altres apartats en són aplicacions: Programació en Java implementa aquests conceptes en un llenguatge, i Eines IA per al desenvolupament hi recorre constantment.

Com llegir aquests documents

Els documents pugen de nivell, del codi que s’executa al sistema que es posa en producció:

  1. Programar. Què passa quan s’executa un programa (dades, memòria, funcions) i com l’orientació a objectes organitza el codi en objectes que col·laboren.
  2. Dissenyar. L’objectiu del disseny és que el codi es pugui entendre, verificar i canviar. Primer a nivell de classe (SOLID, dependències, testabilitat), després amb proves que ho comproven, i finalment a nivell de sistema: l’arquitectura, i la que ja ve imposada quan es treballa amb un framework.
  3. Lliurar. Git per treballar en equip sobre el mateix codi, Docker per empaquetar l’aplicació, i DevOps i Infrastructure as Code per automatitzar el camí fins a producció.

Git és l’excepció a l’ordre: es fa servir des del primer projecte, així que convé llegir el Workflow Git com més aviat millor.

flowchart TD
    PR["Principis"] --> POO["POO"]
    POO --> D["Disseny"]
    D --> T["Proves"]
    D --> A["Arquitectura"]
    T --> A
    G["Workflow Git"] --> DO["DevOps"]
    DK["Docker bàsic"] --> DO
    T --> DO
    DO --> I["Infrastructure as Code"]

Programar

  • Principis: conceptes bàsics de programació, des de l’execució del codi fins a dades, memòria, funcions i recursivitat
  • POO: conceptes de programació orientada a objectes, relacions entre objectes i patrons de disseny

Dissenyar

  • Disseny: disseny a nivell de codi i classe (SOLID, dependències, testabilitat, seams) i com escriure codi llegible
  • Proves: conceptes de proves independents del llenguatge (piràmide, arrange-act-assert, test doubles, TDD, cobertura i mutacions)
  • Arquitectura: disseny a nivell de sistema, dels conceptes a l’arquitectura que ja et ve donada amb un framework
    • Conceptes: fronteres, estils i patrons (hexagonal, clean, DDD), disseny per contracte, diagrames C4 i arquitectura en equip
    • Fronteres de servei: com es comuniquen dos serveis, amb REST, versionat del contracte, missatgeria i streaming
    • Arquitectura dels frameworks: quina arquitectura imposa un framework (peces comunes, model d’execució, eix d’opinió, capes, ORM)
    • Frameworks un per un: taules de consulta amb el vocabulari i les decisions per defecte de dotze frameworks
    • Frameworks a la pràctica: llegir un projecte, triar framework, deixar peces substituïbles i posar ordre quan el framework no en posa

Lliurar

  • Workflow Git: flux de treball amb Git, resolució de conflictes i operacions habituals
    • Git en equip: estratègies de branques, pull requests, fluxos de la indústria (GitHub flow, trunk-based, Git flow), CI/CD i bones pràctiques de commit
    • Preguntes freqüents de Git: respostes breus als dubtes habituals (pull, upstream, desfer commits, reflog, .gitignore)
  • Docker bàsic: contenidors, Dockerfile, volums, Docker Compose i distribució d’imatges
  • DevOps: principis de la cultura DevOps i com aplicar-los al desenvolupament i l’operació
  • Infrastructure as Code: aprovisionament amb Terraform, configuració amb Ansible, gestió de secrets i integració amb CI/CD

Després

Programació en Java porta la programació i la POO a un llenguatge concret. Fer el projecte més automatitzable mostra com el disseny, les proves i el CI/CD són també el que permet treballar amb agents d’IA amb seguretat.

Itinerari curt

Si no pots llegir-ho tot, aquests cinc documents en ordre donen una base suficient per escriure, provar i compartir codi en equip:

Principis → POO → Disseny → Proves → Workflow Git

Last change: , commit: 1b2bff7