Como é trabalhar como FullStack Developer, por Lucas Santos

Esse post é parte de uma série de entrevistas para o Training Center sobre o que um profissional pode dizer sobre sua área de atuação visando mostrar para outras pessoas como é trabalhar no que fazem, esclarecendo para algumas pessoas se elas se dariam bem trabalhando na área ou mesmo só para mostrar para outras pessoas como é trabalhar com isso.

O Lucas é bem social na internet, segue ele! ;D

Instagram: @_staticvoid
LinkedIn: lhs-santos
Twitter: @_staticvoid
Github: /khaosdoctor
StackOverflow: khaosdoctor
iMasters: khaosdoctor
Medium: Lucas Santos

Introdução

Meu nome é Lucas Santos, tenho 22 anos. Trabalho como desenvolvedor desde 2012, quando a profissão de Full-Stack ainda nem existia oficialmente, eu sempre dizia que era o auxiliar de serviços tecnológicos gerais.

Eu sempre fui muito ligado a tecnologia em si, desde pequeno (com uns 4 anos de idade) eu lembro de ficar do lado do meu pai enquanto ele mexia com aquele sensacional Windows 95 e eu pedindo para ele instalar joguinhos na máquina. Depois de um tempo eu comecei a pegar o gosto por desmontar e montar as coisas, tanto é que com 9 ou 10 anos eu pegava o computador dos meus amigos e familiares para montar, trocar alguma peça ou algo do tipo (o que 50% das vezes acabava dando errado, mas era um aprendizado) e por fim eu usava o FrontPage 97 para criar sites toscos usando HTML com vários temas, mas, como não tinha nenhum dinheiro para hospedar esses sites, eu geralmente os jogava fora depois. Já deu pra perceber que eu era muito curioso e gostava de estudar, ainda gosto, na verdade uma das minhas séries favoritas é Cosmos (a antiga e a nova) e ficava a manhã toda assistindo Discovery na escola por volta dos 7 a 10 anos (com direito a baixar toda a programação e gravar em VHS).

Em 2010 eu já era bastante ativo em comunidades e fóruns, cheguei a ser administrador de um fórum de jogos, que foi onde eu descobri meu interesse por programar, criando scripts para bots de Ragnarok Online (sempre tem um jogo envolvido). Sempre gostei de ajudar outras pessoas e ensinar o máximo que eu sabia. Então resolvi fazer um técnico na ETEC de São Caetano em informática, que foi onde eu também descobri que não era tão fácil assim programar, mas foi uma das escolas que eu mais aprendi.

De lá pra cá eu não me envolvi muito em projetos pessoais e nada que ficasse muito famoso na comunidade, eu sempre gostei de pegar soluções existentes e contribuir para elas da melhor maneira possível. Um grande marco na minha carreira, pelo menos ao meu ver, foi o pedido de moderação no fórum do iMasters de tecnologia (aonde vocês podem me encontrar como KhaosDoctor), que foi a porta de entrada para que eu conhecesse de fato o mundo corporativo e como “programadores de verdade” trabalhavam, aquilo era e ainda é um paraíso para quando eu estou procurando ajudar alguém e me inspirar um pouco.

Atualmente trabalho com várias linguagens, front e back-end (também infraestrutura e banco de dados), mas principalmente PHP e Node.js. Também faço parte da organização do ABC Developers e do CRUD ABC, pequenos grupos (que eu espero que fiquem gigantes!) aqui da região onde moro.

Como você conheceu a área de Full-Stack Development?

Eu gosto de brincar que ninguém conhece a área de Full-Stack, nem ele próprio, porque você tem que mexer com tantas coisas que, quando você se dá conta, já está criando débito técnico em todas as partes do projeto (brincadeiras a parte), mas acredito que o momento que eu parei e disse para mim mesmo que estava trabalhando com isso foi quando eu estava cabeando todos os computadores do escritório, literalmente, crimpando cabos de rede e passando fios pelos conduítes do prédio, instalando hubs e switches em racks e tudo mais.

Neste dia eu me dei conta de que, além de programar o back-end e, como disse na primeira pergunta, desenvolver sites (agora já com CSS e JS) aqui e ali como freelancer (chegando até a reformular o antigo site da empresa) eu também fazia a infraestrutura funcionar, ou seja, estava cobrindo todas as áreas de tecnologia que estavam disponíveis. Na época (isso foi lá para 2013 ou 2014) não existia um termo específico para isto que fosse muito divulgado, então a gente simplesmente se chamava de generalista.

