The Programmers Bill of Responsabilities [chiuso]


40

Quindi, tutti abbiamo sentito parlare di The Programmers Bill of Rights e XP ha un concetto simile.

Oggigiorno è una lamentela comune che sentiamo molto parlare dei diritti delle persone, ma non tanto delle loro responsabilità, quindi cosa dovrebbe essere nella lista delle responsabilità dei programmatori. Queste sono cose che dovrebbero fare, che potrebbero trovare sgradevoli, ma che separano i programmatori che agiscono in modo professionale e responsabile da quelli che non lo fanno.

Sono principalmente interessato a quelli sgradevoli e quelli che tendono a non accadere. Questi sono quelli che i programmatori tendono a sottrarsi ed evitare, piuttosto che quelli che il 90% dei programmatori vuole effettivamente fare (come rifattorizzare sempre e usare il controllo del codice sorgente).

Quindi, cosa dovrebbe essere nella Bill of Responsatives dei programmatori?


4
inoltre penso che corrisponda alle linee guida 1,2,4 e 6.
Stephen Furlani il

2
Penso che sia una domanda importante da porre.
HLGEM,

1
Un follow-up importante potrebbe essere "come ti alleni per essere un programmatore responsabile?"
Stephen Furlani,

2
Questa domanda sembra generare solo un elenco di elementi. Sebbene le risposte siano piuttosto impressionanti (e lodo i rispondenti che hanno dedicato tempo e sforzi ai loro post), sono centrati sulle opinioni e la formulazione della domanda mi sembra molto interessante.
Thomas Owens

5
@ThomasOwens è fortemente in disaccordo sul fatto che "Questa domanda non è adatta al nostro formato di domande e risposte". Ciò ha già generato una risposta per quanto riguarda i test degli sviluppatori, le metodologie di sviluppo, i problemi di freelance e di business, l'assicurazione della qualità e l'ingegneria del software, iniziando davvero ad essere incerti sul perché abbiamo anche questo sito se domande come quelle sopra continuano a chiudersi.
Joshua Drake,

Risposte:


