Skip to content

Instantly share code, notes, and snippets.

@diegoeis
Created June 18, 2015 18:00
Show Gist options
  • Save diegoeis/79d8bf067c72c19ae80b to your computer and use it in GitHub Desktop.
Save diegoeis/79d8bf067c72c19ae80b to your computer and use it in GitHub Desktop.
Anotações da palestra do Pothix feita no #17elw em 2015

Pothix

Escolhas do desenvolvedor

  • O desenvolvedor decide uma série de coisas durante sua vida profissional. Você decide desde qual editor até o servidor que você vai usar.
  • Por que Ruby? Além de uma escolha pessoal, que é o principal motivo, a syntax é bem enxuta, tem bastante coisa pronta, fácil prototipagem e talvez você já tenha boa experiência isso
  • Mas você precisa saber o que usar: as vezes você precisa fazer um sistema embarcado, Ruby não é a resposta.
  • Use sempre linguagem correta para o problema correto
  • O Leela, projeto de integração de métricas da Locaweb, foi construído com Haskell, Go, C, Python, Clojure + Cassandra…
  • Cada uma dessas linguagens resolve problemas diferentes. Nenhuma das linguagens vai ser a bala de prata.
  • Seja fluente em pelo menos uma linguagem.
  • Saruman, projeto interno na Locaweb, em 9 meses, economizou mais de 75 servidor e ceca de 1.5 Milhões de reais.
  • E sobre testes? Que tipo de testes você faz no seu produto? Precisa de uma equipe de testes?
  • TDD é uma boa escolha inicial.
  • Bus Factor: mantenha sempre mais de um desenvolvedor em projetos importantes (e os não importantes também)
  • Pair programming e code review ajuda muito para que os integrantes da equipe compartilhem informações sobre o projeto
  • Git pode ser a alma do compartilhamento de informação dos projetos.
  • Merge Request/Pull Request são ótimos para que os outros integrantes avaliem as soluções dos colegas.
  • Use métodos e funções menores. Isso ajuda na hora de reutilizar código e principalmente na manutenção.
  • Feature Toggle é uma maneira menos burocrática e organizada de esconder e facilitar o deploy de novas features no sistema.
  • Premature optimisation is the root of all evil. Donald Knuth
  • Sempre antes de fazer qualquer otimização, use as ferramentas especificas para coletar os dados. Dessa forma você tem insumo para saber se melhorou ou piorou.
  • Design Patterns - Elements of reusable Object-Oriented Software - Erich Gamma, Richard Helm, Ralph Jonhson
  • Twelve-Factor
  • Codebase
  • Dependencies
  • Config
  • Backing services
  • Build, release, run
  • Processes
  • Port binding
  • Concurrency
  • Disposability
  • Dev/Prod Parity
  • Logs
  • Admin processes
  • Configuration Manager
  • Infraestrutura Imutável. Criar novas máquinas precisa ser um processo trivial. Você sobe uma nova máquina, sobe suas configurações e pronto. Seu servidor está pronto.
  • Esquema Blue Green para deploiar sua aplicação. Simples: tira um dos servidores, sobe seu pacote. Testa tudo e se estiver ok, direciona os usuários para o servidor novo enquanto você muda o outro servidor.
  • Faça entregas pequenas. Muito melhor do que fazer big bang deploy, onde você acumula as mudanças e faz o deploy de uma vez.
  • Escolha boas linguagens, faça testes, mantenha mais de um dev por projeto, escolha bons padrões de código, use configuration manager para gerenciar seus servidores, use pacotes de build para fazer deploy
  • Tenha opções e não respostas. Geralmente ninguém tem respostas definitivas para um determinado problema.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment