Nível de Conhecimento em PHP

Artigo que apresenta uma classificação quanto ao nível de conhecimento em PHP de acordo com critérios do autor.

Introdução
escalada

Estive observando as perguntas que aparecem em listas de discussão de PHP e notei que vários programadores não conhecem todos recursos da linguagem. Então resolvi separar aqui alguns dos principais recursos da linguagem em níveis. Assim, você tem condições de se auto-avaliar e saber o que ainda pode aprender para melhorar.

Nível Básico

Um programador PHP de nível básico é aquele capaz de usar minimamente a linguagem para solucionar problemas simples. Pode ser capaz de criar pequenos sistemas, mas ainda com vários probleminhas estruturais que ele só saberá quando se tornar intermediário ou avançado.

Para ser um programador PHP básico, você precisa conhecer bem:

  • Lógica de programação Procedural
  • HTML básico
  • Delimitadores de Código PHP
  • Sintaxe básica de IF, ELSE, SWITCH, WHILE, DO/WHILE, FOR e FOREACH
  • Operadores aritméticos e de concatenação
  • Manipulação básica dos tipos INT, FLOAT, STRING e ARRAY
  • Escopo

Nível Intermediário

O programador PHP de nível Intermediário é aquele capaz de desenvolver sistemas um pouco mais elegantes, mas ainda não entende completamente o funcionamento da arquitetura da Internet e recursos mais avançados.

Para ser um programador PHP intermediário, você precisa conhecer bem:

Nível Avançado

O programador PHP de nível Avançado é aquele capaz de desenvolver grandes sistemas Web em PHP utilizando o que há de mais avançado na linguagem e em outras tecnologias relacionadas.

Para ser um programador PHP avançado, você precisa conhecer bem:

  • Os tópicos do nível Básico e Intermediário
  • HTML 5 e especificações da W3C
  • JavaScript avançado
  • Acessibilidade
  • Lógica de programação Orientada a Objetos com utilização de metodologias e padrões (patterns)
  • Exceptions
  • HTTP
  • Namespace
  • XML, JSON, Web service e REST
  • Pear/Pecl
  • Instalação e configuração de módulos
  • Instalação e configuração do PHP
  • Instalação e configuração de pelo menos um servidor HTTP
  • Controle de Erros
  • Reflexão
  • Streams
  • SPL
  • SEO
  • PDO
  • Conhecer tópicos avançados de segurança Web
  • Ter preocupações com performance, escalabilidade e portabilidade

Nível Especialista

Bom, além dos tópicos que coloquei, existem muitos outros que não dizem respeito diretamente ao domínio de conhecimento de PHP. Por exemplo, alguém poderia considerar que "conhecer um framework" seja fundamental para o nível avançado, mas eu diria que este é um conhecimento específico. É possível um programador intermediário ou avançado conhecer um framework.

Se você acha que faltou algum tópico a ser citado em algum dos níveis ou discorda dessa classificação que coloquei, poste seu comentário abaixo.

12 comentários

Reinaldo Barcelos Mendes disse...

Gostei da avaliação, mas acho que encontrará muitos programadores que conhecem alguns, senão vários tópicos do avançado e no entanto não conhecem ou não dominam 'expressões regulares'.
Particularmente já conheci vários programadores em diversas linguagems(C#,Ruby, PHP...) que parecem ter medo de expressões regulares.

Já ouvi algo semelhante de um programador C#.
"Se você resolve um problema utilizando expressões regulares, então você tem 2 problemas"

Particularmente gosto muito de expressões regulares.
No + ok.

Rubens Takiguti Ribeiro (autor do blog) disse...

Obrigado por compartilhar sua opinião, Reinaldo.

Particularmente, acho que se o programador web não tem domínio de expressões regulares, então ainda não pode ser considerado "avançado", mesmo conhecendo vários tópicos que coloquei como avançado.

Neste caso, especificamente, não acho que uma coisa compense outra. Em outros caso pode até ser.

Lucas disse...

eu acho que 80% dos programadores PHP o nível esta abaixo do Nível Intermediário, Porque antes do cara aprender ele quer ganhar dinheiro, e diga se de passagem, eles sempre procuram soluções prontas, nunca tentam criar por si próprio. Tem cara que fala que é programador avançado porque usa Joomla, wordpress e ..., acredito que a maioria das empresas que trabalham com PHP, só contrata usuários de com conhecimento em soluções pré prontas, porque eu não sei. Raro ver algum programador PHP Intermediário usar por exemplo fastcgi ou linux. E é uma pena mesmo, porque o manual do PHP é excelente, a linguagem é excelente, tem muita informações em Português, excelentes fóruns.

J o n a d a b e disse...

Boa tarde,

Gostei muito desta avaliação. Sou um autodidata e realmente reconheço que tenho sérias limitações no conhecimento da linguagem PHP (porque venho dum background de programação sem ser orientada a objetos). Basicamente isso prende-se com o fato de ainda não ter tido nas mãos um bom manual PHP (preferencialmente livro ou PDF).

Que livros recomendaria?
Para meu contato meu-nome@ h o t m a i l . c o m

Anônimo disse...

Eu acho que programador avançado não precisa conhecer tudo isso. Programador avançado, não aprende. Senta e manda bala.

Alexsandro Pereira disse...

Muito bom sua comparação, concordo acho que com tudo, principalmente na parte de regex, pois se ele não entende disso, estará pegando qualquer coisa na internet para fazer urls amigaveis, sem saber o que realmente esta fazendo.
Sempre tenho questões relacionadas a regex, sem esse conhecimento não poderia resolve-los.
Parabens!

Renato disse...

Eu sei a maioria dos tópicos do avançado, já fiz sistemas bem legais mas me considero um programador básico pois erro muito por coisas bobas e ainda não sei muitas funções que o php possui.

Unknown disse...

Olá Rubens, acredito que o especialista em PHP deva ter conhecimento sólido em desenvolvimento de extensões para PHP, apesar que para tal o programador necessite ter um certo conhecimento na linguagem C, além da linguagem específica do núcleo do PHP.

Talvez dê para colocar como conhecimentos de um programador avançado noções sobre desenvolvimento de extensões, como sua utilização para criação de novas funcionalidades pontuais, por exemplo.

Rubens Takiguti Ribeiro (autor do blog) disse...

Olá Diego, obrigado pelo comentário.

Na verdade o tópico "nível especialista" não teve como objetivo listar um conjunto de coisas como os outros níveis. A idéia que propus foi classificar o programador entre básico, intermediário e avançado. E coloquei o nível especialista como um extra. Por exemplo: dominar o banco de dados oracle é algo muito específico.

Talvez criar extensões seja um requisito para o nível avançado, mas, como você mesmo disse, já exige conhecimento do core do PHP e não da sua utilização efetivamente. Já entra outra linguagem na história e acho que acaba fugindo um pouco do domínio de uso da linguagem PHP. Eu diria que é um conhecimento especialista, embora esteja bastante relacionado à linguagem.

Roberto Augusto disse...

Gostei muito da classificação. Como outros disseram, tambpem acho que a maioria dos profissionais estão abaixo do intermediário, e nem se dão conta disso.

Rubens Takiguti Ribeiro (autor do blog) disse...

Igor, esse é um caso específico do item "Lógica de programação Orientada a Objetos com utilização de metodologias e padrões (patterns)"

Em 2011, acho que nem existia esse nome Object Calisthenics. :D