UMA EQUIPE WEB FULL-STACK FORNECERÁ AMPLITUDE E PROFUNDIDADE MUITO NECESSÁRIAS PARA SUA STARTUP - TECHCRUNCH - MÓVEL - 2018

Anonim

Nota do editor: Phil Freo lidera a equipe de engenharia da ElasticSales. Anteriormente ele estava no Quizlet e no Google. Siga-o no Twitter.

Muitas vezes há confusão sobre os vários papéis de uma equipe de engenharia da web. Precisei explicar, até mesmo aos recrutadores técnicos, as diferenças entre esses papéis e que as linhas que os separam são geralmente confusas. Pensei em compartilhar o framework que gostaria de usar para avaliar se alguém é adequado para a equipe técnica de uma startup.

Em uma startup, você não pode se dar ao luxo de ter pessoas que só são capazes de fazer uma coisa. Alguém poderia ser adepto de escrever HTML / CSS, mas se eles não têm um bom olho para o design ou sabem bem o JavaScript, simplesmente não vale a pena tê-los na equipe principal. Da mesma forma, alguém que conhece um pouco de tudo, mas não é avançado em nada, apenas arraste o time para baixo.

O tamanho da empresa ou da startup determinará quantos chapéus diferentes cada engenheiro deve usar. Muitas startups decolam com um único fundador que faz um pouco de tudo até que ele ou ela possa aumentar o time. Também é possível terceirizar algumas funções completamente. Assim como provedores de hospedagem na nuvem como Amazon Web Services reduziram drasticamente a necessidade de engenheiros de hardware / rede em startups web, plataformas como Heroku levam isso adiante e (por um preço) podem reduzir o trabalho de sysadmin e DevOps quase que totalmente no começo.

Em praticamente todos os casos, quando uma startup cresce, as pessoas inevitavelmente começam a se especializar. Mesmo aquelas joias raras, que nos primeiros dias podem passar a primeira metade do dia no Photoshop e a segunda metade redimensionando um banco de dados, eventualmente se especializarão pelo menos um pouco. Se você está contratando bem, sempre encontrará alguém que possa superá-lo em pelo menos uma área.

Eu sou um grande fã de pessoas "full stack" e acho que se especializar demais, cedo demais, é um mau sinal para startups. Na Elastic, cada um dos nossos engenheiros escreveu CSS e fez o gerenciamento de banco de dados / servidor. É bom quando surge um problema para que haja mais de uma pessoa capaz de consertá-lo. Dito isso, estou gastando a maior parte do meu dia escrevendo em JavaScript / Backbone.js porque gosto muito mais do que um colega de trabalho que prefere estar no Python tanto quanto possível. Isso é saudável e funciona.

Aqui está uma visão geral das principais áreas funcionais de uma equipe de engenharia da Web com pilha completa:

Designer Visual
  • Usa o Photoshop e oferece PSD ou recursos fatiados de designs bonitos e perfeitos.
  • Pega-se no Dribbble, no Behance e no Forrst.
  • Deve ser julgado em seus portfólios e sua compreensão das necessidades do usuário.
Desenvolvedor Frontend
  • O desenvolvedor de frontend básico pode criar páginas web básicas com HTML + CSS + JavaScript / jQuery mínimos. Os títulos incluem "web designer" e "desenvolvedor web".
  • O desenvolvedor de frontend avançado faz aplicações web ganharem vida no navegador. Escreve grandes aplicativos CSS e JavaScript bem organizados. Frequentemente usa frameworks como Backbone.js / Ember.js. Os títulos incluem "engenheiro de software", "engenheiro de interface web", "engenheiro de interface do usuário" e "desenvolvedor de JavaScript".
Desenvolvedor Backend
  • Escreve código do lado do servidor como Python, Ruby, PHP e node.js, além de frameworks web como Django, Rails, CodeIgniter e Express.
  • O desenvolvedor backend básico gera páginas web dinâmicas e interação com bancos de dados (MySQL / MongoDB / etc.)
  • O desenvolvedor avançado de back-end, além dos aplicativos CRUD, é o programador de estrelas que não tem medo de grandes desafios. Eles entendem desempenho, big data, concorrência, etc. e conhecem intimamente vários armazenamentos de dados, como MySQL, MongoDB, Redis e memcached. Os títulos incluem "engenheiro de software" e "engenheiro de back-end".
Sysadmin / DevOps
  • Configura servidores e gerencia arquivos de configuração, monitora a integridade do servidor, configura balanceadores de carga e servidores da Web (Nginx / Apache), gerencia o escalonamento e os backups do banco de dados, monitora a carga / desempenho do banco de dados, etc.
  • Escreve arquivos Puppet / Chef, bash e config.
  • Encerra nas conexões de falha do servidor, Nagios, Secure Shell (SSH)

Gostamos de avaliar candidatos de engenharia com base em uma combinação de amplitude e profundidade. Os candidatos precisam ser proficientes em duas ou mais áreas principais. E quanto menos áreas forem confortáveis, mais um especialista nessas áreas precisa ser. Você não deve contratar para papéis simples e definidos, mas sim através de um espectro de habilidades. Por exemplo, alguns bons ajustes para minha equipe agora podem incluir:

  • Um designer com um portfólio incrível, que também se sente confortável em implementar frontend em HTML / CSS.
  • Um desenvolvedor frontend com toneladas de experiência em HTML5 / JavaScript e adora o Backbone.js, um bom olho para o UX e o entendimento das APIs REST e dos conceitos básicos do banco de dados, mas não precisa de muita experiência em codificação de back-end.
  • Um desenvolvedor de pilha completa que se sente igualmente à vontade para escrever JavaScript no navegador, bem como recursos com suporte de banco de dados no back-end, com pelo menos uma quantidade moderada de profundidade em ambos os lados.
  • Uma pessoa apenas de back-end que pode escrever em Python / Flask para o site, bem como gerenciar e escalar nossa infraestrutura de servidor e banco de dados para ser incrivelmente rápida e estável.

Em vez de tentar separadamente preencher as quatro descrições de trabalho que mencionei anteriormente, contratar pessoas que tenham a combinação certa de amplitude e profundidade em todo o espectro é crucial.

Existem muitos outros critérios importantes para avaliar candidatos de engenharia além de onde suas habilidades se encaixam na pilha de tecnologia da web. As pessoas devem ser consideradas em geral e julgadas em um ajuste de equipe / cultura, a capacidade de apenas fazer as coisas, sentido do produto, habilidades de comunicação e resolução de problemas e experiência com sistemas de produção, para citar alguns. E, embora ter uma equipe bem equilibrada no geral seja crucial, lembre-se de que a adequação técnica é uma parte importante dela. Então descubra quantos chapéus você precisa de alguém para vestir e encontre os engenheiros que melhor se encaixam em sua equipe.