Flessibilità vs. formalismo
Esiste un continuum tra progetti che non richiedono qualità (ad esempio prototipi) e quelli che richiedono la massima qualità possibile (ad esempio sistemi critici per la vita).
Sullatosinistro,iprototipihannounoeunsoloobiettivo:esseresviluppatirapidamentepermostrarequalcosa,poibuttativia.Qui,scrivereuncodicediqualitàoseguireglistandardnonèilpunto.Ilcodiceèscrittounavoltaemailetto.L'elevatonumerodibugèaccettabile.
Sullatodestro,isistemicriticiperlavitarichiedonoestremacautelainterminidiaffidabilità,ilchesignificachedevonoessereutilizzatealcunetecnicheparticolarmentecostose,comelaprovaformale.Qui,unbugpuòcausareunincidenteaereoounafusionediunacentralenucleare,ilcherendeestremamenteimportanteessereilpiùvicinopossibileallaperfezione.
Quandosipassadaunprototipoaunsistemavitale,diventanosemprepiùtecnichenecessarieperridurrelespeseamedio/lungotermineogarantireunasortadiconformitàrichiestadaun'autorità.Questetecnichehannouncosto:aumentanoilcostoabreveterminedelprodotto.Questetecnicheincludonomanonsonolimitatea:
- Testdelsoftware,
- recensioniinformalieformalidelcodice,
- Convenzionidicodifica,
- Conformitàaglistandard,
- Documentazioneformale,
- Analisidelcodicestatico,
- ecc.
Individuazionediunprogetto
Dov'èiltuoprogettosuquestocontinuum?Sesitrattadiunprogettothrow-awayabrevetermine,bastamettereicontrollisuimoduli,spedireinanticipoedimenticarsene.Seèunprogettochehailpotenzialediesseremantenutodadiversisviluppatorinelcorsodeglianni,allorarendilopulito:ituoisuccessori(otestessopochimesidopo)tiringrazieranno.
Cisonomoltifattorichepossonoaiutareadeterminarelaposizionedelprogetto:
- Cisonomoltisviluppatorichelavoranosuunprogettoosolouno?
- Laconformitàallenormepreciseèrichiesta(pensatealsoftwarerelativoallacontabilità,adesempio)?
- Ilprogettoèrealizzatoperesseremantenutoperanniorapidamentesostituitodaunaltrosistema?Notachec'èunpregiudizioversounaduratalimitata:alcuniprogettisonostatipensatiperviverealmassimodue-treanni,eventiotrent'annidopo,sonoancoraattivi.
- L'affidabilitàèrichiesta?Un'appWebperusopersonalepotrebbebloccarsifrequentemente;anessunoimportaUnsistemaaziendalechegestisceognitransazionediogniclientecauseràmoltipiùproblemisesibloccaditantointanto.
- Quantepersoneutilizzerannoilprodotto?
- ecc.
Senonsaidovemettereiltuoprodottonelcontinuum,chiedialtuocliente.Assicuratichesiascrittoinuncontratto(hoavutoclientichehannochiestodiconsegnareASAPunprototipo,quindisonorimastodavverosorpresodalfattochenonsaràmantenutosenzariscrivere,nonostantesiastatoinformatoviae-maildall'inizio).Senessunolosa,applicaYAGNI:fallocomesefosseunprototipo,masiiprontoperiniziaredazeroseilprogettosembraessereunbuoncandidatodamantenereperanni.
Paradigmieprocessi
Senonriesciaspedirecostantementeunprodottoinanticipo,potrestipensaredicambiare:
Oiparadigmicheusi.Adesempio,dailinguaggidiprogrammazionestaticiaquellidinamici,cheoffronospessomaggioreflessibilitàevelocitàdisviluppoperleappWeb,senzacomprometterelaqualitàdelcodice.
Oiprocessi.Adesempio,Agileconsentedispedireprodottidilavoroinanticipo,quindidimigliorarlicontinuamente,ilchesignificachehaisialosviluppoadaltavelocitàcheilcodicediqualitàinsieme.
Perrisponderealladomanda...
Perrisponderedefinitivamentealladomanda:
Parlidiun"piccolo sistema per l'automazione interna". Sembra che tu non abbia bisogno di una qualità estrema. Ma ancora, stai attento; non vuoi spedire qualcosa di brutto, quindi mantenerlo per anni. Se è davvero piccolo, cosa ne pensi di dedicare qualche giorno alla creazione di un prototipo e, in caso affermativo, crea l'app reale?
-
ASP.NET? Perché non un linguaggio dinamico, come Python? Con Django, è un candidato eccellente per un'applicazione web che dovrebbe essere fatto rapidamente e sarà probabilmente molto più pulito rispetto a ASP.NET con query SQL nei moduli.