$30 off During Our Annual Pro Sale. View Details »

10 coisas que eu gostaria de ter aprendido mais cedo

Lucas Mazza
October 17, 2015

10 coisas que eu gostaria de ter aprendido mais cedo

Amigos desenvolvedores, o que vocês gostariam de ter aprendido no passado quando começaram com desenvolvimento de software que vocês sabem agora? Abram seus corações.

Nessa apresentação vou mostrar um compilado de aprendizado que eu e meus colegas de profissão compartilhamos durante a carreira.

Lucas Mazza

October 17, 2015
Tweet

More Decks by Lucas Mazza

Other Decks in Technology

Transcript

  1. View Slide

  2. Lucas Mazza
    @lucasmazza
    http:/
    /lucasmazza.github.io

    View Slide

  3. https:/
    /sp.femug.com
    https:/
    /github.com/braziljs/femug

    View Slide

  4. http:/
    /j.mp/femug-am

    View Slide

  5. http:/
    /www.casadocodigo.com.br/products/livro-html-css

    View Slide

  6. View Slide

  7. . . .

    View Slide

  8. 10 lições
    que eu gostaria
    ter aprendido
    mais cedo

    View Slide

  9. um monte de
    coisas que eu aprendi
    enquanto eu
    (não) fazia software

    View Slide

  10. E ainda
    estou
    aprendendo

    View Slide

  11. View Slide

  12. . . .

    View Slide

  13. #10 - Programar é facil,
    construir software nem tanto

    View Slide

  14. View Slide

  15. ‘08

    View Slide

  16. ‘08

    View Slide

  17. ‘10

    View Slide

  18. Talvez eu entenda alguma coisa agora.

    View Slide

  19. Talvez eu entenda alguma coisa agora.
    Eu acho.

    View Slide

  20. Talvez eu entenda alguma coisa agora.
    Eu acho.
    Talvez.

    View Slide

  21. View Slide

  22. Programar!

    View Slide

  23. Todo o resto
    Programar!

    View Slide

  24. ✗ Refatorações e manutenção.

    View Slide

  25. ✗ Refatorações e manutenção.
    ✗ Sistemas e times distribuídos.

    View Slide

  26. ✗ Refatorações e manutenção.
    ✗ Sistemas e times distribuídos.
    ✗ Deployments e monitoramento.

    View Slide

  27. ✗ Refatorações e manutenção.
    ✗ Sistemas e times distribuídos.
    ✗ Deployments e monitoramento.
    ✗ Mudanças de escopo, prazos e prioridades.

    View Slide

  28. ✗ Refatorações e manutenção.
    ✗ Sistemas e times distribuídos.
    ✗ Deployments e monitoramento.
    ✗ Mudanças de escopo, prazos e prioridades.
    ✗ Estimativas e previsibilidade.

    View Slide

  29. ✗ Refatorações e manutenção.
    ✗ Sistemas e times distribuídos.
    ✗ Deployments e monitoramento.
    ✗ Mudanças de escopo, prazos e prioridades.
    ✗ Estimativas e previsibilidade.
    ✗ Onboarding e aprendizado.

    View Slide

  30. View Slide

  31. A maioria dos problemas em
    desenvolvimento de software
    tem raizes sociais.

    View Slide

  32. View Slide

  33. Desenvolvimento não é apenas código

    View Slide

  34. É também resolver problemas
    e ajudar os outros

    View Slide

  35. E depende de muita colaboração e
    trabalho em equipe

    View Slide

  36. #9 - Não seja um herói.

    View Slide

  37. View Slide

  38. You Cannot Win Engineering
    Kevin Stevens
    https:/
    /blog.engineyard.com/2013/how-improvisational-theater-can-improve-team-
    collaboration

    View Slide

  39. Você trava em alguma coisa complicada.

    View Slide

  40. Você trava em alguma coisa complicada.
    Busca no Google/GitHub/StackOverflow/etc.

    View Slide

  41. Você trava em alguma coisa complicada.
    Busca no Google/GitHub/StackOverflow/etc.
    Tenta resolver o problema por 15/30 minutos.

    View Slide

  42. Você trava em alguma coisa complicada.
    Busca no Google/GitHub/StackOverflow/etc.
    Tenta resolver o problema por 15/30 minutos.
    Pede ajuda aos seus colegas.

    View Slide

  43. Você trava em alguma coisa complicada.
    Busca no Google/GitHub/StackOverflow/etc.
    Tenta resolver o problema por 15/30 minutos.
    Pede ajuda aos seus colegas.
    Volta para casa.

    View Slide

  44. Você trava em alguma coisa complicada.
    Busca no Google/GitHub/StackOverflow/etc.
    Tenta resolver o problema por 15/30 minutos.
    Pede ajuda aos seus colegas.
    Volta para casa.
    Trabalha mais no dia seguinte.

    View Slide

  45. “Sleep deprivation is not a badge of honor"
    DHH
    https:/
    /signalvnoise.com/posts/1006-sleep-deprivation-is-not-a-badge-of-honor

    View Slide

  46. “your career is a marathon, not a sprint”
    Miller Medeiros
    https:/
    /twitter.com/millermedeiros/status/614278181344935936

    View Slide

  47. Não tenha pressa

    View Slide

  48. Pedir ajuda nunca é ruim

    View Slide

  49. Não se esqueça de dormir

    View Slide

  50. #8 - Programar é um
    trabalho criativo.

    View Slide

  51. View Slide

  52. “The generative mechanisms that underlie
    creativity are universal”
    Robert Epstein
    Generativity Theory

    View Slide

  53. “[The programmer] builds castles in the air, from air, creating by
    exertion of the imagination. Few media of creation are so
    flexible, so easy to polish and rework, so readily capable of
    realizing grand conceptual structures."
    Fred Brooks
    The Mythical Man-Month

    View Slide

  54. View Slide

  55. View Slide

  56. Programar não é
    fritar pastel ou apertar parafuso

    View Slide

  57. Programar é baseado no
    processo criativo de cada um

    View Slide

  58. #7 - Open Source é muito
    importante

    View Slide

  59. Open Source

    View Slide

  60. Open Source
    Você

    View Slide

  61. View Slide

  62. Soluções compartilhadas
    para problemas comuns

    View Slide

  63. Open Source é muito importante.
    Mas não é o mais importante.

    View Slide

  64. Open Source não
    é uma competição

    View Slide

  65. Open Source não
    é uma competição

    View Slide

  66. View Slide

  67. Open Source não deveria ser
    um concurso de popularidade

    View Slide

  68. Open Source não é o seu trabalho.
    a não ser que realmente seja o seu trabalho.

    View Slide

  69. Fazer bom uso de OSS
    é muito mais produtivo

    View Slide

  70. View Slide

  71. Reporte bugs

    View Slide

  72. Reporte bugs
    Ensine os outros a usar

    View Slide

  73. Reporte bugs
    Ensine os outros a usar
    Teste versões betas

    View Slide

  74. Reporte bugs
    Ensine os outros a usar
    Teste versões betas
    Tente enviar patches

    View Slide

  75. Reporte bugs
    Ensine os outros a usar
    Teste versões betas
    Tente enviar patches
    Não seja um idiota no Twitter

    View Slide

  76. Já existem diversos projetos incríveis
    precisando de bons usuários por aí

    View Slide

  77. Manter um projeto dá muito mais
    trabalho do que publicar a primeira versão

    View Slide

  78. Você não precisa se sentir
    obrigado a contribuir

    View Slide

  79. #6 - Somos todos amadores.

    View Slide

  80. View Slide

  81. “Dude, sucking at something is
    the first step towards being sorta good at
    something.”

    View Slide

  82. Aprender é um subproduto

    View Slide

  83. Aprender é um subproduto
    Trabalho → Colaboração → Aprendizado → ??? → Lucro

    View Slide

  84. Trabalhar com tecnologia requer evolução

    View Slide

  85. Além de humildade e constante
    aprendizado

    View Slide

  86. #5 - Não use MongoDB.
    Sério.

    View Slide

  87. #5 - Seja opinado.
    E tente não ser um idiota.

    View Slide

  88. “The exalted ideal: To have no emotional connection to the
    workbench.
    Hogs and wash.”
    DHH
    https:/
    /signalvnoise.com/posts/3727-finding-your-workbench-muse

    View Slide

  89. …At the end of the day, nobody should tell you
    how to feel about your tools"
    DHH
    https:/
    /signalvnoise.com/posts/3727-finding-your-workbench-muse

    View Slide

  90. View Slide

  91. MAS…

    View Slide

  92. “You’re not wrong. You’re just
    an asshole”
    The Dude

    View Slide

  93. Contextos serão diferentes

    View Slide

  94. Contextos serão diferentes
    Respire fundo e seja construtivo

    View Slide

  95. Contextos serão diferentes
    Respire fundo e seja construtivo
    Algumas coisas podem ser diferentes

    View Slide

  96. Contextos serão diferentes
    Respire fundo e seja construtivo
    Algumas coisas podem ser diferentes
    Outras não valem o esforço ¯\_(ϑ)_/¯

    View Slide

  97. Hater funcional™

    View Slide

  98. “A critique of your project is not tantamount to a personal attack.
    An alternative take on the problem your software solves is not
    hostile or divisive. It is simply the result of a regenerative process,
    driven by an unending desire to improve the status quo.”
    “You Are Not Your Code”
    http:/
    /sstephenson.us/posts/you-are-not-your-code

    View Slide

  99. Código é só código

    View Slide

  100. “Continue na linha,
    sua opinião é muito importante para nós”

    View Slide

  101. #4 - Gestão é um
    mal necessário.

    View Slide

  102. #4 - Gestão é um
    mal bem necessário.

    View Slide

  103. View Slide

  104. Gestão mal feita sempre
    vai ser ruim

    View Slide

  105. Julie Zhuo
    https:/
    /medium.com/the-year-of-the-looking-glass/average-manager-vs-great-manager-cf8a2e30907d

    View Slide

  106. Boa gestão
    não vai

    View Slide

  107. Julie Zhuo
    https:/
    /medium.com/the-year-of-the-looking-glass/average-manager-vs-great-manager-cf8a2e30907d

    View Slide

  108. “Management is the practice of constantly
    identifying what a team needs in order to be
    successful and then delivering on those needs.”
    Julie Zhuo
    https:/
    /medium.com/the-year-of-the-looking-glass/so-you-think-you-want-to-manage-1229723a4501

    View Slide

  109. Suporte no dia a dia.

    View Slide

  110. Suporte no dia a dia.
    Orientação no decorrer do projeto.

    View Slide

  111. Suporte no dia a dia.
    Orientação no decorrer do projeto.
    Reduzir ruídos e interrupções externas.

    View Slide

  112. Ellen Chisa
    http:/
    /blog.ellenchisa.com/2014/07/20/engineers-pm-sucks-heres-fix/
    O seu gerente pode…

    View Slide

  113. Ellen Chisa
    http:/
    /blog.ellenchisa.com/2014/07/20/engineers-pm-sucks-heres-fix/
    O seu gerente pode…
    • Não fazer o trabalho que o você espera

    View Slide

  114. Ellen Chisa
    http:/
    /blog.ellenchisa.com/2014/07/20/engineers-pm-sucks-heres-fix/
    O seu gerente pode…
    • Não fazer o trabalho que o você espera
    • Não fazer o trabalho corretamente

    View Slide

  115. Ellen Chisa
    http:/
    /blog.ellenchisa.com/2014/07/20/engineers-pm-sucks-heres-fix/
    O seu gerente pode…
    • Não fazer o trabalho que o você espera
    • Não fazer o trabalho corretamente
    • Estar atarefado demais para conseguir focar

    View Slide

  116. Ellen Chisa
    http:/
    /blog.ellenchisa.com/2014/07/20/engineers-pm-sucks-heres-fix/
    O seu gerente pode…
    • Não fazer o trabalho que o você espera
    • Não fazer o trabalho corretamente
    • Estar atarefado demais para conseguir focar
    • Não ter contexto para tomar as decisões

    View Slide

  117. Eu não posso arrumar isso para você,
    mas você pode tentar.

    View Slide

  118. Mínimo de
    Gestão
    Necessária™

    View Slide

  119. Alguém precisa lutar
    contra a entropia do seu projeto

    View Slide

  120. Gestão (de projetos) é muito importante para
    softwares/ambientes/empresas melhores

    View Slide

  121. #3 - Queime seus ídolos

    View Slide

  122. “everything around you, was made up by
    people that were no smarter than you.”

    View Slide

  123. Muita gente não faz a menor idéia do
    que está fazendo

    View Slide

  124. “[…] Óbvio que existem profissionais de expressão,
    mas isso aqui é um mercado de desenvolvedores,
    não de rockstar-jedi-samurai-ninja.”
    Daniel Filho
    https:/
    /danielfilho.github.io/2014/08/20/queime-seus-idolos/

    View Slide

  125. “[…] By idolising people, I gave up on my opportunity to
    change the world, learn something exhilaratingly new, call
    out the wrongs done, and contribute to right some of the
    wrongs.”
    Divya Manian
    https:/
    /medium.com/@divya/burn-your-idols-e82131956096

    View Slide

  126. “Keep pushing. Don’t simply do what the rest of us do—
    do it differently, do it better, do it faster. Take a stance
    and have an opinion. Don’t be afraid to be wrong. “
    Mark Otto
    http:/
    /markdotto.com/2012/08/17/take-action/

    View Slide

  127. “you have little to lose and so very much to
    gain just by being yourself.”
    Mark Otto
    http:/
    /markdotto.com/2012/08/17/take-action/

    View Slide

  128. Contrário a crença popular,
    A grande maioria dos desenvolvedores
    são pessoas normais

    View Slide

  129. #2 - Você pode escolher a sua
    própria aventura.

    View Slide

  130. Ruby
    JavaScript
    Elixir
    Python
    Scala
    Swift
    Android
    Clojure
    Go
    Rust
    Haskell
    Java
    CSS
    PHP

    Objective-C

    View Slide

  131. Criar software.

    View Slide

  132. Criar software.
    Escrever livros.

    View Slide

  133. Criar software.
    Escrever livros.
    Ministrar cursos.

    View Slide

  134. Criar software.
    Escrever livros.
    Ministrar cursos.
    Liderar outros.

    View Slide

  135. Criar software.
    Escrever livros.
    Ministrar cursos.
    Liderar outros.
    Criar padrões.

    View Slide

  136. Criar software.
    Escrever livros.
    Ministrar cursos.
    Liderar outros.
    Criar padrões.
    De qualquer lugar do mundo.

    View Slide

  137. Você escolhe a sua carreira,
    não o contrário

    View Slide

  138. . . .

    View Slide

  139. #10 - Escrever código é facil, construir software nem tanto.

    View Slide

  140. #10 - Escrever código é facil, construir software nem tanto.
    #9 - Não seja um herói.

    View Slide

  141. #10 - Escrever código é facil, construir software nem tanto.
    #9 - Não seja um herói.
    #8 - Programar é um trabalho criativo.

    View Slide

  142. #10 - Escrever código é facil, construir software nem tanto.
    #9 - Não seja um herói.
    #8 - Programar é um trabalho criativo.
    #7 - Open Source é muito importante. Mas não é o mais importante.

    View Slide

  143. #10 - Escrever código é facil, construir software nem tanto.
    #9 - Não seja um herói.
    #8 - Programar é um trabalho criativo.
    #7 - Open Source é muito importante. Mas não é o mais importante.
    #6 - Somos todos amadores.

    View Slide

  144. #10 - Escrever código é facil, construir software nem tanto.
    #9 - Não seja um herói.
    #8 - Programar é um trabalho criativo.
    #7 - Open Source é muito importante. Mas não é o mais importante.
    #6 - Somos todos amadores.
    #5 - Seja opinado. Só tente não ser um idiota.

    View Slide

  145. #10 - Escrever código é facil, construir software nem tanto.
    #9 - Não seja um herói.
    #8 - Programar é um trabalho criativo.
    #7 - Open Source é muito importante. Mas não é o mais importante.
    #6 - Somos todos amadores.
    #5 - Seja opinado. Só tente não ser um idiota.
    #4 - Gestão é um mal bem necessário.

    View Slide

  146. #10 - Escrever código é facil, construir software nem tanto.
    #9 - Não seja um herói.
    #8 - Programar é um trabalho criativo.
    #7 - Open Source é muito importante. Mas não é o mais importante.
    #6 - Somos todos amadores.
    #5 - Seja opinado. Só tente não ser um idiota.
    #4 - Gestão é um mal bem necessário.
    #3 - Queime seus ídolos .

    View Slide

  147. #10 - Escrever código é facil, construir software nem tanto.
    #9 - Não seja um herói.
    #8 - Programar é um trabalho criativo.
    #7 - Open Source é muito importante. Mas não é o mais importante.
    #6 - Somos todos amadores.
    #5 - Seja opinado. Só tente não ser um idiota.
    #4 - Gestão é um mal bem necessário.
    #3 - Queime seus ídolos .
    #2 - Você pode escolher a sua própria aventura.

    View Slide

  148. View Slide

  149. #1 - Ouse ser um otimista.

    View Slide

  150. Programar significa
    falhar constantemente

    View Slide

  151. View Slide

  152. View Slide

  153. ✓ código bugado

    View Slide

  154. ✓ código bugado
    ✓ projeto atrasado

    View Slide

  155. ✓ código bugado
    ✓ projeto atrasado
    ✓ estimativas erradas

    View Slide

  156. ✓ código bugado
    ✓ projeto atrasado
    ✓ estimativas erradas
    ✓ features incompletas

    View Slide

  157. ✓ código bugado
    ✓ projeto atrasado
    ✓ estimativas erradas
    ✓ features incompletas
    ✓ bikesheding ¯\_(ϑ)_/¯

    View Slide

  158. (˽°□°҂˽Ɨ ˍʓˍ

    View Slide

  159. Programar também é
    criar muito a partir de nada

    View Slide

  160. “Programming gives us live video conversations with relatives
    around the world; a map of our own biology; widgets that monitor
    oil pipelines from the inside; spreadsheets that run entire
    businesses; games where you build cities, or pretend to be a goat.”

    View Slide

  161. “Programming is like building structures out of Lego,
    but I never run out of Lego bricks, and if there’s no brick
    with the exact shape that I need, I can make that brick.“
    Sam Stokes - What Programming Is Like
    http:/
    /blog.samstokes.co.uk/blog/2014/05/01/what-programming-is-like/

    View Slide

  162. “You are all better than you think you are, you
    are just designed not to believe it when you
    hear it from yourself.”
    Jeff Winger - Community S01E01

    View Slide

  163. http:/
    /positivedoodles.tumblr.com/

    View Slide

  164. http:/
    /positivedoodles.tumblr.com/

    View Slide

  165. http:/
    /positivedoodles.tumblr.com/

    View Slide

  166. http:/
    /positivedoodles.tumblr.com/

    View Slide

  167. “You will need other people, and you will need to be
    that other person to someone else a living, breathing,
    screaming invitation to believe better things.”
    Jamie Tworkowski
    https:/
    /twloha.com/blog/happy-birthday/

    View Slide

  168. Desenvolvimento de software é
    difícil e incrível ao mesmo tempo

    View Slide

  169. nada nessa indústria é permanente,
    completo ou perfeito

    View Slide

  170. e tudo pode ser melhorado

    View Slide

  171. Obrigado!
    @lucasmazza

    View Slide