A figura “Desenvolvedor” é bem interessante. Construir soluções e resolver problemas podem até parecer termos sinônimos, mas não é. Vamos tentar descobrir a diferença entre esses dois?

Vim aqui pra o Cabo de Sto. Agostinho resolver uns problemas pessoais. Acabei que trouxe meu computador. Como estou atrasado com as postagens, vamos nessa. Lembrando que essa é uma opinião pessoal. Fica à vontade pra discordar. Vamos discutí-la nos comentários no término? =D

Tentando definir

Lá nos anos 97, quando a internet dava seus primeiros passos, consigo vieram as hospedagens, a era dos sites enfrufruzados e tudo mais. Nessa época não se sonhava em PHP e a moda do momento era HTML 3.02, frameset e marquee. Acredite ou não, o marquee ainda existe! :D

Os programadores na época podiam soltar a imaginação, começando do zero, saindo as maiores bizarrices. (Mas era legal pra caramba). Como as paginas eram de simples confecção, não existia códigos extras: basicamente tudo era “hardcoded”. Javascript era pra dar alguma vida na página, mas geralmente coisas idiotas, como fazer banners seguirem o mouse, efeitos de estrelinhas, um ou outro utilitário, mas basicamente animar. Dos amigos que eu conhecia na época, todos usavam scripts prontos, geralmente difíceis de se entender.

Atualmente existe algo parecido com esse primeiro grupo, só que com uma roupagem nova:

Os programadores atuais soltam a imaginação, mas na customização de frameworks, para economizar tempo. Utilizam o FTP pra jogar os dados pra hospedagem. Utilizam fortemente o PHP e Wordpress para a confecção dos seus sites. Como há muita documentação, e, principalmente, Tutoriais, os mesmos conseguem “desenrolar”. Geralmente cobram preços bem abaixo da média praticada por desenvolvedores e estão aí pra poluir cada vez mais a WWW. O lema dessa classe é: “Funcionou? Gerou.

PHP

A linguagem é uma das mais famosas atualmente por sua facilidade de aprendizado. Evoluiu bastante ao longo dos anos e está em mais da metade dos servidores do mundo. Possui uma ótima documentação e emprega boa parte dos profissionais do setor.

Os Programadores geralmente costumam usar um kit para desenvolvimento padrão. Optam pelo WAMP (Windows Apache MySQL e PHP). Com ele criam os sites ou iniciam instâncias do Wordpress e customizam seus temas. No final, colocam o site no ar através do FTP, gerencia o Mysql através do PHPMyAdmin e pronto: site funcionando.

Wordpress

Uma das maiores plataformas de Blog do mundo, o Wordpress é intimamente conhecido pelos programadores. Ele possui um instalador, uma interface de configuração bastante interessante, integrável através de Plugins e é fácil encontrar profissionais que saibam configurá-lo.

Ah, com ele você não se preocupa com a migração de dados, uma vez que você não precisa tocar no BD.

Até aí tudo perfeito. Mas qual o problema disso tudo?

Entendendo as limitações

Saber desenvolver um Blog, um site ou um portal pode ser uma ótima idéia trabalhar com Wordpress. No mundo maravilhoso tudo tende a ser perfeito, mas nem sempre isso ocorre. Tentarei elencar alguns pontos que tornam a utilização dessas tecnologias um fiasco.

Sem padrão de projeto

O Wordpress foi desenvolvido sob demanda. A medida que surgiram novas necessidades, vieram as melhorias. Isso foi bom? Pelo ponto de vista de “resolver o problema”, sim, mas como foi resolvido?

A forma de desenvolvimento dos plugins e do próprio Wordpress em si gerou uma documentação bastante extensa, mas boa parte das postagens que eu vi foram apenas de como “resolver o problema”? Há uma infinidade de códigos que um desenvolvedor bata o olho e diga: “Gambiarra”.

A falta de projeto resulta em código amorfo, com uma dificuldade de manutenção alta. Com isso se sofre o risco bastante alto de existir falhas de segurança e afins.

