Escrita de código, leitura de código e arqueologia de software
O nome deste blog, Once More into the Code, é uma modificação da linha de abertura do Rei Henrique V de William Shakespeare, Ato 1 Cena 1 que começa “Mais uma vez até a violação, queridos amigos, mais uma vez; ou fechar o muro com nossos ingleses mortos”. Como desenvolvedores, estamos constantemente mergulhando em novos projetos, explorando projetos antigos e profundamente engajados em nossos projetos atuais. Quarenta anos atrás, este mês, escrevi meu primeiro programa como calouro universitário na Cal Poly San Luis Obispo. Esse programa era o clássico programa gerador de números primos, escrito em Fortran, e era perfurado em cartões e submetido ao computador de quadro principal IBM 360 modelo 40 da faculdade. Naquela época, depositávamos os cartões em uma bandeja, colávamos o nariz na janela de vidro para ver quando nossos trabalhos seriam executados e esperávamos os cartões e a impressão para saber se tínhamos uma execução bem-sucedida.
Percorremos um longo caminho nos últimos 40 anos, e ainda é empolgante criar programas hoje. Os engenheiros de software estão intimamente ligados à ascensão da economia moderna do software. Alguns desenvolvedores adoram estar na vanguarda dos avanços tecnológicos atuais, outros preferem fazer seu trabalho e voltar para casa para outras coisas. Fazemos parte de uma maravilhosa rede social de engenharia de software. Adoramos conversar com outros desenvolvedores, compartilhar ideias e melhores práticas. Você sai em sites de “resposta” como o Stack Overflow procurando soluções para problemas ou fornecendo respostas para melhorar sua credibilidade na rua? Quantos de vocês leem SlashDot todos os dias? Quantos de vocês escrevem pelo menos 100 linhas de código por dia?
Não há um dia que passe em que eu não leia ou escreva código. Escrever código? Claro, todos os programadores escrevem código. Eu também passo muito tempo lendo código: meu código, código de outros, código fonte aberto, código de exemplo. Na faculdade, aprendemos a escrever código aprendendo a sintaxe e semântica de linguagens de programação, lendo código e escrevendo código. Um bom livro para conferir se você estiver interessado nisso é Code Reading: The Open Source Perspective, de Diomidis Spinellis, Addison Wesley, 2003. versão impressa ISBN 0-201-79940-5. O livro de Spenellis se concentra na leitura e compreensão do código existente.
Na OOPSLA 2001, Ward Cunningham, Andrew Hunt, Brian Marick e Dave Thomas organizaram um workshop intitulado “Software Archeology: Understanding Large Systems”. O workshop se concentrou em reunir técnicas e abordagens que permitiriam aos programadores se atualizar em um grande sistema de software que eles nunca viram antes. Se você acabou de herdar ou ingressou em um projeto que tem 1 milhão de linhas de código, você pode fazer algumas coisas para aprender o máximo possível sobre o sistema de software: visualizar um diagrama de arquitetura, estudar as características do projeto, examinar o código-fonte, revisar a lógica de negócios, estudar os testes de unidade e sistema (se houver), revisar os dados de desempenho, e avaliar o estado (ou falta de) documentação.
Existem outras fontes de informação e orientação sobre Arqueologia de Software, incluindo:
- Apresentação de Grady Booch sobre Arqueologia de Software na IBM Rational User Conference
- Artigo de Michael Rozlog sobre Arqueologia de Software no site da Embarcadero Technologies
- OOPSLA 2001 Posicionamentos do Workshop de Arqueologia de Software
Onde costumo gastar meu tempo? Estou no código. Estou sempre no código. Posso criar alguns formulários, relatórios, cadeias de conexão de banco de dados e outros artefatos, mas agora estou “mais uma vez no código”. Você lê código? Como você pegou rapidamente o código de outra pessoa? Envie um comentário abaixo.
Programar é Vida!
Notícias recentes para desenvolvedores:
- Desenvolvimento ágil, equipes virtuais ajudam a definir os rumos da economia
- CEO da Intel acena em torno de wafer de 22nm
- The Grill: David Merrill, do MIT Media Labs, sobre computação tangível
- Java rende para outras linguagens na Java Virtual Machine
- HTML 5: Poderia matar o Flash e o Silverlight?
- Zombarias não são sobre isolamento, mas sobre responsabilidades
- PHP 5.3.0 lançado!
- Programar também é ensinar sua equipe
David Intersimone (David I) é Vice-Presidente de Relações com Desenvolvedores e Evangelista Chefe da Embarcadero Technologies. Meu blog da empresa está em http://blogs.embarcadero.com/davidi