Como tornar-se um desenvolvedor sem saber nada

Este artigo não foi criado para você que já é desenvolvedor, todo o conteúdo abaixo foi escrito pensando em profissionais de outras áreas que estejam pivotando suas carreiras e olham com bons olhos a área de T.I. Espero conseguir ajuda-lo e facilitar a sua transição para essa ou outra carreira.


Durante o período de quarentena por conta do coronavirus, fomos pegos de surpresa e vimos a nossa rotina mudar da noite para o dia em diversos aspectos, um deles foi sobre a maneira como trabalhamos. Havíamos deixado de acordar e pegar um ônibus, metrô ou dirigir até o nosso trabalho, não mais compartilhávamos nossas manhãs e tardes com nossos colegas de trabalho em baias, mesas, salas de reuniões e almoçando em restaurantes.

Essa mudança que levou os trabalhadores a ficarem em casa e fazerem o uso do home office foi um divisor de águas e fez muita gente refletir sobre a segurança da sua profissão e o quanto nossos planos podem ser frágeis.

O nosso mundo pode desmoronar da noite pro dia, afinal de contas não são todas as profissões que podem trabalhar em casa e ainda assim temos que lidar com uma questão cultural, pois muitos dos profissionais que conduzem e gerenciam uma empresa não enxergam o home office com bons olhos, pois para eles um funcionário em casa não pode ser produtivo, ledo engano, para não dizer um pensamento um tanto quanto ultrapassado.

Lembro bem quando isso começou, eu estava bastante preocupado com a questão do vírus e assim que surgiram as primeiras notícias no Brasil já cobrava uma posição da empresa, que logo liberou os profissionais para trabalharem de casa, o que foi um caminho bastante natural, pois por ser de T.I já estávamos acostumados com esse modelo de trabalho. Por um outro lado minha esposa que é advogada, trilhou o mesmo caminho em sua empresa, porem no caso dela, a sua equipe e a sua empresa não tinham essa cultura do home office, ou como alguns advogados ainda falam hoje, tele-trabalho!

Do meu lado a rotina seguia normalmente, iniciávamos o trabalho entre 09:00 e 10:00, as 10:00 tínhamos nossa reunião diária de acompanhamento do projeto onde todos se conectavam no teams da Microsoft e alinhávamos as atividades do dia. Por volta de 12:00 parávamos para almoçar, mas ao invés de sair em grupo para um restaurante, comíamos uma comida caseira ou pedíamos através de aplicativo. Todo o dia se passava como se estivéssemos presentes fisicamente, reuniões aconteciam, dúvidas eram esclarecidas em conferência e o projeto seguia como se não existisse pandemia.

Do lado da minha esposa, o caminho era mais árduo, por não ter uma cultura de home office, gerentes e diretores estavam preocupados se as pessoas ficariam em casa assistindo filmes ou curtindo um sol na piscina e demandavam um volume de trabalho insano com prazos apertados para que ninguém conseguisse assistir sua série preferida durante o expediente.

Os funcionários por outro lado, também estavam com medo de que os diretores e gerentes pensassem que eles não estavam fazendo nada por estar em casa, e trabalhavam o dobro, pressionando a si mesmos cada vez mais. O resultado foram reuniões intermináveis, almoços mal digeridos e noites sem dormir, o problema era cultural.

Conforme a pandemia resistia e se negava a dar uma trégua, empresas foram quebrando, pessoas foram surtando e funcionários foram sendo demitidos, mas um seleto grupo passava quase que inatingível durante esse período e as vezes até mais seguro do que antes da pandemia, eram os profissionais de TI.

Por que os profissionais de T.I em sua grande maioria, passaram ilesos pela pandemia ou tiveram ainda mais lucro e propostas durante esse período turbulento?

O primeiro ponto é porque 100% do processo de construção de software pode ser feito online, muitos desenvolvedores inclusive já trabalhavam para empresas fora do seu país em suas casas. O fato da pandemia obrigar todos a ficarem em casa não afetou as equipes e squads de desenvolvimento. A questão aqui ia muito além do “é possível”, já era uma realidade muito antes do vírus chegar ao Brasil.