41
  • Un programmatore ha la responsabilità di respingere i requisiti scadenti invece di implementarli ciecamente. Ciò include dire ai clienti che ciò che vogliono è più costoso di altre opzioni o presenta una serie particolare di rischi. Comprende anche comunicare cattive notizie in modo professionale - non urlare, chiamare stupide le persone, sottintendendo che sono stupidi o altri comportamenti infantili. Se tira indietro, dovrebbe avere una serie di motivi (più di "Non mi piace SQL Server e non lo userò") e un piano alternativo da presentare.

  • Tuttavia, il programmatore ha anche la responsabilità di accettare decisioni e utilizzare strumenti o progetti che potrebbero non gradire se il loro respingimento non fosse accettato. Se è stato richiesto un report in SSRS, consegnarlo in Crystal Reports (che il client potrebbe non avere) è inaccettabile. Se era necessaria una soluzione .net, consegnarla in Haskell è inaccettabile. Se nessun altro membro del team utilizza uno strumento o un linguaggio che si desidera utilizzare, non è professionale utilizzarlo se il management non concorda sul fatto che sia lo strumento migliore per quel determinato lavoro.

  • Un programmatore ha la responsabilità di testare il suo lavoro. (Questo non dovrebbe essere l'unico test, ma nessun programmatore professionista dovrebbe inviare il codice che non ha testato.) Ciò include il test anche dei rami del codice che non prevedi vengano colpiti molto spesso. Se si dispone di un set di IF nidificati, testare tutti i percorsi possibili.

  • Un programmatore ha la responsabilità di gestire gli errori e le eccezioni con grazia e di scrivere messaggi di errore che l'utente vedrà che sono professionali e neutrali, non scherzi o insulti.

  • Un programmatore ha la responsabilità di proteggere i dati privati, proteggere il codice proprietario che scrive per l'azienda e proteggere gli utenti dalla catastrofe (persino la catastrofe autoinflitta) dal loro uso dell'applicazione.

  • Un programmatore ha la responsabilità di assicurarsi che il suo codice sia mantenibile e sia nel controllo del codice sorgente.

  • Un programmatore ha la responsabilità di coordinarsi con gli altri per assicurarsi che i suoi cambiamenti non influenzino negativamente ciò che stanno facendo.

  • Un programmatore ha la responsabilità di raccomandare la scelta migliore per il cliente di strumenti o linguaggi in fase di progettazione, non dello strumento / linguaggio con cui vuole giocare e apprendere.

  • Un programmatore ha la responsabilità di lavorare con tutto il personale appropriato per un progetto, compresi quelli che non gli piacciono. Non è il tuo lavoro amare le persone, è il tuo lavoro lavorare con loro ed essere educato.

  • Un programmatore ha la responsabilità di produrre un prodotto che fa ciò che è stato specificato in un lasso di tempo ragionevole. Se il periodo di tempo non verrà rispettato, lui o lei ha la responsabilità di informarne il management non appena è noto.

  • Un programmatore ha la responsabilità di far conoscere al project management gli impedimenti a portare a termine il lavoro. Non possono risolvere ciò che non sanno.

  • Un programmatore ha la responsabilità di svolgere l'intero compito, non solo le parti divertenti e interessanti. Ogni lavoro ha alcune parti noiose, devono ancora essere fatte. Ciò include cose come schede attività e l'aggiunta di elementi di discussione al software di gestione del progetto. Include cose come documentazione, revisione del codice, ecc.

  • Un programmatore ha la responsabilità di apprendere il dominio aziendale che sta supportando non solo i concetti di programmazione.

  • Un programmatore ha la responsabilità di mantenere aggiornate le sue capacità.

  • Quando un programmatore sbaglia, ha la responsabilità di fare tutto ciò che è in suo potere per risolvere i problemi non appena umanamente possibile. Ciò può includere la gestione delle cattive notizie alla direzione piuttosto che il tentativo di nascondere che è stata appena eliminata una tabella critica nel database di produzione.

  • Un programmatore ha le stesse responsabilità di qualsiasi altro lavoratore: presentarsi in orario, lavorare le ore contratte, richiedere in anticipo le ferie, rispondere ai messaggi di telefono e e-mail (diamine per leggere le loro e-mail), compilare i moduli richiesti per Risorse umane, ecc.


7
Io amo i messaggi di errore scherzo. La situazione è già abbastanza grave, non c'è bisogno di renderla più grave di così - almeno prova a farmi ridere mentre mi schiaffeggi con un errore!
Dott. Annibale Lecter,

2
Metto in dubbio la responsabilità di uno sviluppatore di testare personalmente il suo codice in tutte le situazioni ... Lo riformulerei per assicurarmi che il suo codice sia testato ... Se l'organizzazione ha tester professionali (sia automatici che umani) e un solido processo in atto per essere sicuro che il codice sia testato, non vedo perché lo sviluppatore debba farlo personalmente. Se sto sviluppando una nuova funzionalità o risolvendo un bug, sicuramente lo proverò da solo, altrimenti non saprò se ho finito il mio lavoro. Tuttavia, se sto eseguendo un grande refactoring, non ha senso testare in modo esaustivo l'intero prodotto.
JoelFan,

Non ho detto test di regressione, ma dovresti testare le tue unità per assicurarti che facciano quello che volevi.
HLGEM,

2
Che dire di nessun punto esclamativo nei messaggi di errore ... ovvero "La data non è valida!"
JoelFan,

1
Questi devono essere neutri rispetto al genere. Renderli imperativi renderebbe questo più facile, ad esempio invece di "Un programmatore ha la responsabilità di testare il suo lavoro", dovrebbe essere "Prova il tuo lavoro".
sigillo del

42

Ogni programmatore dovrebbe rendere il proprio codice leggibile da altri.


@Kevin D: Questa è una responsabilità. Hai la responsabilità di produrre un codice leggibile dall'uomo.
doppelgreener,

1
@Axidos, è perché ho cambiato la mia risposta una volta che ho capito cosa avevo fatto.
dan_waterworth,

Eliminerò il mio commento originale in quanto non è più pertinente.
Kevin D,

1
"Leggibile" da chi? I miei "colleghi" (cioè qualcuno con un'istruzione e un'esperienza simile alla mia)? Qualcuno che è davvero ben istruito nell'arte e nella scienza? O una scimmia volante che non ha affari con qualcosa di più avanzato di Dartmouth BASIC?
John R. Strohm,

7
@Giovanni, altri in questo contesto implicano altri programmatori. Nella frase: "La giraffa era più grande delle altre", non consideriamo gli altri come scimmie volanti. "Altri" significa "più dello stesso tipo che non sono già stati menzionati".
dan_waterworth,

22

Il programmatore è responsabile della privacy e della sicurezza di tutti i dati forniti dall'utente. Soprattutto password, numeri di carta di credito, indirizzi e-mail e posizione fisica.


Questo sarebbe davvero sotto il dominio dell'architetto di sistema. In molti scenari aziendali, i programmatori non hanno alcun controllo o controllo sugli archivi di dati. Come posso essere responsabile di un indirizzo e-mail in un database, quando tutto quello che sto facendo è accedere, non creare quel database?
Neal Tibrewala,

2
Immagino che le persone di Facebook non debbano fare domanda per quanto riguarda la maggior parte delle responsabilità di cui sopra. :)
MetalMikester il

