aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 5c24455b95482a9e9f9cb49fdc2896ed4bf05434 (plain)
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
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.

###Dificuldade do curso:

Intermediário
 
###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

Plano de aulas
--------------

1. O que são boas práticas em desenvolvimento?
  * Apresentação do professor e do curso
  * 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.
 9. Apendice  - para os profissionais autônomos / free  : Como fazer / Apresentar uma proposta comercial para um cliente ? O que pode / deve constar ? Como cobrar ( por hora  / projeto )