A Lista de Responsabilidades dos Programadores [fechada]

40

Então, todos nós já ouvimos falar de The Programmers Bill of Rights e o XP tem um conceito semelhante.

Atualmente, é uma queixa comum ouvirmos muito sobre os direitos das pessoas, mas não tanto sobre suas responsabilidades, então o que deve estar na lista de responsabilidades dos programadores. Isso é o que eles devem fazer, o que podem achar desagradável, mas o que separa os programadores que agem profissionalmente e com responsabilidade, daqueles que não o fazem.

Estou principalmente interessado nos intragáveis e nos que tendem a não acontecer. Isso é o que os programadores tendem a evitar e evitar, em vez daqueles que 90% dos programadores realmente querem fazer (como sempre refatorar e usar o controle de código-fonte).

Então, o que deve estar na lista de responsabilidades dos programadores?

    
por Jon Hopkins 22.12.2010 / 16:57
fonte

17 respostas

41
  • Um programador tem a responsabilidade de reduzir os requisitos insatisfatórios em vez de implementá-los cegamente. Isso inclui dizer aos clientes que o que eles querem é mais caro do que outras opções ou tem um conjunto particular de riscos. Também inclui a comunicação de más notícias de uma forma profissional - não gritando, chamando as pessoas de estúpidas, implicando que elas são estúpidas ou outro comportamento infantil. Se ele empurrar de volta, ele deve ter um conjunto de razões (mais do que, "não gosto do SQL Server e não o usarei") e um plano alternativo para apresentar.

  • No entanto, o programador também tem a responsabilidade de aceitar decisões e usar ferramentas ou designs que eles podem não gostar se seu pushback não for aceito. Se um relatório foi solicitado no SSRS, entregá-lo no Crystal Reports (que o cliente pode não ter) é inaceitável. Se uma solução .net for necessária, entregá-la no Haskell é inaceitável. Se ninguém mais da equipe usar uma ferramenta ou linguagem que você queira usar, não é profissional usá-la se o gerenciamento não concordar que é a melhor ferramenta para o trabalho específico.

  • Um programador tem a responsabilidade de testar seu trabalho. (Este não deve ser o único teste, mas nenhum programador profissional deve enviar o código que ele não testou.) Isso inclui testar até mesmo os ramos do código que você não espera atingir com muita frequência. Se você tiver um conjunto de IFs aninhados, teste todas as rotas possíveis.

  • Um programador tem a responsabilidade de lidar com erros e exceções normalmente e de escrever mensagens de erro que o usuário verá que são profissionais e neutras, sem brincadeiras ou insultos.

  • Um programador tem a responsabilidade de proteger dados privados, proteger o código proprietário que ele escreve para a empresa e proteger os usuários contra catástrofes (mesmo catástrofes auto-infligidas) de seu uso do aplicativo.

  • Um programador tem a responsabilidade de garantir que seu código seja mantido e esteja no controle de origem.

  • Um programador tem a responsabilidade de coordenar com os outros para garantir que suas mudanças não afetem negativamente o que estão fazendo.

  • Um programador tem a responsabilidade de recomendar a melhor escolha para o cliente de ferramentas ou linguagens na fase de design, não a ferramenta / linguagem com a qual ele deseja brincar e aprender.

  • Um programador tem a responsabilidade de trabalhar com todo o pessoal apropriado para um projeto, incluindo os que ele não gosta. Não é seu trabalho gostar das pessoas, é seu trabalho trabalhar com elas e ser educado.

  • Um programador tem a responsabilidade de produzir um produto que faça o que foi especificado em um prazo razoável. Se o prazo não for cumprido, ele ou ela tem a responsabilidade de informar a gerência sobre isso assim que for conhecido.

  • Um programador tem a responsabilidade de informar ao gerenciamento de projetos sobre impedimentos para realizar o trabalho. Eles não podem consertar o que não sabem.

  • Um programador tem a responsabilidade de executar toda a tarefa, não apenas as partes divertidas e interessantes. Todo trabalho tem algumas partes chatas, elas ainda precisam ser feitas. Isso inclui coisas como planilhas de horas e adicionar itens de discussão ao software de gerenciamento de projetos. Inclui coisas como documentação, revisão de código, etc.

  • Um programador tem a responsabilidade de aprender o domínio do negócio que ele está apoiando não apenas conceitos de programação.

  • Um programador tem a responsabilidade de manter suas habilidades atualizadas.

  • Quando um programador erra, ele tem a responsabilidade de fazer tudo o que estiver ao seu alcance para consertar os problemas assim que for humanamente possível. Isso pode incluir levar as más notícias ao gerenciamento, em vez de tentar esconder que você acabou de excluir uma tabela crítica no banco de dados de produção.

  • Um programador tem as mesmas responsabilidades de qualquer outro trabalhador - para chegar a tempo, para trabalhar as horas contratadas, para solicitar tempo de férias com antecedência, para atender telefone e e-mail (ler seus e-mails), para preencher os formulários necessários para RH, etc.

