terça-feira, 8 de fevereiro de 2011

Não sabe um caminho para seguir na programação? tente este aqui, parte 6/6

Comunidades, não tenha medo delas, elas só existem para ajudar.

Terminar essa saga parece um parto, mas enfim consegui. Vou falar de comunidades e do que elas me ajudaram até agora.
Quando eu comecei a programar de verdade (foi quando eu arrumei meu primeiro emprego e único em 09/2009), eu nem fazia ideia de como construir uma futura carreira, na realidade se eu não tivesse no terceiro período da faculdade eu tinha desistido de informática no meu primeiro dia de trabalho. Eu tive que instalar um monte de parada na máquina, sem nunca ter mexido em um Linux direito, nem sabia configurar o PHP naquela época, linguagem na qual não trabalhei dois mês e mudamos para Ruby :). Eu imaginei naquela época que não ia durar no emprego, que programação não era para mim, que aquilo não fazia lógica, mas ao mesmo tempo que eu senti aquele medo absurdo que não fazia ideia de onde vinha, me lembrei de algo que eu sigo em minha vida inteira, não desisto das coisas que acredito. Falei para mim mesmo, existe Ctrl-z pra que, pra usar, se errar faço de novo, e tive a ajuda de um grande mestre jedi que virou meu amigo, que é o Fernando Kosh, o cara me ensinou o caminho das pedras, mas ao mesmo tempo fazia o "se vira", que é muito útil.
E uma das coisas que ele mais me falava/fala é das comunidades open source que existe na área, a primeira delas foi o #horaextra que acontece no centro do Rio em uma mesa de bar todas às segundas. Os caras falam de tecnologia a noite toda praticamente. Mas não parou por ela ao ser apresentado ao mundo Ruby on Rails e Linux conheci uma quantidade grande de pessoas que participam de comunidades e incentivam a sua participação nelas.
Só que mesmo assim eu não participava delas, eu pensava que não precisava, que o mais importante era eu estudar, me desenvolver sozinho, só que tem um problema nisso. Quando você faz uma busca no Google por algo relacionado a programação, algum erro que você não consegue tirar, ou algum script que você quer fazer mas não tem ideia de como começar. É por causa das comunidades, dos fóruns, das listas que sua dúvida é tirada, é por causa dessa interação com outros programadores que você vai conseguir tirar as suas dúvidas e ajudar outros programadores que vão ter dúvidas que você já teve, e agora tem conhecimento adquirido para ajudar.
A minha ficha só caiu de verdade em relação a participação foi quando eu fui na palestra do Henrique Bastos no DevInRio de 2010, a palestra foi tão boa que eu me senti um idiota por não participar das comunidades, naquela mesma semana fui ao #horaextra, #dojorio, tive uma ideia de evento maneira para fazer (que não foi concretizada ainda, já que eu parei no hospital tempos depois por uma arritimia no coração que me deixou parado um tempo, mas isso não vem ao caso, mas por causa disso eu perdi o RubyConf de 2010, foi dias antes, rssr). Eu posso não ter conseguido colocar minha ideia em prática, mas estou ajudando nos encontros de #ForkinRio na Cidadelas, empresa que trabalho, estudamos Rails3 e tem sido uma experiência muito boa, confeço que não participo do #rubyonrio como queria, ou das outras comunidades, mas faço o possível para conparecer e ajudar no que puder.
Hoje aquele cara que começou na área com medo, achando que programação é uma viagem, que nunca ia conseguir, já foi promovido, elogiado pelo seu trabalho e comprometimento com a empresa, e virou víciado em desafios, programar coisas diferentes e difíceis, e encara uma missão com calma e racionalidade, por que sabe hoje que programação não é um bicho de sete cabeças.
Espero que eu consiga ajudar alguém com minha experiência, vou tentar postar regurlamente as minhas experiências com programação, principalmente falando de Ruby e Linux.
Até a próxima !!

sexta-feira, 21 de janeiro de 2011

Não sabe um caminho para seguir na programação? tente este aqui, parte 5/6

O que é NoSQL ?

