Adaptação

Quando era mais novo fui empurrado para o conservatório de música. Em vez de passar o dia todo a jogar futebol e playstation, lá tinha que tirar umas horas para aprender a ler partituras, sentir os tempos e desenvolver ouvido crítico. Não era muito bom na maior parte destas coisas, mas lá fui aprendendo uma mão cheia de instrumentos, entre os quais flauta, piano, saxofone, xilofone e uma carrada de outras coisas entre as quais ferrinhos.

O que é que os instrumentos têm a ver uns com os outros? Nada. O que é que isto tem a ver com informática? Tudo. Pessoas que sabem música (que não é o meu caso) são músicos, não são pianistas nem flautistas, mesmo que se especializem nisso não têm a mínima dificuldade em transitar de instrumento porque já aprenderam 90% daquilo que precisam, depois é só uma questão de habituar às mecânicas específicas do novo instrumento. Por outro lado, pessoas que sabem informática não são engenheiros de software, são front-end developers, full-stack engineers, devops enthusiasts, etc etc. Incomoda-me, por exemplo, sempre que leio um anúncio de emprego deste género:

Requirements:
* 2+ years MySql experience
* 2+ years .NET 3.5 experience
* 1+ years Javascript experience using AngularJS 1
* Proven track record of doing unit-tests using Mocha
* Fluent English
* Strong analytical skills

Sendo que o meu maior problema com esta filosofia é que se foca demasiado naquilo que sou capaz de fazer hoje independentemente do quão bom pudesse ser daqui a uma semana ou um mês. O que é que interessa se uso Backbone ou Ember? Java ou C#? Rails ou Django? MySql ou Postgres? MariaDB ou MongoDB? ActiveMQ ou RabbitMQ? Os princípios fundamentais não deixam de ser os mesmo, continuam a ser frameworks web frontend, linguagens orientadas a objetos,
frameworks web, RDBMS, document stores e distributed messaging. Se alguém sabe os fundamentals de computer science (algoritmos e estruturas de dados, sistemas operativos, networking, programação funcional e orientada a objetos, compiladores, sistemas distribuídos, etc) tem tudo para rapidamente se adaptar a um processo ou a uma tecnologia semelhante àquelas que já conhece tem tudo para igualar produtividade de outra pessoa que passou os últimos anos preso àquela linguagem ou framework.

Para um exemplo daquilo que considero um anúncio que se foca no importante, temos este da Scalac:

Requirements:
* Good understanding of Object Oriented and Functional Programming
* Proficiency in Scala (You don't have to be an expert, if you are promising we will help to become one)
* Experience with automated testing and continuous integration/delivery
* Knowledge and experience in writing modern asynchronous and multithreaded applications
* Commercial experience with any functional language or Java

Dá para perceber claramente que a posição é para Scala, mas uma pessoa que tenha um background relacionado não está nem de perto nem de longe excluída à partida. Em vez de se focarem nas ferramentas, focam-se nos paradigmas (testes, CI/CD, programação funcional e assíncrona). Este tipo de abordagem é reflexo da qualidade das empresas e pessoalmente sinto-me 100x mais motivado a saber mais sobre uma empresa que dê mais importância ao potencial, com uma visão de longo prazo sobre aqueles que contrata, do que propriamente à produtividade no momento t0.

Obviamente que em certas situações faz sentido incorporar alguém que não precise nem de período de adaptação nem de formação, mas a variedade de competências e experiências é sempre importante, porque para quem só tem um martelo, tudo é um prego.

comments powered by Disqus