4
-1 questa è troppa responsabilità.
Peter Turner,

6
Forse per i sistemi su larga scala potrebbe essere troppo per un programmatore decidere. Ma per la stragrande maggioranza dei siti in cui lavorano uno o pochi programmatori, è assolutamente necessario archiviare correttamente i dati. Nessuna crittografia quando è necessario l'hashing, nessun algoritmo personalizzato o sicurezza per oscurità. Sicurezza reale e testata.
Malfist,

@Neal: l'architetto di sistema è solo un altro programmatore. Certo, per i grandi progetti probabilmente non riuscirà a fare alcuna programmazione, ma ciò non significa che non sia un programmatore. E questo vale solo per i grandi progetti; su progetti a 2 o 3 persone un programmatore è generalmente responsabile di una parte del database o della sua totalità; è sua responsabilità assicurarsi che i dati vengano salvati in modo sicuro.
configuratore

20

Non far perdere il lavoro all'utente.

Questo è più difficile di quanto sembri ... il lavoro è più di un semplice "dato in un file" ... è ogni volta che l'utente ha trascorso con il tuo software.

Ad esempio, se l'utente ha compilato il modulo di 30 campi con 29 articoli validi e 1 non valido, non cancellare tutti i suoi dati validi per lamentarsi di 1 non valido (diamine, non cancellare nemmeno quello non valido. forse è lungo e richiede solo una correzione minore, o l'utente non ricorderà cosa fosse prima se lo cancelli)

Un esempio non ovvio ma importante è ciò che Windows e praticamente ogni altro software "file manager" si sbaglia. Se trascorro mezz'ora con attenzione Ctrl-clic per selezionare un set di file e faccio accidentalmente clic invece di Ctrl-Click, non dovrebbe cancellare tutti i miei file precedentemente selezionati, facendomi ricominciare da capo.

Un altro che si sono sbagliati ... se ho accidentalmente premuto Ctrl-A (invece di Ctrl-S proprio accanto), non dovrebbe perdere il mio posto nel file e posizionare il cursore all'inizio .... Chiamo trovare il posto giusto nel file "lavoro" che il programma ha "perso".

Ancora un altro: la finestra di dialogo "commit" di TortoiseSVN ha un lungo elenco di file. Prima di premere "Commit", puoi scorrere l'elenco dei file, facendo doppio clic su ciascuno di essi per vedere le sue modifiche in una seconda finestra di dialogo. Per farlo rapidamente, a volte uso solo la tastiera, premendo <Esc>per chiudere la seconda finestra di dialogo e tornare alla prima. Se premo accidentalmente <Esc> due volte, chiude anche la prima finestra di dialogo, il che mi fa dimenticare quale file stavo facendo.


5
Cerca di non creare scorciatoie da tastiera che fanno cose opposte assegnate ai tasti uno accanto all'altro (CTRL-C e CTRL-V per esempio, non posso dirti quante volte Se copiato quando quando intendevo incollare e viceversa)
HLGEM,

5
@HLGEM, paradossalmente, chiunque abbia progettato questo probabilmente ha pensato che ci stesse facendo un favore mettendoli uno accanto all'altro
JoelFan,

4
E non lo era? Voglio dire, non hai il pieno potere di Emacs o altro, ma puoi copiare e incollare senza muovere molto la mano.
compman,

