Ridurre gli errori di onboarding e dimezzare i tempi di setup attraverso l’automazione dei comandi di progetto.

Nel contesto dello sviluppo software moderno, uno degli ostacoli più sottovalutati è la frammentazione dei comandi di progetto. Ogni repository ha il proprio modo di avviare il server di sviluppo, eseguire i test o effettuare il deploy. Questo disallineamento non è solo un'inefficienza: è una fonte costante di errori, frustrazione e perdita di produttività.
Just, un task runner scritto in Rust, ci ha permesso di standardizzare completamente il modo in cui interagiamo con i nostri progetti. Il risultato? Riduzione del 70% degli errori di onboarding e dimezzamento del tempo necessario per rendere operativo un nuovo sviluppatore.
Prima dell'introduzione di Just, il nostro team affrontava una sfida ricorrente: ogni progetto aveva il proprio insieme di comandi, spesso documentati in modo incompleto o frammentato tra README, wiki interni e conoscenza tribale.
| Operazione | Progetto A | Progetto B |
|---|---|---|
| Avvio dev server | npm run dev | yarn start |
| Test | npm test | make test |
| Linting | npm run lint | ./scripts/lint.sh |
| Deploy | ./deploy.sh staging | npm run deploy:staging |
| Setup DB | docker-compose up db | ./scripts/db/setup.sh |
I problemi principali che abbiamo identificato:
Just è un task runner moderno che combina la semplicità di Make con una sintassi più pulita e funzionalità specifiche per lo sviluppo contemporaneo. Scritto in Rust, è veloce, affidabile e multipiattaforma. Abbiamo deciso di adottarlo come standard aziendale per creare comandi uniformi.
# Development
dev:
npm run dev
# Testing
test:
npm test
test-watch:
npm run test:watch
test-coverage:
npm run test:coverage
# Linting & Formatting
lint:
npm run lint
format:
npm run format
format-check:
npm run format:check
# Database
db-setup:
docker-compose up -d db
sleep 5
npm run db:migrate
db-reset:
docker-compose down -v
just db-setup
db-seed:
npm run db:seed
# Deploy
deploy-staging:
./scripts/deploy.sh staging
deploy-prod:
./scripts/deploy.sh production
# Setup completo
setup:
npm install
just db-setup
just db-seed
echo "✓ Setup completato! Esegui 'just dev' per iniziare"
Dopo sei mesi dall'adozione di Just in tutti i nostri progetti, abbiamo raccolto dati significativi sui miglioramenti ottenuti.
Caso 1: Setup ambiente di sviluppo
Prima l'operazione richiedeva 8 passaggi manuali tra clonazione, lettura README e configurazione database:
1. Clonare il repository
2. Leggere il README per trovare le istruzioni
3. Installare le dipendenze con npm install o yarn install
4. Cercare nel wiki le istruzioni per il database
5. Eseguire una serie di comandi per setup Docker
6. Eseguire le migration
7. Seedare il database
8. Sperare che tutto funzioni
Ora basta un unico comando:
just setup
Caso 2: Deploy su staging
Prima bisognava cercare lo script corretto e ricordarsi parametri specifici:
1. Cercare lo script di deploy corretto (./deploy.sh? ./scripts/deploy.sh? npm run deploy?)
2. Ricordarsi i parametri corretti (staging? stg? dev?)
3. Sperare di non aver dimenticato di eseguire i test
4. Eseguire il comando completo: ./scripts/deploy.sh --env staging --build --migrate
Ora il comando automatizza test e build, interrompendosi in caso di errori:
just deploy-staging
Il comando include automaticamente esecuzione dei test, build, e migration. In caso di fallimento dei test, il deploy si interrompe automaticamente.
Caso 3: Debug del database
Prima:
1. Cercare il docker-compose.yml
2. Ricordarsi il nome del container del database
3. Eseguire docker-compose exec db psql -U username -d dbname
4. Consultare le note per trovare username e dbname corretti
Ora:
just db-console
Nel corso dell'implementazione di Just, abbiamo sviluppato alcune linee guida che consigliamo a chiunque voglia intraprendere un percorso simile:
Abbiamo creato una convenzione di naming rigorosa:
Just permette di definire dipendenze tra task. Per esempio:
deploy-staging: test lint ./scripts/deploy.sh staging deploy-prod: test lint format-check ./scripts/deploy.sh production
In questo modo, il deploy su production esegue automaticamente test, lint e format-check prima di procedere.
Ogni comando può avere una descrizione che viene visualizzata con just --list:
# Avvia il server di sviluppo con hot-reloaddev: npm run dev # Esegue i test con coverage reporttest-coverage: npm run test:coverage
L'adozione di Just non è stata priva di sfide:
Alcuni sviluppatori senior erano inizialmente scettici. La soluzione è stata introdurre Just gradualmente, partendo dai nuovi progetti e dimostrando i benefici con metriche concrete. Dopo tre mesi, anche i più resistenti hanno richiesto la migrazione dei loro progetti legacy.
Abbiamo creato un template di justfile base e organizzato sessioni di "migration day" dove il team dedicava mezza giornata a migrare 2-3 progetti insieme. Questo approccio collaborativo ha accelerato il processo e garantito coerenza.
Per evitare la deriva nel tempo, abbiamo implementato:
I numeri chiave
L'adozione di Just come standard per i comandi di progetto è stato uno degli investimenti più redditizi che abbiamo fatto in termini di developer experience. I benefici vanno oltre le metriche: abbiamo osservato un aumento generale della soddisfazione del team, meno frustrazione quotidiana e maggiore fiducia nell'eseguire operazioni delicate.
Se state considerando di standardizzare i vostri workflow di sviluppo, Just è uno strumento che consigliamo vivamente. È leggero, potente e soprattutto elimina una fonte significativa di complessità accidentale nei progetti software moderni.
Il nostro consiglio: iniziate con un progetto pilota, raccogliete feedback, iterate sullo standard e poi espandete gradualmente. La chiave del successo è la coerenza, non la perfezione immediata.