Alguns exemplos de Falhas que eu pude observar:

  • Plugins mal projetados: Com uma base não documentada ou com aplicações que você percebe notadamente que é um “arranjo técnico” pra resolver um problema. Usar um tipo de dado para outro fim, sobrecarregar uma postagem com tipos de dados extras.
  • Vi uma vez um plugin para Wordpress que enviava os dados para o Amazon S3. O uploader do Wordpress dava um problema, pois na resposta do ajax vinha um codigo HTML de um Warning gerado pelo WP;
  • Se você habilitar ecoar os erros do PHP, Muitos erros do tipo Notice e Warning aparecem.
  • As rotinas de Update ficam gritando na cara do usuário. Quem quiser migrar, fica à vontade. Mas pera, e se quebrar minha leva de plugins? Como um usuário do blog vai proceder?

O servidor é uma incógnita

Geralmente quem trabalha com PHP/Wordpress sofre um sério risco de não saber como funciona seu servidor. Basicamente são usuários de CPanel e aquilo resolve por agora. Nesse sentido os programadores tem que trabalhar em cima das limitações impostas no servidor. (seja de versão do PHP, de alguma biblioteca específica ou da própria falta de acesso à máquina)

Com um servidor mal configurado, é de se esperar:

  • Erros Misteriosos;
  • Falta de suporte especializado;
  • Versões de pacotes obscuras: muitas vezes se quer desenvolver uma solução que faça X. O servidor não tem tal suporte, então você tem que fazer A, B, D, R, C pra conseguir X.
  • Limitações de hardware e otimizações deficientes.

Considero um “tiro no pé” usar uma instalação Wordpress em uma VPS (No digital Ocean, por exemplo).

Como resolver esse problema?

Eu comecei a ler sobre boas práticas. Uma delas consiste em saber como funciona suas ferramentas. Conhecer o PHP e o Wordpress é um ótimo começo. Também conhecer sobre o servidor e as boas práticas utilizadas neles. Não é por você saber que criar um link simbólico “resolve o problema” que você o fará. Estudar a melhor forma de realizar a tarefa garante que ela sempre será bem executada e que outras pessoas possam usá-la como referência. Saber entender que uma “string” ocupa mais memória que um “int” quando se tratando de números. Que um Banco de dados bem projetado suporta alta demanda de acessos, não quebra nem gera estresse. Aí onde entra a concepção de desenvolvedor.

O que é um desenvolvedor?

Basicamente o profissional que está acima do programador. Ele projeta as soluções. Ele julga o que é necessário para resolver um problema da melhor forma possível. Considera tempo, recursos e tecnologias disponíveis. Não é porquê ele acha linguagem X, Y, ou Z superiores que as escolherá sempre para todas as tarefas.

Uma ótima característica é que desenvolvedores trabalham em equipe. Possui liberdade pra julgar e estudam. Acredito que o estudo é o que os separam do núcleo dos programadores e os colocam em um outro patamar.

Identificando um desenvolvedor

Estes são fáceis de se identificar. São simpáticos em sua boa parte, gostam de estudar e estão envolvidos em algum projeto. Basicamente:

  • Estudam sobre tecnologia; Leem blogs e muita documentação;
  • Usam controladores de Versão;
  • Geralmente contribuem em projetos opensource, os acompanha e pode até ajudá-los.

Mas porquê o abismo todo?

Geralmente as tecnologias novas, assim como novas linguagens, possuem curva de aprendizados acentuadas. Além disso conhecer alguns padrões de projeto também ajudam bastante. Padrão de projeto é, em termos simples, uma estratégia pra resolver um problema comum. O padrão MVC (Model, View, Controller) é muito comum em projetos em Zend, Code Igniter(PHP), Django* (Python), Rails (Ruby), etc. (Todos implementam esse padrão na essência, apesar de cada um ter uma peculiaridade)

Hoje o mercado busca cada vez mais desenvolvedores. Por serem mais estudiosos, buscam melhores formas de se resolver um problema, se tornando ótimas ferramentas para garantir a produtividade e qualidade de seus sistemas. Também recebem os melhores salários e tendem a trabalhar menos. Geralmente são contratados em empresas sólidas com projetos desafiadores, o que, convenhamos, é estimulante demais!

Acabei tornando a postagem muito longa, mas tentei dar minha opinião à respeito. Por favor, comentem se eu exagerei demais. O feedback de vocês é demasiadamente importante para que eu possa melhorar nas próximas! Forte abraço à todos e até breve!