5 coisas que um programador PHP precisa

Tuesday, February 17, 2009
By Augusto Pascutti

Se você ganha a vida com PHP sabe o quanto sofremos por conta dos chamados “sobrinhos”, se você não sabe o que estou falando, termine de ler esse post e procure no Google que você vai entender do que estamos falando! Quem foi ao “I Encontro|PHPSP” sabe que um objetivo tão importante quanto unir a comunidade é levar mais conhecimento a ela, deixando claro que o PHP deixou a muito tempo de ser uma linguagem de programação para sites e entrou no ramo enterprise!

Onde queremos chegar com tudo isso? Simples! O mal dos sobrinhos é que logo após seu “Hello World!” eles já se consideram programadores, e logicamente, as coisas não funcionam bem assim. Inspirado num post do Cal Evans (se você nunca ouviu falar nesse nome, google-for-it ! agora!) em que ele diz 5 ferramentas que um programador PHP precisa conhecer, nós dizemos mais: considere-se um programador somente se você conhecer PELO MENOS as cinco ferramentas abaixo!

5: Testes Unitários

Todo mundo bate nesta tecla, hoje temos ótimas soluções ( PHPUnit e SimpleTest ) para isso, todas muito maduras e largamente utilizadas. A vantagem de se desenvolver com o apoio dos testes de unidade ou até mesmo utilizando TDD (Test Driven Development) é notável e díficil de apresentar a quem nunca utilizou. No começo tudo pode parecer muito trabalhoso e inútil, mas com o tempo os testes unitários que você (teoricamente) “perdeu tempo” escrevendo se provam fiéis amigos do programador.

4: Debug

Debugar um código está bem longe de sair dando “echo” pelo código ! Isso vale para as mais rebuscadas técnicas que variam dessa, como por exemplo escrever uma função específica pra isso ou controlar isso através de alguma constante e/ou variável. O debug de um código consiste em ver o que existe na memória de execução do PHP em determinado momento do script, além de possíbilitar controlar o interpretador, parando, avançando a medida que for necessário ao programador. Existem – pra variar – muitas ferramentas pra isso: xDebug, dbg, Zend_Debug, etc …

3: Modelo ER

Trabalhar com PHP invariavelmente significa trabalhar com um Banco de Dados assim como trabalhar com desenvolvimento de sistemas implica invariavelmente em constantes mudanças; é muito lógico no momento de criação de uma nova tabela a modelagem dela e os relacionamentos que ela possui dentro do sistema, mas e depois de 1 ano ? As pessoas mudam, amadurecem (ou não) e mudam o jeito de conceber as coisas, mas o banco de dados continua o mesmo e toda a lógica vai pro saco ! Por isso ter um diagrama de entidade-relacionamento do seu banco de dados pode ser crucial para o andamento de um projeto durante muito tempo, você não perde muito tempo fazendo isso e existem ainda várias ferramentas para ajudar !

( Vamos atualizar a listagem das ferramentas para auxiliar na produão de MERs com o tempo … )

2: Sistema de Controle de Versões

Não vamos perder muito tempo discutindo isso aqui, se você trabalha em equipe ou não, seja seu projeto gigante ou não: use ! Além de manter todas as versões do seu projeto você têm um backup do código. Trabalhar com um sistema de controle de versão se equipara aos Testes de Unidade: você pode passar uma vida inteira sem eles, mas uma vez com eles, nunca mais sem eles !

Existem diversas opções, as mais famosas: CVS (utilizado no desenvolvimento do PHP mas sendo migrado pro Subversion), Subversion (mais novo que o CVS e muito semelhante a ele), GIT (feito pelo Linus Torvalds para o desenvolvimento do kernel do Linux)

1: (Um) Framework

Esse aqui vai gerar briga, mas a briga vale a pena. Primeiro: um CMS (Joomla, Drupal, etc) não é um framework ! Nunca foram e nunca serão, este não é o propósito deles. Um framework é um conjunto de ferramentas genérico que deve servir bem um programador fazendo um site e um fazendo um sistema de gerenciamento logístico de entrega de camisinhas musicais no sertão brasileiro!

Você não precisa utilizar um framework em seus projetos, mas conhecer um ou mais frameworks ajuda em muito seu nível de desenvolvimento! Acredite: você não é o melhor programador que existe ! Existem muitos outros que pensam a mesma coisa! Um fato é que um framework possui muito conhecimento alheio agregado dentro do código, assim como muito teste em ambientes reais.

