Porque Usar um Framework?
Você usa algum framework para desenvolver? Não? Sabe o que pode estar perdendo?
Nesse post irei falar um pouco sobre vantagens e desvantagens de usar um framework e citar alguns dos mais conhecidos para desenvolvimento web.
Vamos começar do básico, ou seja, explicando o que é um framework..
De grosso modo, framework nada mais é do que um conjunto de código que serve para facilitar o desenvolvimento de funcionalidades genéricas. Tarefas do dia-a-dia como fazer uma simples consulta no banco de dados (independente do SGBD - Sistema Gerenciador de Banco de Dados) passam a se tornar coisas simples de implementar, possibilitando nosso foco em deveres mais complexos e que realmente necessitam de mais atenção.
Vantagens de se usar um framework
- Padronização: uma das grandes vantagens de um framework é a padronização do desenvolvimento. Por termos um conjunto já definido de classes e/ou funções, somos "forçados" a trabalhar conforme a ferramenta de escolha.
- Velocidade de desenvolvimento: por fazermos uso de módulos genéricos economizamos tempo por não ter que ficar "reinventando a roda" em cada projeto.
- Qualidade: os principais frameworks do mercado são muito bem testados em versões alfa, beta e release candidate (RC) além de serem mantidos por comunidades e/ou empresas experientes.
- Manutenção: por seguirmos um padrão e termos código de alta qualidade, ganhamos na facilidade de manutenção, uma vez que sabemos onde encontrar o que precisamos.
- Comunidade: excelente meio de aprendizado onde podemos obter ajuda e ganhar experiência não só com a ferramenta e a linguagem mas com a cultura e forma de pensar.
- Segurança: sem dúvidas é um dos quesitos que preocupa muita gente (e com razão) e que é um fator muito considerado para lançamentos de patches e atualização nos frameworks mais conhecidos.
Desvantagens
- Curva de aprendizado: por estarmos trabalhando com código de terceiros e/ou padrões desconhecidos, temos uma curva de aprendizado elevada pois precisamos de um pré conhecimento para conseguirmos ter um bom ritmo de trabalho.
- Requisitos e dependências do sistema: é muito comum precisarmos instalar alguma extensão ou módulo para rodar o framework ou até mesmo ter que atualizar a versão da linguagem e até do sistema operacional, isso se deve ao fato de trabalharmos com ferramentas atuais, rápidas e seguras (pelo menos é para ser assim).
- Performance e peso: essa é uma questão polêmica, pois muito dos frameworks atuais são "lazy load" (ou estão migrando) ou seja, só inicializam objetos quando realmente necessário e são modulares, possibilitando a inclusão de apenas módulos/plugins realmente necessários. Mesmo assim, há uma queda de performance e excesso de peso (se comparado a uma aplicação bem feita sem uso de um framework) ao usar certas ferramentas não tão modulares ou mais complexas que exigem mais código.
Alguns frameworks
Abaixo irei citar alguns frameworks que tenho alguma experiência e/ou que já li e ouvi muito a respeito.
- Django (https://www.djangoproject.com/): framework que utiliza o padrão MVC (clique aqui para saber mais) de alto nível escrito em Python que encoraja o desenvolvimento rápido, limpo e pragmático.
Tive uma breve experiência onde pude participar de alguns projetos na empresa onde trabalhava e cheguei a utilizar em um projeto pessoal meu.
Na minha opinião, Django é um framework aspirado à gerenciador de conteúdo (Content Management System - CMS) e possui uma eficiência enorme. O tempo de desenvolvimento cai consideravelmente (algo incrível) com ele e não é por menos que é utilizado por grandes empresas como a Globo.com para realização de seus projetos web.
Por ele ser em Python, muitos servidores não suportam ou dão um péssimo suporte a ele, portanto, deve-se escolher a ferramenta com atenção, pois a aplicação a ser construída provavelmente rodará em um servidor que pode nos dar dor de cabeça com deploy, performance e manutenção.
Como ponto negativo, acho ele meio lento, não tão difundido no mercado como outros frameworks e falta de uma estrutura mais definida como CakePHP.
- Ruby on Rails (http://rubyonrails.org/): framework MVC escrito em Ruby para desenvolvimento rápido. Ferramenta completa (full stack) que segue o conceito de "convenção sobre configuração" para automação e agilidade de tarefas comuns.
Testes unitários e integrados são algumas de suas características marcantes. Assim como a filosofia de Ruby, preza por código "divertido" e "bonito".
Gosto muito de suas características e também da comunidade muito ativa que incentiva o uso de novas tecnologias e padrões.
Possui um bom mercado de trabalho e ao meu ver é a ferramenta que mais está se popularizando para desenvolvimento web.
- CakePHP (http://cakephp.org/): framework MVC escrito em PHP de desenvolvimento rápido. Possui algumas características do Ruby on Rails como "convenção sobre configuração", scaffolding, geração de arquivos e execução de tarefas pelos console através do comando "bake".
É um framework completo (full stack) muito popular e de fácil aprendizado se comparado com outros, sendo um dos mais utlizados atualmente, tendo uma boa demanda de profissionais no mercado.
Possui uma excelente documentação e comunidade. Já fiz vários projetos com ele e recomendo.
- CodeIgniter (http://codeigniter.com/): framework MVC escrito em PHP para desenvolvimento rápido.
É um framework de escrita simples mas que possui muitos recursos, muito recomendado para iniciantes. Segundo várias fontes, é o mais rápido framework (entre os grandes) feito em PHP.
Tive uma breve experiência com ele onde pude desenvolver um projeto do zero. Ao meu ver deixa a desejar em automações de tarefas básicas, como por exemplo a renderização padrão das views.
Acho ele simples demais, creio que com ferramentas mais completas e complexas podemos aumentar nossa produtividade.
- Zend Framework (http://framework.zend.com/): framework MVC escrito em PHP para desenvolvimento seguro e confiável.
É desenvolvido pela Zend - a empresa que mantém o PHP - e possui uma ótima integração com outros produtos da companhia como o ambiente de desenvolvimento integrado (IDE em inglês) Zend Studio, além de incluir muitas API's para fornecedores como Google, Amazon e Yahoo!.
Por ter muitos recursos acaba se tornando um pouco pesado e mais avançado para iniciantes.
Nunca desenvolvi com esse framework, mas já vi alguns tutoriais e me parece mais complexo, sendo necessário ter que escrever mais código para obter o mesmo resultado obtido com outras ferramentas.
- Symfony (http://www.symfony-project.org/): framework MVC escrito em PHP para desenvolvimento rápido.
Ferramenta completa (full stack) que trabalha com código de alto nível e confiável para um desenvolvimento ágil.
Nunca utilizei, mas pelo que já vi e ouvi me parece ser uma ferramenta avançada, o que acaba tornando seu uso mais restrito.
Muitas fontes o citam como o mais lento entre os principais frameworks PHP.
Conclusão
Tendo em base as vantagens e desvantagens acima, você pode estar se perguntando por que pessoas ou até mesmo você não começa a aprender e utilizar um framework.. Tirando como experiência própria, creio que o principal motivo que levam os desenvolvedores a não utilizarem um framework é o orgulho. Orgulho? Mas como assim você pode estar se perguntando. É simples, muitas pessoas têm resistência para aceitar uma opinião e acabam deixando de experimentar algo novo por achar que não precisam de código de terceiros e podem desenvolver suas próprias soluções ou pensam que isso é demais para seu dia-a-dia.
Minha intenção não é fazer você utilizar um framework (apesar que isso seria excelente) mas sim abrir sua mente para novas possibilidades e o encorajar a fazer um teste de verdade, deixando medos e preconceitos de lado.. Antecipadamente digo que isso não será nada fácil, mas como tudo na vida, você verá o fruto do seu esforço.
E você, o que acha sobre o uso de frameworks?