Por que desenvolver para a web é tão difícil?

Por que desenvolver para a web é tão difícil?

Quando você tem contato pela primeira vez com uma plataforma de desenvolvimento você é acometido por uma súbita sensação de que aquilo é a coisa mais difícil do mundo. Em Java, por exemplo, você tem que saber que tem que ter um método específico que tem que ser chamado em uma certa classe para seu programa rodar. E se você ainda não sabe o que é uma classe e nem que ela tem métodos você está em uma encrenca ainda maior.

Contudo, conforme você vai se adentrando nas ferramentas que as próprias linguagens costumam te entregar você descobre um fluxo e as coisas se encaixam. É como quando você aprende a andar em determinada cidade grande; você aprende uma ou duas vias de referência, ou alguns pontos famosos e passa a ficar funcional na vivência daquela cidade. Com a programação ocorre algo parecido. Você se torna funcional na linguagem e na ferramenta que está usando, e, dependendo do seu perfil, depois de um tempo pode se tornar um taxista daquela tecnologia, conhecendo atalhos e caminhos que poucos vêem.

Nossa estória começa a ficar mais interessante quando levamos o assunto para o PHP (♥). Quando você chega no PHP descobre que não há um modelo padrão de desenvolvimento mantido pelos mantenedores da linguagem (a Zend tem suas ferramentas, mas não são muito bem acolhidas pela comunidade, é bem complicado o assunto). No primeiro momento, isso é um pouco assustador e você se sente desamparado — Como assim não tem ferramenta para se usar? Que gente doida?! — É o primeiro pensamento que você tem. Em seguida você descobre que tem algumas ferramentas e metodologias muito diferentes entre si que são usadas por muitos desenvolvedores, na maioria das vezes, de forma diferente. Nesse instante você descobre que o PHP é uma linguagem um pouco disruptiva nesse aspecto; se você não ficar desconfortável com paradoxos pode até vê-lo como um framework de desenvolvimento ; )

Quando você programa em PHP você não apenas senta e escreve um programa em uma linguagem, na verdade, o que você faz é estender todo um ambiente de acesso a sua aplicação.

Ler esse último parágrafo será um pouco traumático para alguns. A leitura vai remeter ao que as pessoas que não leram os livros sentiram no final da primeira temporada de “Game of Thrones”. Uma aplicação feita em PHP pode ser acessada através de qualquer interface que se disponha a passar entradas para o interpretador e receber como retorno sua saída. Os principais exemplos que temos são os navegadores interagindo com Apache, Nginx e a nova geração de servidores HTTP(2), a programação Web; e as chamadas ao próprio interpretador enviando parâmetros para eles, a programação CLI.

Sendo assim quando você fala que é um programador PHP você precisa especificar um pouco (na verdade, muito) em que segmento você atua. Qual sua praça e até qual bairro você já domina são importantes para determinar até onde seus conhecimentos se estendem. Se você acabou de chegar na linguagem ou no desenvolvimento para Web, seja lá o que for que você tenha visto foi apenas a ponta de um enorme e poderoso iceberg que tem crescido e evoluído a passos largos. Se você sente que não sabe nada ainda, sinta-se feliz com isso; você está no caminho certo!

A maior dificuldade de ser um desenvolvedor web é… tudo; mas, brincadeiras a parte, como todo desenvolvedor deve saber, tudo tem a ver com escopos. Você vai ter que aprender passo-a-passo que cada coisa que você faz é uma peça de uma engrenagem maior; que sua página HTML (você irá aprender o que é isso) é o cume de uma longa jornada HTTP que vai entregar a você dados necessários para compor essa mesma página; que essa mesma página deveria poder ser gerada via ambiente CLI porque seu futuro é incerto. Também vai ser inevitável você compreender que sua página pode servir de entrada para operações realizadas apenas no navegador do cliente e que você pode precisar que o seu sistema PHP realize apenas rotinas e devolva mensagens compreensíveis a quem o estiver usando. Uma aplicação sem rosto, sem estado, mas com muita vida e com coisas ainda mais importantes a serem feitas.