Fui fazer uma pesquisa sobre NoSQL, para fazer um bom resumo para quem está começando. Achei o 2 posts do Jean Nascimento muito interessante e decidi não escrever nada a respeito e só encaminha-los para eles, são o que vocês precisam para entender o que é NoSQL. O Jean Nascimento é um dos evangelistas de NoSQL no Brasil.
NoSQL - você realmente sabe do que estamos falando?
3 razões para usar MongoDB
Boa leitura e até a próxima.

terça-feira, 28 de dezembro de 2010

Meu ambiente de trabalho em 7 itens

A missão de fazer esse post foi sugerida pelo Bruno Codeman que é da comunidade SouDev e está incentivando os desenvolvedores falarem de seus ambientes de trabalho.

1 - Ubuntu 10.10

Comecei na área de programação desde setembro de 2009 programando em Ruby on Rails. Antes disso programava em PHP alguns dos meus trabalhos de faculdade e o SO era um Windows XP. A maior diferença que vi foi a velocidade e a facilidade que um Linux me dá na hora de um desenvolvimento, como a comunidade Linux é gigantesca, todos os problemas que tive com a adaptação foram sanados rapidamente com o auxilio dos participantes. Não sou nenhum especialista em Linux, mas aprendi muito com ele até hoje, e vejo que hoje em dia sei um pouco sobre SO, coisa que pensava que sabia mexer em Windows.

2 - GEdit

Não utilizo nenhuma IDE para programar já que é bem fácil utilizar
Ruby on Rails. Faço todos os meus códigos no GEdit por ser uma
ferramenta que me dá a agilidade que preciso no desenvolvimento.
Instalo nele o GMate, que traz uma quantidade de plugins enormes que,
configurados da forma correta, me dá a agilidade necessária.

3 - Phpmyadmin

Utilizo por enquanto o MySQL como banco de dados e, para facilitar a
visualização das tabelas, utilizo o Phpmyadmin, que me facilita
bastante. Como eu já o utilizava na época que fazia alguns scripts de
PHP, não precisei de adaptação e sim aprofundamento na ferramenta.

4 - Chrome

Hoje em dia estou utilizando o Chrome para desenvolvimento e estou
gostando. Ele tem uma ferramenta parecida com o Firebug do Firefox  já
integrada. Acho ele bem rápido, mas como estou há pouco tempo
utilizando-o, não tenho muitas coisas para falar.

5 - Rails Brain, Rails Guides e Github

São os meus companheiros inseparáveis. Neles tem toda a documentação
necessária para Rails que eu preciso. O Rails Brain é uma API de Rails
bem rápida feita em Ajax e o Rails Guides vem com toda a documentação
necessária para eu tirar minhas dúvidas maiores. O Github é onde eu
encontro alguns plugins que me ajudam no desenvolvimento dos sites que
faço, nele também tem documentações e aplicativos de testes bem úteis. 

6 - Google

Se tenho uma dúvida grande o guru Google me ajuda a resolver da forma
mais rápida e correta possível.

7 - Música

Rock o dia inteiro nos fones, é a melhor forma que eu encontrei de me
concentrar. Toca desde Coldplay a Demon Hunter, passando por todos os
estilos de Rock e de vez em quando um Rap.

Já que a ideia é passar o bastão para outros, eu gostaria que o Luciano Sousa, Raphael Almeida, Fernando Kosh e o Rui Andrada compartilhem seus ambientes de trabalho.

segunda-feira, 27 de dezembro de 2010

Não sabe um caminho para seguir na programação? tente este aqui, parte 4/6

Por que fazer teste ?
 
Depois de um tempo sumido sem postar estou voltando, parte foi culpa da
faculdade, outra parte foi um pouco de preguiça, mas vamos ao que interessa
que é teste.
Eu já dei um exemplo de teste no post que faço o exercício do fizzbuzz. No mundo
Ruby existem várias ferramentas que o auxiliam em um desenvolvimento com
teste, que é muito forte na comunidade Ruby, e com toda essa força acaba
influenciando no framework mais utilizado que é o Rails, ele vem com um
ambiente de teste unitário integrado, eu conheço duas técnicas utilizadas em
teste, uma é TDD e a outra é BDD, o exemplo fizzbuzz que mencionei acima utiliza TDD.

TDD => testa método, você vai verificar se o seu método está retornando o valor
certo utilizando o teste, é útil por que você não vai ficar precisando cadastrar um
monte de clientes de formas diferentes, simulando erros por exemplo.

