Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Do ASP.NET para o Rails - as melhores partes

Do ASP.NET para o Rails - as melhores partes

https://www.eventials.com/locaweb/do-asp-net-para-o-rails-as-melhores-partes-com-philippe-hardardt/

Conhecer uma stack nova é um desafio, e deixar uma plataforma que você já domina é certamente desconfortável. Este tipo de mudança porém oferece muitas oportunidades e aprendizados.

Nesta palestra vou contar minha história onde deixei o .NET depois de 7 anos de experiência para migrar para o Ruby. Quero compartilhar como fiz para aprender Ruby já sabendo uma linguagem, o que mais gostei no Ruby e no Rails e como isso me incentivou a aprender coisas que já tinha ouvido falar, porém nunca havia dado atenção.

Você vai saber as partes do Ruby on Rails que me cativaram, o que ainda gosto no .Net, e o que podemos aprender olhando para outras comunidades.

34bae1a7ee987164af9d3490ee79f7c9?s=128

Philippe Hardardt

September 23, 2016
Tweet

More Decks by Philippe Hardardt

Other Decks in Programming

Transcript

  1. Carregando palestra…

  2. Do ASP.Net para o Rails As melhores partes

  3. Oi, eu sou o Phil

  4. None
  5. Mas antes disso eu trabalhei com .Net

  6. Por 7 anos!

  7. Recentemente eu aprendi Ruby e Rails

  8. E vou contar pra vocês => O que eu mais

    gostei no Ruby => O que eu mais gostei no Rails => Partes boas do .Net => Como encarar mudanças => Referências para estudo =D
  9. O que eu adorei:

  10. O Ruby (e o Rails) são focados na felicidade do

    programador
  11. -Matz, Criador do Ruby “Eu espero ver o Ruby ajudando

    cada programador no mundo a ser produtivo, a curtir programar, e a ser feliz. Esse é o objetivo principal do Ruby.”
  12. "Otimizar para a felicidade do programador" inclusive faz parte da

    Doutrina Rails
  13. E funcionou, o Ruby me fez felizão =)

  14. O Ruby é expressivo

  15. 3.times do `say "penny"` 3.times { knock_the_door } end def

    knock_the_door `afplay /System/Library/Sounds/Pop.aiff` end Quer rodar um bloco 3x?
  16. 3.times do `say "penny"` 3.times { knock_the_door } end def

    knock_the_door `afplay /System/Library/Sounds/Pop.aiff` end Quer rodar um bloco 3x?
  17. No C# seria algo mais burocrático for(int i = 0;

    i < 3; i++) { // Do C# stuff }
  18. O exclamação ('bang') indica uma versão mais perigosa de um

    método ⚠
  19. # Esse cara é tranquilo: user.save # Cuidado, esse pode

    gerar uma exceção: user.save!
  20. # De boa, uma nova string é gerada: "Phil ".strip

    # Cuidado, modifica a string original: "Phil ".strip!
  21. Foco na troca de mensagens

  22. a_nil = nil # Olá objeto, o senhor por acaso

    é nulo? a_nil.nil? # Sim, estimado programador! Eu sou nulo! => true
  23. a_number = 0 # Querido número, por acaso você é

    zero? a_number.zero? # => true
  24. # Meu amigo array, tem algo dentro de ti? [].any?

    # => false # Manda o primeiro que tiver! [1, 2, 3, 4].first # => 1 # Agora manda o último! [1, 2, 3, 4].last # => 4
  25. O Ruby fala com pessoas, não com computadores

  26. { Chaves } ( parênteses ) ; ponto-e-vírgula ; quando

    obrigatórios são ruído
  27. O uso de ; no fim da linha vem do

    Algol, dos anos 50 $
  28. E por que é importante ser expressivo?

  29. -Avdi Grimm "O código conta uma história sobre um problema

    que precisava de solução, e o caminho que o desenvolvedor escolheu para completar essa tarefa"
  30. "Código" não quer dizer uma linguagem secreta

  31. Você passa muito mais tempo lendo código do que escrevendo

  32. Quantos olhos vão passar pelo seu código?

  33. E não é só Ruby, olha o Rails aí

  34. Cultura de testes Write a failing test Make the test

    pass Refactor
  35. Testes ajudam a ver seu código de outra forma

  36. Você passa a ser usuário daquele código

  37. ✨Active Record ✨

  38. Padronização ❤ ids, relacionamentos, consulta de dados, …

  39. Quando quero algo no banco de dados, consigo usar algo

    simples como: a_task_list = TaskList.create( name: 'A Task List', public: true, user: current_user)
  40. Scopes class Task < ActiveRecord::Base belongs_to :user scope :completed, ->

    { where(complete: true) } end # buscando as tarefas completadas do usuário current_user.tasks.completed
  41. O ActionMailer é poderoso

  42. Views para montar emails ❤

  43. O Devise cuida de tudo Confirmação de email, recuperação de

    senha, bloqueio de contas, expiração de sessão, …
  44. O Rails é uma grande inspiração do ASP.Net MVC

  45. Mas nem tudo são flores

  46. “The Law of leaky abstractions” #LOLA

  47. –Joel Spolsky “Todas as abstrações não triviais vão, de alguma

    forma, vazar”
  48. As facilidades que o Ruby e o Rails oferecem escondem

    mecanismos que você eventualmente vai precisar entender
  49. Você pode ter problemas de performance e não saber pq

  50. “N+1” Fazer mais consultas do que o necessário vai deixar

    sua aplicação lenta
  51. None
  52. O Ruby e o Rails tem algumas pegadinhas

  53. O Ruby interpreta zero à esquetda como número octal: roman_numerals

    = { C: 100, L: 050, X: 010 } => { :C=>100, :L=>40, :X=>8 }
  54. Comparações, comparações #equals? #eql? #== #=== #=~ #<=>

  55. Contar registros no banco pode ser complicado

  56. # Carrega todas as 116 tarefas do banco current_user.tasks.length #

    => 116 # Executa um "Count" no banco current_user.tasks.count # => 116 # Usa a informação em memória se disponível, # senão executa um "Count" no banco ✨ current_user.tasks.size # => 116
  57. Não funciona direito no Windows ˍʓˍ ƗЅ(`Д´)ůớ ˍʓˍ

  58. Pelo menos 50% dos desenvolvedores usam Windows

  59. "#" "#" ϛ(Ϋ-Ϋϛ)

  60. E .Net, é ruim?

  61. Não!

  62. Bom Ruim

  63. Bom? Ruim?

  64. A sintaxe do Razr é ótima

  65. <p>Seja bem vindo, @name </p> @if (@notifications.Any()) { <p> Você

    possui @notifications.Count notificações! </p> }
  66. LINQ é praticamente SQL

  67. var query = from customer in customers join order in

    orders on customer.ID equals order.ID orderby customer.Name select new { customer.Name, order.Product };
  68. .Net tem grandes ferramentas para devs

  69. O InteliSense do Visual Studio era realmente útil

  70. Debug era a coisa mais linda ✨

  71. E essa mudança toda, valeu a pena?

  72. Sim!

  73. Coisas boas #1: Voltar a ser novato

  74. Quantas coisas que você usa no dia a dia, mas

    nunca estudou sobre?
  75. • Testes • SQL • Javascript • HTML • CSS

  76. Programação por coincidência

  77. Eu aprendi a ouvir mais

  78. #2: Novas perspectivas para velhos problemas

  79. #3: Novas ferramentas ⚒

  80. None
  81. E ai, Doeu?

  82. Não foi fácil pra mim, e provavelmente não será pra

    você
  83. Eu tive muito apoio quando entrei na Plataformatec ❤

  84. E tenho algumas dicas =D

  85. #1 - Acredite em você! Você é capaz!

  86. Jace, o Kão “Cara, ser ruinzão é o primeiro passo

    para se tornar bom em alguma coisa”
  87. #2 - Seja paciente Aprender leva algum tempo

  88. #3 - Seja simples Entenda bem as estruturas básicas

  89. #4 - Conheça outras comunidades

  90. None
  91. ELUG

  92. None
  93. Na última Rubyconf eu ainda trabalhava com .Net

  94. #5 - Estude conceitos de programação

  95. Refatoração

  96. Qualidade de código

  97. Testes

  98. Orientação a Objetos

  99. Design Patterns

  100. Ágil

  101. #6 - Analise tradeoffs Entender prós e contras faz parte

    do dia a dia de qualquer desenvolvedor
  102. #7 - Peça ajuda! Todas as dúvidas merecem ser perguntadas

    =)
  103. #8 - Estude inglês /0

  104. Referências de estudo

  105. None
  106. None
  107. None
  108. None
  109. None
  110. None
  111. None
  112. None
  113. None
  114. Estamos contratando! http://plataformatec.workable.com

  115. Obrigado! peagha @philHenri