Escrever um programa de computador sofisticado geralmente requer muito conhecimento detalhado. Se fizermos isso em Java, precisamos conhecer a sintaxe do idioma, a ampla gama de bibliotecas disponíveis para nos ajudar no trabalho, as várias ferramentas necessárias para verificar e construir nossos programas. Se fizermos isso em Python, enfrentamos uma sintaxe diferente, bibliotecas que são nomeadas e funcionam de maneira diferente, outro ecossistema para construir e executar nosso trabalho.
Diante desses detalhes, uma resposta pure é recrutar pessoas com conhecimento sobre um ecossistema específico. Assim, vemos descrições de trabalho que dizem “pelo menos três anos de Java”, ou requisitos ainda mais profundos para subconjuntos dessa comunidade, com experiência em ferramentas específicas. Qual é o uso de um programador de Python qualificado para essa equipe?
Sempre sentimos que esses desejos são errados. As características que observamos separando os desenvolvedores de software program eficazes da palha não são coisas que dependem das especificidades de ferramentas. Apreciamos coisas como: o conhecimento dos conceitos e padrões principais de programação, um talento especial para a decomposição de itens de trabalho complexos em peças pequenas e testáveis e a capacidade de colaborar com outros programadores e aqueles que se beneficiarão do software program.
Jogue um programador tão python em uma equipe de Java e esperamos que eles prosperassem. Claro que eles faziam muitas perguntas sobre o novo idioma e bibliotecas, ouviríamos muito “como você faz isso aqui?” Mas essas perguntas são respondidas rapidamente, e os impedimentos da ignorância de Java em breve se afastam.

