Skip to content
/ mds Public

Repositório do livro do MDS.

Notifications You must be signed in to change notification settings

mdssjc/mds

Repository files navigation

INTRODUÇÃO

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:

Composição do Projeto

  • 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.

Para Quem é Este Livro?

Este livro destina-se a todos que desejam aprimorar suas habilidades na profissão de Craftsman - Construtor de Software. Se você é um iniciante na programação, recomendamos que estude a lógica de programação antes de continuar com o livro, em breve será adicionado apêndices sobre como ingressar na profissão. Na página, você encontrará dojos e/ou atividades específicas para iniciantes em programação.

Objetivos

  • Compilar os conhecimentos/sabedorias utilizados pelo Craftman.
  • Explanar um modelo de desenvolvimento base com fácil aplicação em modelos utilizados no mercado.
  • Sugerir os pontos de estudos para a evolução dos temas.

O que é este livro?

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!

A Linguagem

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 e 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, as demais linguagens são utilizadas como complemento para o conteúdo do livro através das seções do Caminho do Código e o Laboratório do Código.

A Filosofia

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

A ciência do Craftman é composta por três elementos essenciais para os desenvolvedores 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 ferramentas poderosas para maximizar a produtividade e alcançar objetivos de maneira eficiente e saudável. A combinação dessas ferramentas pode ajudar a gerenciar melhor o tempo e o trabalho, levando a melhores resultados e satisfação pessoal e 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: 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.

Capítulos

Por onde começar?

Após a leitura da introdução, você deve estar peguntando: por onde começar?

Simples, começe pelos Fundamentos.

Observação

Para visualizar a versão antiga do livro, acesse a branch old.

Nota de Fevereiro de 2024

A linguagem de programação aplicada ao projeto será o Dart, demais linguagens serão apresentadas por duas seções, sendo:

  • O caminho do código: em que disponibilizará um link para a página com as implementações das linguagens, permitindo o pull request da comunidade, incluíndo um readme com a explicação pertinente a linguagem e o acesso ao código da implementação; e
  • O laboratório do código: são experimentos, dojos e outros materiais, na qual serão lincadas ao livro com sua explicação e implementação.

O livro ainda está em desenvolvimento e, como qualquer projeto em andamento, pode conter erros ou imprecisões. Estes serão corrigidas na próxima versão de março.

Data da Atualização

29/02/2024