por 23.04.2012 / 11:23
fonte
42

Todo programador deve tornar seu código legível por outros.

    
por 22.12.2010 / 17:06
fonte
22

O programador é responsável pela privacidade e segurança de todos os dados fornecidos pelo usuário. Especialmente senhas, números de cartão de crédito, endereços de e-mail e localização física.

    
por 22.12.2010 / 17:19
fonte
20

Não faça o usuário perder o trabalho.

Isso é mais difícil do que parece ... o trabalho é mais do que apenas "dados em um arquivo" ... é sempre que o usuário gasta com o seu software.

Por exemplo, se o usuário preencher seu formulário de 30 campos com 29 itens válidos e 1 inválido, não limpe todos os dados válidos para reclamar do 1 inválido (não desmarque o inválido um ... talvez seja longo e requer apenas uma pequena correção, ou o usuário não vai se lembrar do que era antes se você o limpar)

Um exemplo não óbvio, mas importante, é o que o Windows e praticamente todos os outros softwares de "gerenciadores de arquivos" erram .... se eu passei meia hora cuidadosamente Ctrl-Click'ing para selecionar um conjunto de arquivos e acidentalmente Clique em vez de Ctrl-Clique, não deve limpar todos os meus arquivos previamente selecionados, fazendo-me começar de novo.

Outro que eles erraram ... se eu acidentalmente pressionasse Ctrl-A (ao invés de Ctrl-S na porta ao lado), ele não deveria perder meu lugar no arquivo e colocar o cursor no começo .... Eu chamo de encontrar o lugar certo no arquivo "trabalho" que o programa "perdeu".

Ainda outro: o diálogo "commit" do TortoiseSVN tem uma longa lista de arquivos. Antes de apertar "Commit", você pode ir para baixo na lista de arquivos, clicando duas vezes em cada um deles para ver as alterações em uma segunda caixa de diálogo. Para fazer isso rapidamente, às vezes, uso apenas o teclado, pressionando <Esc> para fechar a segunda caixa de diálogo e voltar para a primeira. Se acidentalmente atingir <Esc> duas vezes, também fecha o primeiro diálogo, o que me faz esquecer qual arquivo eu estava fazendo.

    
por 24.12.2010 / 14:32
fonte
15

Um programador tem a responsabilidade de respeitar o sistema no qual seu programa será executado. Depois que o desenvolvimento e o teste forem concluídos, o programa será implantado para ser usado para o propósito pretendido, e isso geralmente envolve outras pessoas que o executam em seus computadores. O programador precisa ter isso em mente: seu programa está sendo executado na propriedade de outra pessoa , não na sua, e precisa se comportar como convidado em sua casa, em vez de invadir como se fosse o dono do local.

Por exemplo, o programa dele não deve:

por 12.04.2017 / 09:31
fonte
8

Do Manifesto para Software Craftsman :

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.

    
por 22.12.2010 / 20:35
fonte
8

