A Linguagem Mais Legal      do Mundo
A Linguagem Mais Legal      do Mundo                          o)                       n ã                  ou            ...
Guilherme Silveira    @guilhermecaelum
Ricardo Valeriano     @sr_valeriano
Java é D+
Java é D+
Java
JavaList<Categoria> categorias = newArrayList<Categoria>();for(Produto p : produtos)    categorias.add(p.getCategoria());f...
JavaList<Categoria> categorias = newArrayList<Categoria>();for(Produto p : produtos)    categorias.add(p.getCategoria());f...
JavaList<Categoria> categorias = newArrayList<Categoria>();for(Produto p : produtos)    categorias.add(p.getCategoria());f...
Ruby é D+
Ruby é D+
Rubyunicas = []for produto in produtos  unless(unicas.include? produto.categoria)    unicas << produto.categoria  endend
Rubyunicas = []for produto in produtos  unless(unicas.include? produto.categoria)    unicas << produto.categoria  endend
Rubyunicas = produtos.map{|p| p.categoria}.uniq
Ruby  unicas = produtos.map{|p| p.categoria}.uniqtotal = produtos.inject(0){|tot, p| tot + p.valor}
Ruby  unicas = produtos.map{|p| p.categoria}.uniqtotal = produtos.inject(0){|tot, p| tot + p.valor}
sugestões para um bom programador   1. domine sua api (versus não seja dominado)
sugestões para um bom programador   1. domine sua api (versus não seja dominado)
Rubyunicas = produtos.map(&:categoria).uniqtotal = produtos.inject(0){|tot, p| tot +p.valor}
JavaList<Categoria> categorias = newArrayList<Categoria>();for(Produto p : produtos)    categorias.add(p.getCategoria());f...
JavaList<Categoria> categorias = newArrayList<Categoria>();for(Produto p : produtos)    categorias.add(p.getCategoria());f...
sugestões para um bom programador   2. domine sua api (versus não seja dominado)
sugestões para um bom programador   2. domine sua api (versus não seja dominado)
1 e 2. domine sua api JavaSet categorias = new HashSet();for(Produto p : produtos) cat.add(p.categoria());double total = 0...
1 e 2. domine sua api JavaSet categorias = new HashSet();for(Produto p : produtos) cat.add(p.categoria());double total = 0...
Rubyunicas = produtos.map(&:categoria).uniqtotal = produtos.inject(0){|tot, p| tot +p.valor}
Rubyunicas = produtos.map(&:categoria).uniqtotal = produtos.inject(0){|tot, p| tot +p.valor}                              ...
Rubyunicos = produtos.map(&:categoria).uniqtotal = produtos.map(&:valor).inject(:+)
Rubyunicos = produtos.map(&:categoria).uniqtotal = produtos.map(&:valor).inject(:+)                                       ...
Scalaprodutos.map(_.categoria).uniqueprodutos.map(_.valor).sum
Scalaprodutos.map(_.categoria).uniqueprodutos.map(_.valor).sum                               á!                           ...
Scalaprodutos.map(_.categoria).uniqueprodutos.map(_.valor).sum                               á!                           ...
Scalaclass Compra() {  lazy val produtos = Produtos.all}
Scalaclass Compra() {  lazy val produtos = Produtos.all}                    BONUS ROUND: public lazy!
Scalaclass Compra() {  lazy val produtos = Produtos.all}                    BONUS ROUND: public lazy!class Compra(produtos...
Scalaclass Compra() {  lazy val produtos = Produtos.all}                    BONUS ROUND: public lazy!class Compra(produtos...
Scalaclass Compra() {  lazy val produtos = Produtos.all}                    BONUS ROUND: public lazy!class Compra(produtos...
#scala rocks
#scala rocks    #fato
#scala rocks    #fato    Obrigado
#scala rocks    #fato    Obrigado  THE END
#scala rocks    #fato    Obrigado  THE END
Guilherme Silveira    @guilhermecaelum
Ricardo Valeriano     @sr_valeriano
O que buscamos numa     linguagem? • poderosa! (o que POSSO fazer?) • expressiva! (COMO posso fazer?)
O que buscamos numa     linguagem? • poderosa! (o que POSSO fazer?) • expressiva! (COMO posso fazer?)
O que buscamos numa     linguagem? • poderosa! (o que POSSO fazer?) • expressiva! (COMO posso fazer?)
Exercício: O que expressa maisinformação de maneira      mais breve?
A medida que diminuem as palavras,aumenta a ambiguidade.    Valim - GuruSP
1 - português (pt-br)
Usei o cartão decrédito da minha mãe   pois estava sem      dinheiro.
Usei o cartão decrédito da minha mãe   pois estava sem s                    b a      dinheiro. síla                 2 0   ...
2 - inglês (en-us)
I’ve used my mom’scredit card ‘cause I had       no money.
I’ve used my mom’scredit card ‘cause I had  s                       b a       no money. sí  la                    1 7     ...
3 - manês
Aí Jão, tava no veneno tá ligado? Saquei do  cartão da véia práadquirir uns bens, na  humildade mêmo.
4 - coreano
já a primeira vista qual vc prefere?
돈 없어서 엄아 카드    썼다.
돈 없어서 엄아 카드              * *    썼다.   A L                M bas               R a            F O síl           * 2         ...
Expressividade 엄카 썼다.
Expressividade 엄카 썼다.                        ído.                            ru                      e m                  ...
Coreano• - Palavras• + Expressividade• + Poder
안녕~ 집에 갈래?
안녕~ 집에 갈래?
Então o que queremos?• + Expressividade• + Poder• + Concisão
‘you can accomplishmore in smaller yetreadable code’ matz (on ruby)
produtos.map(&:category).uniq
class Complaint  def has_category?    @product.andand.category  endend
class Complain  def has_category?    !! @product.andand.category  endend
andand ?
andand ?
def has_category?  @product && @product.categoryend
@product.andand.category         zoado né?
@product.andand.category         zoado né?   evan phoenix
@product.andand.category              zoado né?‘i don’t need more randomboolean conditional constructsbecause thats not wh...
@product.andand.category               zoado né? ‘i don’t need more random boolean conditional constructs because thats no...
@product.andand.category               zoado né? ‘i don’t need more random boolean conditional constructs because thats no...
não éum random boolean conditional
não éum random boolean conditional      é o básico de uma  mônada de funcional
não é  um random boolean conditional        é o básico de uma    mônada de funcionalproducts.map(_.category) (0 ou +)
não é  um random boolean conditional        é o básico de uma    mônada de funcionalproducts.map(_.category) (0 ou +)produ...
não é  um random boolean conditional        é o básico de uma    mônada de funcionalproducts.map(_.category) (0 ou +)produ...
O que procuramos?Não é só escrever     menos.
PoderExpressividade   Concisãosão contextuais
quem acha que sualinguagem é perfeita?
se sim:você DOMINA outralinguagem tanto quanto      domina esta?
se sim:de TODAS as INFINITASpossibilidades, em 100 anos     de computação...    ENCONTRAMOS:
a MELHOR   linguagem deTODOS OS TEMPOS!
a MELHOR   linguagem deTODOS OS TEMPOS!
é a mesma coisa que dizerque seu marido/sua esposa é a melhor de todos os         tempos
é a mesma coisa que dizerque seu marido/sua esposa é a melhor de todos os         tempos
a chance disso ser   verdade é 0   FONTE: estatisca básica
‘it’s just plain impossibleto design a perfectlanguage’       matz
‘Python and Ruby provide almostthe same power to the programmer.Instead of emphasizing the what, Iwant to emphasize the ho...
‘humans requiremore sophisticatedtools to program’    matz
De tempos em temposas ferramentas mudam       e evoluem
certeza: nossas linguagens e escolhaspossuem desvantagens
(re)conheça bem as    desvantagens!
p  MySQL as queue?Neo4J as crud storage?
senão: você vai abusar dasDESVANTAGENS.
‘o teu overuse é muitobom prá você mas adesgraça dos outros’    jay fields
Mas tudo bem,amanhã você vai sair do projeto mesmo...
Mas tudo bem,amanhã você vai sair do projeto mesmo...
quem está a mais de2 anos no mesmo     projeto?
seja o principalCRÍTICO de suas     escolhas
então que diabos você     recomenda?
quem melhor que oValim pra dizer quando usar e quando NÃO      usar rails?
quem melhor que aAbril pra dizer quando usar e quando NÃO      usar REST?
‘Quando voce quebra o projetoem vários, fica muito mais fácilde ver que para uma parte doprojeto uma linguagem é maisintere...
projetos pequenosmultiplos projetos
“since most developers arent that good(its rumored that almost 50% are belowaverage) we need to direct the way theydo thin...
“developers are responsible professionalsand so should be given the freedom to dowhatever they need to do”      COMPLAINT:...
‘Often people aredirecting in some casesand enabling in others’martin fowler
não escolher sualinguagem preferida      sempre
online.caelum.com.br
baseado nisso
baseado nissoalunos (java)
baseado nissoex-alunos  (java)    alunos             (java)
baseado nisso ex-alunos   (java)     alunos               (java)   vagas(ruby/solr)
baseado nisso ex-alunos   (java)     alunos    gnarus               (java)   (scala)   vagas(ruby/solr)
baseado nisso ex-alunos   (java)     alunos    gnarus     exercicios               (java)   (scala)   (ruby/rails)   vagas...
baseado nisso ex-alunos   (java)     alunos    gnarus     exercicios               (java)   (scala)   (ruby/rails)   vagas...
baseado nisso ex-alunos   (java)     alunos    gnarus      exercicios               (java)   (scala)    (ruby/rails)   vag...
baseado nisso ex-alunos   (java)     alunos    gnarus     exercicios               (java)   (scala)   (ruby/rails)   vagas...
baseado nisso ex-alunos   (java)     alunos    gnarus     exercicios               (java)   (scala)   (ruby/rails)   vagas...
baseado nisso ex-alunos                                       +3 projetos   (java)                                        ...
baseado nisso ex-alunos                                       +3 projetos   (java)                                        ...
baseado nisso ex-alunos                                       +3 projetos   (java)                                        ...
baseado nisso                                  aws tickets                                    (ruby) ex-alunos            ...
1. (revisitada) domine    sua linguagem a ponto      de criticar pontos         negativos delaseja ela java, ruby, scala, ...
2. (opcional) domine outras linguagens TANTO quanto.
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
nenhuma linguagem ou ferramenta é ruim*
nenhuma linguagem ou ferramenta é ruim*      * salvo ‘brainf*ck’
todas são boas*
todas são boas* boa é contextual,
todas são boas* boa é contextual, boa é pessoal,
todas são boas* boa é contextual, boa é pessoal, boa é temporal.
todas são boas* boa é contextual, boa é pessoal, boa é temporal.    * salvo ‘brainfuck’
domine suas escolhas.não seja dominado por elas.        @guilhermecaelum         @sr_valeriano           Obrigado
A linguagem maislegaldomundo
A linguagem maislegaldomundo
A linguagem maislegaldomundo
A linguagem maislegaldomundo
A linguagem maislegaldomundo
A linguagem maislegaldomundo
A linguagem maislegaldomundo
Próximos SlideShares
Carregando em…5
×

A linguagem maislegaldomundo

865 visualizações

Publicada em

A melhor linguagem do mundo / Guilherme Silveira e Ricardo Valeriano
Que tal a produtividade da linguagem que você mais gosta com garantias de uma nova versão de uma lib não quebrará tão facilmente seu código? Ainda com uma sintaxe mais limpa, mais concisa, menos poluída, mais gostosa? Se beneficiar das bibliotecas existentes ou criar a sua própria? Trabalhar em OO, pseudo-OO, pseudo-funcional ou funcional? Nesse talk queremos mostrar como o conhecimento sobre essa linguagem espetacular vai turbinar a qualidade do software produzido por você e sua equipe. Ou não.

0 comentários
4 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
865
No SlideShare
0
A partir de incorporações
0
Número de incorporações
89
Ações
Compartilhamentos
0
Downloads
30
Comentários
0
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Conhe&amp;#xE7;a sua api!\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • A linguagem maislegaldomundo

    1. 1. A Linguagem Mais Legal do Mundo
    2. 2. A Linguagem Mais Legal do Mundo o) n ã ou (
    3. 3. Guilherme Silveira @guilhermecaelum
    4. 4. Ricardo Valeriano @sr_valeriano
    5. 5. Java é D+
    6. 6. Java é D+
    7. 7. Java
    8. 8. JavaList<Categoria> categorias = newArrayList<Categoria>();for(Produto p : produtos) categorias.add(p.getCategoria());for(int i=0;i<categorias.size();i++) { Categoria c = categorias.get(i); if(categorias.lastIndexOf(c)!=i) { categorias.remove(c); i--; }}
    9. 9. JavaList<Categoria> categorias = newArrayList<Categoria>();for(Produto p : produtos) categorias.add(p.getCategoria());for(int i=0;i<categorias.size();i++) { Categoria c = categorias.get(i); if(categorias.lastIndexOf(c)!=i) { categorias.remove(c); i--; }}double total = 0;for(Produto p : produtos) { total += p.getValor();}
    10. 10. JavaList<Categoria> categorias = newArrayList<Categoria>();for(Produto p : produtos) categorias.add(p.getCategoria());for(int i=0;i<categorias.size();i++) { Categoria c = categorias.get(i); if(categorias.lastIndexOf(c)!=i) { , categorias.remove(c); i--; te n s! } e i} lm ma a edouble total = 0;for(Produto p : produtos) { re d total += p.getValor(); é}
    11. 11. Ruby é D+
    12. 12. Ruby é D+
    13. 13. Rubyunicas = []for produto in produtos unless(unicas.include? produto.categoria) unicas << produto.categoria endend
    14. 14. Rubyunicas = []for produto in produtos unless(unicas.include? produto.categoria) unicas << produto.categoria endend
    15. 15. Rubyunicas = produtos.map{|p| p.categoria}.uniq
    16. 16. Ruby unicas = produtos.map{|p| p.categoria}.uniqtotal = produtos.inject(0){|tot, p| tot + p.valor}
    17. 17. Ruby unicas = produtos.map{|p| p.categoria}.uniqtotal = produtos.inject(0){|tot, p| tot + p.valor}
    18. 18. sugestões para um bom programador 1. domine sua api (versus não seja dominado)
    19. 19. sugestões para um bom programador 1. domine sua api (versus não seja dominado)
    20. 20. Rubyunicas = produtos.map(&:categoria).uniqtotal = produtos.inject(0){|tot, p| tot +p.valor}
    21. 21. JavaList<Categoria> categorias = newArrayList<Categoria>();for(Produto p : produtos) categorias.add(p.getCategoria());for(int i=0;i<categorias.size();i++) { Categoria c = categorias.get(i); if(categorias.lastIndexOf(c)!=i) { categorias.remove(c); i--; }}double total = 0;for(Produto p : produtos) { total += p.getValor();}
    22. 22. JavaList<Categoria> categorias = newArrayList<Categoria>();for(Produto p : produtos) categorias.add(p.getCategoria());for(int i=0;i<categorias.size();i++) { Categoria c = categorias.get(i); if(categorias.lastIndexOf(c)!=i) { categorias.remove(c); i--; }}double total = 0;for(Produto p : produtos) { total += p.getValor();}
    23. 23. sugestões para um bom programador 2. domine sua api (versus não seja dominado)
    24. 24. sugestões para um bom programador 2. domine sua api (versus não seja dominado)
    25. 25. 1 e 2. domine sua api JavaSet categorias = new HashSet();for(Produto p : produtos) cat.add(p.categoria());double total = 0;for(Produto p : produtos) total += p.valor();
    26. 26. 1 e 2. domine sua api JavaSet categorias = new HashSet();for(Produto p : produtos) cat.add(p.categoria());double total = 0; á ar” d r a ofor(Produto p : produtos) total += p.valor(); d lh in e a m a “ ar p
    27. 27. Rubyunicas = produtos.map(&:categoria).uniqtotal = produtos.inject(0){|tot, p| tot +p.valor}
    28. 28. Rubyunicas = produtos.map(&:categoria).uniqtotal = produtos.inject(0){|tot, p| tot +p.valor} o? stã ge su ma lgu a
    29. 29. Rubyunicos = produtos.map(&:categoria).uniqtotal = produtos.map(&:valor).inject(:+)
    30. 30. Rubyunicos = produtos.map(&:categoria).uniqtotal = produtos.map(&:valor).inject(:+) e , t n s! e i lm ma a e re d é
    31. 31. Scalaprodutos.map(_.categoria).uniqueprodutos.map(_.valor).sum
    32. 32. Scalaprodutos.map(_.categoria).uniqueprodutos.map(_.valor).sum á! h
    33. 33. Scalaprodutos.map(_.categoria).uniqueprodutos.map(_.valor).sum á! h + e
    34. 34. Scalaclass Compra() { lazy val produtos = Produtos.all}
    35. 35. Scalaclass Compra() { lazy val produtos = Produtos.all} BONUS ROUND: public lazy!
    36. 36. Scalaclass Compra() { lazy val produtos = Produtos.all} BONUS ROUND: public lazy!class Compra(produtos:List[Produto]) {}
    37. 37. Scalaclass Compra() { lazy val produtos = Produtos.all} BONUS ROUND: public lazy!class Compra(produtos:List[Produto]) {}class Compra(val produtos:List[Produto]) {} BONUS ROUND: IMUTAVEL!
    38. 38. Scalaclass Compra() { lazy val produtos = Produtos.all} BONUS ROUND: public lazy!class Compra(produtos:List[Produto]) {}class Compra(val produtos:List[Produto]) {} BONUS ROUND: IMUTAVEL!class Compra(var produtos:List[Produto]) {} BONUS ROUND: public vars!
    39. 39. #scala rocks
    40. 40. #scala rocks #fato
    41. 41. #scala rocks #fato Obrigado
    42. 42. #scala rocks #fato Obrigado THE END
    43. 43. #scala rocks #fato Obrigado THE END
    44. 44. Guilherme Silveira @guilhermecaelum
    45. 45. Ricardo Valeriano @sr_valeriano
    46. 46. O que buscamos numa linguagem? • poderosa! (o que POSSO fazer?) • expressiva! (COMO posso fazer?)
    47. 47. O que buscamos numa linguagem? • poderosa! (o que POSSO fazer?) • expressiva! (COMO posso fazer?)
    48. 48. O que buscamos numa linguagem? • poderosa! (o que POSSO fazer?) • expressiva! (COMO posso fazer?)
    49. 49. Exercício: O que expressa maisinformação de maneira mais breve?
    50. 50. A medida que diminuem as palavras,aumenta a ambiguidade. Valim - GuruSP
    51. 51. 1 - português (pt-br)
    52. 52. Usei o cartão decrédito da minha mãe pois estava sem dinheiro.
    53. 53. Usei o cartão decrédito da minha mãe pois estava sem s b a dinheiro. síla 2 0 +
    54. 54. 2 - inglês (en-us)
    55. 55. I’ve used my mom’scredit card ‘cause I had no money.
    56. 56. I’ve used my mom’scredit card ‘cause I had s b a no money. sí la 1 7 +
    57. 57. 3 - manês
    58. 58. Aí Jão, tava no veneno tá ligado? Saquei do cartão da véia práadquirir uns bens, na humildade mêmo.
    59. 59. 4 - coreano
    60. 60. já a primeira vista qual vc prefere?
    61. 61. 돈 없어서 엄아 카드 썼다.
    62. 62. 돈 없어서 엄아 카드 * * 썼다. A L M bas R a F O síl * 2 * 1
    63. 63. Expressividade 엄카 썼다.
    64. 64. Expressividade 엄카 썼다. ído. ru e m s. s b a sí la 4
    65. 65. Coreano• - Palavras• + Expressividade• + Poder
    66. 66. 안녕~ 집에 갈래?
    67. 67. 안녕~ 집에 갈래?
    68. 68. Então o que queremos?• + Expressividade• + Poder• + Concisão
    69. 69. ‘you can accomplishmore in smaller yetreadable code’ matz (on ruby)
    70. 70. produtos.map(&:category).uniq
    71. 71. class Complaint def has_category? @product.andand.category endend
    72. 72. class Complain def has_category? !! @product.andand.category endend
    73. 73. andand ?
    74. 74. andand ?
    75. 75. def has_category? @product && @product.categoryend
    76. 76. @product.andand.category zoado né?
    77. 77. @product.andand.category zoado né? evan phoenix
    78. 78. @product.andand.category zoado né?‘i don’t need more randomboolean conditional constructsbecause thats not what isimproving our code quality’ evan phoenix
    79. 79. @product.andand.category zoado né? ‘i don’t need more random boolean conditional constructs because thats not what is improving our code quality’ evan phoenixverdadeiro
    80. 80. @product.andand.category zoado né? ‘i don’t need more random boolean conditional constructs because thats not what is improving our code quality’ evan phoenixverdadeiro e falso
    81. 81. não éum random boolean conditional
    82. 82. não éum random boolean conditional é o básico de uma mônada de funcional
    83. 83. não é um random boolean conditional é o básico de uma mônada de funcionalproducts.map(_.category) (0 ou +)
    84. 84. não é um random boolean conditional é o básico de uma mônada de funcionalproducts.map(_.category) (0 ou +)product.map(_.category) (0 ou 1)
    85. 85. não é um random boolean conditional é o básico de uma mônada de funcionalproducts.map(_.category) (0 ou +)product.map(_.category) (0 ou 1) Quem ganha? Ninguém. os dois estão certos!um no imperativo, outro no funcional.
    86. 86. O que procuramos?Não é só escrever menos.
    87. 87. PoderExpressividade Concisãosão contextuais
    88. 88. quem acha que sualinguagem é perfeita?
    89. 89. se sim:você DOMINA outralinguagem tanto quanto domina esta?
    90. 90. se sim:de TODAS as INFINITASpossibilidades, em 100 anos de computação... ENCONTRAMOS:
    91. 91. a MELHOR linguagem deTODOS OS TEMPOS!
    92. 92. a MELHOR linguagem deTODOS OS TEMPOS!
    93. 93. é a mesma coisa que dizerque seu marido/sua esposa é a melhor de todos os tempos
    94. 94. é a mesma coisa que dizerque seu marido/sua esposa é a melhor de todos os tempos
    95. 95. a chance disso ser verdade é 0 FONTE: estatisca básica
    96. 96. ‘it’s just plain impossibleto design a perfectlanguage’ matz
    97. 97. ‘Python and Ruby provide almostthe same power to the programmer.Instead of emphasizing the what, Iwant to emphasize the how part:how we feel while programming’ matz
    98. 98. ‘humans requiremore sophisticatedtools to program’ matz
    99. 99. De tempos em temposas ferramentas mudam e evoluem
    100. 100. certeza: nossas linguagens e escolhaspossuem desvantagens
    101. 101. (re)conheça bem as desvantagens!
    102. 102. p MySQL as queue?Neo4J as crud storage?
    103. 103. senão: você vai abusar dasDESVANTAGENS.
    104. 104. ‘o teu overuse é muitobom prá você mas adesgraça dos outros’ jay fields
    105. 105. Mas tudo bem,amanhã você vai sair do projeto mesmo...
    106. 106. Mas tudo bem,amanhã você vai sair do projeto mesmo...
    107. 107. quem está a mais de2 anos no mesmo projeto?
    108. 108. seja o principalCRÍTICO de suas escolhas
    109. 109. então que diabos você recomenda?
    110. 110. quem melhor que oValim pra dizer quando usar e quando NÃO usar rails?
    111. 111. quem melhor que aAbril pra dizer quando usar e quando NÃO usar REST?
    112. 112. ‘Quando voce quebra o projetoem vários, fica muito mais fácilde ver que para uma parte doprojeto uma linguagem é maisinteressante’alberto(oderski)souza
    113. 113. projetos pequenosmultiplos projetos
    114. 114. “since most developers arent that good(its rumored that almost 50% are belowaverage) we need to direct the way theydo things” COMPLAINT: you cant foolproof anything, because fools are ingenious and will figure out how to abuse martin fowler
    115. 115. “developers are responsible professionalsand so should be given the freedom to dowhatever they need to do” COMPLAINT: elitist attitude that can only be properly used by the upper quartile of software developers martin fowler
    116. 116. ‘Often people aredirecting in some casesand enabling in others’martin fowler
    117. 117. não escolher sualinguagem preferida sempre
    118. 118. online.caelum.com.br
    119. 119. baseado nisso
    120. 120. baseado nissoalunos (java)
    121. 121. baseado nissoex-alunos (java) alunos (java)
    122. 122. baseado nisso ex-alunos (java) alunos (java) vagas(ruby/solr)
    123. 123. baseado nisso ex-alunos (java) alunos gnarus (java) (scala) vagas(ruby/solr)
    124. 124. baseado nisso ex-alunos (java) alunos gnarus exercicios (java) (scala) (ruby/rails) vagas(ruby/solr)
    125. 125. baseado nisso ex-alunos (java) alunos gnarus exercicios (java) (scala) (ruby/rails) vagas(ruby/solr) pagamento (scala)
    126. 126. baseado nisso ex-alunos (java) alunos gnarus exercicios (java) (scala) (ruby/rails) vagas(ruby/solr) pagamento (scala) analisador 1 (ruby/sinatra/redis)
    127. 127. baseado nisso ex-alunos (java) alunos gnarus exercicios (java) (scala) (ruby/rails) vagas(ruby/solr) analisador 2 pagamento (java/ai) (scala) analisador 1 (ruby/sinatra/redis)
    128. 128. baseado nisso ex-alunos (java) alunos gnarus exercicios (java) (scala) (ruby/rails) vagas template(ruby/solr) (ruby/rails) analisador 2 pagamento (java/ai) (scala) analisador 1 (ruby/sinatra/redis)
    129. 129. baseado nisso ex-alunos +3 projetos (java) (ruby/rails) alunos gnarus exercicios (java) (scala) (ruby/rails) vagas template(ruby/solr) (ruby/rails) analisador 2 pagamento (java/ai) (scala) analisador 1 (ruby/sinatra/redis)
    130. 130. baseado nisso ex-alunos +3 projetos (java) (ruby/rails) alunos gnarus exercicios (java) (scala) (ruby/rails) vagas template(ruby/solr) (ruby/rails) +1 “página” analisador 2 js pagamento (java/ai) (scala) analisador 1 (ruby/sinatra/redis)
    131. 131. baseado nisso ex-alunos +3 projetos (java) (ruby/rails) alunos gnarus exercicios (java) (scala) (ruby/rails) vagas template(ruby/solr) (ruby/rails) +1 “página” analisador 2 js pagamento (java/ai) (scala) analisador 1 (ruby/sinatra/redis)casa do codigo (scala)
    132. 132. baseado nisso aws tickets (ruby) ex-alunos +3 projetos (java) (ruby/rails) alunos gnarus exercicios (java) (scala) (ruby/rails) vagas template(ruby/solr) (ruby/rails) +1 “página” analisador 2 js pagamento (java/ai) (scala) analisador 1 (ruby/sinatra/redis)casa do codigo (scala)
    133. 133. 1. (revisitada) domine sua linguagem a ponto de criticar pontos negativos delaseja ela java, ruby, scala, portugues, coreano etc
    134. 134. 2. (opcional) domine outras linguagens TANTO quanto.
    135. 135. ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
    136. 136. nenhuma linguagem ou ferramenta é ruim*
    137. 137. nenhuma linguagem ou ferramenta é ruim* * salvo ‘brainf*ck’
    138. 138. todas são boas*
    139. 139. todas são boas* boa é contextual,
    140. 140. todas são boas* boa é contextual, boa é pessoal,
    141. 141. todas são boas* boa é contextual, boa é pessoal, boa é temporal.
    142. 142. todas são boas* boa é contextual, boa é pessoal, boa é temporal. * salvo ‘brainfuck’
    143. 143. domine suas escolhas.não seja dominado por elas. @guilhermecaelum @sr_valeriano Obrigado

    ×