Desenvolvedor com experiência um pouco mais consolidada no desenvolvimento de software. Seu foco de atuação é na análise e desenvolvimento das funcionalidades dos software, sugerindo melhorias no processo e auxiliando os programadores junior e estagiários sempre que houver possibilidade/necessidade.
- 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 codes (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 intermediário sobre sistemas operacionais (processos, redes, estruturas de diretórios e configurações básicas) e linha de comando. Comandos como
ps
,kill
,ifconfig
,nmap
,hostname
,find
,grep
,>
,>>
,|
,&
,su
,sudo
,wget
,crontab
; - Conhecimento básico de segurança e criptografia de dados
- SSL;
- Geração de hash utilizando salt (HMAC);
- Algoritmos de criptografia (DES, 3DES, etc).
- Codificar a segurança da aplicação de acordo com as especificações fornecidas por especialistas em segurança de TI.
- 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 responsibility principle) e DIP (dependency inversion principle);
- Possui entendimento básico e aplica as regras de clean code e object calisthenics;
- Conhecimento de arquitetura de software, princípios SOLID e refatoração;
- Conhecimento e compreensão da motivação do gerenciamento de assets (otimização de imagens, minificação, concatenação, cache busting);
- Conhece sobre o grupo de interoperabilidade entre frameworks (PHP-FIG) e suas recomendações (PSRs)
- 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;
- Consegue analisar um problema, pensando nas necessidades a serem contempladas computacionalmente, trazendo soluções viáveis;
- Conhecimento sobre Cloud Computing (IaaS, PaaS e SaaS);
- Conhece o manifesto ágil e seus princípios, e entende os papéis definidos pelo SCRUM
- Conhecimentos avançados de algum framework MVC
- Conhecimentos em bancos de dados NoSQL
- 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;
- Engajamento com a equipe, para crescimento sustentável de todos.