O segundo ponto é que as empresas que contratavam produtos e serviços de T.I se viram diante de um cenário onde o meio físico estava comprometido e se ainda não haviam feito, precisavam fazer mudanças em seu negócio, pivotar, ou migra-lo para o meio online.

Diante desse cenário começaram a surgir cada vez mais pessoas interessadas em ingressar nesse mercado, por ser uma profissão mais segura onde você pode trabalhar em qualquer lugar do mundo e por ter uma quantidade cada vez maior de oportunidades. O grande problema no entanto é por onde essas pessoas começam? como alguém que não possui nenhum conhecimento sobre a área consegue entrar nesse mercado ?

Por esse motivo comecei a escrever este artigo, por ver alguns amigos e profissionais de outras áreas tentando ingressar na carreira e perdidos sobre diversos conceitos e o que precisavam aprender para ser um bom desenvolvedor.

O QUE FAZ UM DESENVOLVEDOR

Embora pareça obvio, muitos chegam aqui e não sabem responder essa pergunta. Um desenvolvedor é um profissional especializado em construir soluções com base tecnológica como por exemplo: o aplicativo do internet banking que você acessa pelo seu celular e plataformas web como o facebook por exemplo.

Para construir essas soluções o desenvolvedor precisa aprender uma linguagem de programação para que possa criar um conjunto de instruções que serão interpretadas por um hardware (celular ou computador por exemplo), para isso ele precisa ter o domínio de lógica de programação que é o alicerce da sua profissão. E a partir desse ponto surgem as primeiras dúvidas.

Quantas linguagens de programação preciso aprender ?

Um desenvolvedor talentoso não precisa saber programar em diversas linguagens para ser um bom profissional, afinal de contas constantemente somos brindados com uma nova linguagem e se fosse necessário aprender todas elas estávamos perdidos

Todas as linguagens seguem as mesmas estruturas de condição para gerar instruções a um computador e todas atingem o mesmo objetivo final. Para ficar claro, podemos comparar com a linguagem natural que é a utilizada pelos humanos, um “bom dia” em alemão tem o mesmo significado que um “bom dia” em inglês e italiano, da mesma forma funciona com a linguagem de programação. Sabendo o que é um “bom dia”, você apenas precisa saber como dizê-lo em diferentes línguas.

O bom desenvolvedor é aquele que é capaz de aprender uma nova linguagem ou tecnologia em um curto espaço de tempo.

A frase acima é como um mantra que você deve ter em sua carreira de desenvolvedor. Oportunidades surgem diariamente pedindo que você tenha conhecimento em tecnologias que você talvez nem tenha ouvido falar ainda e isso não pode ser uma pedra no seu caminho. Com uma boa base, você sabe que em pouco tempo vai aprender a tecnologia e não terá medo de se aventurar em novas oportunidades.

Eu vou preciso estudar sempre para me atualizar ?

Para que você tenha melhores oportunidades sim. Um profissional atualizado terá sempre mais chances que um profissional parado no tempo, embora isso não seja uma regra, pois é perfeitamente possível que um profissional de T.I tenha encontrado um nicho de mercado e possa tirar proveito dele por anos e décadas, um bom exemplo são os profissionais de cobol.

Cobol era uma linguagem de programação criada no final da década de 50 e muitas soluções gigantescas foram criadas em empresas de grande porte, como os bancos por exemplo. Até hoje existem milhares de linhas de código em cobol nessas empresas e é difícil encontrar um profissional, pois boa parte já faleceu ou se aposentou e os que permanecem conseguem monetizar um bom salário fazendo valer a lei da oferta e procura. Esses profissionais conseguiram se manter na profissão durante décadas e não precisaram estudar muito para aprimorar o que já haviam aprendido.

