Especialistas, Generalistas e os Outros 

Jul/11
20

Essa coisa de junior e de s√™nior sempre me pareceu completamente rid√≠cula desde o dia em que comecei a mexer com software e tive que enfrentar essas classifica√ß√Ķes que as empresas e os RH fazem. Bom, para ser justo, n√£o s√£o apenas os RH √© todos o mundo de forma geral que tem alguma coisa que ver com administra√ß√£o de empresas relacionadas a software.

Esta nunca me pareceu forma de dividir ou distinguir as habilidades das pessoas. Ali√°s sempre achei o nome “programador” ofensivo para quem √© mais que isso, embora reconhe√ßa que sim existem programadores. O ponto √© que quem desenvolve software n√£o √© apenas um “programador” ele tem outras habilidades. Eu j√° fiz v√°rias entrevistas e sempre procurava determinar o quantidade de aptid√Ķes e o n√≠vel dessas aptid√Ķes nas pessoas. Existem pessoas que simplesmente t√™m talento para testar e nenhum para desenvolver. E outros √© ao contr√°rio. Poucos t√™m as duas coisas em equilibrio. Portanto, n√£o se pode esperar tudo de todos. Mas a pergunta que ficava sempre na minha cabe√ßa era : “afinal o que estou procurando nesta pessoa”. E n√£o estou falando de empenho e vontade de¬† aprender. Estou falando de vertentes, de perfis. Afinal quantos e quais perfis existem ?

A resposta √© simples. Existem quatro : Especialistas, Generalistas, Generalistas com especialidades e fanfarr√Ķes.

“Programar” √© uma coisas que o desenvolvedor faz , de entre as muitas poss√≠veis. √Č uma especialidade. Quem apenas sabe programar e o faz bem e apenas faz isso, ent√£o √© um Programador no verdadeiro sentido da palavra. √Č um especialista em programa√ß√£o. Um especialista em programa√ß√£o n√£o apenas programa, ele programa seguindo diretivas, boas pr√°ticas, padr√Ķes e conven√ß√Ķes de forma que outras pessoas tamb√©m programadores saibam ler o codigo que escreveu e o saibam interpretar ( reconhecer as raz√Ķes que levaram a pessoas a escrever o codigo daquela forma). Mas um software n√£o se faz s√≥ de c√≥digo. Se faz de levantamento de requisitos, analise, design, arquitetura, modelagem, teste, grafismo, ergonomia, etc… Cada uma dessas coisas em si mesma pode ser umas especialidade. Afinal todos ouvimos falar nos DBA e AD que comandam – apenas – banco de dados, de pessoas que ficam fazendo diagramas UML ou escrevendo casos de uso, os “testers” que s√£o – em tese- pessoas especializadas em teste, etc…

No mundo do software tradicional √© muito comum dividir o trabalho pelas especialidades e esperar que cada um fa√ßa sua parte para no fim juntar tudo. O problema √© que se esquecem de que “juntar tudo” tamb√©m √© uma tarefa em que se pode ser especializado (designer) e √© por isso que os projetos tradicionais falham.

Todos sabemos o que √© um “Especialista de Dominio” (domain specialist). √Č uma pessoa especializada no dominio. Esta especializa√ß√£o √© bem √ļtil durante a constru√ß√£o de um software dirigido a um dom√≠nio especifico, e quanto mais complexo o dom√≠nio, mais necess√°rias s√£o estas pessoas. Elas n√£o necessariamente produzem software no sentido de por a m√£o na massa do c√≥digo, mas ajudam a todos a entender o porqu√™s e por que n√£os das coisas que o software deve fazer.

Por outro lado, um generalista é uma pessoa que sabe fazer de tudo um pouco. Não se trata aqui de que o especialista faz com mais qualidade que o generalista. Não é esse o ponto. O ponto é que o generalista sabe fazer mais coisas que o especialista. O quão bem as sabe fazer advém da experiencia , esforço e talento de cada um. Um generalista não tem que saber tudo. Não é necessário desempenhar todos os papeis para ser um generalista mas mais do que dois ou três.

O iniciantes come√ßar no mundo do software preocupados em saber programar, usar as bibliotecas etc… sem nunca dar aten√ß√£o a coisas como modelagem ou levantamento de requisitos. Muitos passam sua vida sendo apenas programadores deixando com outros especialistas as outras atividades. Isto √© comum em “f√°bricas de software”.

