Slide 1

Slide 1 text

Escolhendo o que aprender em seguida Elias Dorneles @eliasdorneles

Slide 2

Slide 2 text

WARNING: conteúdo experimental e opinionado

Slide 3

Slide 3 text

Dificuldades em escolher a próxima coisa (grande-ish) ● retorno não é óbvio antes de aprender ● somos bombardeados por (e suscetíveis ao) hype ● é difícil se auto-avaliar -- vide Dunning-Kruger ● tendemos a escolher coisas perto do que já conhecemos ● em geral, pensar no longo prazo é difícil

Slide 4

Slide 4 text

Idéia: aplicar Pareto Quais 20% do esforço trarão 80% dos resultados?

Slide 5

Slide 5 text

Okey, vamos discutir algumas possibilidades

Slide 6

Slide 6 text

Mais um framework ● tende a ser menos reutilizável ● tende a defasar relativamente rápido ● aprender a usar é investimento a curto prazo ● mas aprender a desenvolver é longo prazo ○ por isso há tantos frameworks, muita gente faz para aprender ;-)

Slide 7

Slide 7 text

Se você já conhece dois frameworks Web, provavelmente já conhece um número suficiente

Slide 8

Slide 8 text

Outra linguagem ● é divertido! ○ muitas vezes, mais entretenimento que investimento ● exposição a paradigmas diferentes pode trazer benefícios produtivos & intelectuais ● se você já conhece mais de 5, talvez esteja na hora de focar ;-)

Slide 9

Slide 9 text

O QUÊ a gente faz importa mais que a linguagem que a gente usa

Slide 10

Slide 10 text

Uma biblioteca nova ● retorno é uma ordem de grandeza maior que um framework ○ menos dependências, menos imposições de arquitetura, abstrações mais fáceis de “transportar” ● bibliotecas tendem a ter vida longa :) ● bom investimento, especialmente se domínio for novidade também

Slide 11

Slide 11 text

Bibliotecas fazem mais do que resolver o problema ● requests ensina sobre protocolo HTTP ● SQLAlchemy ensina sobre banco de dados e ORMs em geral ● sklearn ensina sobre machine learning ● etc Mais: servem como referência para bom design

Slide 12

Slide 12 text

LIBRARIES ROCK!

Slide 13

Slide 13 text

Aprofundar-se na linguagem atual ● bom investimento em ambos curto e longo prazo ● há muito a aprender: sintaxe & semântica, código idiomático, stdlib, design patterns, tooling (editor/IDE, linters, profilers), packaging, ... ● multiplicador de todos os anteriores

Slide 14

Slide 14 text

BTW, linguagem atual pode ser um combo

Slide 15

Slide 15 text

Testes & refatoração ● aumentam o impacto do código com o tempo ○ mais chances de ser mantido, usado e estendido ● de mãos dadas com a linguagem atual ● caminho para bom design ● multiplicador de todos os anteriores ○ quanto menos souber sobre, mais vale a pena investir ;)

Slide 16

Slide 16 text

Não existe código perfeito, mas existem formas de lidar com o imperfeito

Slide 17

Slide 17 text

Trabalho em equipe ● também é uma habilidade ● livro fortemente recomendado: Team Geek ○ português: http://novatec.com.br/livros/equipessoftware/ ● não significa agradar todo mundo, mas cultivar humildade, respeito & confiança ● multiplicador de todos os anteriores

Slide 18

Slide 18 text

“O que vai alavancar ou destruir sua carreira é o quão bem você colabora com os outros.” Team Geek

Slide 19

Slide 19 text

Resumo até aqui ● Framework: meh... ● Linguagem: hm, talvez... ● Biblioteca: yeah! ● Aprofundar na linguagem atual: oh yeah! ● Testes e refatoração: okay, okay! ● Trabalho em equipe: yesss!!

Slide 20

Slide 20 text

Interesses cruzados, úteis em mais situações ● comunicação ○ e.g.: como perguntar, como responder, reportar bugs, etc ● habilidades organizacionais & gerência ○ ajudar pessoas a completar um objetivo é super-útil ● design de produto ○ resolver um problema considerando as restrições ● noções de design gráfico ○ Become a Graphic Designer in 5 minutes (Quora)

Slide 21

Slide 21 text

E ainda tem um último multiplicador para TODOS os anteriores...

Slide 22

Slide 22 text

EMPATIA Valor central em desenvolvimento de software

Slide 23

Slide 23 text

Porque se colocando no lugar dos outros, você: ● busca escrever código mais legível ● consegue ajudar outros a melhorarem também ○ funcionando você mesmo como um multiplicador ● se comunica efetivamente ● navega problemas de maneira eficiente ● amadurece de verdade

Slide 24

Slide 24 text

Algum tutorial ou HOWTO?

Slide 25

Slide 25 text

OBRIGADO! Inspirações & referências: ● Team Geek (livro) ● On Being a Senior Engineer [http://www.kitchensoap. com/2012/10/25/on-being-a- senior-engineer/] ● James Hague em http://prog21. dadgum.com ● Steve Yegge em http://steve- yegge.blogspot.com Elias Dorneles @eliasdorneles