Robert Martin, também conhecido como Uncle Bob, um dos signatários do Manifesto Ágil, sugeriu que pessoas que desenvolvem softwares profissionalmente deveriam adotar um código de ética em sua publicação obligation of the programmer:
(...) o fato é que nós, que escrevemos software profissionalmente, estamos em uma posição de tremendo poder cujas pessoas para as quais trabalhamos não entendem bem; e que até nós mal conseguimos entender melhor.
Grande poder implica em grande responsabilidade. Nós, como profissionais que desenvolvem softwares, devemos reconhecer essa responsabilidade e entender que somos servidores conscientes de nossa sociedade. Devemos estabelecer os limites e padrões de nossa conduta. Nós, profissionais dessa área, não nossos empregadores, devemos decidir o que significa aceitar a responsabilidade e o poder que foi colocado em nossas mãos.
Nesse artigo, publicado em novembro de 2014, Martin compartilhou suas ideias iniciais de um código de ética. Ele sugeriu uma série de pontos que deveriam ser incluídos:
- Nós não causaremos mal propositalmente.
- Nosso software será bem escrito para seu propósito e tempo de vida.
- Nos comportamos com honra e disciplina.
O artigo sugere um juramento para profissionais que programam baseado na obrigação da Order of the Engineer (organização norte americana para fomentar o espírito de orgulho e responsabilidade na profissão de engenharia).
Nils Löwe escreveu sobre a responsabilidade das pessoas que desenvolvem software em construir software de boa qualidade e confiável.
Aprendemos muito sobre a construção de software confiável e de boa qualidade nas décadas passadas. A crise do software nos mostrou nossos limites técnicos e, como bons profissionais da engenharia de software, inventamos processos e métodos para dominar aquela complexidade. Infelizmente, esquecemos de olhar além dos desafios técnicos e reconhecer nossa crescente responsabilidade.
Nós, pessoas que desenvolvem software, acumulamos uma enorme quantidade de influência em um período relativamente curto. Entretanto, tivemos apenas esse curto período de tempo para encarar a responsabilidade se desenvolvendo a partir dessa influência.
No seu artigo, Löwe refere-se ao seu Manifesto of Responsible Software Development (Manifesto de Desenvolvimento Responsável de Software), que tem como objetivo encorajar reflexões e debates sobre as responsabilidades das pessoas que atuam no desenvolvimento de soluções de software.
Em novembro de 2015, Robert Martin publicou o Programmer's Oath (Juramento do Programador). Seu juramento objetiva "defender e preservar a honra da profissão de quem programa computadores". O juramento começa com:
- Eu não produzirei código nocivo.
- O código que eu produzir será sempre meu melhor trabalho. Eu não permitirei, conscientemente, a acumulação de código defeituoso, seja no seu comportamento, ou na sua estrutura.
- Eu produzirei, a cada liberação, uma rápida, correta e repetível prova de que todos os elementos do código funcionam como devem.
- (...)
No artigo the code that I'm still ashamed of (O código do qual ainda me envergonho) em FreeCodeCamp, Bill Sourour conta sua história sobre escrever software para um questionário online que recomendava um medicamento. Embora o website sobre no qual ele trabalhava afirmasse ser um site de informações gerais sobre medicamentos, o requisito do cliente era sempre propor o remédio desses clientes. No final desse artigo ele conclui:
Como profissionais do desenvolvimento de software, somos com frequência a última linha de defesa contra práticas potencialmente perigosas e antiéticas.
Quanto mais o software continuar a assumir o controle de todos os aspectos de nossas vidas, o mais importante para nós será tomar uma posição e garantir que nossa ética esteja sempre presente em nosso programa.
Martin fez o keynote de abertura "The Scribe's Oath" no Agile Summit Greece 2017. A cúpula é um uma conferência de um dia, para pessoas que programam, lideranças de equipes, pessoas da gestão e alta gestão, que ocorreu em Atenas, em 22 de setembro. O InfoQ cobriu essa conferência com Q/As, sumários, e artigos.
O InfoQ entrevistou Martin sobre a necessidade de um juramento para profissionais do desenvolvimento de software, que objetivos atingir, e como obrigar seu cumprimento.
InfoQ: Porque precisamos de um juramento para essas pessoas que programam profissionalmente?
Robert Martin: Nossa civilização veio a depender do software, muito mais do que muitas pessoas, incluindo a maioria das pessoas que desenvolvem os softwares, percebem. Hoje em dia, vidas e fortunas dependem da construção e execução corretas de programas. Sempre que vidas e fortunas estão em jogo, nossa sociedade exige um compromisso com a conduta profissional. Um juramento é apenas uma declaração desse compromisso.
InfoQ: Você publicou o juramento do programador em 2015. Como as pessoas reagiram?
Martin: Muitas pessoas estavam entusiasmadas a respeito. Outras pensaram que era bobagem. Eu penso que a reação não o que realmente importa. O que importa é o que uma pessoa leiga pensa sobre isso e, por extensão, o que os legisladores pensam a respeito. No final, será o cidadão normal que exigirá o compromisso com a conduta profissional; e exigirá que essa conduta seja monitorada e obrigatória.
InfoQ: O juramento começa com "Eu não produzirei código nocivo". Você pode explicar isso melhor?
Martin: Existem dois tipos de danos que uma pessoa que desenvolve um software pode causar a quem utilizar sua solução. O primeiro é o mais óbvio: o software pode falhar. Parece ser perfeitamente razoável que prometamos fazer o máximo para entregar programas que não falhem.
O segundo tipo de dano que essas pessoas rotineiramente causam às pessoas que utilizam a solução é danificar a estrutura do software. Quem utiliza, espera que programas sejam fáceis de alterar. Afinal de contas é "soft" ware. Quem utiliza os softwares precisa que seus sistemas mantenham o ritmo da rápida mudança na sociedade e na tecnologia. Parece perfeitamente razoável a promessa que daremos nosso máximo para manter o software "soft" (maleável, manutenível).
InfoQ: O juramento também sugere que as pessoas que desenvolvem sistemas devam fazer tudo que puderem para manter a alta produtividade. Como elas podem fazer isso e continuar entregando boa qualidade?
Ah, essa é uma pergunta complicada. Mantendo a alta qualidade é como mantemos a alta produtividade. A ideia que qualidade e produtividade são inversamente proporcionais é a grande mentira que temos contado para nós mesmos ao longo dos anos.
Toda pessoa que atua com programação teve a experiência de ser significativamente prejudicada por código mal estruturado e emaranhado. Aquele programa foi "fácil" de escrever, mas deixou o sistema em um estado que atrasa a todos. Quanto mais lentamente os demais avançam, mais pressionados se sentem para tomar atalhos que deixam o sistema ainda em pior estado. Sendo assim, todo o projeto é atrasado até que inexoravelmente a produtividade seja zero.
Repita comigo: "A única maneira de ir rápido, é ir bem."
InfoQ: Obrigar um juramento é a melhor coisa a fazer? Como isso pode ser feito?
Martin: Por fim, tal obrigatoriedade será pelo registro das pessoas em uma associação profissional. Empresas contratarão apenas pessoas associadas com boa posição (possivelmente pela lei). O registro pode ser revogado por escandalosas violações do código de conduta da associação profissional.
Eu não conheço esforço algum para se fazer algo assim; entretanto, considero inevitável.