Capitano Ovvio al salvataggio!
Sarò il Capitano Ovvio qui e dirò che c'è una via di mezzo da trovare.
Vuoi costruire per il futuro ed evitare di bloccarti in una scelta tecnologica o in un cattivo design. Ma non vuoi passare 3 mesi a progettare qualcosa che dovrebbe essere semplice o aggiungere punti di estensione per un'app veloce e sporca che avrà una durata di 2 anni ed è improbabile che abbia progetti di follow-up.
È difficile trovare la distinzione, perché non puoi sempre prevedere il successo del tuo prodotto e se dovrai estenderlo in un secondo momento.
Costruisci per ora se ...
- il progetto verrà demolito
- il progetto ha una durata breve
- il progetto non dovrebbe avere estensioni
- il progetto non ha un valore di impatto del rischio (principalmente in termini di immagine)
In generale, per ora dovrebbero essere sviluppati progetti interni o qualcosa di costruito per un cliente. Assicurati di avere dei requisiti semplici e riferiti a loro secondo necessità per sapere cosa è necessario e cosa no. Non voglio passare troppo tempo su qualcosa di "bello da avere". Ma non programmare neanche come un maiale.
Lascia il problema generale per dopo, se mai è necessario e ne vale la pena:
Costruisci per il futuro se ...
- il progetto sarà pubblico
- il progetto è un componente da riutilizzare
- il progetto è un trampolino di lancio per altri progetti
- il progetto avrà progetti di follow-up o rilasci di servizi con miglioramenti
Se stai costruendo per qualcosa di pubblico, o che verrà riutilizzato in altri progetti, allora hai una probabilità molto più alta che un cattivo design tornerà a perseguitarti, quindi dovresti prestare maggiore attenzione a quello. Ma non è sempre garantito.
Linee guida
Direi di aderire ai seguenti principi nel miglior modo possibile e dovresti metterti nella posizione di progettare prodotti efficienti e adattabili:
- sappi che YAGNI ,
- BACIO ,
- ogni volta che hai voglia di grattarti un prurito e pensare a un'aggiunta, scrivila. Guarda indietro ai requisiti del tuo progetto e chiediti se le aggiunte sono prioritarie o meno. Chiedere se aggiungono valore commerciale primario o meno.
So che personalmente tendo a pensare troppo e ingegnere in modo eccessivo. Aiuta davvero a scrivere idee e molto spesso ripensare se ho bisogno di funzionalità aggiuntive. Spesso, la risposta è no, oppure "sarebbe bello dopo". Queste ultime idee sono pericolose, perché rimangono nella parte posteriore della mia testa, e ho bisogno di forzarmi a non pianificare per loro.
Il modo migliore per codificare senza ingegnerizzare eccessivamente e senza bloccarsi per dopo è concentrarsi su un buon design minimale. Suddividi le cose come componenti che puoi estendere in seguito, ma senza pensare già a come possono essere estese in seguito. Non puoi predire il futuro.
Costruisci cose semplici.
Dilemmata
Overengineering
È questo un programmatore di tendenza che in genere segue quando si occupa di un progetto come questo?
Inferno sì. È un dilemma noto e dimostra solo che ti interessa il prodotto. In caso contrario, è più preoccupante. C'è disaccordo sul fatto che meno sia sempre veramente di più e se il peggio sia sempre veramente meglio . Potresti essere un tipo del MIT o del New Jersey . Non c'è una risposta facile qui.
La prototipazione / Quick-n-Dirty / Less is More
È una tendenza tipica solo fare un esempio realizzabile il prima possibile?
È una pratica diffusa, ma non è l'approccio alla stragrande maggioranza dei progetti. Tuttavia, la prototipazione è una buona tendenza secondo me, ma con un lato negativo medio. Può essere allettante promuovere prototipi veloci e sporchi su prodotti reali o usarli come base per prodotti reali sotto pressione gestionale o vincoli di tempo. Questo è quando la prototipazione può tornare a perseguitarti.
Ci sono ovvi vantaggi nella prototipazione , ma anche un sacco di potenziale per uso improprio e abuso (molti come esatto inverso esatto dei vantaggi precedentemente elencati).
Quando utilizzare il prototipo?
Ci sono suggerimenti sui migliori tipi di progetti per usare la prototipazione :
[...] la prototipazione è più vantaggiosa nei sistemi che avranno molte interazioni con gli utenti.
[...] la prototipazione è molto efficace nell'analisi e nella progettazione di sistemi online, in particolare per l'elaborazione delle transazioni, in cui l'uso di finestre di dialogo sullo schermo è molto più evidente. Maggiore è l'interazione tra il computer e l'utente, maggiore è il vantaggio [...]
"Finora uno degli usi più produttivi della prototipazione rapida è stato uno strumento per la progettazione iterativa dei requisiti degli utenti e la progettazione dell'interfaccia uomo-computer."
D'altro canto:
I sistemi con scarsa interazione dell'utente, come l'elaborazione batch o i sistemi che eseguono principalmente calcoli, traggono poco vantaggio dalla prototipazione. A volte, la codifica necessaria per eseguire le funzioni di sistema potrebbe essere troppo intensiva e i potenziali guadagni che la prototipazione potrebbe fornire sono troppo piccoli.
E se hai un mostro verde in giro, assicurati di mantenere un prototipo nel budget ...