Dê uma olhada no espelho e possivelmente reconheça as piores qualidades de um programador em si mesmo. Em seguida, trabalhe para eliminá-los todos os dias.

  1. Não está aprendendo nada de novo
  2. Não buscando ampliar suas habilidades
  3. Não sendo aberto para novos, aderindo a velhos hábitos
  4. Não se importa com a qualidade do seu trabalho
  5. Não buscando melhorar a qualidade do seu trabalho
  6. Sendo um trabalhador das 9 às 5 sem paixão
  7. Não tendo opinião própria das coisas
  8. Aceitar a opinião dos outros sem questionar
  9. Acreditar que você aprendeu tudo
  10. Não tolerando nenhuma crítica
  11. Não está ouvindo entrada externa
  12. Ser indivíduo egocêntrico, sabe-tudo
  13. Ter uma personalidade negativa e criticar outras pessoas
por 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.

Parte disso se aplica às responsabilidades de "A Programação Empresa ".

    
por 22.12.2010 / 17:13
fonte
4
  • O programador deve conhecer e usar as principais bibliotecas e plataformas usadas.

Especialmente quando o programador vem de outra plataforma / idioma. É terrível encontrar o programador lutando por algo que a biblioteca central oferece ou abusar da vantagem da plataforma devido à ignorância.

  • O programador deve criar um código de auto-documentação

É muito importante ter o código documentado para que outro use, mas quando se trata de capacidade de manutenção, o código de auto-documentação pode literalmente economizar horas e horas de frustração.

Por exemplo, compare:

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

para

if( isLeapYear( year ) ) { 
    doSomethingWithFebruary();
}
    
por 22.12.2010 / 20:04
fonte
4

A programação é uma profissão, não uma habilidade. Isso significa que um programador tem a responsabilidade de permanecer atualizado em seu campo com as ferramentas, técnicas e tecnologias mais recentes.

Isso pode significar pressionar os gerentes a dar tempo para permitir aprendizado e treinamento contínuos, ou fazê-lo em seu próprio tempo.

    
por 22.12.2010 / 20:27
fonte
2

1) Explique claramente que uma solução para qualquer problema terá trocas entre desempenho, custo, tempo e qualidade.

2) Preencha a documentação relevante, seja ela liberar notas ou planos de teste. (a documentação varia de acordo com o tipo e o tamanho da empresa)

3) Solicite as ferramentas corretas para o seu trabalho (muitos simplesmente reclamam, mas nunca abordam o chefe com um argumento razoável para conseguir o que precisam)

... Outros, sem dúvida, a seguir.

    
por 22.12.2010 / 17:06
fonte
2

Questionar qualquer coisa - Um programador deve ter a responsabilidade de perguntar sobre qualquer coisa que um sistema possa ser obrigado a fazer ou a manipular. Isso pode incluir perguntar o que os usuários podem ver como perguntas bobas, pois há vários sites dedicados a mostrar exatamente o que os usuários podem ser capazes de fazer. WTF diário e SharkTank sendo um par de exemplos, embora eu tenha certeza de que existem outros.

    
por 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

É por isso que os gerentes devem garantir que eles tenham tudo para o seu objetivo.

    
por 22.12.2010 / 17:17
fonte
1

Aqui está minha proposta.

  1. Um programador deve exigir as condições de trabalho expostas na lista de direitos do programador, a fim de não diminuir os padrões para a posição.

(Para "programador" quero dizer "programador", não "hacker de fim de semana", então toda a coisa padrão que um programador deve fazer está implícita.)

    
por 22.12.2010 / 20:33
fonte
1

5 preceitos da guilda do programador

1.) verifique seu código semanalmente e nos feriados.

2.) atendem às necessidades da comunidade de programação.

3.) ler pelo menos um livro de programação por ano.

4.) vá a pelo menos uma conferência de programação por ano.

5.) até os seus erros.

    
por 22.12.2010 / 21:09
fonte
1

Acrescento "documente sempre as suposições feitas" à lista. : -)

    
por 22.12.2010 / 22:40
fonte
0

Um programador não deve fazer ou implementar nada que seja antiético ou ilegal, como escrever vírus ou hackear outros sistemas (a menos que seja para descobrir falhas de segurança e então informar a vítima sobre isso e o que ele ou ela pode fazer para evitar que isso seja explorado por hackers mal-intencionados).

    
por 23.12.2010 / 14:24
fonte