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
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 ;-)
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 ;-)
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
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
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
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 ;)
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
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)
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
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