Salvo alguma exceções, estudar e se manter atualizado será sempre o melhor caminho. Empresas inovadoras e líderes de segmento estão constantemente melhorando suas soluções com o que tem de melhor no mercado e se você pretende entrar nesse bonde, é importante que você acompanhe as tendências.

SITES COM NOVIDADES SOBRE TECNOLOGIA

PODCAST IMPORTANTES

O que eu devo estudar?

Um antigo professor meu da época do colégio disse uma frase que sempre ficou na minha cabeça, ele disse:

O Especialista é aquele cara que sabe quase tudo de quase nada e o generalista é o cara que sabe quase nada de quase tudo

O que você precisa buscar na sua carreira é um equilíbrio entre os dois extremos dessa frase. Não é interessante para sua carreira tornar-se um fanboy, aquele profissional que defende com unhas e dentes uma linguagem e faz cara feia para as outras. Um fanboy se coloca no mercado como DESENVOLVEDOR DA TECNOLOGIA X e busca aprimorar seu conhecimento somente naquela tecnologia X, o grande problema disso é que a carreira de desenvolvedor envolve dezenas de outras habilidades e seu único objetivo não pode ser se tornar um mestre em uma única linguagem que vive em constante mudança. O seu tempo de estudo precisa ser muito bem planejado para que você não caia no “Fifismo”.

Para quem curte um PS4 / XBOX já deve ter visto o jogo FIFA de futebol certo ? é bastante conhecido e todo ano sai um jogo novo do FIFA, FIFA 2018, FIFA 2019, FIFA 2020 e por ai vai. O que acontece é que todo ano eles lançam o mesmo jogo melhorando uma coisa aqui e outra ali e todo ano os fãs do jogo vão lá e compram o fifa novo, ou seja, todo o ano compram o mesmo jogo que já possuem.

Esse é o mesmo caso do profissional que caiu no Fifismo, todo ano ele gasta seu precioso tempo estudando os novos recursos daquela linguagem que ele já domina a anos. Não valeria mais a pena direcionar esse tempo de estudo para aprender uma nova habilidade ? como aprender a trabalhar com IOT (internet das coisas) ou blockchain.

O código que um desenvolvedor escreve nada mais é do que uma instrução para executar algo, a grande diferença no sucesso de um produto está em saber qual a melhor instrução que você pode executar para resolver um determinado problema e você só vai aprender isso se estiver ávido por conhecimento e interessado em conhecer os mais diferentes tipos de solução.  

Preciso saber inglês para ser um desenvolvedor ?

Essa pergunta é bem complicada, podemos dizer que não precisa, porém o idioma será uma barreira para você diariamente por N motivos:

  • As linguagens de programação são todas em inglês e o conhecimento da língua vai te ajudar bastante
  • Com algumas exceções, toda a documentação que você encontrar na internet será em ingles.
  • Quando precisar tirar dúvidas e buscar na internet alguma solução, as chances de encontrar a sua resposta em inglês é infinitamente maior.
  • Existem muitas oportunidades de trabalho no exterior trabalhando de home office e pagando em dólar ou euro, seria muito interessante deixar essa porta aberta.

No mínimo eu aconselho que você tenha um inglês intermediário, mesmo que não tenha fluência ou um inglês avançado, será o suficiente para conseguir estudar e conseguir as respostas que precisa.

Se você não possui nem o inglês intermediário, corra atrás disso o quanto antes, não só para te abrir portas profissionais, como para sua qualidade de vida ao aproveitar conteúdos em inglês e se comunicar com clareza em viagens pro exterior, assistir filmes e tudo mais.

Eu senti isso na pele no ínicio da minha carreira, pois deixei de conseguir uma vaga por conta do inglês para um trabalho de um ano na Arábia Saudita com um salário escandaloso. Desde então me dediquei a aprimorar meu inglês para que isso não acontecesse novamente.

CONSTRUINDO A BASE DA PIRAMIDE

Antes de pensar em programar é preciso saber onde estamos pisando e ter uma breve noção de como funciona um software, aplicativo ou plataforma.

