Iniciei na programação para web em 2006. Passei os primeiros dois anos trabalhando somente com Java e seus diversos frameworks e ferramentas, tais como jUnit, ANT, TomCat e jBoss, Hibernate, Struts, entre outros.
Sempre atento às novidades do mundo ágil, começei a estudar Ruby e ferramentas que pudessem me ajudar a tornar o desenvolvimento de software mais simples e objetivo. Empolgado nos estudos, aprendi sobre estratégias de orientação a objetos, padrões de arquitetura, desenvolvimento orientado a testes e comportamento, modelagem ágil, metaprogramação e outras práticas ágeis.
Trabalho com Ruby profissionalmente desde 2007 e por estes trilhos desenvolvi vários estudos sobre a linguagem de programação, frameworks, Inteligência Artificial e ferramentas ágeis. Dentre os trabalhos desenvolvidos posso citar:
- Appointme: Um agendador de compromissos em linguagem natural (2007)
- Troper: Plugin para sistemas Rails que fornece um gerador de relatórios (projeto de TCC) (2009)
- Boo: Um projeto em que o conteúdo da bíblia está disponível em uma biblioteca usando objetos prevalentes na memória.
- Ceps on Rails: Webservice com todos os endereços do Brasil prevalentes na memória. (2008)
- CameraOverlay: Um aplicativo android para sobreposição de imagens
- Churumelas: Um jogo de desafios de programação
- Pixel: Um paint contribuitivo online
Atualmente, estou concluindo o Bacharelado em Sistemas de Informação e tenho dois artigos, em fase de publicação, na área de programação voltada para os domínios específicos da linguagem. Os artigos têm os seguintes títulos:
- Expressividade da linguagem no ato de programar
- A estatística aplicada à linguagem de programação Ruby
Objetivo
Desenvolver e entregar software de valor, com qualidade e excelência. Seguindo os princípios ágeis, compartilhar conhecimento e adquirir novas habilidades com a equipe. Conhecer novas técnologias e áreas de negócio, assim como agregar valor para a empresa com minhas qualificações e objetos de estudo.
Experiência
A qualificação de um profissional de TI em geral tem um peso maior que a qualificação acadêmica. Por tal aspecto, apresento algumas experiências:
Empresas que trabalhei
Durante o período em que trabalhei na TJ Sistemas tive grande aprendizado, foram dois anos exclusivamente em Linux (sem interface gráfica) com mcEdit e desenvolvimento com FlagShip. Na segunda empresa, Leosoft, começei a estudar várias linguagens e partir para o mundo Web. Também tive a oportunidade de compartilhar de práticas e projetos ágeis.
empresa | de - até |
---|---|
TJ Sistemas | 02/2004 - 04/2006 |
Leosoft | 05/2006 - 01/2010 |
Executive | 02/2010 - 02/2011 |
Freelancer e Inventto | 02/2011 até hoje :D |
Atualmente estou trabalhando como Consultor e FreeLancer e mantendo o site http://ideia.me.
Linguagens de programação
As linguagens de programação e o conhecimento aprofundado sobre elas, são qualificações desejáveis para um desenvolvedor. A busca por novas linguagens me trouxe várias mudanças na forma de pensar e arquitetar sistemas de computador. Dedico-me ao constante aprendizado das linguagens de programação e, atualmente, estudo Objective-C.
Segue a lista das linguagens que venho usando:
qual | usando desde |
---|---|
Ruby | 2007 |
JavaScript | 2006 |
Java | 2006 |
SQL | 2004 |
HTML | 2006 |
DHTML | 2007 |
CSS | 2008 |
Shell | 2004 |
PlPgSql | 2005 |
LaTex | 2008 |
FlagShip | 2004 até 2006 |
Métodologias de desenvolvimento
As métodologias de desenvolvimento são as maneiras de se fazer o projeto de software acontecer. Através de práticas, princípios e valores, é possível estabelecer uma filosofia de trabalho e um ciclo de desenvolvimento/entrega de software.
Dentre as métodologias com que trabalhei, identifico-me mais com a Extremme Programming(XP). Esta métodologia é composta por um conjunto de características de desenvolvimento de software que deram certo. Sou adepto às suas boas práticas de desenvolvimento, assim como as atitudes de relacionamento com o cliente.
Acredito na forma humanizada que a XP encara os papéis em um projeto, o que permite evitar alguns enganos cometidos usando outros métodos processuais (ao que pude constatar em minha experiência). Trabalho com XP desde 2006 e gostaria de continuar aplicando suas ideias na medida do possível.
Comunicação
Acredito que tenho uma boa habilidade de comunicação. Estou sempre disposto a ministrar palestras, workshops e cursos. Nos últimos 3 anos ensinei sobre:
- Ruby e Rails
- PostgreSql, PlPgSql e pgUnit
- Desenvolvimento Orientado a Testes e Comportamento
- rSpec e Cucumber
- Editor de textos Vim
- Extremme Programming
- Expressões Regulares
- JavaScript e Prototype JS
Também coordenei reuniões, iterações e planejamento de projetos com frequência. Apoio a objetividade das reuniões em pé e brainstorms com início e fim.
Ferramentas de Desenvolvimento
O ferramental para mim é algo extremamente necessário. Através do bom uso e habilidade, é possível ganhar agilidade na execução qualquer tipo de tarefa, além de enriquecer o software com qualidade, padronização, documentação entre outros. Um dos principais motivos de utilizar o Linux é a facilidade de acesso a este ferramental e acredito que isso faz toda a diferença para programar. Minhas preferidas são:
qual | usando desde | explicação |
---|---|---|
Terminal Linux | 2004 | Linha de comando Linux |
Vim Editor | 2007 | Editor de textos programável |
FireBug | 2007 | Plugin para inspecionamento de JavaScript, HTML e CSS. |
Git | 2008 | Gerenciador de versões (semelhante a SVN, CVS) |
Cucumber | 2008 | Ferramenta para criar cenários e teste do comportamento do software |
Integration plugin | 2007 | Plugin para integração contínua com a equipe de desenvolvimento |
Bibliotecas e Frameworks
As bibliotecas de programação, de modo geral, fazem todo trabalho repetitivo e abstraem problemas comuns no desenvolvimento. Também funcionam como sistemas pré-programados que permitem ser configurados e executados com menor esforço. Cada biblioteca serve para facilitar uma ou mais tarefas com objetivo específico, ou podem estar empacotados em MetaFrameworks como o Rails. As principais bibliotecas/frameworks que utilizo são:
Biblioteca | usando desde | explicação |
---|---|---|
Rails | 2007 | Framework para desenvolvimento de aplicativos web |
Prototype JS | 2006 | Biblioteca utilitária para programação em JavaScript |
rSpec | 2007 | Ferramenta para testes de comportamento do software |
Também trabalhei com muitas bibliotecas e sistemas auxiliares como Selenium, iReport, WebRat, Rake, FunFx, NewGem, Markdown, Liquid, Zen Autotest, WebOrb, RestFulX, etc.