BDD => testa comportamento, é se a ação que seu cliente efetuou tem o comportamento esperado.

Não importa qual técnica você gosta mais de usar, o importante é que use, por
exemplo, eu estou gostando de usar BDD acho mais útil, mas isso é gosto e posso
mudar de opnião a qualquer momento sobre isso, se achar que BDD não
atende o que preciso.
Atualmente utilizo o RSpec para fazer alguma coisa com teste, ainda estou
estudando, lendo documentações, posts e vendo algumas vídeo aulas sobre o
assunto, acho muito interessante ele ser aplicado no desenvolvimento por ajudar
na documentação e na verificação de erros em lugares que você achava que seu
código não iria quebrar, não é fácil se acostumar a fazer teste antes de
programar, mas com o tempo você acostuma, e se acha que sua missão vai ser
difícil, não tem muita ideia do que fazer nela, utilize o IRB antes, de uma
clareada na mente e depois volte aos testes.
Na empresa que trabalho estamos fazendo um grupo de estudos chamado Forkin
Cidadelas, onde qualquer pessoa pode ir participar, ou pode participar
remotamente(em testes ainda) estamos vendo Rails3 e fazendo as aplicações com
teste, está no começo, e até meio bagunçado mas já é um começo, entre na lista
do rubyonrio para saber mais informações.
Então pesquise um pouco sobre testes, é interessante e cada vez mais está sendo
pedido em CVs de empresas de software, não fique para trás nessa, e teste não é
exclusividade de Ruby, a maioria das linguagens deve ter, eu conheço várias que
tem, então não perca tempo e vá estudar. Depois que eu conseguir acabar a saga
irei fazer sempre exercícios com testes, irei falar mais sobre o assunto.
O próximo post da saga é "O que é NoSQL", até a próxima.

segunda-feira, 15 de novembro de 2010

Não sabe um caminho para seguir na programação? tente este aqui, parte 3/6


Continuando com a saga "Não sabe um caminho para seguir na programação? tente este aqui".


Técnicas Agile é o que você precisa para se organizar

Agile é um conjunto de práticas para desenvolvimento ágil de software. É uma 
definição bem curta e que define muito bem o que é Agile, mas não adianta você 
pensar que é só seguir essas regras que vou colocar que sempre o seu software 
vai sair no tempo esperado como em um mundo perfeito, pense que clientes são 
seres humanos e são extremamente indecisos.


Análise Inicial:

É feito uma análise inicial do problema para saber algumas coisas vitais para a realização 
do projeto, como, quantos e quem irá fazer parte da equipe daquele projeto, qual seria 
a prioridade do projeto, o que será entregue primeiro ao cliente, está fase é importante 
para a definição de como o projeto irá seguir em frente, porém é uma fase curta, 
não perca muito tempo nela.

Sprints:

A metodologia Agile faz que a equipe trabalhe com sprints curtos, cada sprint é de 
1 à 4 semanas, e o objetivo é terminar o sprint para o cliente possa dar o feedback,
se não for aprovado, fazer as mudanças necessárias pedidas pelo cliente. Para 
definir os sprints para a equipe possa saber o que deverá desenvolver, utilizamos algo
bem simples, papel e caneta, é isso ai, marcamos cada tarefa a ser realizada em 
um papel e colamos na parede, ou em um quadro, e cada membro da equipe 
será responsável por uma ou mais tarefas a ser entregue no final daquele sprint, 
a tarefa tem que ser entregue naquele período por ter sido combinada com o cliente, se
não for entregue comprometerá a conclusão do software ou site, e manchará a 
imagem da empresa com o cliente.
Qual seria a vantagem disto, se a equipe trabalha com sprints curtos de uma 
determinada área do sistema, ela provavelmente irá fechar aquela parte, ter o 
feedback positivo do cliente no final do processo e não precisará mais se 
preocupar com ela, enquanto se fizer um projeto inteiro para depois realizar 
as mudanças será prejudicial, por que o cliente vai demorar muito para ver o 
projeto dele, e se não gostar do resultado final, acarretando assim muitas 
mudanças até a entrega definitiva do projeto, essa com certeza é a maior
vantagem do Agile, desenvolvimento com sprints curtos.

Processo Final:

