Full stack developer
Com escric el programari: proves primer i peces que es poden canviar.
TDD, SOLID, integració contínua i unes quantes regles més que no negocio. Aquí hi ha cada una amb el seu motiu, un cas on s'aplica i el text públic on està definida.
- Proves TDD, piràmide de proves
- Disseny SOLID, hexagonal, KISS i YAGNI
- Entrega CI/CD, versionat semàntic, dotze factors
Les regles que no negocio
No són manies: cada una es paga sola la primera vegada que cal canviar alguna cosa amb el programa ja funcionant i gent a dins.
Un encàrrec petit i un de gran s'escriuen igual. La diferència és quantes vegades hi tornaràs: el programari que resol un procés d'una empresa es toca cada pocs mesos perquè el procés canvia, i el que decideix si això és barat o caríssim es va decidir el primer dia, quan es va triar on posar cada frontera.
- Una prova abans que el codi Si no sé escriure la prova, encara no sé què li estic demanant al programa. Escriure-la primer és la manera més curta d'esbrinar-ho.
- Cada peça, un sol motiu per canviar Responsabilitat única i dependències cap endins: el cas d'ús no sap si al darrere hi ha PostgreSQL, un fitxer o l'API d'un tercer.
- El que és avorrit guanya Cap dependència entra sense explicar quin problema resol avui. El que no cal, no s'escriu.
- L'error es diu, no s'amaga Una API contesta la fallada en un format que l'altra banda pot llegir, amb el seu codi i el seu motiu, no amb un 200 i un text solt.
- L'entrega es repeteix igual Configuració fora del codi, desplegament repetible i versió numerada: el servidor de producció no és una peça artesanal.
- La seguretat es revisa amb llista Abans de donar res per bo, el repàs de sempre: autenticació, permisos, entrada de l'usuari, dependències i registres.
El que no faig
Gairebé tota la feina de mantenir alguna cosa barata consisteix en el que es va decidir no posar-hi.
No començo triant framework. Primer hi ha el procés que cal resoldre i la dada que cal guardar; l'eina es tria després, i de vegades la resposta és que no en cal cap. Aquesta mateixa web n'és l'exemple: PHP pla, sense base de dades, sense dependències i sense pas de compilació, perquè res del que fa ho demanava. Es pot llegir sencera i se serveix amb un servidor web i res més.
No escric codi «per quan calgui». Una capa d'abstracció que encara no té dues implementacions no és flexibilitat: és una peça més per mantenir i una indirecció més per llegir. Quan apareix la segona, s'extreu, i llavors les proves ja hi són i el canvi és mecànic.
I no deixo la interfície per al final. El que es veu té el seu propi mètode, les seves regles de contrast i de focus, i no s'improvisa la tarda abans de lliurar.
Glossari de l'ofici.
Els termes tal com es fan servir, amb un cas on aplico cada un i el text públic que el defineix. Així no cal creure'm: es pot comprovar.
Preguntes.
Escriure les proves primer no va més lent?
El primer dia, sí. El càlcul canvia tan bon punt cal tocar alguna cosa que ja és en producció: sense proves, cada canvi obliga a repassar a mà el que abans funcionava, i això es paga cada vegada. Amb proves es paga una.
Es pot aplicar SOLID sense framework, en PHP pla?
SOLID no és una biblioteca, és on es posen les fronteres. Es pot fer malament amb el framework més modern i bé amb un grapat de fitxers: el que importa és que la lògica no sàpiga d'on ve la dada ni a quina pantalla va.
Quina cobertura de proves busques?
No persegueixo un percentatge. Un número alt amb proves que no comproven res dona falsa tranquil·litat. El que busco és que allò que fa mal si es trenca —el càlcul, el permís, els diners— estigui cobert, i que una fallada en producció deixi sempre una prova nova al darrere.
I si el projecte ja existeix i no té res d'això?
Es comença per on es tocarà. Abans de canviar una peça, se li escriuen proves que fixin què fa avui —encara que el que faci avui sigui estrany—; amb aquella xarxa, el canvi deixa de ser una juguesca. Reescriure-ho tot gairebé mai és la resposta.
Qui decideix quan una cosa està acabada?
Ho decideix una llista escrita abans de començar, no la sensació que ja va bé: les proves passen, l'error està explicat en el seu format, la pantalla es pot fer servir amb teclat i amb lector, la versió està numerada i el desplegament s'ha fet amb el guió de sempre.
Fonts.
Tot el que s'afirma aquí està descrit en un text públic. Aquestes són, amb el seu organisme i la seva data.
- ISO/IEC 25010:2023 · Model de qualitat de producte ISO/IEC JTC 1/SC 7 · 2023-11
- RFC 9110 · HTTP Semantics IETF · 2022-06
- RFC 9457 · Problem Details for HTTP APIs IETF · 2023-07
- OWASP Top 10 OWASP Foundation · 2021
- OWASP Application Security Verification Standard OWASP Foundation
- Semantic Versioning 2.0.0 semver.org
- The Twelve-Factor App Heroku
- Conventional Commits 1.0.0 Conventional Commits
- Continuous Integration Martin Fowler
- Hexagonal Architecture Alistair Cockburn
- DORA · recerca sobre entrega de programari DORA (Google Cloud)
On continuar.
- El stack, eina per eina Què fa cada llenguatge, cada base de dades i cada peça de sistemes, i amb quin criteri es tria.
- Les aplicacions que he construït On es veu tot això funcionant, amb enllaç per provar-ho.
- I el mètode de l'altra banda Interfície, accessibilitat i sistema de marca: les regles del que es veu.
Parlem?
Et quadra aquesta manera de treballar?
Explica'm què tens entre mans i et dic per on començaria.

