Imagine se isso acontecesse com você?
No artigo de hoje não vou falar sobre nada técnico, nem será de nenhum tutorial sobre como usar o CodeIgniter, mas vou contar como passei a utilizá-lo no desenvolvimento dos meus sistemas e como isso catapultou minha produtividade lá pra cima. Fique comigo…
E no início…
Quando estamos aprendendo alguma coisa nova, neste caso, programação, é muito comum que a gente cometa muitos erros.
Geralmente quando estamos desenvolvendo algo, queremos ver nossa criação funcionando o mais rápido possível, e isto pode gerar grandes dores de cabeça.
Eu já passei por isso quando estava dando meus primeiros passos no desenvolvimento web.
Comecei, por brincadeira, a mexer com “asp”, não o ASP .NET, o asp lá de antigamente mesmo, usando o banco de dados access.
Eu já tinha alguma experiência em programação usando Delphi, para desktop, e alguns anos depois resolvi migrar para a web.
Posso dizer que quando comecei a mexer com asp, e digo mexer mesmo em vez de trabalhar, porque não era meu objetivo trabalhar definitivamente com asp, queria apenas aprender uma maneira de trabalhar com banco de dados e web, pois já tinha conhecimento em HTML.
Após fazer algumas brincadeiras com asp, resolvi continuar estudando mais e cheguei ao PHP, linguagem que me agradou muito naquele momento.
A partir de então, comecei a já ter uma certa experiência em PHP, pois já fazia alguns sites básicos, e por isso, comecei a pegar alguns serviços pagos, com clientes mesmo.
Foram vários casos, uns tive sucesso, outros fracasso, mas para fins didáticos, vou relatar um caso bem específico sobre um sistema que peguei para desenvolver na época, meados de 2010.
O sistema
Fui contratado para fazer um sistema onde assinantes deste serviço pagavam para ter acesso ao sistema que lhes permitia consultar preços de licitações já ocorridas.
Basicamente este sistema tinha um cadastro destas licitações, cadastros de usuários, com perfis e controle de acesso, etc, que inclusive usava o banco de dados SQL Server.
Então, após tudo acertado comecei a desenvolver os sistema, usando PHP puro, sem orientação a objetos, pois não conhecia isto ainda, CSS e JavaScript, acho que só usei o JQuery como biblioteca externa, o resto foi tudo na unha, e entenda que quando digo que foi tudo na “unha”, falo isso sem nenhum orgulho. 🙂
Alguns meses após o desenvolvimento do sistema, chegou o momento de apresentar uma versão funcional do mesmo.
Marcamos uma reunião, apresentei o sistema e por incrível que pareça tudo saiu como o esperado.
É claro que havia alterações que deveriam ser feitas e também alguns bugs a serem corrigidos, mas nada muito sério.
E digo que a partir deste momento é que meus problemas começaram a aparecer.
Como desenvolvi tudo no braço, sem uso de nenhum framework ou padrão de design, já que nem sabia que estes termos existiam, todos os “módulos” do sistema ficaram muito misturados, o famoso código macarrônico.
Tendo isto em mente, abri minha IDE e decidi encarar o desafio de corrigir os bugs e fazer algumas implementações novas e também algumas correções.
Porém, como já faziam alguns meses que eu não mexia no código, pois basicamente eu fazia a implementação, testava, funcionou? Bola pra frente, não parava muito pra tentar melhorar o código.
De repente comecei a notar que mexer naquele vespeiro estava ficando cada vez mais complicado. Eu basicamente não lembrava mais da lógica que eu tinha usado para desenvolver uma funcionalidade no sistema que eu mesmo tinha feito.
Ou seja, basta que passem algumas semanas ou poucos meses, e você já não consegue se lembrar do que fez.
É muito comum nestas horas você abandonar a tentativa de entender seu código e querer recomeçar aquela parte do zero, tive muito essa vontade, mas eu me esforçava bastante para tentar relembrar meu código e fazer as alterações.
Porém, o ruim disso tudo é que você começar a ficar desanimado, muito desanimado, você não vê a hora de terminar aquela parte do sistema para fechar logo a IDE e ir ver um vídeo de gatinhos no youtube.
E assim foram os dias seguintes. Eu sabia que tinha que continuar trabalhando no sistema, corrigindo os bugs e implementando as funções novas que foram combinadas na reunião, mas eu não conseguia.
Qualquer motivo, por menor que fosse, já era suficiente para eu não ir programar, a procrastinação comia solta.
Até que um dia eu cheguei à conclusão que eu precisava mudar esta situação, até quando eu iria ficar enrolando meu cliente? Até quando eu iria continuar me enganando?
Por isso decidi buscar no Google alguma forma mais ágil de programação, algo que fizesse o desenvolvimento render, e que não se tornasse um problema no futuro quando fosse preciso dar manutenção.
Então, nas minhas buscas, cheguei à conclusão de que precisaria usar um framework, pois eles já traziam funcionalidades e ferramentas prontas que eram muito utilizadas no desenvolvimento, ou seja, você não iria precisar reinventar a roda.
Funções como gravação em banco de dados, segurança, sessões, tratamento de arquivos, uploads, paginação etc… são itens que existem em todos os sistemas, então pra que ficar tentando recriar tudo isso do seu jeito se alguém, ou alguns, já fizeram isso de uma maneira melhor e, inclusive, testada exaustivamente por uma comunidade?
Isso foi suficiente para me convencer que eu precisava de um framework, aí, cheguei a outro problema, qual framework usar?
A partir disto, decidi então procurar qual o framework PHP mais famoso do momento.
Prazer, CodeIgniter
Analisei vários rankings de frameworks e cheguei à conclusão que o CodeIgniter estava sempre entre os 3 primeiros lugares.
Primeiro porque ele era fácil de aprender, tinha uma curva de aprendizagem bem baixa; segundo porque era utilizado por uma grande quantidade de pessoas; terceiro porque ele iria me entregar o que precisava, agilidade e padronização.
A partir de então, decidi adotar o CodeIgniter como framework de desenvolvimento dos meus próximos sistemas.
Comecei a estudá-lo nos poucos vídeos tutorias que existiam na época, entendi o básico do MVC, e fiz alguns pequenos projetos pessoais para colocar em prática o que aprendi.
Então notei que ele era realmente bom, agilizava muita coisa, forçava você a fazer um código mais limpo e padronizado, apesar de você continuar livre para fazer seu código macarrônico dentro dele.
Quando adquiri alguma experiência com o CodeIgniter, ou pelo menos achava que tinha adquirido, decidi então refazer todo aquele sistema, do zero, tudo usando CodeIgniter.
Porém, não era uma decisão só minha. Mesmo usando um framework que iria agilizar bastante o desenvolvimento, eu ainda iria precisar de mais tempo, e por isso teria que comunicar ao meu cliente para ver se ele iria aprovar esta mudança, pois, apesar de eu não cobrar nada a mais por isso, precisaria de mais tempo.
Reunião feita, proposta apresentada e cliente aceitou a remodelagem do sistema, pois apresentei todas as vantagens que o uso de um framework trazia ao projeto.
Final feliz
O próximo passo foi recomeçar o sistema, agora sendo feito usando CodeIgniter.
E mesmo sabendo o básico do framwork, fazendo muitas coisas erradas no código, como por exemplo fazer requisições ao banco de dados dentro dos controllers em vez do model, ainda assim tive um ganho de produtividade muito grande.
Agora eu não sentia mais aquele desânimo em abrir a minha IDE para trabalhar no sistema, pois as coisas estavam mais fáceis de entender e também de achar os problemas e resolvê-los.
A partir daí, apresentei uma nova versão do sistema ao cliente, ele gostou e continuei ainda desenvolvendo usando CodeIgniter por algum tempo, e a cada dia, eu aprendia mais com o CI.
Bom, esta foi minha história com o CI, desde lá ele vem recebendo melhorias e agora na versão 4.0, que está na RC-2, enquanto escrevo este texto, muita coisa mudou.
Ele está mais maduro, seguindo grande parte dos padrões de desenvolvimento, mas continua ainda com sua simplicidade e objetividade que sempre foram características suas.
Claro que neste meio tempo muita gente abandonou o CI e acabou migrando para o Laravel, por exemplo, mas mesmo assim, ainda pretendo continuar a usar o CI, pois a agilidade que ele traz e sua leveza ainda permanecem na sua filosofia.
Conte sua história também sobre como passou a usar o CodeIgniter.
Use os comentários abaixo.
Abraços
Fabio