Gli sviluppatori di software che ignorano la qualità / gli standard sono migliori per l'azienda? [chiuso]


10

Gli sviluppatori di software che scelgono di non mettere l'ottimizzazione del codice, gli standard e le migliori pratiche come una priorità assoluta, creano un codice più utile di quegli sviluppatori che vogliono preoccuparsi dell'ottimizzazione, dell'implementazione degli standard e delle pratiche di codifica prima di completare le attività in tempo?

Come si confrontano queste diverse metodologie quando si tratta di revisioni individuali delle prestazioni?

Come si confrontano questi stili nelle revisioni tra pari?

Qual è il modo migliore per influenzare il tuo team per implementare più best practice durante l'SDLC?


2
@Haylem - Penso che la modifica originale che ho apportato fosse migliore. Se il titolo è uguale alla prima frase, qual è il punto del titolo?
BlackJack,

1
@ Black Jack Ho riportato il tuo titolo e perfezionato la domanda un po 'di più. Penso che tutti e tre siamo stati sorpresi a calpestare lo stesso post nella cronologia delle modifiche. Dovrebbe essere buono ora.
Thomas Owens

4
SE non è un posto adatto per il tuo capo. Tutti abbiamo dei capi e la maggior parte di noi ha qualcuno nella catena di comando che pensano non appartenga a questo (non io penso che siano fantastici / succhia). Ranting di loro qui non serve a niente.
SoylentGray,

1
@Chad: Mentre sono d'accordo con tutto quello che hai detto, non sono del tutto sicuro che l'OP intendesse lamentarsi (direttamente).
haylem,

2
@Chad: l'ho letto e mentre capisco la tua reazione, Jitendra non dice che tutto ciò che ha fatto è stato correggere il codice delle persone. Ma sarei d'accordo con le tue argomentazioni - e con alcune altre risposte - che fornire funzionalità per prime potrebbe essere di maggiore importanza di un prodotto incompiuto con una qualità perfetta. Nessuno dovrà mantenere un prodotto che non vedrà mai la luce perché è stato ucciso presto o è morto morto.
haylem,

Risposte:


32

No, otterranno rispetto solo dal proprietario del progetto del momento.

Saranno spazzati via per anni da:

  • futuri manutentori,
  • futuri tester,
  • futuri proprietari di progetti,
  • futuri manager,
  • e praticamente chiunque sia coinvolto con la base di codice in futuro.

Potrebbero anche ottenere lo stesso trattamento da:

  • gli attuali tester
  • gli attuali scrittori di documentazione tecnica.

@Ivan: grazie. Il pensiero a lungo termine vince sempre.
haylem,

@haylem - Sono d'accordo con te perché le persone cambiano rapidamente lavoro. così un codice migliore sarà utile per i nuovi iscritti per capire rapidamente il codice
Jitendra Vyas,

Tutto vero, ma a causa della loro esibizione saranno a lungo elevati rispetto a quei peoni che vivono il dolore che è rimasto. Triste ma vero!
anon

6

Falsa dicotomia: le qualità sono ortogonali.

                Alta qualità Bassa qualità

Redditizio ECCEZIONALE ECCEZIONALE

Iffy non redditizio PRIMO FUOCO

5
Iffy è migliore o peggiore di Sketchy?
HLGEM,

1
@HLGEM: redditizio è sempre meglio di non redditizio.
Donal Fellows,

che ignora i costi futuri creati dalla qualità imprecisa
Rudolf Olah,

1
Assegnare redditività esclusivamente sul retro dello sviluppatore è una semplificazione eccessiva. Che ne dici di gestione del prodotto, infrastruttura di implementazione? Non hanno anche un ruolo da svolgere nella redditività?
David

5