Muitos pregam que a curva de aprendizado custa demais a empresa. Ora, se a empresa fizer um sistema a partir do zero, novos desenvolvedores também terão que aprender a utilizar as coisas existentes que provavelmente terão menos padrão, menos qualidade e muito menos teste. Outro motivo latente é a performance, uma besteira nós dizemos! Existem muitas formas de se obter performance sem ao menos mexer em uma linha de código, além de que a probabilidade de um framework criado por você ser mais lento do que um existente é bem grande!

Enfim, utilizando ou não um framework no dia-a-dia; conhecer um ou mais é fundamental para o desenvolvimento profissional do programador! Existem MUITOS frameworks em PHP, vamos citar alguns:

Conclusão

Programar vai muito além de simplimente saber escrever códigos. Um programador não é a pessoa que simplismente escreve o código para máquina interpretar e executar o que ele deseja, ele precisa fazer isso de forma legível para os demais programadores além de garantir que tudo continue funcionando perfeitamente. Todos os cinco itens citados acima contribuem exatemente pra isso!

Tenha sempre em mente o que foi dito acima: você escreve para os outros e não para você! Raramente você vai escrever algo para esconder do resto do mundo, ou que não vá precisar da mão de alguém no código, mas se nada disse te convenceu, escreva os códigos pensando que o próximo que for dar manutenção no seu código pode ser um serial killer que sabe onde você mora! E outra; não existe nenhuma medida que diga seu nível em PHP. Atualmente a melhor delas é a Certificação da Zend, mas excluindo ela da lista, o que vai dizer se você é ou não é um bom programador é a opinião dos outros sobre seu código. Pense nisso na próxima vez em que você for programar!

Notem também que IDEs nem entraram nos pontos, uma porque isso é uma discussão infindável e outra porque uma IDE não vai tornar você um melhor programador, ela com certeza vai te tornar um programador mais produtivo! Então escolha bem a sua!

Contamos com suas opiniões sobre os asssuntos acima! E vamos indo rumo a des-sobrinhação  do PHP!

No TweetBacks yet. (Be the first to Tweet this post)

Tags: ,

