Na era de desenvolvimento em que vivemos existe um problema particular que pode levar anos a resolver ou em alguns casos, nunca é devidamente resolvido.
Falo de um problema de identidade que existe no mundo desenvolvimento, o problema de os developers serem vistos como developer de X em vez de alguém que resolve problemas ou cria valor através das ferramentas que tem ao seu dispor. Isto acontece com todos os tipos de linguagem, toolsets, plataformas, frameworks, etc a algum ponto.
Imagina que alguém que não sabe programar decide que quer ser um software developer. Faz uma pesquisa no Google e descobre uma escola de código que ensina a escrever software em Java , consequentemente aprende a construir software a usar Java.
Essa pessoa é agora um “Java Developer”. Isto representa um “compromisso” invisível.
Sendo um “Java Developer”, a pessoa aprende mais sobre Java, torna-se melhor a interagir com Java e sempre que algo novo relacionado com Java é lançado, essa pessoa aprende e evolui. É um processo fantástico durante algum tempo.
Mas, de repente, a empresa decide que quer a aplicação feita em Ember.JS ou React e instantaneamente todo o conhecimento de Java que a pessoa adquiriu já não é tão valioso (apesar de, devido a um overlap substancial entre tecnologias, o developer ter sempre um início mais facilitado face a uma pessoa que nunca aprendeu uma linguagem).
Esta pessoa tem algumas opções:
1. Tornar-se um Ember developer;
2. Tornar-se um React developer;
3. Manter-se fiel ao Java à medida que a sua importância dentro da empresa decresce;
4. Sair da empresa e procurar outro emprego onde possa utilizar Java.
Normalmente, a pessoa acaba por escolher a opção 4 de forma a manter a sua identidade como um Java developer. Alguns são capazes de ficar na empresa até ao ponto em que a única opção é sair e outros alterarão as suas próprias crenças e skills de forma a aprender uma nova linguagem e adquirir uma nova identidade.
Todas estas opções são razoáveis.
Mas a que trará mais benefício será a de passar de ser um developer X a simplesmente, “developer”, alguém que resolve problemas e cria valor de diferentes formas.
A verdade, é que alguns developers nunca se identificam com uma linguagem, framework ou toolset. Conseguem construir qualquer coisa porque não se limitam à tecnologia e resolvem problemas ao criar valor com coisas que se calhar nem são a especialização dos mesmos.
Não é por terem mais conhecimento sobre uma framework ou linguagem específica que decidem resolver todos os problemas da mesma forma.
Para estes developers, o facto do projecto ser em Ember.JS/Java/React não passa de um detalhe. Um detalhe importante, mas não tão importante face ao problema que pretendem resolver.
Esta adaptação de mentalidade permite aos developers alargar o seu horizonte profissional e pessoal pois dá espaço a uma multitude de interações novas no dia-a-dia, interações essas que irão ultimamente levar à resolução do problema (ou não).
Também é verdade que a especialização numa linguagem ou framework especifica tem benefícios, o domínio de uma certa linguagem pode tornar-se mais valioso do que um conhecimento vasto mas algo superficial em diferentes linguagens.
No final, tudo depende da flexibilidade e curiosidade do developer, o quanto o mesmo procura evoluir e se está disposto a lidar com uma adaptação tecnológica e conceptual constante. Mas não nos podemos esquecer que esta adaptação é uma estrada de dois sentidos, para existir, é necessário tanto o developer como o empregador chegarem a um consenso do que será o melhor para o projecto.
O que achas? Devem os developers cingir-se a uma única linguagem ou framework ou explorar diferentes maneiras de resolver os problemas?