Tentazioni dannose nella programmazione


97

Solo curioso, che tipo di tentazioni nella programmazione si sono rivelate davvero dannose nei tuoi progetti?

Come quando senti davvero l'impulso di fare qualcosa e credi che andrà a beneficio del progetto, oppure ti inganni a credere che lo sia, e dopo una settimana ti rendi conto di non aver risolto alcun problema reale ma di crearne di nuovi o , nel migliore dei casi, ha soddisfatto la tua bestia interiore senza alcun impatto visibile.

Personalmente, trovo molto difficile non refactificare il codice errato. Lavoro con un sacco di codice legacy scadente e ci vogliono alcuni respiri profondi per non toccarlo quando non ho test per dimostrare che il mio refactoring non rompe nulla.

Un altro demone per me nell'interfaccia utente, posso letteralmente passare ore a cambiare il layout dell'interfaccia utente solo perché mi piace farlo. A volte mi dico che sto lavorando sull'usabilità, ma la verità è che adoro spostare i pulsanti.

Quali sono i tuoi demoni programmatori e come li eviti?


19
Trovo divertente che nessuno sia stato in grado di rispondere alla seconda parte della tua domanda - "[e] come si evitano?".
Craige,

3
Qualcuno ha notato che questa è stata la domanda principale su SE tutto il giorno.
msarchet,

+1 per "... passare ore a modificare il layout dell'interfaccia utente ..." Cado troppo spesso in quella trappola.
settimane

Risposte:


67

La generalizzazione prematura è il mio grande bugaboo; invece di risolvere il problema in prima e in attesa fino a quando c'è una reale necessità di risolvere per il caso generale, vado sempre dopo il caso generale in anticipo e vento fino a scrivere un sacco di codice che è più complesso di quello che deve essere.

Aggiornare:

Vedi " Sin # 1 - Generalizzazione prematura " per una descrizione approfondita.


6
Lo odio quando gli astronauti dell'architettura lo fanno!
ozz,

13
Oh, la gioia delle fabbriche metafattive :(

+1 "Uno studio di grandi designer ha scoperto che erano tutti bravi ad anticipare il cambiamento" (Codice completo 2). È bello poter dire che tipo di cambiamento è probabile. Quindi puoi decidere se c'è qualcosa da guadagnare risolvendo il caso più generale all'inizio - se risparmierebbe tempo in seguito. A volte non ne vale la pena, sarebbe altrettanto semplice modificare il codice in un secondo momento.
MarkJ,

1
Hai mai sentito parlare del principio YAGNI (Non ne avrai bisogno) ?
Oscar Mederos,

1
Questo. Dò la colpa al fatto che la creazione di un codice carino, generalizzato e riutilizzabile è molto soddisfacente, soprattutto se il problema in sé non è molto impegnativo e / o è solo una rivisitazione di ciò che hai fatto prima. Caso in questione, operazioni di database CRUD generiche (UI, rispondere all'azione dell'utente, fare qualcosa con un DB, thar).
Cthulhu,

197

"Torneremo su questo e lo ripareremo più tardi. Abbiamo solo bisogno che funzioni ora!"


16
Questo è il diavolo assoluto.
alesplin,

6
Ti darei +100 per questo se potessi. "Più tardi" non succede mai. Fai le cose giuste la prima volta o per niente.
quick_now

12
non è questo il complemento delle ore passate a refactoring del codice errato? Possiamo dividere il mondo tra i programmatori che "lo risolveranno in seguito" ma non lo fanno, e i programmatori che cercano di farlo bene la prima volta, quindi passano ore a "refactoring di codici errati".

6
riformattalo in "Torneremo e sistemeremo questa prossima iterazione " e suona molto più strutturato
Chris S,

4
È necessario fare questo. Se passi tutto il tuo tempo a renderlo perfetto, non verrà mai spedito. Termina il progetto, quindi lucidalo.
Zan Lynx,

105

La scadenza è talmente lontana, ho più che abbastanza tempo per farlo, quindi perché non passare un po 'di tempo a navigare in rete?


72
sostituisci "web" con "programmers.stackexchange.com" :)
davidhaskins,

1
C'è qualcos'altro sul web che vale la pena leggere? Avevo dimenticato che c'era qualcos'altro!
James McLeod,