É a parte em que o projeto foi para produção e está em sua parte final de testes, 
para saber se foi feito da forma que o cliente pediu, dependendo do projeto ele 
pode entrar em produção antes, com algumas áreas ainda em desenvolvimento.

Extreme Programming(ou XP):

O XP é uma outra forma de desenvolvimento ágil, mas não vou afundo nela 

por que não sei muito a respeito, sei somente que é muito mais do que vou 
escrever aqui, mas basicamente é dois programadores trabalhando juntos em 
uma mesma tarefa e se revezando em quem é o piloto e o co-piloto da máquina, 
os dois pensam juntos para além de terminar a tarefa mais rápido, pode evoluir 
ela de forma mais fácil, mais sobre o XP no site da ImproveIt .

Essa forma de trabalhar faz com que o seu software saia muito mais rápido, melhor, 

com um número de bugs menor(por que é muito difícil alcançar 0% de bugs), e 
com o que o seu cliente imaginou, existe mais sobre esse assunto na internet, pesquise 
vídeos e textos falando sobre para você poder aplicar na empresa aonde trabalha, 
vamos fazer uma cultura sem estresse no nosso ambiente de trabalho.

O próximo post da saga "Não sabe um caminho para seguir na programação? 
tente este aqui" vai ser "Por que fazer teste ?", até o próximo post.
 

domingo, 14 de novembro de 2010

Não sabe um caminho para seguir na programação? tente este aqui, parte 2/6

Continuando com a saga "Não sabe um caminho para seguir na programação? tente este aqui".

A cultura por trás do Ruby on Rails

Vou começar falando um pouco de Ruby, mas antes tenho que falar do irb, que é um programa que vem com o Ruby e pode testar todos os seus comandos nele com resposta imediata, antes de colocar na sua aplicação,  ele possui um histórico de comandos, e quando é utilizado com o Rails carrega tudo que está na sua aplicação fazendo assim que você possa até acessar dados do seu BD, é uma ferramenta de grande ajuda no desenvolvimento já que vai poder testar tudo antes de colocar a vera na aplicação.
Agora vamos ao Ruby, é uma linguagem totalmente orientada a objeto(muitos vão pensar "como assim ?"), vou dar um exemplo clássico quando falam de Ruby, até um número é um objeto, dúvida ? Veja o exemplo.
 
no terminal com o ruby instalado:
 

irb(main):001:0> 5.times do |numero|
irb(main):002:1*   print numero, " "
irb(main):003:1> end
0 1 2 3 4 => 5
irb(main):004:0>
 
O número 5 foi utilizado para fazer um loop, e o print deu a saída de forma  organizada. 
Viu tudo pode ser um objeto em Ruby, fora que sua sintaxe é muito fácil de entender e legível, 
escrever um método é uma experiência bem agradável, veja este método:
 
irb(main):032:0* def quadrate(number)
irb(main):033:1>   number.times do
irb(main):034:2*     number.times do
irb(main):035:3*       print "*  "
irb(main):036:3>     end
irb(main):037:2>     print "\n"
irb(main):038:2>   end
irb(main):039:1> end
=> nil
irb(main):040:0> quadrate(10) # ou poderia chamar assim, quadrate 10
*  *  *  *  *  *  *  *  *  * 
*  *  *  *  *  *  *  *  *  * 
*  *  *  *  *  *  *  *  *  * 
*  *  *  *  *  *  *  *  *  * 
*  *  *  *  *  *  *  *  *  * 
*  *  *  *  *  *  *  *  *  * 
*  *  *  *  *  *  *  *  *  * 
*  *  *  *  *  *  *  *  *  * 
*  *  *  *  *  *  *  *  *  * 
*  *  *  *  *  *  *  *  *  * 
=> 10

Assim é feito um método em Ruby, fácil né ? Agora a explicação.
Linha por linha:

def quadrate(number) # primeiro o método recebe um parâmetro, como pode ser visto não precisa ficar declarando o tipo que aquele método vai receber, sendo assim variáveis também não precisam ser declaradas.

number.times do # é o primeiro loop da interação, ele vai fazer o loop de acordo com
a quantidade de números que você passar para o método. O primeiro loop gera a quantas
serão as colunas, o loop de baixo gera as linhas.

print "*  " # gera uma saída em apenas uma linha

print "\n" # pula a linha