Um pythonista experiente que entende os principais padrões e práticas do desenvolvimento de software program pode ser um membro produtivo de um software program de construção de equipes em Java. Saber como lidar com cobras pode ser surpreendentemente útil.
Isso ecoa um longo debate sobre o valor relativo de especialistas e generalistas. Os especialistas são vistos como pessoas com uma habilidade profunda em um assunto específico, enquanto os generalistas têm habilidades amplas, mas superficiais. Uma insatisfação com essa dicotomia levou à idéia de “pessoas em forma de T”: pessoas que combinam profundo conhecimento em um tópico, com um conhecimento amplo, mas superficial de muitos outros tópicos. Vimos muitas dessas pessoas rapidamente cultivarem outras pernas profundas, o que não faz muito pelo nome de “forma de T” (como discutiremos abaixo), mas, de outra forma, leva ao sucesso. Muitas vezes, a experiência de um ambiente diferente leva a tentar coisas que parecem inovadoras em um novo lar. As pessoas que só funcionam em um único bairro tecnológico correm o risco constante de se trancar em um silo de conhecimento, sem ter conhecimento de muitas ferramentas que poderiam ajudá -las em seu trabalho.
Essa habilidade vai além de apenas habilidades do desenvolvedor. Vimos nossos melhores analistas de negócios obter habilidades profundas em alguns domínios, mas usamos suas habilidades generalistas para entender e contribuir rapidamente em novos domínios. Desenvolvedores e experiências de usuário, as pessoas geralmente saem de “suas faixas” para contribuir amplamente para realizar o trabalho. Vimos essa capacidade ser uma qualidade essencial em nossos melhores colegas, na medida em que sua importância é algo que tomamos como garantido.
Mas cada vez mais vemos a indústria de software program pressionar por uma especialização crescente e mais estreita.
Então, no último ano ou mais, começamos a resistir a esse esforço em todo o setor por habilidades estreitas, chamando essa qualidade, que chamamos de um
Especialista em generalista. Por que usamos a palavra “especialista”? Existem dois lados para a experiência actual. A primeira é a profundidade acquainted: um comando detalhado dos trabalhos internos de um domínio. O segundo, essential em nosso campo em movimento rápido, é a capacidade de aprender rapidamente, identificar os fundamentos que correm sob ferramentas e tendências de mudança e aplicá-las onde quer que desembarquemos. Como exemplo de equipes de software program, os desenvolvedores que percorrem idiomas, arquiteturas e espaços problemáticos podem parecer “Jack-of-All-All-Trades, Grasp-of-None”, mas os mergulhos repetidos abaixo das diferenças de superfície os ajudam a desenvolver o domínio durável e em nível de princípio. Com o tempo, esses generalistas podem dissecar desafios desconhecidos, identificar padrões de primeiros princípios e tomar decisões de design confiantes com a garantia de um especialista – e mais rápido. Ser um generalista é ele próprio uma experiência sofisticada.
Percebemos há muito tempo que não apenas alguém é bem -sucedido como generalista especialista, mas uma vez que entendemos as características que são essenciais para esses generalistas especialistas, as organizações podem moldar programas de aprendizado, contratação de filtros e carreiras que os desenvolvem deliberadamente. De fato, nossa contratação e progressão na carreira no Thoughtworks cultivam essa habilidade há mais de duas décadas, mas o fazê -lo informalmente. Achamos que a indústria precisa mudar de marcha e tratar o especialista em generalista como uma habilidade de primeira classe por si só: algo que nomeamos, avaliamos e treinamos. (Mas cuidado, encontramos muitos especialistas em generalistas, incluindo pelo menos um autor deste artigo, se encolhem com a palavra “especialista”.)
As características de um generalista especialista
Quando observamos generalistas especialistas, há certos atributos que se destacam.
Curiosidade
Os especialistas em generalistas demonstram muita curiosidade. Quando confrontado com uma nova tecnologia ou domínio, sua reação padrão é querer descobrir mais sobre isso, ver como ela pode ser usada de maneira eficaz. Eles estão muito felizes em passar o tempo apenas explorando a nova área de tópicos, construindo alguma familiaridade antes de usá -la em ação. Para a maioria, aprender novos tópicos é um prazer em si, seja ou não imediatamente aplicável ao seu trabalho.
Essa característica é perceptível quando os especialistas em generalistas recebem uma resposta a uma pergunta. Em vez de apenas digitar algum código do Stack Overflow, a curiosidade de um generalista de especialista geralmente os motiva a garantir que eles entendam a resposta, aproveitando a oportunidade para expandir seus conhecimentos e verificar se a resposta que eles obtiveram é apropriada. Também está presente ao fazer uma pergunta. Há uma arte para fazer perguntas que provocam respostas mais profundas sem liderar a testemunha.
Colaboratividade
Aprender sobre uma nova área de tópico pode exigir leitura, assistir a vídeos e prototipagem. Mas vemos a maior ajuda aqui é outra característica important: colaboratividade. Um especialista em termos sábios sabe que nunca pode realmente aprender sobre a maioria das coisas que se deparam. Sua forma de T cultivará várias pernas, mas nunca o suficiente para abranger todas as coisas que eles precisam saber, muito menos querer saber. Trabalhar com pessoas que têm essas habilidades mais profundas é essencial para ser eficaz em novos domínios.
Trabalhar com um trabalhador de outra maneira permite que o generalista contribua enquanto o colaborador qualificado vê caminhos mais eficazes que apenas um especialista saberia. O generalista aprecia essas correções, aprendendo com eles. A aprendizagem envolve saber mais sobre o novo domínio, mas também aprender a diferenciar as áreas em que o generalista pode fazer contribuições primárias e áreas em que o generalista precisa de ajuda do especialista. Percebemos que os especialistas em generalistas nunca têm medo de pedir ajuda, sabem que há muito que ignoram e estão ansiosos para envolver aqueles que podem navegar por essas áreas.
Uma combinação eficaz de curiosidade colaborativa requer humildade. Muitas vezes, ao encontrar novos domínios, vemos coisas que parecem não fazer sentido. Os generalistas eficazes reagem a isso, ao entender primeiro por que esse comportamento estranho é a maneira como é, porque geralmente há uma razão, de fato, uma boa razão considerando seu contexto. Às vezes, esse motivo não é mais válido ou estava faltando uma consideração importante em primeiro lugar. Nessa situação, um recém -chegado pode agregar um valor considerável, questionando a ortodoxia. Mas outras vezes o motivo period e ainda é válido – pelo menos até certo ponto. A humildade incentiva o generalista especialista a não pular para desafiar as coisas até que elas tenham certeza de que entendem o contexto completo.
Essa humildade se estende ao reconhecimento das diferentes compensações que vemos nas arquiteturas. Uma arquitetura projetada para suportar grandes volumes de transações simples será diferente de uma projetada para lidar com algumas interações complexas. Os generalistas especialistas se sentem confortáveis em um mundo onde diferentes compensações fazem sentido em diferentes circunstâncias, geralmente porque suas viagens os expuseram a essas diferenças.
Foco do cliente
Essa curiosidade e ânsia de colaborar com pessoas com habilidades diferentes aumentam o perigo. Alguém motivado pela curiosidade pode perseguir todo objeto brilhante. É aqui que a característica do foco do cliente entra em jogo. Frequentemente, estamos impressionados com a maneira como um generalista especialista leva cada tecnologia desconhecida e questiona como isso ajuda o cliente. Somos fãs da noção de Kathy Sierra de que nosso objetivo como desenvolvedores de software program é Ajude nossos clientes a se tornarem “durões” no que eles fazem.
O foco do cliente é a lente necessária para concentrar a curiosidade. Os generalistas especialistas priorizam sua atenção de que as coisas que os ajudarão a ajudar seus usuários a se destacarem. Isso incentiva o aprendizado sobre o que seus clientes fazem e como eles podem melhorar seu trabalho. Ele concentra a atenção nas tecnologias que contribuem para a construção dessas coisas. O foco do cliente energiza a colaboração, incentivando a troca de informações entre cliente e tecnólogo e permitindo que o generalista especialista coordenasse outros tecnólogos para permitir a excelência dos clientes.