La fattura delle responsabilità dei programmatori [chiusa]

40

Quindi, abbiamo tutti sentito parlare di La lista dei diritti dei programmatori e XP ha un concetto simile.

In questi giorni è una lamentela comune che sentiamo parlare molto dei diritti delle persone, ma non delle loro responsabilità, quindi cosa dovrebbe esserci nella tabella di responsabilità dei programmatori. Sono cose che dovrebbero fare, che possono trovare sgradevoli, ma ciò che separa i programmatori che agiscono professionalmente e responsabilmente da quelli che non lo fanno.

Sono principalmente interessato agli sgradevoli e quelli che tendono a non accadere. Questo è quello che i programmatori tendono a evitare ed evitare, piuttosto che quelli che il 90% dei programmatori vuole effettivamente fare (come ad esempio sempre refactoring e utilizzare il controllo del codice sorgente).

Quindi, cosa dovrebbe essere nella distinta delle responsabilità dei programmatori?

    
posta Jon Hopkins 22.12.2010 - 16:57
fonte

17 risposte

41
  • Un programmatore ha la responsabilità di respingere i requisiti poveri invece di implementarli ciecamente. Ciò include dire ai clienti che ciò che vogliono è più costoso di altre opzioni o ha un particolare insieme di rischi. Comprende anche la comunicazione di cattive notizie in modo professionale - non urlando, chiamando persone stupide, implicando che sono stupide o altri comportamenti infantili. Se respinge, dovrebbe avere una serie di motivi (più di "Non mi piace SQL Server e non lo uso") e un piano alternativo da presentare.

  • Tuttavia, il programmatore ha anche la responsabilità di accettare le decisioni e utilizzare strumenti o progetti che potrebbero non piacere se il loro pushback non fosse accettato. Se è stato richiesto un report in SSRS, consegnarlo in Crystal Reports (che il client potrebbe non avere) non è accettabile. Se fosse richiesta una soluzione .net, consegnarla in Haskell non è accettabile. Se nessun altro nel team utilizza uno strumento o una lingua che si desidera utilizzare, non è professionale utilizzarlo se la direzione non è d'accordo sul fatto che sia lo strumento migliore per il particolare lavoro.

  • Un programmatore ha la responsabilità di testare il suo lavoro. (Questo non dovrebbe essere l'unico test, ma nessun programmatore professionista dovrebbe inviare codice che non ha testato.) Questo include testare anche i rami del codice che non ti aspetti di colpire molto spesso. Se hai una serie di IF annidati, prova tutti i percorsi possibili.

  • Un programmatore ha la responsabilità di gestire gli errori e le eccezioni con garbo e di scrivere messaggi di errore che l'utente vedrà che sono professionali e neutri, 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 (anche catastrofe autoinflitta) dal loro utilizzo dell'applicazione.

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

  • Un programmatore ha la responsabilità di coordinarsi con gli altri per assicurarsi che le sue modifiche non influiscano negativamente su ciò che stanno facendo.

  • Un programmatore ha la responsabilità di raccomandare la scelta migliore per il cliente di strumenti o linguaggi nella fase di progettazione, non lo strumento / lingua con cui vuole giocare e imparare.

  • Un programmatore ha la responsabilità di lavorare con tutto il personale appropriato per un progetto, inclusi 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 faccia ciò che è stato specificato in un ragionevole periodo di tempo. Se non verrà raggiunto il tempo necessario, lui o lei ha la responsabilità di informare la direzione di ciò non appena è noto.

  • Un programmatore ha la responsabilità di informare il project management sugli impedimenti per portare a termine il lavoro. Non possono correggere ciò di cui non sanno.

  • Un programmatore ha la responsabilità di eseguire l'intero compito, non solo le parti divertenti e interessanti. Ogni lavoro ha alcune parti noiose, devono ancora essere fatte. Questo include cose come i timesheet e l'aggiunta di elementi di discussione al software di gestione dei progetti. Include cose come documentazione, revisione del codice, ecc.

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

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

  • Quando un programmatore scombina, ha la responsabilità di fare tutto ciò che è in suo potere per risolvere i problemi non appena umanamente possibile. Questo può includere riportare le cattive notizie alla gestione piuttosto che cercare di nascondere che hai appena eliminato una tabella critica nel database di produzione.

  • Un programmatore ha le stesse responsabilità di qualsiasi altro lavoratore - presentarsi in tempo, lavorare le ore contrattate, richiedere anticipatamente le ferie, rispondere ai messaggi di telefono e di posta elettronica (diamine per leggere le loro e-mail), per compilare i moduli richiesti per le risorse umane, ecc.

risposta data 23.04.2012 - 11:23
fonte
42

Ogni programmatore dovrebbe rendere il proprio codice leggibile da altri.

    
risposta data 22.12.2010 - 17:06
fonte
22

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

    
risposta data 22.12.2010 - 17:19
fonte
20

Non far perdere il lavoro all'utente.

Questo è più difficile di quanto sembri ... il lavoro è più che "dati 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 elementi validi e 1 non valido, non cancellare tutti i suoi dati validi per lamentarsi di quello 1 non valido (diamine, non cancellare nemmeno l'invalido uno ... forse è lungo e richiede solo una piccola correzione, altrimenti l'utente non ricorderà cosa fosse prima se lo cancellassi)

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

Un altro che hanno sbagliato ... se accidentalmente colpisco Ctrl-A (invece di Ctrl-S proprio accanto), non dovrebbe perdere il mio posto nel file e mettere il cursore all'inizio .... Io chiamo trovare il posto giusto nel file "lavoro" che il programma ha "perso".

Ancora un altro: la finestra di dialogo "commit" di TortoiseSVN ha una lunga lista di file. Prima di premere "Conferma", puoi andare giù l'elenco dei file, facendo doppio clic su ciascuno 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 e tornare al primo. Se accidentalmente colpisco <Esc> due volte, chiude anche la prima finestra di dialogo, il che mi porta a dimenticare il file che ho scelto.

    
risposta data 24.12.2010 - 14:32
fonte
15

Un programmatore ha la responsabilità di rispettare il sistema su cui girerà il suo programma. Al termine dello sviluppo e del test, il programma verrà distribuito per essere utilizzato per lo scopo previsto e in genere coinvolge altre persone che lo eseguono sui propri computer. Il programmatore deve tenerlo a mente: il suo programma è in esecuzione su proprietà di qualcun altro , non sul proprio, e ha bisogno di comportarsi come un ospite nella loro casa invece di entrare come se fosse il proprietario.

Ad esempio, il suo programma non dovrebbe:

risposta data 12.04.2017 - 09:31
fonte
8

Dal Manifesto per l'artigiano del software :

As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value:

  • Not only working software, but also well-crafted software

  • Not only responding to change, but also steadily adding value

  • Not only individuals and interactions, but also a community of professionals

  • Not only customer collaboration, but also productive partnerships

That is, in pursuit of the items on the left we have found the items on the right to be indispensable.

    
risposta data 22.12.2010 - 20:35
fonte
8

Guardarsi allo specchio e possibilmente riconoscere le peggiori qualità di un programmatore in se stesso. Quindi lavora per eliminarli ogni giorno.

  1. Non apprendere nulla di nuovo
  2. Non cercare di estendere le tue capacità
  3. Non essere aperto per nuovi, attenersi alle vecchie abitudini
  4. Non ti preoccupi della qualità del tuo lavoro
  5. Non cerco di migliorare la qualità del tuo lavoro
  6. Essere un lavoratore 9-to-5 senza passione
  7. Non avendo la propria opinione sulle cose
  8. Accettare l'opinione degli altri senza mettere in discussione
  9. Credendo di aver imparato tutto
  10. Non tollerare alcuna critica
  11. Non ascoltando l'input esterno
  12. Essere ego-centrici, conosciuti tutti
  13. Avere una personalità negativa e criticare le altre persone
risposta data 10.05.2012 - 18:54
fonte
6
  • A Programmer's responsibility is to create software that satisfies the needs of the requirements, analysis, design, and specifications as set in any contracts between the programmer and the client.
  • A Programmer's responsibility is to create software that is economical, reliable, and works efficiently on real machines.
  • A Programmer's responsibility is to work as efficiently, ethically, and with as much integrity as they can and conduct themselves with utmost professionalism.

Alcuni di questi si applicano alle responsabilità di "A Programming Company ".

    
risposta data 22.12.2010 - 17:13
fonte
4
  • Il programmatore dovrebbe conoscere e utilizzare le librerie e la piattaforma utilizzate.

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

  • Il programmatore dovrebbe creare un codice di autocertificazione

È molto importante avere il codice documentato per altri da usare, ma quando si tratta di manutenibilità, il codice di auto-documentazione può letteralmente salvare ore e ore di frustrazione.

Per esempio confronta:

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

a

if( isLeapYear( year ) ) { 
    doSomethingWithFebruary();
}
    
risposta data 22.12.2010 - 20:04
fonte
4

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

Questo potrebbe significare respingere i manager per dare tempo per consentire l'apprendimento e la formazione continui o farlo nel proprio tempo.

    
risposta data 22.12.2010 - 20:27
fonte
2

1) Spiega chiaramente che una soluzione a qualsiasi problema avrà un compromesso tra prestazioni, costi, tempi e qualità.