3
alias 'Damn you, Minecraft'
johnc,

1
@david, questo è solo il punto di partenza sul web - la domanda è quanto lontano arrivi ...

Direi che non è più così valido a causa di Agile.
Vartec,

103

"Questo è solo un codice di prova del concetto da buttare via. Una volta che gli piace, lo farò davvero bene."


13
Questo si chiama Rapid Application Development; e non funziona mai in un ambiente aziendale. :)
John Kraft,

12
È divertente che per me sia il contrario: non riesco proprio a farmi scrivere codice da buttare via anche quando è esattamente ciò che è richiesto.
Dan,

6
Lavoro in finanza e RAD sta ancora andando forte, soprattutto roba VBA / Excel. C'è un talento in questo, però, RAD non deve significare sciatto.
Ian

5
E a volte l'applicazione che hai passato due anni a perfezionare finisce per essere un codice da buttare via perché qualcuno più in alto nella scala ha deciso "oh, non possiamo farlo" o qualche altra versione di "non importa".
PSU

12
Questo. Io: "Questa è solo la mia prova di concetto. Se ti piace, scriveremo la versione di produzione." Manager: "La tua versione funziona, spediamola!" Io: "Beh, non copre tutto l'uso che hai già spedito, vero?"

74
  1. Parte del refactoring del codice qualche giorno prima del rilascio.
  2. Internet: la più grande distrazione di tutte.
  3. Nuova tecnologia : non riesco a togliermi le mani dalla nuova tecnologia.
  4. Ottimizza: ottimizza, ottimizza. .. e altro Ottimizza
  5. Perfezione : non sono mai stato soddisfatto del codice.
  6. TODO: Mancanza di tempo todos che non sarà mai fatto.
  7. Stima del tempo: molti PM non lo considerano "stima". Prendono in realtà.
  8. Promesse: fare troppe promesse.

1
Una volta ha lavorato a un progetto che aveva 100 persone in una grande stanza e solo 2 PC condivisi avevano Internet. La produttività è stata molto alta. La direzione ha dato a tutti Internet e si è chiesta perché la produzione lavorativa sia dimezzata.
quick_now

2
Per quanto riguarda la stima del tempo ... così tanti manager lo prendono come punto di partenza nella negoziazione (come la contrattazione per un prezzo). Quelli che lo considerano un fatto fuorviato ma in realtà al di sopra della media ...
dbkk

@quickly_now Il taglio della rete probabilmente funziona per attività banali come l'inserimento di dati o correzioni di routine, in cui non è necessario cercare nulla. Per molte cose fuori dal comune (ad es. Cercare documenti API / codice di esempio), Google è tuo amico - ci vuole 5 volte più tempo per capirlo da soli. Inoltre, se le persone non sono motivate e vogliono essere distratte, troveranno dei modi.
dbkk,

@dbkk - sì fino a un certo punto. Era tutto in Ada, non c'erano API da cercare, era su hardware specializzato e classificato in sicurezza nazionale. Inserire anche macchine non classificate connesse a Internet in quell'ambiente è stato un incubo per la sicurezza.
quick_now

55

Caduta in preda al tentativo di costruire tutto internamente, quando ci sono quadri e librerie esistenti.


6
A volte i framework e le librerie esistenti sono contrassegnati da Verboten in grandi lettere rosse dall'IT legale.
Christopher Mahan,

22
E, naturalmente, la tentazione opposta: usare un framework o una libreria sconosciuti e supporre che farà ciò di cui hai bisogno e tutto andrà per il meglio.
Carson63000,

"ma ci vorrà solo una settimana per scrivere e il nostro framework farà esattamente quello che vogliamo, quello gratuito online è probabilmente pieno di bug"

2
@Christopher: Quindi sarebbe un buon motivo per reimplementare (o trovare una libreria diversa con licenza accettabile). Ma troppo spesso il motivo della reimplementazione è proprio NIH ...
Donal Fellows,

@Carson: +1 :-)
Macke,

48

I miei demoni ricorrenti: ottimizzazione precoce e ingegnerizzazione eccessiva.

E ancora non riesco ad evitarli al 100% ...


