#Programador PHP Pleno
##Responsabilidades
Desenvolvedor com experiência um pouco mais consolidada no desenvolvimento de softwares. Seu foco de atuação é na análise e desenvolvimento das funcionalidades dos softwares, sugerindo melhorias no processo e auxiliando os programadores junior e estagiários sempre que houver possibilidade/necessidade.
##Requisitos
- Todas as do Programador PHP Junior, porém com maior desenvoltura (qualidade, produtividade e autonomia);
- Domina os diagramas de classe e sequência da UML;
- Conhecimento mais aprofundado sobre o protocolo HTTP
- Utilização correta dos métodos (ao menos OPTIONS, GET, POST, PUT e DELETE);
- Utilização correta dos status code (envio e recebimento);
- Negociação de conteúdo através dos headers de requisição (language, contenttype, encoding, etc).
- Utilização avançada de bancos de dados relacionais
- Gerenciamento de schemas;
- Gerenciamento de permissões;
- Modelagem de dados, planejando os schemas para ter utilização otimizada dos tipos de colunas ;
- Criação de queries complexas (subqueries)
- Conhecimento básico de segurança e criptografia de dados
- SSL;
- Geração de hash utilizando salt (HMAC);
- Algoritmos de criptografia (DES, 3DES, etc).
- Sabe fazer as tarefas de debug e profile usando o xdebug ou zend debugger com o objetivo de localizar erros e otimizar os códigos;
- Conhece os design patterns básicos
- Abstract Factory;
- Factory Method;
- Singleton;
- Adapter;
- Decorator;
- Proxy;
- Facade;
- Composite;
- Strategy;
- State.
- Codifica seguindo ao menos KISS (keep it simple, stupid), DRY (don't repeat yourself), SRP (single responsability principle) e DIP (dependency inversion principle);
- Possui entendimento básico e aplica as regras de clean code e object calisthenics;
- Domina as PSRs básicas (PSR0, PSR1 e PSR2);
- Sabe as distinções entre PEAR e o Composer (e sabe utilizar ambos);
- Criação de testes de unidade;
- Conhecimento mais avançado do uso do git (merge, rebase, stash, branch, tag,
cherrypick);
- Gerenciamento de branchs para desenvolvimento em equipe usando o gitflow;
- Consegue analisar um problema, pensando nas necessidades a serem contempladas computacionalmente, trazendo soluções viáveis;
- Conhece o manifesto ágil e seus princípios, e entende os papéis definidos pelo SCRUM
#Desejável
- Conhecimentos avançados de algum framework MVC
#Perfil esperado
- Disciplina e organização é fundamental;
- Sedento por conhecimento;
- Traz críticas em relação a ferramentas utilizadas, com o objetivo de melhorar o desenvolvimento;
- Pesquisador nas horas vagas, trazendo novidades que podem ser realmente aplicadas nos projetos;
- Senso crítico;
- Engamento com a equipe, para crescimento sustentável de todos.