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ó:
- 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.
- 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.
- 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