Mais Que Código
Um Manifesto para Projetos de Conclusão e Futuros Engenheiros de Software
Este manifesto serve como uma bússola para estudantes embarcando em seus projetos de conclusão de curso em Engenharia de Software. Ele destaca princípios-chave que não apenas orientam a realização de um projeto acadêmico de impacto, mas também preparam os futuros engenheiros de software para os desafios e inovações do mundo real.
Valores
O que valorizamos:
- Software Funcionando Como Única Meta de Finalização: O objetivo final é entregar software funcional em um ambiente produtivo. Este é o verdadeiro teste de sucesso.
- Engenharia de Software em Primeiro Lugar: Embora o escopo e a complexidade sejam considerados, o elemento central é a aplicação prática e eficiente da engenharia de software. Priorizamos a qualidade e a eficácia do processo, mesmo em projetos de menor escala ou em experimentos controlados.
- Decisões Devem ser Orientadas pela Solução: As escolhas feitas durante o projeto devem ser guiadas pelos méritos e eficácia da solução proposta, ao invés de serem limitadas pela extensão do conhecimento do engenheiro de software. O estudo e a superação fazem parte do projeto.
- Experiência do Desenvolvedor (DevEx) não Pode ser Postergada: A qualidade da experiência do desenvolvedor no projeto é crucial. Um bom DevEx facilita a contribuição efetiva e enriquecedora.
- Colaboração como Parte do Processo: A interação e colaboração entre colegas não é apenas essencial, mas parte do que torna o processo divertido e gratificante.
- Teste Automatizado é Essencial: Os testes automatizados, sejam eles unitários, sistêmicos, integração, e2e, …, são parte integrante indissociável do produto. Ainda, os testes unitários representam uma responsabilidade individual do desenvolvedor a ser atendida em todas as tarefas de desenvolvimento.
- Documentação como um Guia: Valorizamos a documentação que possibilita entender o que o código não mostra. Sem excessos. Ela deve detalhar a estrutura arquitetônica, registrar as decisões tomadas ao longo do projeto e oferecer um manual claro para contribuições e um manual para uso da solução.
Princípios:
Nós seguimos estes princípios:
- Desenvolvimento de Aplicações Práticas e Inovadoras: Procure aplicar teorias em cenários práticos e buscar soluções inovadoras que abordem necessidades reais. Procure atender perfeitamente um cenário restrito, e se necessário, crie um backlog de futuros incrementos.
- Independência + Comunicação + Colaboração: Os projetos são individuais! Queremos garantir que você encontrará formas de superar os desafios de um projeto de software. Entretanto é fundamental desenvolver habilidades comunicação e colaboração. Haverá momentos de ajudar e outros de pedir ajuda.
- Adaptabilidade e Aprendizado: A capacidade de se adaptar e aprender é crucial, especialmente porque o projeto inevitavelmente envolverá áreas que ainda não são dominadas.
- Priorização da Qualidade no Desenvolvimento: É fundamental priorizar a qualidade, realizando planejamento cuidadoso e aplicando Test-Driven Development (TDD) junto com testes rigorosos. Esta abordagem é essencial para assegurar entregas bem-sucedidas.
- Ética e Responsabilidade Social não são Negociáveis: Deve-se manter um alto padrão ético e responsabilidade social em todas as fases do desenvolvimento do projeto.
- Foco no Usuário: Manter a experiência e usabilidade do usuário em mente, da concepção à finalização do projeto.
- Desenvolvimento de Pensamento Crítico: Cultivar habilidades de pensamento crítico e resolução de problemas é parte das capacidades desenvolvidas ao longo do projeto e essencial para o sucesso do futuro engenheiro.
- Preparação para o Futuro Profissional: O projeto serve como preparação para enfrentar desafios futuros na carreira de engenharia de software.
Palavras Finais
Este manifesto visa estabelecer um equilíbrio essencial entre a necessidade de rigor técnico e a valorização de princípios fundamentais como colaboração, inovação e responsabilidade social, elementos chave na Engenharia de Software.
Salientamos a importância da excelência técnica como alicerce para desenvolver soluções de software de alta qualidade e confiabilidade. Ao mesmo tempo, enfatizamos a importância de abordar questões éticas, de privacidade e segurança, assegurando que nossos avanços tecnológicos sejam benéficos e equitativos. Reconhecemos, ainda, a colaboração como um pilar fundamental para estimular a criatividade e o compartilhamento de ideias entre profissionais de desenvolvimento, acelerando a inovação em um ambiente de constante e rápida evolução.