Olá pessoal, tudo bem com vocês? Hoje, vamos falar sobre um tema um tanto importante quando falamos de desenvolvimento. As ferramentas que facilitam demais o desenvolvimento de sistemas complexos, mas, às vezes, acabam colocando uma grande complexidade no que precisamos desenvolver, vamos falar de frameworks.
Ruby on rails, Vue e Angular no JavaScript Front-end, Express no Node.js, Phoenix no Elixir, Laravel e Symfony no PHP, Spring Boot no Java, entre outros. Com a ideia de desenvolver o mais rápido possível, hoje em dia se exige demais da pessoa desenvolvedora que ela saiba um framework para facilitar o desenvolvimento de sistemas complexos. Mas, será que devemos usar framework em tudo que desenvolvermos como dev?
O que é biblioteca?
Primeiramente, para quem ainda está iniciando os estudos em desenvolvimento é importante definir o que é um framework. Mas para isso, precisamos definir antes o que é uma biblioteca.
Biblioteca é um conjunto de funções, classes ou qualquer outro tipo de código desenvolvido para abstrair (facilitar) a resolução de um problema específico em desenvolvimento, desde que esse código não esteja dentro da própria linguagem de programação (no core da linguagem) utilizada.
Por exemplo, no PHP temos a classe DateTime para manipular datas e horários, essa classe não é uma biblioteca, pois é uma classe nativa da linguagem. Porém, existe um conjunto de funcionalidades chamada Carbon, que também trabalha com datas e inclusive herda a classe DateTime, como o Carbon não pertence ao core da linguagem PHP e resolve um problema específico: manipulação de datas, o Carbon é uma biblioteca.
O que é framework?
E agora sabendo o que é biblioteca, o que é framework? Framework é um conjunto de bibliotecas que se conversam capaz de abstrair o desenvolvimento de uma aplicação (no contexto de sua utilização) de ponta a ponta. Ou seja, utilizando Ruby on Rails, Laravel ou Sprint Boot, exemplo, devs conseguem desenvolver o back-end de uma aplicação de ponta a ponta: desenvolvimento e consumo de APIs, manipulação de arquivos, gerenciamento de camadas de segurança, autenticação de usuários, gerenciamento de requisições, gerenciamento de sessões, entre outras coisas; do mesmo modo que utilizando Angular, por exemplo, devs conseguem desenvolver de ponta a ponta o front-end de uma aplicação.
Entendendo isso, parece maravilhoso usarmos frameworks para tudo que formos desenvolver, né? Já que esses conjuntos de bibliotecas fornecem uma facilidade para desenvolvermos uma aplicação de ponta a ponta. É um pouquinho mais complexo do que isso.
Quando utilizar frameworks?
Utilizar frameworks em desenvolvimento é um passo importante para uma pessoa desenvolvedora. Algumas coisas que são difíceis de implementar e acabam demandando muito tempo de desenvolvimento estão facilmente disponíveis nos frameworks. Por exemplo, as bibliotecas de banco de dados utilizadas nos frameworks já implementam soluções que evitam SQL injection, fazer requisições para APIs externas geralmente são bastante simples quando usamos framework, em alguns casos os frameworks são capazes até de gerar a maioria das telas de nossas aplicações.
Frameworks são utilizados e desenvolvidos por muitas pessoas dev, sendo assim são códigos amplamente testados e revisados pela comunidade, aumentando a confiabilidade dos sistemas desenvolvidos. Questões de segurança também são bastante focadas por quem desenvolve, grande parte dos problemas comuns de segurança de aplicações já estão solucionados quando utilizamos um framework.
Além disso tudo, utilizando um framework a pessoa desenvolvedora acaba adquirindo o jeito de desenvolver naquele framework. Como disse anteriormente: as bibliotecas dentro de um framework conversam entre si, e em geral o tipo de conversa é muito engessado, fazendo com que a pessoa desenvolvedora acabe ficando refém do modo de escrever utilizando um framework.
Em cada framework, por exemplo, é utilizado tipos de padrões de projeto, escrita de código e componentização específicos, o que às vezes faz com que cada pessoa se adapte a um framework específico. Esse acoplamento acaba fazendo com que seja difícil trocar de framework em um projeto depois de escolhido.
Mas se os frameworks são tão bons, devo começar a programar aprendendo um framework direto?
Para uma pessoa iniciante em desenvolvimento um framework abstrai muito as camadas de desenvolvimento, porém, é importante para uma pessoa que está começando, primeiramente entender como a linguagem funciona em um todo. O que se pode fazer com ela nativamente, como as funções dentro da linguagem são utilizadas.
É importante para quem está começando entender como tudo funciona debaixo dos panos, até mesmo para poder lidar com erros e ajustes que devem ser feitos a nível de linguagem dentro de um framework. No final, frameworks continuam sendo um conjunto de bibliotecas de uma linguagem específica, então, quanto mais se sabe da linguagem, mais fácil é para você se adaptar aos diversos frameworks daquela linguagem.
Sendo assim, o ideal é que uma pessoa que esteja iniciando no desenvolvimento desenvolva alguns projetos utilizando a linguagem pura e suas funcionalidades nativas e depois parta para os frameworks, para entender o que é abstraído nos frameworks e como um mesmo problema pode ser resolvido de diversos modos em desenvolvimento.
Como disse anteriormente, depois que um projeto começa em um framework, dificilmente ele será refeito em outro framework, além disso, em algumas empresas existem projetos em vários deles. É interessante para quem está começando entender a fundo a linguagem para realmente facilitar o entendimento do que está sendo escrito em um framework específico, porém com a tranquilidade de poder experimentar e não ficar só em um framework.
Com a ansiedade das pessoas em entrar na área de desenvolvimento e não parar para estudar as bases e as linguagens, acabamos tendo muito o que chamamos de devs de framework. Uma pessoa que desenvolve aplicações sem entender como elas funcionam debaixo dos panos, apenas usando um único framework. Ou seja, se a pessoa tiver que fazer algo utilizando a linguagem nativa ou outro framework ela não é capaz de resolver esses problemas, já que está condicionada a apenas aquele processo de desenvolvimento e com aquele framework específico.
Desejo que tenham curtido o artigo de hoje, valeu mesmo por acompanhar aqui o blog.
Até a próxima!
Tenha a melhor performance nos seus projetos como DEV!
Conheça o VPS Locaweb