1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
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. O que são boas práticas em desenvolvimento?
2. Metodologias e técnicas de produtividade.
3. Ambientes de desenvolvimento eficientes.
4. Licenças de software.
5. Controle de versão e social coding.
6. DevOps: desenvolvendo e orquestrando.
7. Segurança e privacidade.
8. Quando (não) reinventar a roda.
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.
Plano de aulas
--------------
1. O que são boas práticas em desenvolvimento?
* Produto "funcional" desde o dia 0.
2. Metodologias e técnicas de produtividade.
* Mitos (pessoa-mês, métricas).
* A catedral e o bazar: Lei de Linus.
* Metodologias pessoais.
* Pomodoro.
* GTD.
* ZTD.
* Metodologias em equipe.
* Agile.
* Scrum.
3. Ambientes de desenvolvimento eficientes.
* A guerra dos editores de texto.
* Teclas de atalho, backups e ferramentaria.
* Ambiente de desenvolvimento eficiente e confortável.
* Criando seus templates de desenvolvimento.
* Mantendo um diário de bordo e uma base de conhecimento.
4. Licenças de software.
* GPL.
* BSD.
* Apache.
* Creative Commons.
* Domínio Público.
5. 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).
6. DevOps: desenvolvendo e orquestrando.
* Sysadmin básico.
* Vagrant, docker.
* Ambientes reprodutíveis.
* Integração contínua.
7. 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.
8. Quando (não) reinventar a roda.
* Antipatterns.
* Inferno de dependências.
|