No. Le migliori pratiche sono le migliori perché, per definizione , aiutano a portare a termine i progetti in modo più corretto, in meno tempo, con una modifica più rapida lungo la strada, quindi ignorarli è garantito per ridurre i profitti. Ovviamente, i tuoi manager potrebbero prescrivere pratiche che ritengono migliori, ma in realtà non lo sono, oppure potrebbero valutare erroneamente ciò che i clienti pagheranno e cosa no - quindi tutte le scommesse sono disattivate.

Gli standard di codifica sono più difficili; è possibile prescrivere troppi dettagli ai programmatori, il che porta a una riduzione dell'efficienza. Ma con l'esperienza diventa abbastanza facile dire utili linee guida sulla micro-gestione della ritenzione anale, quindi lo stesso vale: le migliori pratiche effettive valgono sempre la pena, di solito le pseudo-migliori pratiche.

L'ottimizzazione del codice di solito non vale la pena, a meno che tu non abbia misurato i tuoi colli di bottiglia, confermato che è necessaria un'ottimizzazione e misurato che il tuo trucco intelligente soddisfa effettivamente la domanda di preformance. Altrimenti (che è principalmente) non vale la pena farlo, e quindi non ottimale.


6
Le migliori pratiche non aiutano a realizzare correttamente tutti i progetti in meno tempo. Sono semplicemente cose che sono state osservate per funzionare bene sulla maggior parte dei progetti per la maggior parte del tempo.
Thomas Owens

2
L'adesione cieca alle "migliori pratiche" o al modo migliore dichiarato da chiunque di fare le cose è nel processo di sviluppo ciò che la codifica di culto del carico è nel processo di codifica. Devi essere in grado di capire cosa significa una pratica, se è effettivamente la cosa migliore nella tua situazione e, in caso contrario, cosa dovrebbe sostituirla.
Blrfl,

5

Sono d'accordo con gli sviluppatori che non si preoccupano dell'ottimizzazione e delle pratiche del codice? No.

Fanno il lavoro che devono fare? Sì.

Un'azienda è fare soldi, e l'unico modo per fare soldi è rilasciare prodotti. Questo di solito significa che i progetti hanno orari rigidi, il che significa che potrebbe essere il modo migliore per fare qualcosa che potrebbe non essere il modo più veloce per fare qualcosa.

Anche se non sono d'accordo con questo stile di sviluppo, può essere considerato rispettabile dall'azienda se i prodotti vengono rilasciati.


Mi occupavo molto dell'ottimizzazione del codice nel mio ultimo lavoro, ma i miei colleghi sviluppatori non si prendevano cura ma hanno fatto più progetti di me e quando ho parlato con il project manager ha detto che il Cliente vuole il progetto in tempo e non vede mai come è stato scritto il codice
Jitendra Vyas,

1
@Jitendra - Se passi tutto il giorno a ottimizzare le cose che sono già state scritte e non ottieni nuove funzionalità, non sarei felice. A meno che l'ottimizzazione non ti dia qualcosa oltre a essere un numero inferiore di righe e caratteri nel codice sorgente, non stai realizzando nulla.
SoylentGray,

3
@Jitendra - Non ho detto che non è così. E scrivere il tuo codice in modo leggibile è fantastico. Andare in giro a 'riparare' l'aspetto del codice di altre persone quando si hanno compiti propri non lo è.
SoylentGray,

1
@Chad -Non si tratta di riscrivere il mio codice o correggere il codice di altre persone, ma sta per scrivere il codice al primo tentativo con l'indentazione appropriata per una buona leggibilità, commenti adeguati per il futuro sviluppatore e l'utilizzo delle migliori pratiche che rendono riutilizzabile il codice e tutto richiede tempo, quindi scrivere il codice di disordine che solo lo sviluppatore originale può capire. Un buon codice richiede sempre tempo.
Jitendra Vyas,

