Come considereresti che un programmatore non è bravo in quello che sta facendo?
Se possibile ... Come dovrebbe migliorare?
Come considereresti che un programmatore non è bravo in quello che sta facendo?
Se possibile ... Come dovrebbe migliorare?
Risposte:
Quando non riescono a imparare dai propri errori e dalle revisioni tra pari.
Siamo tutti verdi ad un certo punto; tuttavia, se non stai migliorando o stai cercando di migliorare, allora sei un cattivo programmatore.
Un programmatore che non sa cosa non sa e non è interessato a scoprirlo.
Un grande segnale di avvertimento è se sono un programmatore "cult cult" - nel senso che fanno cose ma non sanno perché fanno quelle cose (è solo "magico"). Ottimo post di Eric Lippert qui .
Dall'articolo:
programmatori che capiscono cosa fa il codice, ma non come lo fa.
Un grande suggerimento per me è quando pongono a te o agli altri programmatori domande sullo sviluppo che dimostrano chiaramente di aver fatto uno sforzo assolutamente nullo per capirlo da soli.
Un corollario è quando fanno più volte la stessa domanda di programmazione indicando che non stanno interiorizzando le informazioni.
Quando impiegano molto tempo per risolvere il problema FizzBuzz.
I programmatori che si rifiutano di apprendere nuove tecnologie / lingue e insistono per attenersi a ciò che già sanno.
Addendum: (aggiungendo ciò che trattino ha detto sotto nei commenti)
Un'estensione di ciò sono le persone che conoscono un sottoinsieme delle funzionalità di alcune tecnologie ma non mostrano alcun desiderio di saperne di più. Linguaggio di programmazione, editor, altri strumenti ...
Quando un membro del team è lo sviluppatore produttore negativo .
|# Lines Written| - |# Lines of bugs introduced| - |# Lines of rework required| < 0
Significa che il resto della tua squadra deve fare più lavoro a causa del cattivo sviluppatore. NNPP
Quando producono cose che fanno parte del Daily WTF su base regolare.
Quando sanno che ci sono modi migliori di fare le cose, ma si rifiutano ancora di farle anche quando il tempo lo consente.
Personalmente penso che qualsiasi programmatore che può guardare il proprio codice che ha scritto qualche tempo fa e non trovare qualcosa di sbagliato in esso non è buono. "Un po '" può ridursi con l'esperienza ... direi tra alcune settimane fino a un anno circa.
Quando ero un caposquadra in un piccolo negozio, c'erano diverse persone che dovevo riassegnare (né io né il mio supervisore diretto avevamo la possibilità di terminare senza una tonnellata di burocrazia e una pila di documentazione.) O di non rinnovare il contratto alla fine dell'attuale incarico. Alcuni dei tipi elencati hanno funzionato anche per altri team leader e hanno praticamente adottato la stessa opinione. Cose che hanno portato la gente nella categoria "Bad Programmer" nel mio libro:
Questi sono solo alcuni dei personaggi cattivi con cui ho dovuto lavorare ...
/ s / BezantSoft
A parte l'ovvia mancanza di conoscenza / abilità, un programmatore è un cattivo, se il loro codice è più difficile da leggere e / o mantenere di quanto dovrebbe essere.
Quando nessun altro può leggere il suo codice. Non importa quanto tu sia brillante; nessun programmatore è un'isola.
Per me ci sono due categorie di programmatori: solo e team.
I programmatori solisti sono cattivi
I programmatori di squadre cattive sono quelli che rientrano nella categoria di programmatori solisti cattivi, tra cui
Non disposti ad ammettere di non conoscere la risposta e / o riluttanti a cercare le cose.
Se non lo conosci, non mollare, scoprilo e fallo.
Un grande segnale di avvertimento nella mia esperienza è quando non commentano i loro hack ...
Sai cosa intendo: quando sei costretto a fare qualcosa di molto caotico perché semplicemente non c'è modo migliore per farlo.
I bravi programmatori odieranno doverlo fare e inserire commenti in linea dicendo quanto odiano mettere in quel tipo di hack, ma non c'è scelta. I programmatori sbagliati inseriranno l'hacking e non lo commenteranno.
Silenzioso ovviamente quando un programmatore scrive MOLTO codice. Funzioni molto grandi, forse copia / incolla di linee o blocchi di codice, usando molto più se necessario, ecc. Ciò potrebbe essere dovuto al fatto che il programmatore non conosce una funzione standard per fare ciò che vuole, ma la maggior parte delle volte non lo è.
Sto spostando la mia risposta qui da un argomento duplicato chiuso che ha chiesto Riesci a riconoscere se sei un cattivo programmatore? L'altro argomento veniva chiuso mentre componevo la mia risposta. La mia risposta affronta più direttamente la domanda in quanto è stata formulata dall'altro richiedente e leggerà meglio se lo capisci.
Sospiro! Una parte di me non voleva aggiungere a questo argomento già occupato, ma l'altra parte di me ha vinto! Perché ha vinto? perché mi preoccupo di aggiungere ancora più parole a questo particolare multilogo? Bene, perché, in una certa misura, potrei avere un approccio leggermente diverso rispetto ai molti commentatori precedenti.
Il binario funziona alla grande nei computer: è "1" o "0", "acceso" o "spento". Possiamo astrarre e codificare molte informazioni usando quei due famosi stati. Ma non tende a funzionare così bene per le questioni umane: "buono" o "cattivo", "sano" o "insano", "buono" o "cattivo", "intelligente" o "stupido", "grasso" o "magro", "vivo" o "morto?" Questo tipo di valutazioni polarizzate ha sempre lasciato l'essere umano premuroso parte di me terribilmente insoddisfatto. Indipendentemente dagli schemi di misurazione che scelgo di applicare, di solito scopro che le risposte a contrasti così netti in realtà si trovano da qualche parte lungo un continuum tra uno di questi poli e l'altro, non alle due estremità.
Ho combattuto con questa tendenza alla polarizzazione per un po 'di tempo, ormai, e la mia soluzione personale è che trovo molto più utile applicare tre parole a una tale valutazione: " in che misura!"
Quindi, la mia risposta alla tua domanda è di suggerirti di riformularla e di chiederti questo: "In che misura sono un cattivo programmatore?" O, ancora meglio, chiederlo nella direzione opposta: "In che misura sono un buon programmatore?" Se persegui la verità, probabilmente ti troverai da qualche parte lungo un continuum tra l'essere un programmatore "cattivo" e un "buono". Quindi, una volta che riesci a localizzare approssimativamente dove ti trovi lungo questo percorso, probabilmente puoi identificare un punto un po 'più vicino alla fine "buona", un punto in cui ti piacerebbe ritrovarti nel prossimo futuro.
Se non imposti questo punto troppo lontano, probabilmente puoi innestare la marcia posteriore e iniziare a spostarlo in quella direzione. Se riesci a ripetere più volte questo algoritmo euristico piuttosto semplice, potresti presto trovarti troppo impegnato a programmare per dover porre di nuovo questa domanda! Oh, e probabilmente farai progressi più rapidi se inizi a martellare il codice su una tastiera il più rapidamente e spesso possibile; e, se fai una piccola pausa di tanto in tanto, leggi un codice di alta qualità scritto dai tuoi colleghi! In questi giorni di sviluppo dinamico Open Source, non c'è carenza di codice gratuito e squisito da cui imparare!
Quindi, ti consiglio vivamente di provare le mie tre piccole parole, "fino a che punto" e vedere fino a che punto in una buona direzione possono portarti!
Qualcuno che dice "Non si può fare".
A mio avviso, si tratta di risolvere i problemi, lo strumento dovrebbe essere molto meno pertinente rispetto a svolgere effettivamente il lavoro. Se devo risolverlo usando MS-Access o il linguaggio assembly, è una questione di tempo e denaro, non di "Non si può fare"
Un segnale di avvertimento è troppo focalizzato sul modo accademico e "corretto" di fare le cose, e non abbastanza su come svolgere il lavoro.
Se conosce solo la sintassi di una lingua ma non conosce i concetti di base degli algoritmi.
Coloro che non conoscono principi come SOLID, DRY, OOP e così via. È importante avere una buona conoscenza dei principi e delle basi di programmazione piuttosto che conoscere specifiche tecnologie. Quelli con solide basi saranno in grado di apprendere facilmente nuovi argomenti e produrranno un codice migliore.
Un segnale di riconoscimento immediato è qualcuno che dice: "Non capisco perché non funziona. Ho fatto tutto bene".
Una cosa che distingue un programmatore cattivo da un programmatore principiante è l'insistenza ostinata sull'implementazione del proprio sistema preferito in qualsiasi lingua e API in cui stanno lavorando.
Una volta ho ereditato un sistema in cui lo sviluppatore precedente ha reimplementato (in Java) un ampio set di api Ashton Tate DBase III + api sovrapposto alla libreria di accesso dbf personalizzata. Nessuno del framework delle raccolte Java è stato utilizzato.
Questo è stato così che poteva scrivere un'app Java / swing che sembrava e si comportava come un'app DBase III + (o forse clipper).
Le app che ha scritto in questo sistema avevano menu della barra lite e aprivano una finestra intera con una fila di pulsanti in basso quando si spostava la barra lite sull'opzione. Era come una piccola macchina del tempo negli anni '80.
L'uomo era chiaramente un abile sviluppatore. Sapeva abbastanza che era in grado di scrivere da solo l'intero sistema nel periodo di tempo di quel progetto. È stato anche in grado di riutilizzarlo su alcuni altri sistemi interni.
Ma era un programmatore terribile in quanto il suo codice utilizzava in modo improprio le funzionalità dei sistemi su cui lavorava. Era più disposto a spendere 3 mesi in una libreria personalizzata di dubbia utilità rispetto all'apprendimento di Java / Swing / SQL.