10
+1 per eccesso di ingegneria. Una volta ho scritto un intero "framework di configurazione" con "adattatori di parametri di configurazione" per file .ini, file XML, tabelle di database e socket di rete (perché tutti vogliono ospitare un servizio web di configurazione, giusto?)
TMN

8
Ingegneria eccessiva prematura?
Christopher Mahan,

@Chris si applica anche alla "sovrastima prematura". È stato menzionato anche in altre risposte . So che è uno dei miei divieti.
Matthew Scharley,

Che ne dici di mega-ingegneria prematura ottimizzata ...
Newtopian,

4
Questo è mio. Metto la colpa nella gestione dandomi scadenze libere per il regno / lontano futuro e non dandomi scadenze per componenti specifici.
Cthulhu,

46

Stime eccessivamente ottimistiche

Quando il tuo manager ti sta fissando, e senti la sensazione di bruciore di dare una stima più bassa di quella che ti sta dicendo l'intestino ... non farlo!

Dopo tutto, il tuo intestino è probabilmente già troppo basso!


13
Quando ti chiedono se ci vorrà davvero tanto tempo, basta dire di sì e poi sedersi in silenzio fino a quando non sentono l'imbarazzo ...
PeterAllenWebb

4
Il mio professore universitario una volta mi disse di "Calcola la tua migliore stima, quindi raddoppia". Finora ha funzionato per me.
zzzzBov,

2
In alternativa, prova l' approccio SMBC .
detenere il

4
Uno dei miei vecchi capi ha triplicato le stime degli sviluppatori, poi ha negoziato per raddoppiare con i clienti. I clienti pensavano di avere un accordo, gli sviluppatori avevano il tempo di cui avevano bisogno anche se non lo sapevano. Win-win!
DaveE,

2
La pianificazione basata su prove potrebbe aiutare con questo problema: joelonsoftware.com/items/2007/10/26.html
Rei Miyasaka,

33

Usare una tecnologia / strumento / linguaggio nel tuo progetto semplicemente perché l'hai appena imparato.

Per provare a dimostrare quanto sei bravo uno sviluppatore.

Per considerare il codice che hai scritto come tuo.


Se solo potessi votarlo ogni volta che lo facevo. Fortunatamente, metà delle soluzioni si è rivelata piuttosto buona. La metà no.
Dan,

O uno che non hai ancora imparato. Basta non dimenticare di legare gli speroni perché sarà un lungo viaggio.
Evan Plaice,


31

La peggior tentazione:

Oh, beh ... immagino che un piccolo trucco / hack / correzione sporco non farà male.

Indovina, fa male. :)

vai a


11
"Correzioni gateway"
Mark C

4
L'uso di una gotodichiarazione provocherà un attacco rapace.
Max

1
@Maxpm: buona riflessione! Incluso.
Goran Jovic,

1
@Mark C, cos'è una correzione gateway? Il mio gøøgle-fu non è abbastanza buono.

1
@ Thorbjørn Ravn Andersen: en.wikipedia.org/wiki/Gateway_drug_theory
Jimmy,


23

Creep

Crea un piano, seguilo e distribuiscilo. E poi torna indietro e aggiungi le cose che la gente chiede.

L'ho visto ancora e ancora. Ti siedi, elabori il progetto e inizi a scrivere codice. Gli utenti sentono alcune sciocchezze confuse sul fatto che la loro funzione preferita sia "mancante" e iniziano a fare pressioni per questo. Il tuo capo ti chiede di aggiungerlo all'undicesima ora, commette fallo sullo schieramento, introduce bug ovunque e 3 mesi dopo, una volta sistemati tutti, ti viene chiesto di rimuoverlo, perché nessuno può capire perché lo metti quella schifosa caratteristica retrò in primo luogo! Non potresti dire che il resto del design lo ha reso inutile?


Lasciare le specifiche sbloccate e aperte come concessione perché il primo PM (ora licenziato) non sapeva nulla dello sviluppo del software e progettò un programma di rilascio completamente irrealistico. La peggior idea di sempre.
Evan Plaice,