Enquanto desenvolvedor web você terá o direito de estudar muito uma coisa e se dar o direito da dúvida. Vai poder olhar seu código do ano passado e contar piada sobre ele, porque você evoluiu. Lembra das suas fotos da escola? — é a mesma sensação. Você poderá e deverá escolher ferramentas que ajudem o seu dia-a-dia e se possível vai aprender a criar testes automatizados para garantir que o que você fez está “certo”. Se bobear você vai aprender a deixar suas coisas bonitas, usando CSS, e poderá também aprender que a exibição da sua aplicação será solicitada por telas de tamanhos variados e naturezas distintas; se pá você poderá até testar isso tudo também e ter controle total sobre seu sistema (mentira).

Para não assustar os futuros programadores não vou falar dos bancos de dados e estratégias de armazenamento; também não vou tocar no assunto sobre padrões a se seguir, arquiteturas de referência; menos ainda acho necessário falar sobre as abordagens dos frameworks e como você tem que mudar seu estilo de programação para se adequar a essa ou aquela ferramenta que vai gerenciar o fluxo do seu programa. Por garantia vamos não prolongar assuntos sobre versionamento e o quanto você sabe sobre Git (slides.com/wilcorrea/git)ou SVN (not). Sendo assim não convém falar sobre paradigmas de programação porque como desenvolvedor web você vai ter que aprender mesmo sobre eles, e, na verdade não importa o quanto eu fale, o quanto você leia, você terá que viver para saber sobre cada coisa. Vai ter que ir tão fundo em cada uma delas que poderá em um dado momento decidir com autoridade sobre o que deve ou não fazer parte de um projeto que esteja criando ou colaborando.

Se você começou agora e está achando fácil, saiba que será difícil em pouco tempo. Ser um desenvolvedor web será difícil até você perceber que era fácil, e quando você achar que está fácil vai perceber que o tempo todo era difícil, porque, mesmo que a tecnologia não seja mais um problema, para você fazer do seu trabalho o melhor possível será sempre difícil ; )

Chegado até aqui um aspirante a desenvolvedor web já pode pensar o que o espera. Os mais corajosos vão querer saber mais sobre o assunto, vão querer saber por onde começar.

Recomendo que comece do começo. Estude como a internet funciona, como páginas HTML são carregadas e nesse momento estude como dar comportamento a elas usando PHP (ou sua linguagem favorita, vá lá). Quando a parte dinâmica entrar na sua pauta comece a fazer coisas: calculadoras, blocos de notas, agendas de telefone, mesmo que já existam essas coisas por ai não são as suas, as suas são melhores.

Um programador é um cara que resolve problemas. Você constrói programas para fazer coisas que um humano faria manualmente, mas que poderia demorar milhares de anos para ser feito dessa forma.

Entre em uma comunidade e escreva coisas, participe e pergunte (pergunte direito), fale de programação. Reduza o tempo que gasta com jogos (muitas vezes é aplicável ao cadete de programação). Baixe a documentação do php.net (http://php.net/download-docs.php) e deixe ela no seu PC para você usar quando quiser. Crie arquivos e os interprete com o que for aprendendo no seu ambiente de teste. Use como base para uma boa orientação fontes como o http://br.phptherightway.com/ e não saia comprando qualquer curso, lendo qualquer artigo, ou assistindo qualquer vídeo que ver pela internet, mesmo que eu tenha recomendado: tenha senso crítico.

Leia códigos de coisas grandes, ferramentas de mercado que são usadas por milhares de desenvolvedores. Procure iniciativas de outros e interaja com eles, por exemplo, essa daqui https://github.com/elton182/php-fullstack-roadmap. Não se acanhe em perguntar o que não sabe, mas se for perguntar, pergunte direito (https://medium.com/by-vinicius-reis/vida-em-comunidades-aprenda-a-perguntar-b4ce7b0eed99#.gdumikwlb). Aprenda inglês técnico. Você vai saber mais inglês do que pensa depois de escrever alguns códigos das linguagens disponíveis para programação web.

Enfim, ser desenvolvedor web provavelmente vai estar na sua lista de coisas feitas mais difíceis, mas também vai estar na sua lista de coisas feitas mais legais.

Welcome to my World ; )