Slide 1

Slide 1 text

MPS Talks Melhores Práticas para Desenvolvimento Remoto de Software Marco Tulio Valente ASERG, DCC, UFMG

Slide 2

Slide 2 text

Legado da pandemia será um aumento expressivo de Trabalho Remoto (TR) 2

Slide 3

Slide 3 text

Algumas evidências 3

Slide 4

Slide 4 text

4

Slide 5

Slide 5 text

5

Slide 6

Slide 6 text

6

Slide 7

Slide 7 text

7 https://exame.com/carreira/hotmart-abre-400-vagas-de-emprego-com-home-office-para-sempre/

Slide 8

Slide 8 text

Assumindo que trabalho remoto será mais comum, quais as melhores práticas que devemos seguir? 8

Slide 9

Slide 9 text

Trabalho remoto não é novidade! 9

Slide 10

Slide 10 text

Trabalho remoto - Pré-COVID ● GitLab (~1,300 colaboradores, 65 países) ● Automattic (~900 colaboradores, 68 países) ● Basecamp (~50 colaboradores, 32 cidades) ● Zapier (~250 colaboradores, 28 países) ● DuckDuckGo (100-150 colaboradores) ● Discourse (< 10 colaboradores) 10

Slide 11

Slide 11 text

11 TI é uma das indústrias mais "adequadas" para trabalho remoto

Slide 12

Slide 12 text

Foco: Práticas de desenvolvimento de software 12

Slide 13

Slide 13 text

Como fazemos software hoje em dia? 13

Slide 14

Slide 14 text

Perguntamos para 415 devs brasileiros 14 Fonte: Surveying the Impacts of COVID-19 on the Perceived Productivity of Brazilian Software Developers. SBES 2020 Ágil = 87%

Slide 15

Slide 15 text

Scrum em 1 slide 15 fonte: https://www.scrum.org/resources/scrum-framework-reduce-risk-and-deliver-value-sooner

Slide 16

Slide 16 text

Scrum em 1 slide 16 fonte: https://www.scrum.org/resources/scrum-framework-reduce-risk-and-deliver-value-sooner

Slide 17

Slide 17 text

Scrum em 1 slide 17 fonte: https://www.scrum.org/resources/scrum-framework-reduce-risk-and-deliver-value-sooner 4 hr 3 hr 4 hr 15 min

Slide 18

Slide 18 text

Não parece ser difícil, pois maior evento dura 4 horas, para sprints de 15 dias 18

Slide 19

Slide 19 text

Porém, não é tão simples assim…. 19

Slide 20

Slide 20 text

Problema: natureza síncrona das comunicações durante um sprint 20

Slide 21

Slide 21 text

Hoje ... Product Owner senta junto dos desenvolvedores e "explica" requisitos para eles PO Devs Fonte: @engsoftmoderrna

Slide 22

Slide 22 text

Hoje (Scrum) 22 PO Devs Stakeholders ● Durante sprint, PO explica histórias (requisitos) para devs ● Troca-se documentação formal e escrita por comunicação verbal e informal ● Histórias são convites para conversas entre PO e Devs Fonte: @engsoftmoderrna

Slide 23

Slide 23 text

Mandamento #1 de Trabalho Remoto: minimize comunicação síncrona 23

Slide 24

Slide 24 text

Não dá para ficar o dia inteiro no Zoom, Slack, WhatsApp, mail, etc. 24

Slide 25

Slide 25 text

Será que temos que voltar para Waterfall? 25 Linguagem natural (poderia levar anos para ficar pronto) Stakeholders Analista de Requisitos Devs Fonte: @engsoftmoderrna

Slide 26

Slide 26 text

Provavelmente não! Basta dar um pequeno passo para trás 26

Slide 27

Slide 27 text

Processo de desenvolvimento da BaseCamp 27 https://basecamp.com/shapeup

Slide 28

Slide 28 text

Três Fases ● Shaping ● Ciclos (~ sprints) ● Cool down 28

Slide 29

Slide 29 text

Shaping ● Especificação leve de requisitos e projeto (design) ● Resultado: pitch ○ Problema ○ Esboço da solução (sketches) ○ Rabbit holes (soluções para possíveis impasses) 29

Slide 30

Slide 30 text

Exemplos de Pitches 30

Slide 31

Slide 31 text

Exemplo de Pitch

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

Shaping (cont.) ● Quem são os "shapers"? ○ Gerentes sêniores (produto) ○ No caso da Basecamp: 4 pessoas ● Processo de escrita: ○ Assíncrono ○ Reunião final, síncrona, para decidir os pitches do próximo ciclo 33

Slide 34

Slide 34 text

Ciclos ● Duração: 6 semanas ○ Mais longos que sprints de Scrum ○ Embora possam existir ciclos de duas semanas ● Não existe prorrogação na duração de um ciclo 34

Slide 35

Slide 35 text

Times ● Tamanho: 2 devs + 1 designer ○ Ainda menores que os times Scrum ● Autonomia: ○ Implementar pitches (pitch = projeto; e não tarefas) ○ Definir horários de trabalho, reuniões, daily, etc 35

Slide 36

Slide 36 text

Pitches + times pequenos ⇨ menos coordenação, menos comunicação síncrona

Slide 37

Slide 37 text

Cool Down ● Duração: 2 semanas ● Tempo para os devs "respirarem" ○ Corrigir bugs ○ Refactorings ○ Estudar nova tecnologia, etc ● Lembram "slacks" em XP 37

Slide 38

Slide 38 text

Exemplo mais real (e pessoal) de shaping 38

Slide 39

Slide 39 text

Problema (Requisitos) ● A popularidade da linguagem Go está crescendo ● Precisamos que o RefDiff funcione com Go! ● RefDiff: ferramenta para detectar refactorings em commits ● Queremos detectar refactorings X, Y, Z, etc 39

Slide 40

Slide 40 text

Solução (design simplificado) ● Parser dos arquivos modificados em commit ● Usar parser XYZ ● Criar Code Structure Tree (CST); veja documentação ● Implementar call graph ● Acrescentar informações de call graph na CST 40

Slide 41

Slide 41 text

Solução (arquitetura) 41 Rodrigo Brito, Marco Tulio Valente. RefDiff4Go: Detecting Refactorings in Go. SBCARS 2020

Slide 42

Slide 42 text

Solução (exemplos) 42 Rodrigo Brito, Marco Tulio Valente. RefDiff4Go: Detecting Refactorings in Go. SBCARS 2020

Slide 43

Slide 43 text

Rabbit Holes ● Implementação de um call graph não é trivial ● Usar uma implementação simples: ○ Análise sintática bem simples ○ Sem considerar polimorfismo, interfaces, etc ○ Restrita aos arquivos modificados no commit 43

Slide 44

Slide 44 text

shaping ⇨ pitch pitch = problema + solução + rabbit holes 44 simplificado

Slide 45

Slide 45 text

http://stevenoxley.com/blog/2020/10/19/book-review-shape-up/ Mas existem críticos também….

Slide 46

Slide 46 text

Concluindo 46

Slide 47

Slide 47 text

Boas práticas para trabalho remoto ● Trabalho remoto ~ Trabalho assíncrono ● Algumas boas práticas: ○ Documento simplificado de requisitos e projeto ○ Micro-times ○ Sprints longos (~6 semanas) ○ Período de cool down 47

Slide 48

Slide 48 text

Obrigado! Marco Tulio Valente ASERG, DCC, UFMG 48