Como disse antes quem trabalha no modelo de fábrica com um bando de especialistas encadeados em uma linha de produção se esquece que alguém tem que conhecer todas as partes do processo, do produto e do resultado de forma a avaliar como a linha de produção se portou. Senão ficam todos a olhar uns para os outros peguntando a cada um como a parte dele deveria funcionar. Isto causa imenso ruido na informação relevante, perda de informação e até inclusão de erros.

No modelo √°gil se pede que as equipes sejam multidisciplinares. Muitos interpretam isto como “muitos tipos diferentes de especialidades”, mas significa de fato “pessoas com v√°rias aptid√Ķes” ou seja, generalistas. Um generalista pode fazer muito mais num per√≠odo de tempo que v√°rios especialistas.¬† A pessoa pode conduzir o ciclo inteiro. Levantar um requisito, implement√°-lo, test√°-lo reportar ao cliente e come√ßar de novo. Implementar pode significa escrever java, html, javascript, usar a biblioteca A ou B, mexer com banco de dados, SQL, configura√ß√Ķes, produzir documentos, uml, etc… Agora imagine dois, tr√™s , quatro , generalistas e compare com equipes de dez, quinze, vinte , cinquenta especialistas.

Quando imagino especilistas imagino o cara sentado numa mesa com aqueles oculos especias com muitas lentes procurando os detalhes. Eles s√£o excelentes nos detalhes. Eles enxergam a “small picture”. Os generalistas enxergam a imagem maior (“big picture”). De longe, como uma √°guia que procura o problema e desce rapidamente na terra para matar o problema.

Uma equipe para ser produtiva tem que ter uma mistura saudável de especialistas e generalistas, sendo que é melhor ter generalistas com especialidades.

Mas cuidado, n√£o se confunda “generalista” com fanfarr√£o, ou com o cara que diz que faz tudo mas n√£o √© bom em nada. Para ser um generalista legitimo, ha que fazer direito v√°rias coisas. Os famosos bombeiros ( o cara que fica apagando fogo de um lado para o outro) n√£o necessariamente √© um generalista. Especialmente se ele que come√ßa os inc√™ndios.

N√£o ha nada de mal em ser um bom especialista, seja de dom√≠nio, de tecnologia , de modelagem , etc… nem ha nada de errado em ser um generalista. Contudo imagine que tem mais chances de sobreviver num ecosistema em constante mudan√ßa ? Por exemplo, √† 40 anos atr√°s DBA era o cara. Os sistemas existiam em stores procedures. Hoje que o banco de dados √© commodity e temos o NoSQL ( Not Only SQL) esta profiss√£o – como especialidade √ļnica – coloca a pessoa em risco de n√£o trabalhar mais. N√£o ha como negar que especialidade √© sin√īnimo de limita√ß√£o. Por outro lado, um generalista est√° limitado pela sua capacidade de saber os detalhes. Porque ele n√£o sabe ou procura os detalhes pode fazer as coisas mais levianamente que um especialista faria.

Ser especialista ou generalista √© inerente ao profissional , mas da mesma forma que uma pessoa apenas boa no serrote ou na glosa n√£o pode se considerar um carpinteiro, da mesma forma uma pessoa que s√≥ sabe programar ou s√≥ sabe trabalhar com bando de dados, ou s√≥ sabe modelar, n√£o se pode chamar de desenvolvedor. Ao entrar no mundo do trabalho voce pode entrar como especialista ou como generalista, √© voc√™ que escolhe. √Č comum ver as pessoas entrarem como iniciantes e nem saberem sequer programar, quanto mais levantar requisitos e fazer testes, mas se nunca tentar a pessoa n√£o sabe se √© boa ou n√£o nessas tarefas.¬† Por outro lado, ningu√©m √© s√™nior sabendo apenas programar. Maior nivel de aptid√£o (skill) significa tamb√©m mais aptid√Ķes.

√Č isto que diferencia os desenvolvedores. √Č isto que tem que procurar durante as entrevistas. √Č nisto que tem que pensar ao formar uma equipe. Voc√™ quer muitos especialistas, muitos generalistas, ou √© melhor ter apenas alguns generalistas com especialidades ? Por outro lado, como membro de uma equipe, como voc√™ pode ser mais √ļtil ?

A meu ver o mundo da especializa√ß√£o e das f√°bricas est√° mudando para o mundo generalista com especialidades e modelo de oficina. Em uma oficina de carpintaria qualquer um sabe serra e usar uma glosa. Sen√£o, o produto sairia muito caro. Isto n√£o significa que de vez em quanto uma pe√ßa especifica n√£o tenha que ser feita fora, por algu√©m que percebe mais : um especialista… mas n√£o √© comum.

Comente

Artigos