20
  1. Aggiungi altre funzionalità

  2. La competizione ha questa caratteristica. Quindi questa è una caratteristica indispensabile, quindi più programmazione che analisi di strategia, posizionamento, ecc.

  3. La competizione NON ha questa funzione. Quindi questa è una caratteristica differenziante quindi più programmazione che analizzare strategia, posizionamento, ecc.

  4. Risolvere un problema aziendale con più programmazione. ad esempio, una migliore esperienza nell'amministrazione del server linux su cui è ospitato il tuo sito web non può essere acquisita attraverso la programmazione di più funzionalità. A volte devi solo imparare a risolvere il problema piuttosto che ricodificare tutto in C # .Net

  5. Risolvere un problema di marketing con più programmazione. ad esempio, abusando del concetto di mucca viola di Seth Godin che stai risolvendo indirettamente un problema di marketing programmando più funzioni nel tuo prodotto per renderlo una "mucca viola". A volte, è solo un mostro mutante.

  6. Risolvere un problema di produttività con più programmazione sostenendo a te stesso che il tempo impiegato per scrivere questo script verrà salvato in poche ore in futuro invece di programmare cose veramente importanti

  7. Pianificazione del codice ma non ancora del codice perché si desidera "farlo correttamente"

  8. Codificare una versione sporca e promettere che lo "migliorerai in seguito" ma non tornerai mai più a "migliorarlo"

  9. Non fare un mockup o una sitemap perché è "così problematico". Posso solo fare lo screenshot delle pagine dei concorrenti per i modelli e la sitemap per disegnare a mano libera "dopo" che non lo è mai. E poi vai direttamente alla programmazione della prima pagina che visualizzo nella mia mente.

Confessione: ho commesso personalmente errori 1, 3, 7, 8. Ho anche commesso 2, 4, 5, 6 ma spesso mi sono illuso di non averlo fatto.

Attualmente sto rimediando 9.

EDIT Non ho capito che la domanda ci impone di mettere soluzioni.

1) Aggiungi altre funzionalità Solo non farlo. Collabora con la tua azienda, il marketing, i fondatori, i consulenti, ecc. E spoglia la tua applicazione in una sola cosa.

Vai a leggere su Twitter, Groupon , ecc. Su come riducono le cose a una sola cosa che ha portato al loro successo.

Se pensi che funzioni solo se vuoi costruire grandi aziende, ripensaci. Ctrl + F per questa riga "Più funzionalità aggiungo al software, peggio vende. (Questo è, inutile dirlo, altamente non intuitivo per la maggior parte degli sviluppatori di software.)" In questo link

2) La competizione ha questa caratteristica. Quindi questa è una caratteristica indispensabile

Vedi soluzione 1

3) La competizione NON ha questa funzione. Quindi questa è una caratteristica differenziante

Vedi soluzione 1

4) Risolvere un problema aziendale con più programmazione.

Se hai bisogno di assumere qualcuno per insegnarti, dare una consulenza o farlo per te e poi documentare come lo ha fatto, in modo che tu possa farlo da solo la prossima volta. FALLO E BASTA!! Non riscrivere il codice, non passare GO, non raccogliere $ 200.

5) Risolvere un problema di marketing con più programmazione.

Se le persone non capiscono cosa stai vendendo, è un problema di marketing. Torna alla soluzione 1 e fai perno.

6) Risolvere un problema di produttività con più programmazione

Aspettare.

Aspetta di sentire che la tua produttività ha sofferto di un particolare problema di produttività per un periodo superiore a 2 settimane e che ragionevolmente accadrà per altre 2 settimane.

Ora, valuta la quantità di tempo impiegata per programmare uno script per risolvere questo problema. Ricorda di prendere la tua stima peggiore e moltiplicare per 2.

Moltiplica il tuo preventivo per la tariffa oraria.

Ora rivedi le soluzioni alternative: esternalizzare, acquistare una soluzione pronta all'uso, non fare nulla al riguardo, ecc

Scegli la soluzione più economica.

Attenersi ad essa.

7) Pianificazione del codice ma non ancora del codice perché si desidera "farlo correttamente"

Fai esercizio. Sentirai una scarica di endorfine che motiveranno il tuo culo e ti faranno pianificare di agire. Lo so perché ho appena fatto panchine 5x5 e squat 5x5.

8) Codificare una versione sporca e promettere che "migliorerai in seguito" ma non tornerai mai più a "migliorarlo"

Imposta un file system tickler in GTD. e follow-up aggressivo. Segui tutte le promesse a te stesso e agli altri.