BACKEND X FRONTEND

Praticamente todas as soluções criadas hoje possuem essa estrutura macro como base.

FRONTEND é aquilo que você vê e é processado do seu lado e BACKEND é todo o processamento feito por trás. Para explicar melhor esse conceito vamos pegar como exemplo o que acontece quando você faz um POST no instagram.

  1. FRONTEND – No seu celular, você clica no botão para selecionar a foto que está armazenada no seu próprio aparelho.
  2. FRONTEND – Você seleciona a foto, inclui um comentário e clica no botão PUBLICAR

Até esse momento o processo de clicar em botão e selecionar a foto está sendo feito no seu celular, quem faz isso é o código do aplicativo instalado no seu smartphone. A partir do momento que você clica em PUBLICAR, o comentário e a foto precisam ser enviados para um local para gravar essa informação e disponibilizar para os outros usuários vejam sua foto.

  • BACKEND – Recebe uma requisição vindo do frontend contendo a foto e o comentário do usuário, grava as informações em um banco de dados e retorna ao frontend dizendo OK.

No exemplo acima então nós temos duas aplicações:

  • Uma aplicação mobile instalada no celular do usuário que envia um POST do usuário contendo uma foto e uma comentário para o BACKEND.
  • Uma aplicação em um servidor que fica aguardando uma chamada contendo um comentário e uma foto de um usuário para gravá-lo numa base de dados.

Seguindo em frente com o nosso exemplo, o instagram construiu uma versão na web que pode ser acessada pelo seu computador utilizando qualquer navegador como chrome ou Firefox. Esta versão web também deve permite que o usuário envie uma foto e um comentário para a plataforma e você como desenvolvedor responsável por construir essa solução, deve construir um código que envie a foto e o comentário a partir do navegador para o mesmo lugar que a aplicação mobile envia atualmente.

Como você percebeu, o backend continua sendo o mesmo sendo utilizado tanto pelo mobile, quanto pela web. Essa arquitetura backend x frontend possui essa característica pensando em reaproveitamento. Sempre que alguém quiser enviar uma foto e um comentário para o instagram, vai se comunicar com o mesmo local que já existe atualmente, o que faz todo sentido hoje pensando em todas as possibilidades que você possui na camada de frontend.

Outro exemplo é o NETFLIX. Ele possui em seu backend uma entrada que quando chamado retorna uma lista de filmes que você pode assistir. Quem chama esse ponto para retornar a lista de filmes ? no caso do netflix temos uma quantidade bem grande de interfaces (frontend) como aplicativos de tv (Samsung, lg, Philips …), aplicativos de videogame (Xbox e Playstation), IPAD, android, IOS, web.

Para descrever melhor o cenário acima imagine a seguinte conversa entre usuario, frontend e backend

  • FRONTEND: Bom dia usuario, eu sou o aplicativo do netflix da sua tv o que você deseja ?
  • USUARIO: Eu quero ver a lista de filmes que estão como lançamento (usuario clica em lancamentos)
  • FRONTEND: pois não, backend ?
  • BACKEND: Tudo bem ? estou estou aqui ouvindo.
  • FRONTEND: me passa a lista de filmes que são lançamentos para exibir pro meu usuário.
  • BACKEND: claro, calma ai (busca na base de dados)
  • BACKEND: toma a lista ai
  • FRONTEND: recebi a lista aqui, vou passar pro meu usuario
  • USUARIO: estou vendo a lista!, muito obrigado a todos.

esse bate papo que fica somente na nossa imaginação, ocorre na verdade em linhas de código, o importante aqui é que esse conceito de backend e frontend fique claro para todos.

CONSTRUÇÃO DE SOFTWARE AO LONGO DOS ANOS

Até chegar ao que temos hoje com essa divisião entre backend e frontend, houveram algumas mudanças em como um software é construído. Essas mudanças não aconteceram da noite pro dia porque alguém simplesmente inventou, elas foram necessárias para acompanhar as mudanças de comportamento ao longo dos anos.

