A ideia por trás desse projeto foi inspirada pelos livros Pragmatic Thinking and Learning - Refactor Your "Wetware" do autor Andy Hunt e The Pragmatic Programmer: From Journeyman to Master dos autores Andrew Hunt e David Thomas. Ambos os livros abordam a importância de se criar um "cérebro externo" para registro e organização dos estudos e aprendizados.
O projeto tem a composição de:
- o livro (atemporal): livro na qual explora diversos tópicos relacionados ao desenvolvimento de software, com foco em boas práticas e técnicas modernas;
- a página (temporal): página pessoal com informações sobre experiências e projetos relacionados ao desenvolvimento de software;
- as notas (fragmentos): repositório de anotações sobre diversos tópicos relacionados ao desenvolvimento de software e assuntos relacionados; e
- o repositório (construção): repositório principal do projeto com o código-fonte e as contribuições na forma de experiências e estudos.
Este livro destina-se a todos que desejam aprimorar suas habilidades na profissão de Craftsman - Construtor de Software, explorando a cultura da criação de soluções e resolução de problemas por meio da programação. Se você está iniciando sua jornada no desenvolvimento de software, recomendamos começar estudando lógica de programação antes de prosseguir com o conteúdo deste livro. Em breve, serão adicionados apêndices com orientações detalhadas sobre como ingressar na área. Além disso, na página do projeto, você encontrará dojos e atividades práticas especialmente desenvolvidas para iniciantes.
- Compilar os conhecimentos e práticas fundamentais utilizados por um Craftsman no desenvolvimento de software.
- Apresentar um modelo de desenvolvimento base, de fácil aplicação e alinhado às práticas comuns no mercado.
- Sugerir tópicos de estudo que promovam a evolução contínua nos temas abordados.
Este livro é um guia prático para desenvolvedores de software, com foco em construir aplicações de qualidade. Os capítulos abordam desde os fundamentos da programação até práticas essenciais para garantir a entrega de um produto de qualidade.
Ao longo do livro, exploramos as etapas fundamentais do desenvolvimento de software, incluindo o entendimento dos requisitos, a definição da arquitetura, os testes, o desenvolvimento de código e o monitoramento. Além disso, discutimos aspectos filosóficos e científicos do processo, bem como seus pontos de extensão.
Se você é um iniciante na área de programação ou um desenvolvedor experiente que busca aprimorar suas habilidades, este livro é para você. Aproveite a leitura e aplique o conhecimento adquirido em seus projetos para se tornar um Craftman de sucesso!
As linguagens de programação são geralmente classificadas em três categorias: mainstream, modernas e acadêmicas.
-
Mainstream: são as linguagens mais amplamente utilizadas na indústria de software devido à sua confiabilidade, grande variedade de plataformas e bibliotecas disponíveis, bem como à sua adaptação às máquinas atuais. Essas linguagens são usadas para resolver problemas em geral e possuem uma grande comunidade de entusiastas e evangelistas. Alguns exemplos de linguagens mainstream incluem Java, C#, C++, JavaScript, Python e Ruby.
-
Modernas: são as linguagens de programação criadas recentemente para atender às necessidades específicas do mercado. Elas trazem novas ideias e abordagens para resolver problemas, visando aumentar a produtividade e a segurança. Exemplos de linguagens modernas incluem Dart, Rust, Kotlin, Swift, Go, V e Zig.
-
Acadêmicas: são as linguagens de programação usadas principalmente no ambiente acadêmico para pesquisa e experimentação de ideias. Essas linguagens são frequentemente usadas para ensinar conceitos avançados de programação em ciência da computação. Alguns exemplos de linguagens acadêmicas incluem Haskell, Racket, Lisp, ML e Prolog.
O livro utiliza a linguagem de programação Dart para apresentar os conceitos, enquanto outras linguagens são exploradas como complemento para o conteúdo do livro através das seções do Caminho do Código (que oferece implementações em diferentes linguagens), Laboratório do Código (com links para experimentos, dojos e outros materiais) e o Ei, olha isso! (que traz destaques e comparações com outras linguagens).
A filosofia do Craftman é composta por três importantes técnicas de desenvolvimento de software: Desenvolvimento Orientado pela Qualidade, Lentes e Lógica.
-
Desenvolvimento Orientado pela Qualidade: TDD, BDD e DDD são técnicas de desenvolvimento de software que se concentram em diferentes aspectos da construção de um sistema de qualidade. O TDD (Desenvolvimento Guiado por Testes) enfatiza a criação de testes automatizados para garantir a qualidade do código e reduzir a quantidade de bugs. O BDD (Desenvolvimento Guiado por Comportamento) utiliza a linguagem do domínio para focar no comportamento esperado do sistema, permitindo uma melhor comunicação entre as equipes de desenvolvimento e negócios. O DDD (Projeto Orientado a Domínio) se concentra em modelar o domínio do problema para criar um código mais expressivo e sustentável ao longo do tempo. Utilizando essas técnicas em conjunto, é possível desenvolver software de alta qualidade, que atenda às necessidades dos usuários e dos negócios de forma eficiente.
-
Lentes: paradigmas são modelos de pensamento que definem como os problemas devem ser abordados e resolvidos na programação. O paradigma da Programação Orientada a Objetos (POO) é baseado na ideia de que tudo é um objeto, que possui atributos e comportamentos. Já o paradigma da Programação Funcional (PF) se concentra na manipulação de funções como objetos de primeira classe, evitando efeitos colaterais e promovendo a imutabilidade dos dados. Cada paradigma tem seus próprios prós e contras e, escolher o mais adequado para cada situação é fundamental para desenvolver um software de qualidade.
-
Lógica: a lógica é uma disciplina fundamental para a programação de software. Ela trata do estudo dos princípios que regem o raciocínio correto e consistente, permitindo a criação de algoritmos e estruturas de dados que solucionem problemas de forma eficiente e elegante. A lógica está presente em diversas áreas da programação, desde a análise de requisitos até a implementação de algoritmos complexos, e é um conhecimento essencial para o desenvolvimento de software de qualidade.
A ciência do Craftman é fundamentada em três pilares essenciais para o desenvolvimento de software: O Ciclo da Vida e Tomates, Construir para Durar e Pergaminhos.
-
O Ciclo da Vida e Tomates: circle of life e pomodoro são duas abordagens poderosas para aumentar a produtividade e alcançar objetivos de maneira eficiente e saudável. A combinação dessas técnicas não só ajuda a gerenciar melhor o tempo e o trabalho, mas também promove o bem-estar, equilibrando o esforço com momentos de descanso, o que leva a melhores resultados e uma sensação de satisfação tanto pessoal quanto profissional.
-
Construir para Durar: clean design é uma metodologia criada pelo autor Robert C. Martin, também conhecido como Uncle Bob, que prioriza a clareza, simplicidade e facilidade de manutenção do código em todas as fases do processo de desenvolvimento de software. Esses princípios ajudam a criar sistemas mais eficientes e sustentáveis.
-
Pergaminhos: scrolls são um conjunto de conhecimentos e experiências que têm sido utilizados e aprimorados por desenvolvedores de software ao longo dos anos, na forma de práticas, princípios e padrões. Assim como a técnica de anotações, em que ideias e insights são constantemente revisados, atualizados e compartilhados, os Pergaminhos refletem o aprimoramento contínuo dessas práticas, à medida que novas experiências e aprendizados são incorporados.
- Capa
- Introdução
- Fundamentos
- Práticas Essenciais
- Pergaminhos
- Metodologia
- Conclusão
- Referências
Após a leitura da introdução, você deve estar peguntando: por onde começar?
Simples, começe pelo capítulo Fundamentos.
Para acessar a versão anterior do livro, consulte a branch old
.
Este livro está em desenvolvimento e, como qualquer projeto em andamento, pode apresentar erros ou imprecisões. Estamos comprometidos em corrigir esses pontos nas próximas versões.
A versão MAR/25 será composta por:
- próximos passos do capítulo fundamentos;
- estrutura do capítulo práticas essenciais; e
- revisão do capítulo referências.
obs.: a atualização será realizada no dia 31/03/2025.
28/02/2025