Então, todos nós já ouvimos falar da Declaração de Direitos dos Programadores e XP tem um conceito semelhante.
É uma reclamação comum hoje em dia que ouvimos muito sobre os direitos das pessoas, mas não tanto sobre suas responsabilidades, então o que deve constar na lista de responsabilidades dos programadores. Isso é o que eles devem fazer, que podem achar desagradáveis, mas o que separa os programadores agindo de maneira profissional e responsável, daqueles que não o fazem.
Estou interessado principalmente nos que são desagradáveis e nos que tendem a não acontecer. É isso que os programadores tendem a evitar e evitar, em vez daqueles que 90% dos programadores realmente desejam fazer (como sempre refatorar e usar o controle de origem).
Então, o que deve constar na Lista de Responsabilidades dos Programadores?
fonte
Respostas:
Um programador tem a responsabilidade de afastar requisitos ruins 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 específico de riscos. Também inclui a comunicação de más notícias de maneira profissional - não gritando, chamando as pessoas de idiotas, implicando que elas são idiotas ou outro comportamento infantil. Se ele recuar, deve ter um conjunto de razões (mais do que "Não gosto do SQL Server e não vou usá-lo") e um plano alternativo para apresentar.
No entanto, o programador também tem a responsabilidade de aceitar decisões e usar ferramentas ou projetos de que talvez não gostem se sua resposta não for aceita. 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 em Haskell é inaceitável. Se ninguém mais na equipe usa uma ferramenta ou idioma que você deseja usar, não é profissional usá-lo se a gerência não concordar que é a melhor ferramenta para o trabalho específico.
Um programador tem a responsabilidade de testar seu trabalho. (Esse 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 as ramificações do código que você não espera obter 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á 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) do uso do aplicativo.
Um programador tem a responsabilidade de garantir que seu código seja sustentável e esteja no controle de origem.
Um programador tem a responsabilidade de coordenar com os outros para garantir que suas alterações não afetem adversamente o que estão fazendo.
Um programador tem a responsabilidade de recomendar a melhor escolha para o cliente de ferramentas ou idiomas na fase de design, não a ferramenta / idioma com o qual ele deseja brincar e aprender.
Um programador tem a responsabilidade de trabalhar com todo o pessoal apropriado para um projeto, incluindo aqueles que ele não gosta. Não é seu trabalho gostar de 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 assim que for conhecido.
Um programador tem a responsabilidade de informar ao gerenciamento de projetos os impedimentos para a realização do 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 itens como quadros de horários e adição de itens de discussão ao software de gerenciamento de projetos. Inclui itens como documentação, revisão de código etc.
Um programador tem a responsabilidade de aprender o domínio comercial ao qual está apoiando, não apenas os 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 corrigir os problemas o mais rápido possível. Isso pode incluir levar más notícias à gerência, em vez de tentar ocultar 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 - aparecer pontualmente, trabalhar as horas contratadas, solicitar férias antecipadamente, atender telefone e e-mails (que tal ler seus e-mails), preencher os formulários necessários para RH, etc.
fonte
Todo programador deve tornar seu código legível por outros.
fonte
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.
fonte
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" ... é a qualquer momento que o usuário passa com o seu software.
Por exemplo, se o usuário preencheu 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 (diabos, nem limpe o inválido. talvez seja longo e exija apenas uma correção menor ou o usuário não se lembrará do que era antes se você a limpar)
Um exemplo não óbvio, mas importante, é o que o Windows e praticamente todos os outros softwares de "gerenciador de arquivos" dão errado ... se eu passasse meia hora cuidadosamente pressionando a tecla Ctrl para selecionar um conjunto de arquivos e, acidentalmente, clique em vez de Com a tecla Ctrl pressionada, ele não deve limpar todos os meus arquivos selecionados anteriormente, fazendo-me começar de novo.
Outro que eles erraram ... se eu acidentalmente pressionar Ctrl-A (em vez de Ctrl-S ao lado), ele não deve perder meu lugar no arquivo e colocar o cursor no início ... o lugar certo no arquivo "trabalho" que o programa "perdeu".
Mais uma: a caixa de diálogo "commit" do TortoiseSVN possui uma longa lista de arquivos. Antes de clicar em "Confirmar", você pode descer a lista de arquivos, clicando duas vezes em cada um para ver as alterações na 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 à primeira. Se eu bater acidentalmente<Esc>
duas vezes, ele também fechará a primeira caixa de diálogo, o que fará com que eu esqueça o arquivo que estava fazendo.fonte
Um programador tem a responsabilidade de respeitar o sistema em que seu programa estará sendo executado. Após o término do desenvolvimento e teste, o programa será implantado para ser usado para a finalidade a que se destina, 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 um hóspede em sua casa, em vez de entrar como se fosse o dono do lugar.
Por exemplo, seu programa não deve:
fonte
Do Manifesto para Software Craftsman :
fonte
Dê uma olhada no espelho e, possivelmente, reconheça as piores qualidades de um programador em si mesmo. Depois, elimine-os todos os dias.
fonte
Parte disso se aplica às responsabilidades de "Uma empresa de programação ".
fonte
Especialmente quando o programador vem de outra plataforma / idioma. É terrível encontrar o programador lutando por algo que a biblioteca principal fornece ou abusar da vantagem da plataforma devido à ignorância.
É muito importante que o código seja documentado para uso por outros, mas quando se trata de manutenção, o código de auto-documentação pode literalmente economizar horas e horas de frustração.
Por exemplo, compare:
para
fonte
Programar é uma profissão, não uma habilidade. Isso significa que um programador tem a responsabilidade de se manter atualizado em seu campo sobre as mais recentes ferramentas, técnicas e tecnologias.
Isso pode significar recorrer aos gerentes para dar tempo para permitir aprendizado e treinamento contínuos ou fazê-lo no seu próprio tempo.
fonte
1) Explique claramente que uma solução para qualquer problema terá trocas entre desempenho, custo, tempo e qualidade.
2) Complete a documentação relevante, sejam elas notas ou planos de teste. (a documentação varia de acordo com o tipo e tamanho da empresa)
3) Solicite as ferramentas corretas para o seu trabalho (muitos reclamam disso, mas nunca abordam seu chefe com um argumento razoável para obter o que precisam)
... Outros, sem dúvida, a seguir.
fonte
Questionar qualquer coisa - Um programador deve ter a responsabilidade de perguntar sobre qualquer coisa que um sistema possa precisar executar ou manipular. Isso pode incluir perguntar o que os usuários podem ver como perguntas tolas, pois existem vários sites dedicados a mostrar exatamente o que os usuários podem fazer. O WTF diário e o SharkTank são alguns exemplos, embora eu tenha certeza de que existem outros.
fonte
É por isso que os gerentes devem garantir que eles tenham tudo para atingir seus objetivos.
fonte
Aqui está a minha proposta.
(Para "programador", quero dizer "programador", não "hacker de fim de semana", portanto, tudo o que um programador deve fazer está implícito.)
fonte
5 preceitos da guilda do programador
1.) verifique seu código semanalmente e nos feriados.
2.) suprir as necessidades da comunidade de programação.
3.) leia pelo menos um livro de programação por ano.
4.) ir a pelo menos uma conferência de programação por ano.
5.) confie nos seus erros.
fonte
Vou adicionar "sempre documentar quaisquer suposições feitas" à lista. :-)
fonte
Um programador não deve fazer ou implementar algo antiético ou ilegal, como gravar vírus ou invadir os sistemas de outras pessoas (a menos que seja para descobrir falhas de segurança e depois informar à vítima sobre isso e o que ele pode fazer para evitar que isso ocorra). explorado por hackers maliciosos).
fonte