Como eu sempre gostei dos três grandes pilares do desenvolvimento (infra, front e back-end) igualmente, eu nunca tive uma preferência maior por um deles em específico, mas eu sempre quis aprender tudo sobre todos eles. E é isso, na minha opinião que é o maior desafio para a nossa área, porque você não pode apenas saber como programar uma API usando Express, você também tem de saber qual é a melhor máquina e arquitetura para hospedá-la e, às vezes, tem até de fazer o front-end que vai consumi-la.

Um desenvolvedor não escolhe ser full-stack, isso simplesmente vai acontecer se o seu perfil for de um cara que gosta de arquitetar e saber como as coisas funcionam, como todas as coisas funcionam, até porque a internet e a tecnologia são vastos domínios de aprendizado. Acreditem, existem livros e livros apenas sobre como um browser chega até um IP.

Uma coisa que eu sempre digo para quem está aprendendo, seja comigo ou com qualquer outra pessoa, é que na hora que o grande problema aparecer você não vai poder simplesmente confiar que a caixa preta do framework resolva-o pra você. Então eu sempre parto do princípio de que um desenvolvedor deve saber, pelo menos, o que se passa embaixo do capô daquilo que ele constrói.

Por que você escolheu ser Full-Stack Developer?

Então, como eu disse anteriormente, isso não foi muito uma escolha — rs. Isso simplesmente se mostrou para mim durante um tempo na empresa onde eu trabalhava, basicamente porque eu sempre trabalhei em locais com um efetivo muito pequeno, no máximo 10 funcionários, então geralmente a gente não tinha braços suficiente para que houvesse uma divisão exata de tarefas, e o time de desenvolvimento era sempre o menor, muitas vezes o time era eu e mais alguém. Nestas situações você precisa se virar, o produto tem de sair de alguma forma, então você meio que aprende de tudo um pouco para poder configurar o sistema de cabo a rabo sem precisar pedir ajuda ou permissão para alguém.

Já me perguntaram porque eu nunca me aprofundei em nenhuma linguagem, ou em uma tecnologia específica. A minha resposta é sempre a mesma: Eu nunca quis ser um especialista em uma tecnologia. Eu sempre gostei de saber um pouco de tudo porque a minha diversão é realmente arquitetar sistemas complexos. Uns gostam de montar legos, outros gostam de pintar, eu gosto de desenhar diagramas e criar repositórios vazios no GitHub para não esquecer das ideias. Acho que essa sede de conhecimento e vontade de construir algo do zero absoluto é o que me fez escolher esse ramo da profissão.

Como foi o seu primeiro trampo?

Meu primeiro trabalho real (com carteira assinada e tudo mais) foi onde eu estou agora (2017), irônico não? Antes disso eu trabalhei em diversos locais, sempre pulando de um lugar para o outro até que me estabeleci por 2 meses como monitor e professor na EasyComp (isso em 2011 ou 2012), mas logo em seguida recebi uma indicação de um professor da ETEC para um outro amigo professor dele, que estava no meio de um projeto científico e estava precisando de uma ajuda, foi aí que minha vida de desenvolvedor começou de fato.

Quando consegui o emprego inicialmente fiquei apavorado, porque eu era recém saído da escola, não sabia profundamente absolutamente nada, pelo menos na minha cabeça era assim, e já fui direto trabalhando com Visual Basic 2010 e ASP.NET. Isso em parte moldou muito do meu pensamento porque eram eu e mais dois programadores na empresa, todos muito crus e recém formados, então todos se ajudavam e tínhamos que fazer um pouco de tudo. Lembro até hoje que o teste para entrar lá era fazer uma landing page usando ASP, corri atrás de todos os meus amigos moderadores de .NET no iMasters para me mandarem conteúdo para estudar nesses 7 dias que eu fiz um estudo flash sobre a linguagem e criei a landing page para entregar, acho que foi o momento mais estressante da minha vida, mas rendeu bons frutos.

Um dos maiores desafios que eu tinha era criar um sistema de armazenagem e gerenciamento de notas fiscais que o usuário poderia mandar por email ou no sistema. A equipe de projeto continha as seguintes pessoas:

  1. Eu

Então eu era o arquiteto, era o DBA, era o front, o back e a infra. No final eu escrevi um servidor de email com suporte a comandos remotos (que até hoje é uma coisa que eu realmente me surpreendo) para controle total do mesmo apenas por mensagens, ele até tinha uma interface, eu fiquei realmente muito animado com esse projeto, tanto é que pesquisei sobre criptografia a fim de criar a minha própria chave (AES para que né).

Quais são as skills de quem trabalha nesta área?

o skillset de um desenvolvedor FullStack é literalmente tudo

