Como é o mercado de programação Front-End e como navegá-lo? Parte 1
--
Desenvolvimento Front-End é relativamente novo no mundo da programação, e por definição é muito volátil. Isso reflete diretamente no mercado de trabalho, o tornando muito plural e heterogêneo. Seja qual for o momento que você está na carreira, é útil ter uma noção do todo, conhecer o que te motiva, se planejar e ter as expectativas adequadas para a “sua viagem”.
Para isso vamos falar sobre:
- Tipos de lugares que você pode trabalhar
- Títulos
- Cargos
Locais que você pode trabalhar
É interessante ter uma visão geral de onde você pode trabalhar como programador Front-End para saber onde focar os seus esforços e identificar melhor o que você procura para o seu próximo passo. Além disso, saber a realidade de onde você trabalha ajuda a ter expectativas realistas.
Pessoas ou pequenos negócios que precisam de um site. ($)
Provavelmente precisam de um Wix, Squarespace, ou Wordpress para necessidades básicas. Se você está iniciando a carreira pode ser interessante para ter alguma experiência. Não é uma forma de acumular conhecimento técnico necessariamente, mas do processo de ter um projeto e colocar um site no ar, além de um relacionamento básico com o cliente.
Exemplos: restaurantes, fotógrafos, cozinheiros, entre outros.
Habilidades
- Pouco conhecimento técnico
- Planejamento
- Disciplina e rotina ao trabalhar sozinho
- Relacionamento e gerenciamento de expectativas
- Operacional de como colocar um site no ar
Agências de publicidade ou agências que “fazem de tudo”. ($$)
Nesse caso são projetos com vida curta, para eventos ou peças publicitárias. De novo a qualidade técnica de código talvez não seja um objetivo para quem te contrata aqui, mas sim a velocidade de produção. A experiência é de como fazer mais em menos tempo e automatizar processos.
Exemplos: Tom Comunicação, Wide
Habilidades
- Produtividade
- Automação de processos
- Reutilização de código
- Trabalhar sozinho ou com mais uma pessoa
- Comunicação com pessoas sem perfil técnico
- Contato com gestor e alguma metodologia básica de gestão
- Colocar o site no ar sozinho
Agências de design que incluem sites e o digital como parte do pacote. ($$)
Geralmente são contratadas por empresas ou clientes que tem o próprio produto e não tem um time de design e desenvolvimento. O foco principal é design, portanto você provavelmente vai trabalhar em equipes pequenas, e talvez entre si podem propor e treinar boas práticas de código.
Exemplos: Huge, Work & Co
Habilidades
- Aprender sobre design, usabilidade, experiência do usuário (UX), arquitetura da informação e assim por diante
- Trabalho em equipe pequena à média
- Desapego do seu trabalho ao refazer/aprimorar muitas vezes a interface
- Criatividade e prototipagem
- Trabalhar em muitos projetos em pouco tempo
- Reuniões e apresentações
- Contato com gestores de alguma metodologia (como ágil por exemplo)
- Entrega do seu trabalho em um pacote para o cliente
Agências de software, especializadas em fazer sites e sistemas simples, parcerias com agências de design. ($$$)
Essas empresas, apesar de focadas em software ainda prezam por ter uma estrutura enxuta e poucos processos. Os profissionais são programadores back-end, front-end, devops, mobile e talvez QA, alguns multidisciplinares ou que deixaram de programar para serem gestores, administradores ou executivos. Geralmente trabalham com metodologia ágil e prezam velocidade.
Exemplos: Nodo.cc, Next4
Habilidades
- Qualidade de código e code review
- Processos e boas práticas
- Produtividade
- Troca de conhecimento técnico
- Participar de projetos inteiros
- Trabalho em equipe
- Deploys simples para produção ou entrega de pacote
Fábricas de software, fazem sistemas online e offline, as vezes trabalham com hardware, áreas logadas e também sites institucionais. ($$$)
Muitas trabalham com metodologia clássica de desenvolvimento em cascata, com requerimentos, modelagem de banco e processos em sequência tornando os projetos bem longos. São contratadas por clientes grandes (bancos por exemplo) que também trabalham nos mesmos moldes. É provável que você fique no mesmo projeto muito tempo e tenha pouca evolução em termos de novas tecnologias, mas sim em como otimizar e conhecer um projeto profundamente.
Exemplos: Accenture, Thoughtworks
Habilidades
- Processos clássicos de desenvolvimento de software
- Documentação e entregas formais entre áreas diferentes
- Visibilidade dos deploys
- Cadeias inteiras de integração contínua
- Manutenção
- Troca de conhecimento técnico
- Participar de projetos inteiros
- Trabalho em equipes grandes
Empresas que possuem o próprio produto com todas as expertises dentro de casa. ($$$$)
Geralmente startups que iniciam com um ou dois profissionais de cada especialização (como design, UX, negócios e desenvolvimento) e crescem escalando até possuir diferentes equipes ou squads verticais e alguns profissionais compartilhados horizontalmente. Nesse universo você compartilha ao mesmo tempo de poder investir na qualidade do software e do produto, mesclando com as necessidades do negócio e dos usuários.
Exemplos: Rappi, Nubank, Hotel Urbano
Habilidades
- Qualidade de código e code review
- Processos e boas práticas
- Aprender sobre design, produto, negócio e conteúdo
- Trabalho em equipes com responsabilidade pela empresa e produto
- Trabalhar em diferentes partes do mesmo produto
- Acompanhar o ciclo de evolução do produto, com feedbacks dos usuários
- Cadeias inteiras de integração contínua
- Manutenção
- Troca de conhecimento técnico
Títulos
O que você precisa saber como desenvolvedor vai ser definido principalmente pelo seu caminho, seus interesses e sua carreira. Os “títulos” em si não são importantes, mas fazem diferença na hora de procurar emprego.
- CSS/HTML Developer
É uma vaga onde você precisa principalmente traduzir layouts de imagens para CSS/HTML com pouco ou nenhum Javascript. - UI (User Interface) Developer
Semelhante ao anterior, com algum conhecimento Javascript e mais próximo ao usuário, trabalhando em conjunto com UX Designers. - Javascript engineer
Focado especificamente em desenvolver aplicações Javascript, com ou sem frameworks. Às vezes, infelizmente, sem muito conhecimento de HTML, CSS, semântica, SEO, acessibilidade e performance. - Front end/Web Engineer ou Client side developer
Além de programar o layout, cuida da aplicação como um todo, provavelmente com Javascript. Ou seja, uma soma dos 3 profissionais anteriores, conhecendo tanto lógica, frameworks e javascript, quanto semântica, HTML, CSS, SEO, performance e assim por diante. - Full stack
Apesar de ser um grande debate o fato dessa posição ser justa, a demanda existe. Profissionais que tenham conhecimento sólido de front-end e back-end, possivelmente para uma vaga de NodeJS + Javascript/framework client-side mas exigindo experiência anterior com outras linguagens. - Developer
Algumas empresas optam por abstrair todos esses títulos em apenas “desenvolvedor”.
Possíveis cargos
- Estagiário
Na teoria, alguém que tem interesse genuíno em aprender a profissão mas tem pouco ou nenhum conhecimento. O lugar onde trabalha deve proporcionar um ambiente sem pressões de entrega para aprendizado e evolução. - Junior
Sabe pouco de HTML e CSS e não consegue trabalhar sozinho. Consegue passar layouts para código e se usar Javascript provavelmente usa alguma biblioteca ao invés de JS puro. - Pleno
Se preocupa com o projeto (não só com o código e tarefa individual), é independente em HTML, CSS e JS. Começa a compartilhar conhecimento também. - Senior
Pensa a médio prazo e é ponto de referência no projeto sobre qualidade, boas práticas e arquitetura. Também não exagera em engenharia e não fica deslumbrado com tecnologias novas. - Lead
Se preocupa com a evolução da equipe e gere projetos desarmando problemas. Referência técnica para seniors.
A sua motivação
O que vai fazer a diferença nisso tudo é o que te motiva a ser um desenvolvedor Front-End. Se você fizer essa pergunta constantemente e observar, você vai achar algumas respostas que fazem sentido e que vão ajudar a ter muito mais clareza no caminho que você quer seguir, ao invés de estar sempre preocupado com o que você precisa estudar. Por exemplo:
- Você gosta de matemática e lógica ou mais de desenho e criatividade?
- Você gosta de se sentir esperto ou ter muito estímulo intelectual?
- Prefere trabalhar sozinho ou em equipe?
- Gosta de segurança e rotina, ou prefere resolver um problema novo, criando uma solução do zero?
Com essas e outras perguntas, que só você vai saber quais são, você pode chegar a uma conclusão como:
“O que me motiva é criar uma coisa nova, que faz as pessoas pensarem de forma muito diferente que antes, fazendo a diferença, usando qualquer meio, seja design ou lógica.”
Se esse for o caso, talvez você queira trabalhar em equipes ou empresas pequenas, onde você tem liberdade de criação e de ter esses momentos de quebra de paradigma (muito mais do que rotina e manutenção), mas ao mesmo tempo tenha visibilidade e paridade com todas as equipes e demais profissionais, como uma startup que tenha o próprio produto.
Se conhecendo melhor você vai saber como quer atuar (que título busca), em que tipo de lugar, qual formato de trabalho e como você se sente realizado, para ter uma referência no seu dia a dia e na sua carreira.
Por exemplo, se você gosta muito de abstrações e pensamento abstrato, provavelmente vai se sentir muito mais realizado trabalhando com padrões de arquitetura (orientação à objeto, funcional, MVC, etc) do que com layouts em HTML e CSS. E tudo bem, você não precisa gostar de tudo ou saber tudo para ser um bom programador. Um bom programador está sintonizado com o que gosta, trabalha com isso e por isso é produtivo.
No próximo artigo desta série vamos falar sobre:
- Formatos de trabalho e salários
- Preparação, curso, faculdade ou auto-didata
- Contratado, freelancer ou remoto