Não deixe o framework atrasar suas entregas
Atrase-as você mesmo
Alessandro Feitoza
- Professor de códigos e outras computarias
- Programador/Dev/Severino
- PHP com Rapadura
- PHPeste
Agenda
- Parte 1
- Parte 2
- Parte 3
- Parte 4
@alessandro_feitoza
Essa talk não é um mandamento
- Não estou negativando o uso de frameworks
- É uma visão minha baseada na XP que eu acho que tenho
- E somada a interpretação literária e das ruas
Por que isso é importante?
A nova geração de devs quer aprender primeiro o framework antes da linguagem
Quais frameworks vocês conhecem/usam?
E o que diabé um framework?
E uma Biblioteca/Library?
Biblioteca/Library
- Conjunto de códigos prontos com alguma(s) funcionalidade(s)
- É adicionada a aplicação para resolver um problema especifico
Framework
- Conjunto de códigos prontos com alguma(s) funcionalidade(s)
- Está na base da aplicação
- É decidido antes do projeto começar
A diferença está na
Inversão de Controle
Control of Inversion (IoC)
Termo surgiu em 1970
Martin Fowler re-explicou em 1988
Se popularizou novamente em 2004 pelo Uncle Bob (e Martin Fowler)
Ao usar uma library:
Você está no controle no fluxo da aplicação.
Ao usar um framework:
Agora o seu código roda dentro da estrutura fornecida pelo framework.
Laravel:
Laravel:
React (criando uma aplicação nova):
No mundo real o framework usar seu código para executar bibliotecas
Geramos então o Acoplamento
- Há quantos anos você faz código?
- Já precisou decidir qual framework ou biblioteca usar?
- Já cogitou começar um projeto do zero por causa da decisão de alguém?
Pontos Positivos de usar um framework
- Ecossistema Coeso
- Já tem o óbvio (Rotas, conexão, etc)
- Estrutura de arquivos e diretórios padronizada
- Objetivo
- Seguro**
- Validado pela comunidade*
Pontos Negativos de usar um framework
- Muito código (nem sempre precisamos)
- "Díficil" integração com um projeto legado
- Pouca flexibilidade
A tal da Alta Coesão e Baixo Acoplamento
Cuidado com o Lobisomen
Aquilo que a gente conhece e confia pode se tornar
nosso pior pesadelo
01 - Antes de sair comparando frameworks
- Domine a linguagem, Aprenda o PHP/JS de verdade, puro, das ruas
- Aprenda paradigmas, Orientação a Objetos, Funcional, Estruturado e como os artefatos se relacionam
- Domine a linguagem, Entenda o funcionamento de pacotes (Composer/NPM/PIP)
- Estude arquiteturas: (Monolitico, Microservices, serverless) e design de código
02 - Antes de escolher um framework
- Instale e teste vários outros, teste, crie protótipos (não só CRUDs)
- A documentação deve se abrir com você Se ela for misteriosa, fuja!
- Veja o engajamento da comunidade: (issues, PRs, discussion)
- Olhe o reclame aqui (Stackoverflow)
- Perguntar para quem já usa (equipe, comunidades)
- Veja o número de downloads/forks (packagist/git)
- Procure conteúdo (Palestras, eventos, tutoriais, videos)
- Monte a sua stack (não precisa usar tudo que o framework oferece
- Aprenda SQL (nem só de ORM viverá o dev)
- Cuidado com as coisas automágicas
- Não queime na largada (o que é "ágil" no ínicio pode se tornar custoso durante o processo, e inviável no fim)
- Documente sua experiência
- Não se prenda demais ao framework (veja maneiras de isolar suas regras)
- Adapte-se (entenda o framework e reescreva as regras)
- Sugira melhorias, reporte bugs, contribua com o projeto
- Multiplique conhecimento
Valeu o Boi, valeu o Vaqueiro
@alessandro_feitoza
https://linkedin.com/in/AlessandroFeitoza
https://alessandrofeitoza.github.io/slides