Um “bom” fullstack é aquele que conhece bastante sobre arquitetura de sistemas e como as coisas se comunicam na web, isso inclui HTML, CSS, JS e seus derivados para o front end (Angular, Sass, Less, React, Vue e etc). Algumas muitas linguagens para back end como Python, PHP, Ruby, Node, Java (infelizmente) e também os frameworks derivados delas (Rails, Laravel e etc). E algumas coisas de infra e redes, como por exemplo, saber criar uma iptable, agendar um cron, configurar file systems com o fstab, saber programar um servidor rodando CentOS e estar totalmente confortável a trabalhar com ferramentas super modernas tipo o Vim e o Emacs e o mais importante, se abster totalmente das interfaces visuais, porque isso é coisa do passado, a moda agora é trabalhar com a tela preta. E não vamos esquecer dos bancos de dados!

Brincadeiras a parte, o skillset de um desenvolvedor FullStack é literalmente tudo, mas ninguém é um robô, então eu aconselho pegar algumas linguagens e tecnologias “do coração” para dar mais foco, no meu caso eu escolhi o MEAN stack porque me sinto mais confortável, embora minha linguagem fluente seja PHP. Também é importante a lógica de programação, mas acho que isso vale para qualquer programador. Fazer testes usando o HackerRank apenas para diversão e para aprendizado estão nas minhas listas de hobbies de sexta feira.

Os soft skills mais importantes são: Organização, sede eterna por aprender, foco e ponderação. Um bom profissional da área não pode ser desorganizado por que senão ele mesmo vai se perder nas próprias stacks que ele administra, isso também exige muito foco. Ser um eterno aprendiz por que, com certeza, Node não vai ser a última tecnologia a surgir. A ponderação é importante porque o número e o volume de informação que você precisa absorver é imenso, então é legal saber dosar um pouco e não ficar apenas bitolado nisso para que você mesmo não crie problemas psicológicos e acaba complicando sua saúde, afinal você precisa dela para desenvolver :D.

Quais são os principais desafios da área?

Eu acho que o maior desafio de todos é achar o equilíbrio entre uma vida saudável e balanceada e o seu trabalho, algo que até hoje eu não encontrei. Esse trabalho é muito gratificante, extremamente estimulante e muito divertido, mas, às vezes, como qualquer coisa da vida, ele pode ser um pouco exigente demais.

Tudo sempre começa na parte de que você precisa estudar muita coisa em pouco tempo, por exemplo, eu parti de um projeto de API’s RESTful para arquitetar infraestrutura na AWS em menos de dois dias, então a sua capacidade de chavear os contextos e abstrair o trabalho e as tarefas deve ser grande, não adianta você tentar focar em algo por que de 5 em 5 minutos alguém vai aparecer do seu lado com algum problema muito doido que ninguém ouviu falar.

Um outro ponto bastante crítico da área é justamente o fato de que você está presente em todas as partes, eu chamo isso de dádiva bilateral, porque ela é ao mesmo tempo ruim e boa. Ela é boa por que você aprende tudo sobre a arquitetura e tudo o que você está construindo em todas as etapas do projeto, o que torna ela uma das mais trabalhosas, mas ao mesmo tempo é ruim pelo mesmo motivo, ou seja, no final das contas você é o cara que vai ter o poder total, como já dizia a frase: “Com grandes poderes vêm grandes responsabilidades”, é justamente assim que você se sente, porque a sua empresa toda, ou até mesmo todo o produto, está nas suas mãos. Uma vacilada pode ser fatal. Não só para você, mas para a empresa também.

Quais são as principais recompensas da área?