Antes da chegada da internet e popularização dos navegadores, os softwares eram construídos pensando somente na máquina do cliente, no Windows, eram aplicações .EXE criadas por linguagens como visual basic. Para uma empresa com 100 funcionários que adquirisse um software, era necessário instalá-lo fisicamente no computador de cada funcionário. Eu peguei o final dessa era e cheguei a construir soluções em visual basic para instalar em maquinas de um banco, não era muito prático. Hoje é pouco provável que alguém crie uma solução do tipo.

O passo seguinte com a chegada da web e dos navegadores foi começar a criar aplicações únicas instaladas em um servidor e acessadas pelo navegador. Este cenário era muito mais amigável, pois todos os computadores já vinham com navegador de internet e bastava digitar o endereço da aplicação no navegador para acessá-la sem necessidade de instalar nada na maquina do cliente.

Essas primeiras aplicações web, continham o código tanto da interface de visualização, acessada pelo navegador, quanto o código com implementação das regras de negócio. Nesta época ainda não existia o conceito de backend e frontend, hoje essas aplicações são chamadas de monólitos, que são aplicações únicas que executam todas as tarefas de uma determinada plataforma.

O ultimo passo, que é o passo que nós estamos, existe devido a expansão dos smartphones e gadgets com internet, televisões ganharam acesso a internet e não tinha como pensar mais numa interface única para todo mundo, era necessário separar a camada de negocio (backend) da camada de interface (frontend).

Outro motivo é o que chamamos de escalabilidade, o volume de acesso passou a ser uma preocupação ainda maior e o backend deve estar preparado para suportar um grande volume de acesso e isso hoje é feito disponibilizando cada vez mais máquinas (hardware) de forma automatizada de acordo com a necessidade da aplicação.

DESENVOLVEDOR FRONTEND / BACKEND NA ORGANIZAÇÃO

A construção de uma aplicação necessita de um numero X de pessoas organizadas em uma equipe ou squad de desenvolvimento. Dentro dessa equipe teremos os desenvolvedores de frontend que serão responsáveis por codificar e criar a parte visual da aplicação e desenvolvedores backend que vão criar a aplicação que implementa as regras de negócio e processa as informações enviadas pelo frontend.

Você que deseja tornar-se desenvolvedor, em algum momento do seu aprendizado vai decidir para qual caminho deseja seguir, embora basicamente você programe código em ambos, costumam ser linguagens distintas e o que será codificado é bastante peculiar para cada um.

Vamos analisar a imagem abaixo que representa uma tela padrão de autenticação de usuário em alguma platadorma na web.

Vamos ver abaixo o que será de responsabilidade de cada equipe:

FRONTEND

  • Construir o código que vai apresentar a tela de autenticação no navegador do usuário.
  • Criar no código a validação se o nome do usuário e a senha foram preenchidos para habilitar ou desabilitar o botão “Acessar”
  • Criar no código a chamada ao backend quando o usuário clicar em “Acessar” enviando para o backend o nome do usuário e a senha.
  • Exibir uma mensagem de erro de autenticação caso o backend retorne informando que a autenticação não foi realizada com sucesso
  • Direcionar o usuário para a pagina inicial da plataforma caso a autenticação seja realizada com sucesso

BACKEND

  • Construir o que chamamos de webservice para realizar a autenticacao de um usuário na plataforma.
  • O webservice deve fazer um acesso ao banco de dados para pesquisar se existe um usuário com o nome e senha recebido.
  • O webservice deve responder para quem chamou ele, um resultado de sucesso ou falha.

dependendo do cliente/empresa uma agência ou um profissional de designer pode criar o layout do site e disponibilizar o layout já pronto em código HTML para que a equipe de frontend apenas codifique. Esse é inclusive um fluxo bem comum quando o seu cliente possui uma preocupação com o design da plataforma.