Viu como é simples, é uma linguagem de alto poder, pode ser construído qualquer coisa
com ela, não é uma linguagem que só funciona bem com internet, também funciona muito
bem construindo programas para desktop, jogos, qualquer é só ter imaginação e pesquisar,
até um Linux baseado nela está nascendo que é o KoshLinux. Vou falar da cultura
Ruby mais abaixo.

Rails, é um framework para linguagem Ruby, sendo o mais utilizado hoje em dia,
feito por uma counidade enorme de usuários de Ruby está na sua versão 3, sendo
intitulado Rails 3, utilizando o conceito MVC(Model View Controller), por além de
deixar seu código bem organizado, ajuda em diferentes aspectos na construção de
um site, aumentando significavelmente a velocidade de construção, e nele vem
uma infinidade de recursos para o desenvolvimento da sua aplicação de forma ágil,
segura, e de fácil crescimento.

Agora que dei uma falada bem rápida na linguagem e no framework que serão o meu
foco neste blog, vou ainda falar muito de Ruby e Rails no próximos posts, dar exemplos
mais significantes, da sua usuabilidade, mas agora eu quero falar um pouco da cultura
Ruby on Rails, por que eu acho ela tão importante, não é uma exclusividade de Ruby,
a galera que escreve Python também tem a mesma cabeça que a nossa, e este
pensamento está sendo passado para as comunidades de outras linguagens, por que
essa parada de guerrinha de qual é a melhor linguagem é idiotice, somos todos
desenvolvedores e queremos um código bom, então a união é sempre melhor para
o desenvolvimento geral da classe.

O que seria um bom código, primeiro é um código testado, no rails estou sabendo do
RSpec para Models e Controllers, e o Cucumber e o Steak para Views, teste é uma
ótima prática pelo seguinte, se você estiver fazendo uma aplicação como vai saber se
o código que você ta fazendo vai quebrar ?
Vai esperar quebrar pra concertar, ou vai evitar à quebra antes ? Eu prefiro evitar à quebra,
imagina um site grande sem teste e uma alteração sua é vital para o site, ele quebra em
vários lugares e você não vê ? Vai testar página por página até verificar se tudo deu certo,
pra mim isso é trabalho de porco, mas ai é com você.

Segundo um código legível, que se define em algumas partes, uma é a escrita, a linguagem
mais usada no mundo é o inglês, as classes e métodos da linguagem que você
usa é inglês, então por que diabos você escreve seus modulos, classes, métodos e
suas variáveis em português ? Se escrever em inglês, fica mais fácil de entender e
não vai precisar de colocar comentário, por que se você já tem um método bem
descritivo não precisa de comentário, não da pra ficar nomeando métodos e
variáveis que podem abranger muita coisa, por que ai vai ter que escrever
comentário e é desnecessário, mas o pior de tudo isso é escrever resumindo,
"cod_cli", mas por que diabos não escreve "code", se presumi que se você está
na tabela "cliente" não precisa escrever cliente  de novo, então só precisa do
"code", não precisa complicar o que é simples de ser feito, existe casos muito
piores e muito disso vem preso com você da faculdade, e não se culpem
a culpa é de quem te ensinou que tem preguiça de escrever certo.

Outra boa prática é a otimização, não importa quanto você é bom sempre da pra
otimizar seu código, deixar ele mais agradável de ser lido, organizado, uma identação
boa é sempre bom para a equipe do projeto, se sua empresa tiver uma identação padrão,
é bem legal por que não vai ter confusão depois de como o código foi escrito.

Existe uma frase que define muito bem o que você tem que pensar quando está criando
o seu código, "Pense que o programador que vai vir mexer no seu código seja um
psicopata que sabe onde você mora", é radical mesmo, se você faz o código ruim vai ser
muito criticado, o que adianta se é foda, mas ninguém entende o que você faz, tem que
pensar que existe uma equipe com você.

Outra coisa que a cultura Ruby on Rails sempre incentiva é utilizar as técnicas de
desenvolvimento Ágil, que é um ótimo aliado para que sua aplicação fique pronta
o mais rápido possível, cobrindo todos os aspectos que seu cliente quer e
diminuindo as chances de bugs.

Pesquise as novidades que a área te oferece para criar sempre um bom código, por que
ser um bom programador não só fazer funcionar, pense nisto.