4
@Ivan: ho avuto un'esperienza diretta con questa mentalità. Va così. La società avvia un progetto greenfield. Hotshot Developer X mette insieme le cose il più rapidamente possibile, usando una grande quantità di ctrl + ce ctrl + v. Il prodotto viene lanciato in un ordine molto breve. La società è entusiasta di Developer X. Vengono segnalati bug e richieste di funzionalità. Developer X non riesce a tenere il passo e viene licenziato / passa al lavoro successivo. I prossimi 3 anni di sviluppo sono una porta girevole di nuovi team di ingegneri che non possono fare progressi e la società X perde tutti i vantaggi di mercato che una volta aveva.
Greg Burghardt,

4

No, e troverei il percorso più veloce lontano da detta compagnia che apprezza quei vizi.


2
+1 per essere breve, al punto e corretto. Un'azienda a cui non interessano gli standard di qualità è stupida, ignorante o una truffa.
Wayne Molina,

3

Sì e no, che è un po 'appetitoso ma è una buona pratica e non una pratica perfetta. Idealmente dovresti seguirli costantemente, ma ci sarà sempre una situazione in cui l'azienda vuole mettere le sue esigenze prima che i tuoi prodotti abbiano bisogno.

Sarai odiato dai manutentori ma amato dal tuo capo.


3

Le buone pratiche sono un po 'come il buonsenso, tutti concordano sul fatto che tutti dovrebbero conoscerlo fino a quando due persone non inizieranno a discuterne in dettaglio. Non esistono due persone completamente d'accordo sulla definizione e non esiste una fonte logica di verità che si applica a tutte le situazioni.

Stai scrivendo il sistema di guida per un satellite spaziale (probabilmente non lo sei)? Quindi Hell In questo tipo di lavoro non è mai accettabile un codice di scarsa qualità / prestazioni.

Stai scrivendo un sito Web usa e getta per una spinta di marketing di una volta (probabilmente non lo stai facendo o non avresti fatto la domanda, ma è più probabile del satellite)? Quindi diavolo Sì, porta quella lanugine fuori dalla porta con tutti i mezzi necessari per rispettare la scadenza, il prossimo direttore marketing probabilmente probabilmente farà qualcos'altro con un'altra società. Quello che fai non è arte o scienza - fatti pagare.

Tutto il resto: negoziabile, soprattutto finché lo sviluppatore è agganciato per il supporto iniziale.

Fino a quando si verificherà la seconda venuta di qualunque essere santo che preferisci e definirà le pratiche di sviluppo in modo miracoloso, ci sarà spazio significativo per il dibattito su qualsiasi progetto non direttamente responsabile delle decisioni di vita e di morte che non lo è così insignificante da essere usa e getta.

Tutto al di fuori delle migliori pratiche etichettate critiche per la vita è in genere più simile alla politica aziendale, alle specifiche del cliente o all'opinione personale. Molti di loro sono opinioni personali su cui molte persone sono attualmente d'accordo, ma ciò non lo rende una guida immutabile per tutte le situazioni.


2

Quanti soldi fanno per l'azienda sono discutibili. Se c'è un livello di rivisitazione del codice in questione, i costi di manutenzione aumenteranno e qualcuno non sarà contento. Gli alti costi di manutenzione a lungo termine sono più costosi rispetto a quelli eseguiti correttamente in anticipo.

Quanto rispetto ottengono è probabilmente specifico del caso. Ad un certo punto, tuttavia, qualcuno noterà.


2

Non preoccuparsi di queste cose può rendere l'azienda più soldi a breve termine, ma potrebbe costare più soldi a lungo termine su più correzioni di errori e codici di manutenzione.

A volte può essere necessario un lavoro rapido e sporco se c'è una fretta con aziende concorrenti per ottenere prodotti simili sul mercato allo stesso tempo, ma i costi futuri di tali azioni dovrebbero essere considerati attentamente.


2

Tutto dipende dal cliente.

Un cliente a cui piacciono le cose veloci e sporche (e di solito più economiche) non si preoccupa che presenterà problemi in futuro.

Pensa alla costruzione dell'armadio.

