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
Slide 9
Slide 9 text
O que eu adorei:
Slide 10
Slide 10 text
O Ruby (e o Rails) são
focados na felicidade
do programador
Slide 11
Slide 11 text
-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.”
Slide 12
Slide 12 text
"Otimizar para a
felicidade do
programador"
inclusive faz parte
da Doutrina Rails
Slide 13
Slide 13 text
E funcionou, o Ruby
me fez felizão =)
Slide 14
Slide 14 text
O Ruby é expressivo
Slide 15
Slide 15 text
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?
Slide 16
Slide 16 text
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?
Slide 17
Slide 17 text
No C# seria algo mais burocrático
for(int i = 0; i < 3; i++) {
// Do C# stuff
}
Slide 18
Slide 18 text
O exclamação ('bang')
indica uma versão
mais perigosa de um
método ⚠
Slide 19
Slide 19 text
# Esse cara é tranquilo:
user.save
# Cuidado, esse pode gerar uma exceção:
user.save!
Slide 20
Slide 20 text
# De boa, uma nova string é gerada:
"Phil ".strip
# Cuidado, modifica a string original:
"Phil ".strip!
Slide 21
Slide 21 text
Foco na troca de
mensagens
Slide 22
Slide 22 text
a_nil = nil
# Olá objeto, o senhor por acaso é nulo?
a_nil.nil?
# Sim, estimado programador! Eu sou nulo!
=> true
Slide 23
Slide 23 text
a_number = 0
# Querido número, por acaso você é zero?
a_number.zero? # => true
Slide 24
Slide 24 text
# 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
Slide 25
Slide 25 text
O Ruby fala com
pessoas, não com
computadores
Slide 26
Slide 26 text
{ Chaves }
( parênteses )
; ponto-e-vírgula ;
quando obrigatórios são ruído
Slide 27
Slide 27 text
O uso de ; no fim da
linha vem do Algol,
dos anos 50 $
Slide 28
Slide 28 text
E por que é
importante ser
expressivo?
Slide 29
Slide 29 text
-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"
Slide 30
Slide 30 text
"Código" não quer
dizer uma linguagem
secreta
Slide 31
Slide 31 text
Você passa muito mais
tempo lendo código
do que escrevendo
Slide 32
Slide 32 text
Quantos olhos vão
passar pelo seu
código?
Slide 33
Slide 33 text
E não é só Ruby, olha
o Rails aí
Slide 34
Slide 34 text
Cultura
de
testes
Write a
failing test
Make the
test pass
Refactor
Slide 35
Slide 35 text
Testes ajudam a ver
seu código de outra
forma
Slide 36
Slide 36 text
Você passa a ser
usuário daquele
código
Slide 37
Slide 37 text
✨Active Record ✨
Slide 38
Slide 38 text
Padronização ❤
ids, relacionamentos, consulta de dados, …
Slide 39
Slide 39 text
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)
Slide 40
Slide 40 text
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
Slide 41
Slide 41 text
O ActionMailer é
poderoso
Slide 42
Slide 42 text
Views para montar
emails
❤
Slide 43
Slide 43 text
O Devise cuida de tudo
Confirmação de email, recuperação de senha,
bloqueio de contas, expiração de sessão, …
Slide 44
Slide 44 text
O Rails é uma grande
inspiração do ASP.Net
MVC
Slide 45
Slide 45 text
Mas nem tudo são flores
Slide 46
Slide 46 text
“The Law of leaky
abstractions”
#LOLA
Slide 47
Slide 47 text
–Joel Spolsky
“Todas as abstrações
não triviais vão, de
alguma forma, vazar”
Slide 48
Slide 48 text
As facilidades que o Ruby e
o Rails oferecem escondem
mecanismos que você
eventualmente vai precisar
entender
Slide 49
Slide 49 text
Você pode ter problemas
de performance e não
saber pq
Slide 50
Slide 50 text
“N+1”
Fazer mais consultas do que o necessário
vai deixar sua aplicação lenta
Slide 51
Slide 51 text
No content
Slide 52
Slide 52 text
O Ruby e o Rails tem
algumas pegadinhas
Slide 53
Slide 53 text
O Ruby interpreta zero à
esquetda como número octal:
roman_numerals = {
C: 100,
L: 050,
X: 010
}
=> { :C=>100, :L=>40, :X=>8 }
# 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
Slide 57
Slide 57 text
Não funciona direito
no Windows
ˍʓˍ ƗЅ(`Д´)ůớ ˍʓˍ
Slide 58
Slide 58 text
Pelo menos 50% dos
desenvolvedores
usam Windows
Slide 59
Slide 59 text
"#" "#" ϛ(Ϋ-Ϋϛ)
Slide 60
Slide 60 text
E .Net, é ruim?
Slide 61
Slide 61 text
Não!
Slide 62
Slide 62 text
Bom
Ruim
Slide 63
Slide 63 text
Bom?
Ruim?
Slide 64
Slide 64 text
A sintaxe do Razr é
ótima
Slide 65
Slide 65 text
Seja bem vindo, @name
@if (@notifications.Any()) {
Você possui @notifications.Count
notificações!
}
Slide 66
Slide 66 text
LINQ é praticamente
SQL
Slide 67
Slide 67 text
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 };
Slide 68
Slide 68 text
.Net tem grandes
ferramentas para devs
Slide 69
Slide 69 text
O InteliSense do Visual Studio
era realmente útil
Slide 70
Slide 70 text
Debug era a coisa
mais linda ✨
Slide 71
Slide 71 text
E essa mudança toda,
valeu a pena?
Slide 72
Slide 72 text
Sim!
Slide 73
Slide 73 text
Coisas boas #1: Voltar
a ser novato
Slide 74
Slide 74 text
Quantas coisas que
você usa no dia a dia,
mas nunca estudou
sobre?
Slide 75
Slide 75 text
• Testes
• SQL
• Javascript
• HTML
• CSS
Slide 76
Slide 76 text
Programação por
coincidência
Slide 77
Slide 77 text
Eu aprendi a ouvir
mais
Slide 78
Slide 78 text
#2: Novas
perspectivas para
velhos problemas
Slide 79
Slide 79 text
#3: Novas
ferramentas ⚒
Slide 80
Slide 80 text
No content
Slide 81
Slide 81 text
E ai, Doeu?
Slide 82
Slide 82 text
Não foi fácil pra mim,
e provavelmente não
será pra você
Slide 83
Slide 83 text
Eu tive muito apoio
quando entrei na
Plataformatec ❤
Slide 84
Slide 84 text
E tenho algumas dicas
=D
Slide 85
Slide 85 text
#1 - Acredite em você!
Você é capaz!
Slide 86
Slide 86 text
Jace, o Kão
“Cara, ser ruinzão é o primeiro
passo para se tornar bom em
alguma coisa”
Slide 87
Slide 87 text
#2 - Seja paciente
Aprender leva algum tempo
Slide 88
Slide 88 text
#3 - Seja simples
Entenda bem as estruturas básicas
Slide 89
Slide 89 text
#4 - Conheça outras
comunidades
Slide 90
Slide 90 text
No content
Slide 91
Slide 91 text
ELUG
Slide 92
Slide 92 text
No content
Slide 93
Slide 93 text
Na última Rubyconf eu
ainda trabalhava
com .Net
Slide 94
Slide 94 text
#5 - Estude conceitos
de programação
Slide 95
Slide 95 text
Refatoração
Slide 96
Slide 96 text
Qualidade de código
Slide 97
Slide 97 text
Testes
Slide 98
Slide 98 text
Orientação a Objetos
Slide 99
Slide 99 text
Design Patterns
Slide 100
Slide 100 text
Ágil
Slide 101
Slide 101 text
#6 - Analise tradeoffs
Entender prós e contras faz parte do dia
a dia de qualquer desenvolvedor
Slide 102
Slide 102 text
#7 - Peça ajuda!
Todas as dúvidas merecem ser
perguntadas =)