A Valve é uma das maiores empresas de games do mercado. Na verdade, como eles mesmos dizem, eles não são apenas uma empresa de games:
We’re an entertainment company. A software company. A platform company.
A cultura da Valve é uma das mais interessantes que existem. Pra começar não existe hierarquia, apostando totalmente em um formato autogerenciável. As mesas são totalmente móveis (sim, elas tem rodinhas), o funcionário escolhe o projeto no qual vai trabalhar e ele mesmo define e prioriza as suas tarefas. Se você quiser ler mais sobre a cultura da Valve, recomendo que leia o livro que eles fizeram para novos funcionários. Esse livro, explica que eles valorizam um determinado tipo de pessoa, que é o que eles chamam de pessoa “T-shaped”.
As pessoas T-shaped são profissionais que conhecem diversos assuntos de forma bem geral, não chegando a ser um profundo especialista (a parte de cima do T), mas também são experts em um campo de conhecimento específico (a parte vertical do T).
A Valve diz que esse tipo de pessoa é muito importante para o sucesso da empresa. O motivo é simples: um expert que conhece apenas sobre um assunto, pode ter dificuldades para colaborar com o projeto como um todo. Já se a pessoa é alguém generalista que só conhece um pouco de tudo, então ela não acrescenta valor como indivíduo para o projeto. Logo, todos precisam ter os dois perfis, ampliando as possibilidade de colaboração para o produto e principalmente para o grupo como um todo.
Se fôssemos aplicar isso para desenvolvimento web, estaríamos falando de um profissional full-stack. Geralmente o mercado usa esse termo um pouco errado. Alguns lugares definem que um desenvolvedor full-stack é aquele back-end que entende de também de operações. Outros lugares definem o full-stack como sendo um back-end que também sabe front-end. As duas estão certas e erradas ao mesmo tempo. Veja: um profissional full-stack é aquele que entende razoavelmente bem todo o stack que se usa em um determinado projeto.
O stack de desenvolvimento é o conjunto de tecnologias utilizadas para fazer o projeto funcionar. Exemplo: Um site desenvolvido com HTML, CSS, JS, PHP com WordPress como CMS e MySQL como banco, rodando em um servidor Ubuntu 14 com NGINX e Jenkins como CI.
Se você consegue colocar um projeto desses funcionando em produção, sozinho, você pode se chamar de full-stack. E é claro que os stacks mudam de projeto par projeto. Logo, na verdade, um desenvolvedor pode não ser totalmente um full-stack motherfucker. É muito difícil achar um cara que saiba programar todas as principais linguagens back-end, que saiba configurar e manter muito bem servidores web e que domine todos os sistemas de CI etc. Esses caras são moscas brancas.
Discussão dos membros