Acho que a maior recompensa (além daquela sensação de ver sua criação funcionando) é o conhecimento. Nesta área, é imprescindível e até improvável que um profissional se de bem se não for flexível e consiga estudar muito. E de quebra você ganha esse conhecimento todo e toda essa experiência, conheço alguns profissionais que demoraram mais tempo para chegar ao mesmo nível de conhecimento de um profissional generalista justamente pelo fato de que a área específica (até escrevi um artigo sobre isso https://goo.gl/Fcfh4s) é muito menos mutável do que uma área mais geral.

Acho que uma das grandes vantagens desta parte do mundo escuro da programação é que você tem todas as vantagens de um programador especialista, ou seja, home office é perfeitamente possível (\o/) desde que você tenha meios de interagir com sua infra e todos os seus stacks de longe. Se você for um pouco mais hardcore talvez tenha que passar no escritório para plugar algum cabo de rede ou limpar algum rack.

Também, talvez pelo mercado estar um pouco aquecido, temos as vantagens de estar em todas as comunidades, ou seja, podemos participar de todos os eventos em todos os lugares porque fazemos parte do todo, essa para mim é uma das maiores vantagens, misturar com todo o tipo de pessoa e profissional para poder aprender cada vez mais com outras áreas, sendo assim sempre temos apoios das comunidades mais diversas possíveis.

Acredito que a maior dificuldade existente hoje é que empregadores acham que podem substituir 3 profissionais por um só, o que não é verdade, então ainda existem muitas empresas pagando bem pouco para programadores Full-Stack, até bem menos do que para um profissional focado em back-end, por exemplo. Mas esta mentalidade está cada vez mais sumindo, pois bons profissionais estão dando conta do recado e fazendo com que nossa faixa salarial aumente cada vez mais e que sejamos valorizados pelas nossas habilidades e não pelos nossos títulos.

Você pensa em mudar de área?

Jamais! Eu sempre gostei muito de saber tudo que eu faço e entender o que está acontecendo. Isso me dá uma sensação de tranquilidade e paz, se eu faço um projeto e eu não me sinto confortável com o que eu estou fazendo, ou não me sinto 100% confiante naquela arquitetura, eu posso jogar tudo fora, mas não vou colocar isso em produção. Então eu creio que essa, para mim, seja a área ideal, a área onde você está sobrevoando tudo e entendendo todos os bits and pieces de cada parte do sistema que você administra.

Por que alguém deveria se tornar um(a) Full-Stack developer?

Porque é sensacional! É uma área muito rápida e as coisas estão sempre em movimento, então você nunca vai falar que não tem nada de novo para fazer. Além disso, é a ponte para que, se um dia você quiser se especializar, você possa seguir para o caminho que quiser sem restrições.

Porém não é todo mundo que consegue de fato entrar de cabeça nesse mundo. Em minha opinião, três coisas são essenciais:

Primeiramente, preparar sua mente e seu corpo, aprenda a estudar por prazer e não por obrigação. Veja o aprendizado e as habilidades como um presente, imagine que você é um personagem de RPG, e cada coisa nova que você aprende é um novo nível que você está passando (existem apps como o Habitica que ajudam a entrar nesse mundo), crie hábitos saudáveis (não seja como eu), faça exercícios, não deixe se abater pela ansiedade, mantenha-se sempre calmo.

Em seguida, prepare seu ego, ninguém em nenhuma profissão chega longe sendo mesquinho ou egocêntrico. É uma tendência crescente, quando você começa a assumir responsabilidades demais, achar que você é invencível e está sempre no topo porque você “É o cara com as chaves de acesso do SSH”, mas a realidade é que você é parte de um time, do qual sem você eles não são nada, mais sem eles, você também não florescerá. Permaneça sempre humilde e nunca faça por si, mas pelo que pode vir a ser algo grandioso.

E, por fim, acredito que a paixão pelo que você quer fazer é um dos fatores que mais nos motiva. Todos temos contas para pagar, mas no final, dinheiro é só uma recompensa por um trabalho bem feito, puro papel, mas o que você vai construir não pode ser apenas visando o dinheiro, tem de ser construído com vontade e com perspectiva de que seja lá o que isso irá se tornar, vai se tornar a melhor coisa que você já fez (pelo menos até a próxima coisa que você for fazer, que será melhor ainda), em suma, não trabalhe pelo dinheiro, trabalhe pelo que você acredita e pelo que você quer deixar de legado para outros.


Este foi um post sobre como é trabalhar como Software Developer, porém temos também sobre como é trabalhar como Consultor de TI, por André Baltieri, Coordenador de Sistemas, por Jhonathan Souza Soares, Analista de Qualidade, por Érik Patekoski, Full-Stack Developer, por Ana Eliza, Front-End Developer, por Fernando Daciuk, Desenvolvedor Front-End, por Felipe Fialho, Back-End Developer, por Giovanni Cruz, Líder Técnico, por Elton Minetto e muitos outros. Confere lá!

Se você gostou desse post, não esquece de dar um like e compartilhar! :D

Siga o Training Center no Twitter para se manter atualizado(a) sobre nossas novidades: trainingcentr

Entre no nosso Slack para participar das decisões desse projeto e também para ver gifs engraçados!

Conheça nossas iniciativas.

Training Center

Conectamos pessoas que querem aprender algo relacionado a desenvolvimento de software com gente que pode guiá-las.

William Oliveira

Written by

Ajudando pessoas a entrarem na área de programação no YouTube http://bit.ly/youtube-will e com livro http://bit.ly/universo-da-programacao

Training Center

Conectamos pessoas que querem aprender algo relacionado a desenvolvimento de software com gente que pode guiá-las.