9) Non fare un mockup o una sitemap perché è "così problematico".

Vai a spendere $ 75 su un'edizione desktop di malsup di balsamiq. Lo so perché l'ho comprato 3 settimane fa. Mi ha fatto rifare i miei modelli perché mi sento un artista, un architetto e un visionario tutto in 1, anche se i miei disegni nel mondo reale fanno schifo. Il carattere usato in balsamiq ti ricorda inconsapevolmente che questo è solo un modello, non incastonato nella pietra che ti aiuta in RAD.

Fine EDIT


+ Ho dato questa risposta, ma ho trovato un po 'difficile da leggere. Non capisco davvero il contesto dei primi 9 punti. Ti dispiacerebbe chiarire? Comunque, bel lavoro.

@MattFenwick Ciao, grazie per il tuo +1. I punti 1-5 di solito si applicano nello scenario di creazione di un prodotto da vendere, sebbene sia possibile applicarlo anche a scenari in cui la tendenza a trovare la risposta migliore ti porta a fare ricerche approfondite sull'arte nota. Ad esempio, nella ricerca.
Kim impila il

I punti 6-9 riguardano maggiormente le tendenze nevrotiche di un programmatore. Ho letto da qualche parte (non riesco a trovarlo) che un designer avrebbe sempre affrontato qualsiasi problema con una soluzione progettuale; un marketer con una soluzione di marketing; e un programmatore con una soluzione di codice. Sì, il temuto "Quando hai un martello d'oro, tutto ciò che vedi sono la sindrome delle unghie". Questo è particolarmente evidente al punto 6) Risolvere un problema di produttività con più programmazione
Kim Stacks il

@MattFenwick scusa se ti sei confuso con il mio nome. Ho cambiato il mio soprannome dopo aver scritto questa risposta. Vedo che il tuo background è più nella ricerca. La mia risposta deriva in gran parte dalla mia esperienza nello sviluppo di soluzioni per vendere. Ma sono sicuro che ci sono alcune somiglianze tra la mia linea di lavoro e la vostra, dato che entrambi programmiamo.
Kim impila il

17

Un paio di birre mi aiuteranno a lavorare meglio e più a lungo.


11
Aspetta ... vuoi dire che non lo fa? ( Xkcd.com/323 )
Craige

4
@Craige: dopo 21 anni di esperienza con il bere e 20 anni di esperienza come ingegnere informatico professionista, sto ancora lavorando alla parte di calibrazione.
Adam Crossland,

4
@adam, hai impiegato un anno a bere per diventare un ingegnere?

17
Codificare bevendo birra ti aiuta a creare social network molto popolari che varranno miliardi tra un paio d'anni. È vero, l'ho visto in un film.
Janosrusiczki,

1
@Kitsched: Sì! Soprattutto se hai il design preesistente di qualcun altro da fregare.
Mason Wheeler,

16

"Sì, posso riformattare questo gigantesco pasticcio di 2000 linee di spaghetti in un giorno ..."


13
In alternativa: "il nuovo ragazzo [che non sa assolutamente nulla del software o della struttura del suo codice] non sta facendo nulla, può aggiustarlo". Punti bonus quando il ragazzo non ha mai nemmeno usato la lingua in cui è scritto il codice.
Wildpeaks

16

"Posso cavarmela senza un test per quello. È troppo difficile testarlo."

ed è il fratello cattivo,

"Devo fare un test per questo, non importa quanto sia difficile scrivere o capire."


2
Se un test è difficile da scrivere, potresti non programmarlo correttamente :)
Merlyn Morgan-Graham,

2
@Merylyn Morgan-Graham, abbastanza vero. Ma ci sono alcune aree, come la concorrenza, che è semplicemente più difficile da testare.
Wayne Conrad,

1
@Merlyn: se ti ritrovi a scrivere un simulatore di istruzioni in modo da poter forzare un cambio di contesto nei posti giusti, allora probabilmente sei andato troppo oltre nei tuoi test di concorrenza. :)
Zan Lynx,