O próximo post é sobre da saga "Não sabe um caminho para seguir na programação? tente
este aqui" é "Técnicas Agile é o que você precisa para se organizar", vou falar de como
usar Agile é legal. Até próximo post.


quarta-feira, 10 de novembro de 2010

Não sabe um caminho para seguir na programação? tente este aqui, parte 1/6

Por que eu acho interessante este caminho, simples, envolve ótimas tecnologias presentes no mercado de trabalho e que só cresce em número de interessados, aumentando o número de interessados aumenta o número de desenvolvedores delas, assim elas melhoram cada vez mais com o passar do tempo.
Vou falar 6 assuntos que vai te interessar.
Linha de comando é um maior barato, use Linux.
A cultura por trás do Ruby on Rails.
Técnicas Agile é o que você precisa para se organizar.
Por que fazer teste ?
O que é NoSQL ?
Comunidades, não tenha medo delas, elas só existem para ajudar.


Linha de comando é um maior barato, use Linux

Se eu disser que o Linux é muito fod..., e pode usar que você não vai se arrepender, vou te convencer ? acho que não, mas já vou dando o alerta se você adora Windo...(não gosto de escrever palavrões e nem palavras escrotas no meu blog) é melhor parar de ler essa parte e ir pra outro post desta saga, não quero nenhum doido por Windo... me xingando mais tarde.
Agora sim, se você é desenvolvedor, vai ser muito mais respeitado no meio desenvolvendo no Linux, por que se você desenvolve no Windo... , ou tem muita coragem, ou gosta de sofrer. 
Mas vamos falar o que interessa, Linux é um ótimo ambiente de desenvolvemento por que é feito por uma comunidade que programa por que gosta, quer se desenvolver, não se contentam com coisas pequenas, não são viciados em trabalho e sim em desafios. Se você vier falar que "Linux só usa linha de comando", ou "é muito difícil", ou "eu não consigo instalar a Velox", ou "não da pra jogar no Linux", entre outras coisas, vou te dizer somente uma coisa, TA NA PROFISSÃO ERRADA, VAI TRICOTAR, mas parece ser algo bem mais difícil que usar Linux..
Não tem desculpa, existem milhares de sites que te ensinam o que você precisa para usar o Linux, fora que tem um site de busca muito bom chamado Google, conhece ? Então, é só procurar, e te garanto uma coisa você vai aprender muito e vai descobrir que Linux não é um quebra-cabeça, fora que você pode escolher a distribuição que combina mais com o seu perfil, ou criar a sua própria. 
A maioria dos sevidores na web são Linux, por que será né ? Será por que é um SO mais confiável ? É, por que depois que eu mudei pra Linux nunca mais pensei em vírus.
Não utiliza desfragmentador de disco, existe um sistema de arquivos que grava de uma forma inteligênte, utilizando melhor o espaço disponível.
Não tem aquelas mensagens idiotas de erros que não te ajudam em nada, e sim mensagens que te explicam o problema e na maioria dos casos baixa o pacote necessário para funcionar.
Programas menores e melhores, por serem feitos por pessoas que sabem do que precisamos, seus próprios usuários.
Atualizações quase que diárias, não só para corrigir bugs, como para melhorar o sistema.
Não vai ver tela azul do nada. 
Instala rapidinho e se da muito bem com outros SO's instalados com ele.
É de graça, então você não precisa ficar com aquele peso na conciência que comprou uma cópia pirata que não funciona direito.
E ai te convenci ? senão, faz o seguinte, pesquisa um pouquinho sobre Linux que você vai ver como é interessante, linha de comando não morde e faz um bem danado quando é bem utilizado, fora que o Linux tem uma parte gráfica muito interessante e fácil de usar, se você tem medo de migrar direto se para um pedacinho do HD pra ele, e vai mexendo de vez em quando, eu sei que você não vai se arrepender e vai descobrir quanta coisa legal ele tem para oferecer.
O próximo post vai ser bem legal vou continuar a saga "Não sabe um caminho para seguir na programação ? tente este aqui, parte 2/6" que vou falar de "A cultura por trás do Ruby on Rails", se você não sabe o que é não perca, vou explicar de uma forma bem legal o que é Ruby, o que é Rails, como eles trabalham juntos e o que é está tal cultura.
Até a próxima