16 Responses to “5 coisas que um programador PHP precisa”

  1. Parabéns pelo artigo, fundamental para dar a direção que os programadores iniciantes devem seguir!

    #625
  2. Ótimo artigo, só acho que a questão do Framework é equivalente a questão da IDE. Usar um framework não faz de você um melhor programador, afinal existem aplicações que não são tão “out of the box” e nessas situações um framework genérico pode acabar sendo um impecílio no desenvolvimento ao invés de ajudar na flexibilidade. Eu por exemplo estou envolvido num projeto que não usa um SGBD tradicional, mas sim HBase e Hadoop, outro exemplo, o Flickr criou um framework próprio chamado Flamework (:P) que trata melhor as situações extremas em que ele opera, com suporte a coisas como sharding.

    Além de que muita gente usa frameworks sem saber o que está fazendo. Já existem os “sobrinhos on rails” que usam Rails sem saber fazer nada em Ruby. Não critico o uso de frameworks e inclusive uso em alguns projetos, mas muito mais importante do que usar um é saber os conceitos que estão por trás dele.

    Pra mim faltou nessa lista conhecimentos básico de ciência da computação que o pessoal do Java tem. De estrutura de dados, algoritmos e padrões de projeto.

    Eu posso apostar que mais da metade dos programadores PHP, pelo menos do Brasil, não sabem a diferença de um Quick Sort pra um Bubble Sort :-)).

    #644
  3. [...] Publiquei recentemente no PHPSP um post sobre as coisas que um programador PHP deveria conhecer antes de se considerar um programador. Fiz este post inspirado em um muito semelhante feito pelo Cal Evans esta semana. Achei interessante porque é difícil encontrar um lugar que concentre – como o post – as coisas que são importantes a um programador conhecer. Muitos ainda têm uma imagem de que basta saber utilizar basicamente a sintaxe da linguagem e pronto, quando ser um programador é muito mais do que isso.Sendo você um desenvolvedor experiente ou iniciante, recomendo a leitura do post que pode ser conferido aqui [...]

    #647
  4. Edemilson Lima

    Muito bom! Só acho que os links que poderiam estar sublinhados, pois muitas pessoas passarão batidas por eles… Quanto ao texto, encontrei algumas pequenas correções:

    “mas conhEcer um ou mais frameworks ajuda em muito seu nível de desenvolvimento! Acredite: você não é o melhor programador QUE existe !”

    #649
  5. Felipe. A questão do Framework não é simplismente o ‘uso’, mas o estudo. O estudo de um framework não implica saber somente como utilizá-lo, implica em saber como ele foi construído e o porquê de algo estar de determinado jeito.
    É o que você disse: “mas muito mais importante do que usar um é saber os conceitos que estão por trás dele.” !

    O pessoal de Java conhecer sobre algoritmos/estrutura de dados é um mito. Eu raramente encontro um programador Java que saiba a diferença entre os tipos de ordenação existente. Agora acredito (não boto minha mão no fogo por isso) que eles conhecem sim mais padrões de design por causa da linguagem.

    Ter conhecimento em ciência da computação é bom mas não é necessário. Um programador PHP não precisa saber implimentar algoritmos de ordenação ou implementar estruturas de dados. Todo conhecimento agregado é válido logicamente. Se o programador se interessa sempre em estudar para melhorar seu nível de conhecimento é praticamente impossível fugir disso ! Assim como fugir dos padrões de design é inútil se você programa usando OO.

    =]

    #650
  6. Olá Augusto,

    Eu vou discordar só do seu último parágrafo, eu não acho que seja dispensável o conhecimento de algoritmos. Ordenação é um exemplo de problema básico que todo _programador_ de fato precisa ter pelo menos boas noções (por mais que PHP implemente ordenação nativamente, entramos na mesma questão do uso de frameworks). Assim como estrutura de dados, um programador precisa saber o que é fila, pilha, mapa, árvore, etc senão não “des-sobrinha” nem sai do CRUD :-)

    Grande abraço!

    #653
  7. Leo

    Além de tudo o que foi citado no artigo, é muito interessante a documentação do sistema, acho que só um DER não resolve o problema de manutenções. Acredito que seja muito legal um artigo sobre o assunto, incluindo um modelo.
    Abraço!

    #709
  8. Ah, deug em linguagens interpretadas é sempre complexo :-(

    Mto bom o post!

    #752
  9. jhonatan luiz

    Excelente Post, parabéns! só tem um probleminha, acho que sou o “SOBRINHO”!!! hehehehhee, bom então vou estudar mais e mais…

    #1144
  10. Hehe, mas esse é o lance …
    Acho que o que mais qualifica um programador como “sobrinho” é o fato dele ignorar o fato de que existe muito mais do que ele sabe !

    Estudar mais e mais .. isso sim é a característica de um verdadeiro programador !

    #1146
  11. Só um adendo sobre o uso de frameworks: produtividade! não só na criação como na manutenção de aplicações. Normalmente, e não estou generalizando, programadores PHP escrevem muito código e demoram demais pra criar pequenas coisas que em outras linguagens levaria muito menos tempo. Com a adoção de frameworks esse tempo é reduzido e tempo é dinheiro.

    Outra vantagem de frameworks é a universalização da manutenção. Utilizo o Zend Framework e que torna mais fácil a manutenção já que há uma estrutura padrão por trás do projeto. A dificuldade é encontrar profissionais que saibam Zend, já que a maioria tende a sempre reiventar a roda.

    #2159
  12. Muito bom este artigo e acho sinceramente que a ideia de “sobrinhos” foi muito bem usada.
    Eu preferi desenvolver um framework aqui na empresa onde trabalho por achar que os outros vem com muita coisa que vc não acaba utilizando nada.
    Eu em minha humilde opnião acho que desenvolver sem ide ajuda muito a um jovem aprendiz a se tornar um programador. Creio que Ide acaba acostumando a um ser humano a se tornar um programador preguiçoso. Nas outras eu concordo com tudo que vc escreveu.

    #2191
  13. Samuel,

    Desenvolvedor o próprio framework pode ser válido porém utilizar um framework já conhecido como o Zend Framework por exemplo é muito mais vantajoso em diversos sentidos sem falar que você pode ajudar no desenvolvimento do mesmo e se você chegar a esse ponto provavelmente você vai estar produzindo um código de qualidade.

    E sobre desenvolver sem IDE, como assim? :P Isso não tem haver com preguiça, preguiça pra mim é ter que repetir coisas que estão a um clique de distância, ou podem ser simplificadas em uma IDE.

    #2250
  14. Victor A.

    Imprecindível no desenvolvimento de um programador. Tenho mais direção agora, uma vez que sou iniciante na programação.

    #2431
  15. marcio

    Gostaria muito aprender PhP contigo

    #2558
  16. Ótimo artigo, se pelo menos metade dos que se dizem programadores conseguissem ao menos fazer uma linha de código utilizando um editor de texto e cobrando um preço justo e não se prostituindo como vemos muito por ai, acredito que o programador PHP seria mais respeitado.

    #2775

Leave a Reply