.. Boas Práticas em Desenvolvimento documentation master file, created by sphinx-quickstart on Sat Oct 31 19:44:44 2015. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. Boas Práticas em Desenvolvimento ================================ Ementa ------ - Título do curso: Boas Práticas em Desenvolvimento de Software. - Professores: Silvio Rhatto. - Tempo estimado de dedicação do aluno e agenda de comprometimento sugerida: 40 horas. - Público alvo e Pré-requisitos: o curso é orientado a desenvolvedores(as) de software que já possuem ao menos um conhecimento básico em programação e que necessitam melhorar sua produtividade ou mesmo trabalhar em time de maneira fluida. - Dificuldade do curso: intermediário. Currículo do professor ~~~~~~~~~~~~~~~~~~~~~~ Silvio Rhatto é bacharel em meteorologia, técnico em eletrônica e autodidata em computação. Desenvolve software livre há mais de 10 anos e já realizou diversos cursos na área de tecnologia, especialmente em segurança da informação e privacidade. Descrição do curso ~~~~~~~~~~~~~~~~~~ Este curso introduz diversas metedologias, ferramentas e conceitos de desenvolvimento de software que aumentam a produtividade e facilitam o compartilhamento de código. A ideia é preencher a lacuna dos cursos específicos de programação que dificilmente abordam questões práticas e cotidianas como controle de versão, manutenção de um ambiente de desenvolvimento, licenciamento, segurança, etc. Apesar dos softwares serem produtos definidos, reprodutíveis e na maioria das vezes determinísticos, o seu desenvolvimento implica na canalização da criatividade, na capacidade de trabalhar colaborativamente e enfrentar desafios como a integração de elementos já disponíveis. Para que isso seja possível e agradável, é fundamental que o(a) programador(a) entenda o processo de desenvolvimento que vai além de simplesmente codificar seu raciocínio numa linguagem de programação. Serão apresentados problemas essenciais e acidentais da programação e diferentes maneiras de abordá-los, indo desde a ansiedade de programar até os modernos ambientes de teste contínuo. Ao concluir o curso, o(a) aluno(a) terá condições de: - Analisar criticamente as técnicas e ferramentas apresentadas. - Escolher quais delas mais se adequam à sua realidade. - Pesquisar o tema por conta própria. Estrutura do curso ~~~~~~~~~~~~~~~~~~ O curso será dividido em 8 aulas, sendo cada aula organizada nos seguintes capítulos: 1. `Metodologias e técnicas de produtividade `_. 2. `Ambientes de desenvolvimento eficientes `_. 3. `Licenças de software `_. 4. `Controle de versão e social coding `_. 5. `DevOps: desenvolvendo e orquestrando `_. 6. `Segurança e privacidade `_. 7. `Quando (não) reinventar a roda `_. 8. `Lidando com os clientes `_. Os capítulos serão organizados na forma de: - Vídeo aulas. - Testes e atividades online. - Exercícios individuais de aplicação. - Leitura de material didático de apoio. Dificuldade do curso ~~~~~~~~~~~~~~~~~~~~ Intermediária. Relação do curso com o PRONATEC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Eixo Tecnológico: Informação e Comunicação (é um curso transversal, aderente á todos os demais cursos que envolvem linguagens de programação e / ou desenvolvimento de software). Aplicação do conhecimento ~~~~~~~~~~~~~~~~~~~~~~~~~ Como e onde ele vai usar usar isso ? Por que que ele será um profissional melhor aplicando este conhecimento ? Material Didático ~~~~~~~~~~~~~~~~~ Sugestão de Bibliografia: - O Mítico Homem-Mês. Plano de aulas -------------- 1. Metodologias e técnicas de produtividade. - Apresentação do professor e do curso. - O que são boas práticas de desenvolvimento? - Mitos e verdades do desenvolvimento. - A catedral e o bazar: Lei de Linus. - Metodologias pessoais. - Pomodoro. - GTD. - ZTD. - Metodologias em equipe. - Agile. - Scrum. 2. Ambientes de desenvolvimento eficientes. - A guerra dos editores de texto e IDEs. - Ambiente de desenvolvimento eficiente e confortável. - Backups e ferramentaria. - Criando seus templates de desenvolvimento. - Mantendo um diário de bordo e uma base de conhecimento. 3. Licenças de software. - GPL. - BSD. - Apache. - Creative Commons. - Domínio Público. 4. Controle de versão e social coding. - O que é? Pra que serve? - Quais sistemas existem? - Focando no git e no git-flow. - Versionando desde o dia 0. - Social coding (gitlab, github, etc). 5. DevOps: desenvolvendo e orquestrando. - Vagrant, docker, KVM e afins. - Ambientes reprodutíveis. - Integração contínua usando o `Travis CI `_. - Fazendo o deploy: - SSH e rsync. - Permissões. 6. Segurança e privacidade. - Segurança começa no desenvolvimento. - Use bibliotecas consolidadass! - Princípio das permissões mínimas. - Criptografia básica: - Assinaturas digitais. - Comunicação cifrada. - Certificados x509 para SSL/TLS/HTTPS. 7. Quando (não) reinventar a roda. - Antipatterns. - Inferno de dependências. - Documentação: lendo e escrevendo. 8. Lidando com os clientes. - Como fazer / Apresentar uma proposta comercial para um cliente? - Items essenciais de uma proposta. - Como cobrar (por hora ou por projeto).