Alcuni pagheranno e apprezzeranno gli armadi su misura di buona qualità. A loro non importa il costo aggiuntivo di cassetti in legno e hardware di prima qualità. A loro non importa ci vorrà una settimana o anche un mese in più per costruire e installare le cose.

Molti non lo faranno. Molti opteranno per le cose economiche prodotte in serie di pannelli truciolari che si ottengono da un grande negozio di scatole. Li vogliono installati in 2 giorni. Un piccolo spazio qua e là è perfettamente accettabile. A loro non importa che cadranno a pezzi tra 10 anni.

Quindi, se i tuoi manager lodano lo sviluppatore che lo fa veloce e sporco, allora i tuoi clienti non vogliono l'alta qualità o i manager mentono ai clienti.

Solo il tempo lo dirà. Fai quello che vogliono i manager o trova un altro lavoro.


1
ovviamente il software può essere supportato, quindi fare entrambe le cose potrebbe essere un'opzione. cioè saremo i primi a commercializzare con v1 nonostante il problema noto, tuttavia i soldi che guadagniamo da questo ci consentiranno di risolvere i problemi in futuro, ecc.
jk.

1

No, mai. L'ottimizzazione del codice IMO, le migliori pratiche, l' abilità effettiva sono le cose PIÙ importanti da avere in una base di codice; senza di essa il tutto si trasforma in fango e viene tenuto insieme con del nastro adesivo. È un design insostenibile. È come ignorare un tumore perché è piccolo e ora sei in salute; certo che ora sei in salute ma dopo qualche anno diventa terminale perché l'hai ignorato per così tanto tempo.

Non solo non sono d'accordo con gli sviluppatori che non si preoccupano di queste cose, ma ho zero rispetto per l'avvio. Un modo infallibile per farmi considerare di lasciare un'organizzazione, non importa da quanto tempo sono lì, è essere circondato da una squadra in cui sono l'unica persona (se non l'unica in tutta l'azienda) a cui importa sui concetti di ingegneria del software adeguati.


1

Una buona lettura: http://www.joelonsoftware.com/items/2009/09/23.html

Ma IMHO, le migliori pratiche di un uomo sono un altro incubo per uomini. E ogni base di codice non banale sarà un incubo per un estraneo.

Qualunque cosa tu pensi, non essere un cretino a riguardo.

EDIT: non sto difendendo nessuna delle posizioni, a seconda del compito che potrei appoggiare ad entrambe le parti.


Dipende dall'IMO "best practice". Cose come avere test (non necessariamente TDD ma test automatizzati in generale), seguendo i SOLIDprincipi, usando schemi di progettazione, usando astrazioni / interfacce sono la base che dovrebbe fare qualsiasi sviluppatore competente.
Wayne Molina,

Per quanto mi piacciono i test ... non sono basali.
CaffGeek,

1

Meglio per l'azienda? Dipende.

Per una startup con fondi limitati, fallo e fallo là fuori - non importa se è disordinato, che può essere risolto in seguito quando ci sono più risorse.

Per un prodotto maturo in cui ci sono molti utenti che si affidano alla qualità del software, tutto dovrebbe essere fatto "correttamente".

Meglio per il singolo sviluppatore? In realtà è irrilevante. Fai semplicemente lo stesso di quello che fanno i tuoi colleghi e lascia che il management gestisca le conseguenze, non è il tuo lavoro. Se stai aggiustando la merda di altre persone tutto il tempo, sarai visto come lento e sarai quello che è ancora lì mentre gli altri sono stati promossi sopra di te. Vai con il programma o esci mentre puoi se è così male.


"non importa se è disordinato, che può essere risolto in seguito quando ci sono più risorse." In teoria, certo. In pratica ciò non accade mai perché una volta che spingi fuori qualcosa sei bloccato a mantenerlo e ad aggiungere nuove cose, quindi non hai mai le risorse per tornare indietro e ripararlo.
Wayne Molina,