1
@Zan: sono d'accordo - nel momento in cui è richiesto, respingo gli sviluppatori e cerco di indurli a riformattare il loro codice e mi permetta di inserire beffe. Quindi lavoro contro linguaggi di alto livello in cui guardiamo a Big-O, ottimizziamo i colli di bottiglia, devo pensare alla concorrenza principalmente per l'integrità dei dati piuttosto che alla velocità non elaborata e spedire (e spesso nessuno di questi perché è semplicemente abbastanza veloce dal scatola).
Merlyn Morgan-Graham,

15

Procrastinazione e stima ottimistica dei compiti sono i miei peccati più grandi.

Stretching, push-up o pull-up (o qualsiasi altro esercizio fisico) per il primo e umore pessimistico prima di dare una stima per il secondo.


Chiarimento ... Con "stima ottimistica del compito" intendi "sindrome della merda facile", giusto? :)
Evan Plaice,

@Evan Plaice - esattamente. Come "oh, è così banale" e poi cerca su google ogni lettera del tuo codice dopo aver iniziato a scrivere codice.
Nikita Barsukov,

13

"È molto più " semplice " reimplementare la funzionalità da zero piuttosto che comprendere il codice esistente."


2
Sì, c2.com/cgi/wiki?RewriteCodeFromScratch afferma che questa è una delle "Cose che non dovresti mai fare".
David Cary,

Lavorare su open source aiuta questa tendenza. Ho personalmente fissato le patch prima di incrociare gli occhi, poi sono andato avanti e ho scritto la mia implementazione solo per rendermi conto che era quasi identico alla patch (anche dopo aver migliorato / refactoring il mio codice). È divertente come funziona.
Evan Plaice,

10

Una tentazione enormemente dannosa di cui ha sofferto il progetto in cui mi trovo è l '"effetto piattaforma interna". Questo è un approccio che gli architetti, ormai lontani da tempo, hanno messo nella loro infinita saggezza, che ha creato un progetto che genera circa 20 milioni di dollari all'anno ma costa 60 milioni da aggiornare e mantenere (cifre approssimative ovviamente ma questa è la grandezza del problema).


10

NIH - Non inventato qui

Ho davvero delle difficoltà a dare a soluzioni di terze parti una buona opportunità. Tutti dovrebbero essere naturalmente scettici sulle soluzioni di terze parti che non sono state create su misura per loro, ma ho difficoltà a essere al 100% obiettivo.

Il risparmio di tempo può essere così grande che anche se 9 volte su 10 la soluzione di terze parti dovrebbe essere evitata, devo essere abbastanza obiettivo da realizzare quella che funzionerà.


1
Vedo il tuo punto e devo conviverci tutto il tempo. Sono esattamente nell'opinione opposta a volte fino al punto in cui meriterebbe una risposta proprio accanto alla tua. Tuttavia, faccio fatica a credere di poter fare meglio in una settimana rispetto a un gruppo di esperti sull'argomento che ci affronta da anni. Ovviamente devi assicurarti che le persone dietro questa terza parte siano davvero degli esperti. Una buona indagine sull'ambiente circostante del componente ha notevolmente aiutato a scegliere correttamente tra l'adozione o la codifica.
Newtopian,

1
@Newtopian il modo "corretto" è sicuramente da qualche parte nel mezzo. Il mio problema con le librerie di terze parti non è se posso fare meglio di un team di esperti con mesi o settimane di tempo, ma che raramente , forse non trovo mai una libreria che è esattamente ciò di cui abbiamo bisogno. C'è sempre l'adattamento da fare, e poi spesso trovo me stesso e gli altri a passare tanto tempo a lottare con quello che a scrivere una soluzione che è esattamente ciò di cui abbiamo bisogno.
Nicole,

Io stesso proveniente dall'estremità opposta dello spettro era solo curioso di sapere come sei riuscito a provare a raggiungere questo "solo medio", se non del tutto. Inoltre, ero curioso di sapere cosa non ti fa venir voglia di usare terze parti nel tentativo di capire cosa mi spinge a usarli perché sono sicuro che entrambi sono ugualmente dannosi per la produttività.
Newtopian,

@Newtopian la mia spiegazione sopra ha senso sul perché? Il mio tentativo di cercare di raggiungere il centro è semplice per essere più obiettivo nella valutazione e nella ricerca di soluzioni di terze parti.
Nicole,

9