Não é uma regra, mas normalmente projetos abertos para o público costumam ter uma agência ou designer participando do projeto, o que nem sempre ocorre quando o projeto é interno, onde costumam solicitar aos desenvolvedores frontend apenas que sigam uma cartilha de recomendação do uso de cores e logo da empresa.

DESENVOLVEDOR FULL STACK

Além do desenvolvedor frontend e backend, existe uma terceira terminologia para fazer referencia a desenvolvedores que trabalhar tanto com frontend, quanto com backend.

O profissional full stack hoje é um dos profissionais mais requisitados do mercado, pois um único profissional tem flexibilidade para trabalhar em ambas as equipes, o que é ótimo, mas a realidade é um pouco mais complexa

O mercado tende a encontrar soluções que otimizem os custos na construção de um projeto, logico que a empresa está preocupada com seus lucros e se ela encontrar uma maneira de pagar 1 full stack ao invés de um dev frontend e outro backend ela vai fazer.

Esse comportamento do mercado nós vimos surgir no final dos anos 90 também quando você tinha uma presença muito forte nas equipes do analista de sistema e o desenvolvedor. O analista projetava o sistema, modelava o banco de dados e passava os requisitos pro desenvolvedor codificar. Em um determinado momento surgiu a figura do analista desenvolvedor, e ninguém mais queria um desenvolvedor que não fosse analista e um analista que não codificasse.

O full stack do meu ponto de vista, é o analista desenvolvedor dos nossos tempos. Existe um universo muito extenso de informação tanto do lado do backend quanto do frontend, é bastante complicado imaginar que um profissional seja tão bem qualificado em um quanto em outro.

Eu por exemplo codifico frontend e backend, até porque se você pretende criar projetos pessoais é interessante que você saiba os dois, mas tenho uma preferência declarada por backend e dedico muito mais do meu tempo para aprimorar essa minha linha de conhecimento. Um profissional de frontend 100% dedicado nessa linha de desenvolvimento com certeza terá um rendimento melhor que o meu no desenvolvimento desse tipo de solução.

HTML

HTML é uma linguagem de marcação, não é uma linguagem de programação tradicional, ela é utilizada para organizar como os dados serão visualizados em navegador web.

Este artigo que você está lendo agora é um código HTML, você pode visualizá-lo clicando com o botão direito na página e escolhendo a opção “visualizar código fonte”. De início pode parecer um tanto quanto complexo, mas garanto que é tão simples quando aprender a tabuada.

HTML está tão enraizado em programação web hoje em dia que ninguém colocava no curriculo que sabe HTML, não é mérito algum, é o básico do básico da profissão e você precisa aprender antes de tudo. É como falar português, é sua lingua nativa, você deve saber usa-la e pronto.

A boa notícia é que este deve ser o seu ponto de partida e será o seu primeiro contato com desenvolvimento, mesmo não sendo uma linguagem de programação, será satisfatório para você começar a ver como funciona um site na internet e dar instruções ao navegador de como organizar os dados.

Lógico que o artigo não vai te ensinar HTML, já existem centenas de cursos gratuitos ou quase de graça sobre isso na internet e não pretendo reescrever a roda, e sim conduzi-lo na estrada. Segue abaixo uma lista com algumas dicas, mas qualquer busca sobre CURSO HTML na internet vai te retornar uma grande quantidade de opcões:

Nos próximos passos vamos falar sobre linguagem de programação, mercado, linkedIN, banco de dados e diversos outros assuntos para que você tenha toda orientação necessária para se tornar um desenvolvedor.

Aqui no codechain nós temos um programa também de mentoria profissional e caso queira acelerar a sua jornada, não deixe de conferir o Projeto S.W.A.T

Sobre Cateno Viglio Junior 19 Artigos
Carioca, arquiteto de software e entusiasta de tecnologia. Trabalho com java a 15 anos e atualmente coordeno uma área de inovação numa empresa do Rio de Janeiro. Sou fundador do codechain e participo de outras iniciativas por ai :).

Seja o primeiro a comentar

Faça um comentário

Seu e-mail não será divulgado.


*