1
Usa Total Commander. Fare clic con il tasto destro per selezionare e fare clic con il tasto destro per deselezionare. A meno che non navighi da qualche altra parte o perda lo stato attivo a lungo mentre la cartella corrente che stai guardando viene modificata, non perderai la selezione.
configuratore

1
Per l'ultimo esempio (Ctrl-A perde il mio posto nel file), di recente ho trovato una soluzione parziale che funziona in molti programmi ... Ctrl-Z, Ctrl-Y .... che annullerà la mia ultima modifica al il contenuto del file, quindi "rifarlo", con il risultato che il contenuto è lo stesso di prima e mi trovo al posto della modifica. Questo non è necessariamente lo stesso posto in cui si trovava il mio cursore prima del mio errore Ctrl-A, ma spesso è abbastanza vicino ... questo ovviamente non scusa il cattivo comportamento del programma su Ctrl-A ... è solo una soluzione parziale e mi ci è voluto un po 'per colpire
JoelFan il

15

Un programmatore ha la responsabilità di rispettare il sistema su cui verrà eseguito il suo programma. Al termine dello sviluppo e dei test, il programma verrà distribuito per essere utilizzato per lo scopo previsto e ciò di solito coinvolge altre persone che lo eseguono sui propri computer. Il programmatore deve tenerlo a mente: il suo programma è in esecuzione sulla proprietà di qualcun altro , non sulla propria, e deve comportarsi come ospite nella propria casa invece di irrompere come se fosse il proprietario.

Ad esempio, il suo programma non dovrebbe:


1
Mi piacciono molto quelli sia come utente che come programmatore. Le icone rimbalzanti nel mio dock sono la mia prima causa di rabbia verso le persone che non ho mai incontrato.
Agos,

7
Mi piacciono tutti tranne "aggiornarsi senza il consenso dell'utente". Trovo il modo in cui Chrome si aggiorna da solo: adoro trovare nuove funzionalità. Il modo in cui altri programmi lo fanno, tuttavia, è abominevole. Ti sto guardando, Java e te, Acrobat Anything. Non Non mi chiedono se voglio aggiornare ogni giorno. Ho detto di no una volta, dai un suggerimento!
configuratore

2
Se un programma deve aggiornarsi automaticamente, almeno dovrebbe chiedere all'utente il consenso per la prima volta.
gablin

Un'altra violazione da parte di TortoiseSVN ... che fa praticamente qualsiasi cosa con esso provoca l'arresto del sistema
JoelFan,

@SpashHit: Hmm? Uso TortoiseSVN quotidianamente e non ho mai notato che ...
Mason Wheeler,

8

Dal manifesto per l'artigiano del software :

Come aspiranti artigiani del software stiamo alzando il livello dello sviluppo professionale del software praticandolo e aiutando gli altri ad apprendere il mestiere. Attraverso questo lavoro siamo arrivati ​​a valutare:

  • Non solo software funzionante, ma anche software ben realizzato

  • Non solo rispondere al cambiamento, ma anche aggiungere costantemente valore

  • Non solo individui e interazioni, ma anche una comunità di professionisti

  • Non solo collaborazione con i clienti, ma anche collaborazioni produttive

Cioè, alla ricerca degli oggetti a sinistra, abbiamo trovato gli oggetti a destra indispensabili.


8

Guardati allo specchio e forse riconosci le peggiori qualità di un programmatore in se stesso. Quindi lavorare per eliminarli ogni giorno.

  1. Non sto imparando nulla di nuovo
  2. Non cercare di estendere le tue abilità
  3. Non essere aperto a nuove, attenersi alle vecchie abitudini
  4. Non preoccuparti della qualità del tuo lavoro
  5. Non cercare di migliorare la qualità del tuo lavoro
  6. Essere un lavoratore da 9 a 5 senza passione
  7. Non avere la propria opinione delle cose
  8. Accettare l'opinione degli altri senza mettere in discussione
  9. Credere di aver imparato tutto
  10. Non tollerare alcuna critica
  11. Non ascolto dell'ingresso esterno
  12. Essere centrati sull'ego, conoscere tutto individualmente
  13. Avere una personalità negativa e criticare le altre persone

+1, ma esprimerlo in questo modo lo rende abbastanza negativo.
dan_waterworth,

1
Trovo il numero 13 molto ironico, dato che è essenzialmente quello che stai facendo qui, anche se in senso generale.
Dustin Rasener,