Progettazione, codifica e / o test unitari sulla base di "dati campione" forniti invece di analizzare una copia del database effettivo dei clienti. La scadenza era breve e continuavano a dire che stava arrivando, ma non è mai successo. Quando è stato schierato, l'esplosione è stata spettacolare. Davvero, chi si sarebbe aspettato che un cliente avesse 3 clienti principali.

Non avvierò mai più un progetto fino a quando non avrò una copia dei dati reali .


Se non ci sono ancora prodotti, ci saranno dati da copiare?
Svish,

Se non ci sono dati, c'è sempre carta. I registri dell'azienda sarebbero di aiuto anche qui.
burnt_hand,

9

Il C'è devo essere una libreria che fa che da qualche sindrome.

strettamente legato a

Il plug-in feticcio


2
Mi sembra sempre di essere in grado di trovare la libreria che "lo fa". Il mio problema è spesso farli funzionare come pubblicizzato. :(
Ben L

Facile da trovare una libreria - Difficile trovare una libreria con buoni test unitari integrati
burnt_hand,

8

Il perfezionismo uccide; probabilmente il motivo principale per cui i progetti non hanno successo.


Immagino sia possibile che sia vero, ma per questo motivo non ho mai partecipato a un progetto fallito o addirittura in ritardo.
PeterAllenWebb,

Dipende da come definisci la perfezione e a quale livello stai mirando.
Svish,

7

Bene, a volte la programmazione mi porta alla bottiglia.


7

Riscrivere invece di refactoring.


Essere d'accordo. Se sei disposto a impegnarti per la quantità di sforzo richiesta per una riscrittura, è quasi SEMPRE meglio fare il refactoring. Ci vorrà ancora più tempo di quanto pensassi, ma stai facendo il refactoring in modo incrementale, giusto? Puoi fermarti prima che sia "perfetto".
PeterAllenWebb,

1
come corollario .... scrivere di nuovo altrove invece di ricoprire. La nostra base di codice ha così tante implementazioni diverse delle stesse cose che è impossibile ottenere qualsiasi tipo di coerenza.
Newtopian,

6

Pensare che ci debba essere un modo migliore per farlo. Non mi accontenterò di qualcosa che potrebbe essere "abbastanza buono". Non prendo niente di meno che la perfezione! Di solito questo viene evitato parlando con altri che potrebbero avere una prospettiva diversa su un problema o vedere una soluzione da una diversa angolazione.


5

Automatizzare tutto al punto da dedicare più tempo alla manutenzione degli strumenti che al lavoro effettivo.

Soluzione: proprio come con l'ottimizzazione del codice, trova prima i colli di bottiglia della produttività e solo dopo che sono stati scoperti, risolverli con una buona automazione .


Posso essere d'accordo con questo in linea di principio, ma in pratica non ho mai visto un'automazione eccessiva. Tuttavia, questa potrebbe essere solo la mia esperienza.
PeterAllenWebb,

4

Quali sono i tuoi demoni programmatori?

A parte ciò che alcuni altri hanno menzionato.

Priorità : ignorare il lavoro prioritario rispetto al progetto e lavorare prima su altre cose nel progetto perché sono più interessanti!

Come li eviti?

Con un po 'più di autodisciplina. Seriamente, autodisciplina e automotivazione per fare la cosa giusta aiutano ad evitare la maggior parte di questi "demoni".


3

Non abbiamo ancora ottenuto l'approvazione da parte del cliente, ma la scadenza si avvicina, quindi ecco alcuni suggerimenti preliminari in modo che tu possa iniziare ...

Più tardi, dopo aver finito di costruire il progetto per abbinare i comp ...

Oh, ecco le revisioni del cliente, vogliono solo cambiare alcune cose minori *

(* la funzionalità principale è completamente diversa)

Quindi continui a refactoring del codice originale, basato sul modello originale difettoso invece di ricominciare da zero perché sei sotto la pressione di una scadenza breve e presumi che quelle siano state le ultime revisioni.

Sono sempre morso da questo. È difficile evitare come sviluppatore web. Il mio miglior consiglio è di spingere per più tempo in modo da poter apportare le modifiche nel modo corretto.


2
Adotta una politica in cui non inizi lo sviluppo fino a quando non avrai la firma di un cliente.
Ben L

1
@Ben: se solo fosse sotto il nostro controllo!
sevenseacat,
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.