2) Completa la documentazione pertinente, sia che rilasci note 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 (molti ne lamentano solo ma non si rivolgono mai al loro capo con un caso ragionevole per ottenere ciò di cui hanno bisogno)

... Altri senza dubbio da seguire.

    
risposta data 22.12.2010 - 17:06
fonte
2

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

    
risposta data 22.12.2010 - 17:09
fonte
1

A programmer is responsible for converting user stories in the product backlog into working and shippable software increments

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

    
risposta data 22.12.2010 - 17:17
fonte
1

Ecco la mia proposta.

  1. Un programmatore dovrebbe richiedere le condizioni di lavoro esposte nella Fattura del programmatore di destra, in modo da non abbassare gli standard per la posizione.

(Per "programmatore" intendo "programmatore", non "hacker del fine settimana", quindi tutta la cosa standard che un programmatore dovrebbe fare è implicita.)

    
risposta data 22.12.2010 - 20:33
fonte
1

5 precetti della gilda del programmatore

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

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

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

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

5.) tieni fede ai tuoi errori.

    
risposta data 22.12.2010 - 21:09
fonte
1

Aggiungerò "documenta sempre le ipotesi fatte" alla lista. : -)

    
risposta data 22.12.2010 - 22:40
fonte
0

Un programmatore non dovrebbe fare o implementare nulla che non sia etico o illegale, come scrivere virus o hackerare i sistemi altrui (a meno che non sia per scoprire buchi di sicurezza e quindi informare la vittima su di esso e cosa lui o lei può fare per evitare che questo venga sfruttato da qualsiasi hacker malintenzionato).

    
risposta data 23.12.2010 - 14:24
fonte

Leggi altre domande sui tag