6
  • La responsabilità di un programmatore è quella di creare un software che soddisfi le esigenze dei requisiti, analisi, progettazione e specifiche stabilite in qualsiasi contratto tra il programmatore e il cliente.
  • La responsabilità di un programmatore è quella di creare software economico, affidabile e che funzioni in modo efficiente su macchine reali.
  • La responsabilità di un programmatore è di lavorare nel modo più efficiente, etico e con la massima integrità possibile e comportarsi con la massima professionalità.

Parte di ciò vale per le responsabilità di "Una società di programmazione ".


4
  • Il programmatore dovrebbe conoscere e utilizzare le librerie e la piattaforma principali utilizzate.

Specialmente quando il programmatore proviene da un'altra piattaforma / lingua. È terribile trovare il programmatore che lotta per qualcosa che la libreria principale fornisce o abusare del vantaggio della piattaforma a causa dell'ignoranza.

  • Il programmatore dovrebbe creare un codice auto-documentante

È molto importante che il codice sia documentato per essere utilizzato da altri, ma quando si tratta di manutenibilità, il codice di auto-documentazione può letteralmente risparmiare ore e ore di frustrazione.

Ad esempio confronta:

// validates if is leap year
if(  year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) ) { 
     doSomethingWithFebruary();
}

a

if( isLeapYear( year ) ) { 
    doSomethingWithFebruary();
}

4

La programmazione è una professione, non un'abilità. Ciò significa che un programmatore ha la responsabilità di rimanere aggiornato nel suo campo sugli ultimi strumenti, tecniche e tecnologie.

Ciò può significare respingere i manager per dare tempo per consentire l'apprendimento e la formazione continui o farlo nel tempo libero.


2

1) Spiegare chiaramente che una soluzione a qualsiasi problema avrà degli compromessi tra prestazioni, costi, tempi e qualità.

2) Completare la documentazione pertinente, siano esse note di rilascio o piani di test. (la documentazione varia in base al tipo e alle dimensioni dell'azienda)

3) Richiedi gli strumenti corretti per il loro lavoro (così tanti si lamentano ma non si avvicinano mai al loro capo con un caso ragionevole per ottenere ciò di cui hanno bisogno)

... Altri senza dubbio da seguire.


2

Domanda nulla: un programmatore dovrebbe avere la responsabilità di informarsi su qualsiasi cosa che un sistema possa essere tenuto a fare o gestire. Ciò può includere la richiesta di ciò che gli utenti possono vedere come domande sciocche in quanto vi sono vari siti dedicati a mostrare esattamente ciò che gli utenti possono essere in grado di fare. Il quotidiano WTF e SharkTank sono un paio di esempi, anche se sono sicuro che ce ne sono altri.


1

Un programmatore è responsabile della conversione degli user story nel backlog del prodotto in incrementi di software funzionanti e spedibili

Ecco perché i manager dovrebbero assicurarsi di avere tutto per il loro obiettivo.


1

Ecco la mia proposta

  1. Un programmatore dovrebbe richiedere le condizioni di lavoro esposte nella Dichiarazione dei diritti del programmatore, al fine di non abbassare gli standard per la posizione.

(Per "programmatore" intendo "programmatore", non "hacker del fine settimana", quindi sono implicite tutte le cose standard che un programmatore dovrebbe fare.)


-1. Non credo che una responsabilità possa essere quella che "richiede [s]" un diritto.
Craige,

1

5 precetti della gilda del programmatore

1.) controlla il suo codice settimanalmente e nei giorni festivi.

2.) provvedere alle esigenze della comunità di programmazione.

3.) leggere almeno un libro di programmazione all'anno.

4.) partecipare ad almeno una conferenza di programmazione all'anno.

5.) essere all'altezza dei tuoi errori.


"controlla il suo codice settimanalmente e nei giorni festivi"? Intendi ogni ora, vero?
configuratore

@configurator Intendo questi come minimo indispensabile per definirti un programmatore. Ma più check-in è più bello
Peter Turner il


0

Un programmatore non dovrebbe fare o implementare qualsiasi cosa non etica o illegale, come scrivere virus o hackerare i sistemi di altri (a meno che non sia per scoprire falle di sicurezza e quindi informare la vittima su ciò e cosa può fare per evitare che ciò sia sfruttato da eventuali hacker malintenzionati).

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.