Non sono d'accordo. Certamente è successo in molti progetti web di dimensioni medio-piccole in cui sono stato coinvolto, e ci sono anche molti altri casi famosi di aziende che tornano indietro e rifattorizzano la loro base di codice in modi importanti - ad esempio Twitter passando da Ruby a Scala, Facebook e la loro ricerca di ottimizzare il linguaggio PHP, ecc. In effetti, sono abbastanza sicuro che la maggior parte delle app mature di successo (web e desktop) che utilizziamo ogni giorno non hanno molto codice in comune con i loro antenati v1.
Timh,

Forse, ma in sei anni di sviluppo aziendale ho trovato esattamente una società che è stata in grado di riformattare il codice nel tempo; sempre altro non ha mai avuto risorse da dedicare alla "correzione di ciò che non è rotto" anche quando il codice è ingestibile.
Wayne Molina,

0

Dipende dallo sviluppatore e dal progetto / situazione.

Tempi straordinari richiedono misure straordinarie.

Quindi, se ho bisogno di qualcosa di consegnato ora, e qualcuno è un'ingegneria java di livello enterprise che sfrutta non meno di 14 dei più recenti framework di parole d'ordine mentre un semplice script Python farà il lavoro è peggio dello sviluppatore che taglia gli angoli e pensa codice buggy funzionerà in tempi normali.

Parte dell'essere uno sviluppatore è essere flessibile. Non dovresti essere schiavo dei tuoi strumenti e seguire ciecamente le pratiche: ci sarà sempre un caso in cui ti mancheranno. Sapere quando infrangere e piegare le regole è una delle cose che derivano da molta esperienza e sono preziose.

Nel tuo caso, se offre più valore di te perché la velocità è fondamentale, anche dopo aver preso in considerazione l'aumento dei costi di manutenzione lungo la strada, merita una compensazione migliore. Dall'altro lato - se sei bloccato con la pulizia del suo pasticcio - hai un problema di comunicazione con la gestione.

È caso per caso. Tranne lo stile di codifica - non ci sono scuse lì.


0

Mi dispiace ma dovrei essere in disaccordo con la maggior parte delle risposte a questa domanda, ad eccezione di quella in alto.

Il valore principale del software è che è flessibile.

Non penso che dovresti riscrivere il codice di altre persone senza giusta causa. Se devi modificare un modulo per qualsiasi motivo per implementare la tua funzione, ora sei, nel bene e nel male, il proprietario di quel modulo. Cambialo, riscrivine un po ', riscrivi tutto.

Non produrre mai bassa qualità in termini di flessibilità mai. Non esiste nulla come buttare via qualcosa nel software. Se il cliente dice che è temporaneo e che non ne avrà bisogno dopo una certa data e non si preoccupano della qualità, dì "cattivo" o scrivi per iscritto che il codice non verrà modificato da te o da nessun altro programmatore una volta viene distribuito alla produzione o hai il diritto di denunciarli.

Il presupposto più scarso che vedo in alcune di queste risposte è che un codice pulito in qualche modo riduce la velocità di sviluppo. Per qualsiasi progetto di qualsiasi sostanza (più di 6 ore di lavoro) il codice pulito accelera lo sviluppo a lungo termine (qualcosa di più di una settimana). L'ho visto più e più volte.

Un codice di qualità scadente è irrispettoso nei confronti della professione e dei colleghi. Scusa ma vero.

Quindi no alla scarsa qualità, in termini di flessibilità, mai!


1
Mai dire mai. Intere app vengono gettate nel cestino. Le conversioni di dati da un sistema a un altro vengono utilizzate una volta e marciscono.
JeffO,

Mantenere il codice pulito spesso riduce leggermente la velocità di sviluppo a breve termine . La parte importante è che il codice impuro provoca una riduzione molto maggiore a lungo termine. Vedo alcune altre risposte che lo menzionano.
Ixrec,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.