"Sabemos o que somos, mas não sabemos o que poderemos ser." (William Shakespeare)

Uma das coisas mais importantes quando se está começando ou quando se está em constante busca por aperfeiçoamento, é saber em que nível em relação ao desenvolvimento de software você está, em que ponto de uma longa trajetória você se encontra. Assim, você pode saber até onde pode chegar e nunca desistir. Você pode ter idéia até de qual é o seu valor no mercado uma vez que você fique ciente da classificação que lhes vou expor.

A classificação abaixo foi proposta no blog de Michael O. Church, ex-engenheiro do google e especialista em programação funcional que ficou bastante famoso depois que disse que a google não é uma empresa dos sonhos para se trabalhar.

Vejamos em seguida como ele define sua classificação (com comentários meus nesse formato).

"A escala que estou prestes a definir vem de uma visão sobre as organizações humanas. Equipes, em geral, têm quatro categorias em que a contribuição de uma pessoa pode cair: divisores, reduzidores, agregadores e multiplicadores.

Divisores são as pessoas cancerosas que têm um efeito negativo de base ampla sobre a produtividade. Isto geralmente resulta de problemas com a atitude de uma pessoa ou na ética (exceto em gestores, cuja descrição do trabalho permite-lhes apenas serem multiplicadores ou divisores).Esta geralmente é uma "questão de RH" (divisores devem melhorar ou serem demitidos), mas não no âmbito desta escala de desenvolvimento profissional, que assume boa-fé e um desejo para o progresso.

Reduzidores são pessoas que produzem menos do que custam, levando em conta o tempo de outras pessoas que devem treiná-los e supervisioná-los. Temporariamente, não há nada de errado em ser um reduzidor, afinal quase todos os engenheiros de software começam suas carreiras sendo um, e é comum ser um nas primeiras semanas de um novo emprego.

Agregadores são os cavalos de força: contribuintes individuais competentes que fornecem a maior parte do trabalho real.

Finalmente, os multiplicadores são aqueles que, muitas vezes em sintonia com os agregadores, fazem as outras pessoas mais produtivas. Em muitas indústrias, ser um multiplicador é somente uma característica da gestão, mas em tecnologia isso não poderia estar mais longe da verdade, porque as contribuições arquitetônicas e de infra-estrutura (tais como bibliotecas de códigos reutilizáveis) têm um impacto de base ampla na eficácia de toda a empresa.

Aproximadamente, a escala é a seguinte:

0.0 - 0.4: completo iniciante: este é o nível de uma pessoa que está ainda na "programação de aprendizagem", sendo suscetível a ter problemas para fazer o código compilar. Esta pessoa tem limitações técnicas que tornam contribuições de nível profissional sem supervisão impossível. Normalmente, esse nível de desenvolvimento é observado apenas em cursos introdutórios de programação. A maioria dos estagiários universitários já estão a 0,5 ou acima, quando eles começam a programação profissionalmente (Acredito que não seja o caso no Brasil, não começamos a programar com 15 anos ainda, então muitos tem problemas para compilar o código.).

0.5 - 0.7: sólida compreensão dos fundamentos: este é o nível de alguém que se pode chamar de "programador", mas ainda não um "engenheiro". Este pode, competentemente, construir pequenos sistemas (de até 3000 linhas de código ou por aí), mas o código é suscetível a ser desleixado e insustentável. A este nível, conseguir fazer o código compilar não é problema, mas este é suscetível a ser ineficiente, e as habilidades arquitetônicas da pessoa (devido à inexperiência) são fracas. Nível típico para um estudante universitário de uma escola forte antes de seu primeiro estágio software.(No Brasil, acredito que é o nível típico de universitários com experiência no mercado ou de universitários de escolas fortes com pouca experiência, ou de profissionais que se formam, mas estagnam no estudos ou na busca de desafios.)

0,8 - 0,9: Tornando-se um agregador: esta é uma pessoa que está ciente das preocupações práticas (manutenção e refatoração) associados ao desenvolvimento de software. Ela pode entregar scripts úteis e tem uma compreensão decente de engenharia de software.(Por compreensão decente, entenda-se, conhece bem padrões de projeto e princípios SOLID, e sabe aplicá-los na medida de sua inexperiência)

1.0 - 1.3: Completo agregador: esta pessoa demonstra plena competência como engenheiro de software e pode ser confiável para gerenciar um projeto pequeno com "ciclo completo": design, implementação, teste e integração. Código será geralmente de qualidade razoável, mas o engenheiro não está pronto para ser responsável por cumprimento de prazos, suporte de produção, ou assumir preocupações de toda a empresa. Uma equipe de engenheiros na maior parte 1.3 pode produzir um trabalho sólido (o engenheiro de software mediano é de cerca de 1,1), mas uma empresa de software, cujos melhores engenheiros estão nesta faixa, luta para produzir software de qualidade(Software de pouca qualidade provavelmente é o padrão no Brasil até para empresas em que TI é o fim. Se nos EUA o engenheiro mediano é 1.1, no Brasil a maioria dos desenvolvedores não chega a ser engenheira, mas isso não quer dizer que isso seja incompetência brasileira. Existe muito menos suporte para se criar uma empresa ou startup por estas bandas, mas isto está començando a mudar...).

1.4 - 1.6: Agregador consolidado: bem acima da média (10%) para os padrões da indústria de software, mas tem em média 5-10 anos de experiência nas melhores empresas (por exemplo, startups de elite, no Google e divisões de pesquisa da IBM). Pode ser confiável para resolver a maioria dos problemas de forma independente em uma maneira elegante e fácil de manter. Engenheiro pode fazer estimativas de tempo razoável e comunicar-se em termos de negócios e técnicos com a gestão, bem como com outros engenheiros. Pode lidar com pequenos níveis de responsabilidade prazo / entrega e devem ser encorajados a participar em decisões de arquitetura (preocupações de "multiplicadores"). Liderança técnica e projetos de caráter não urgente é uma possibilidade séria.(Lembrando que aqui estamos falando de software de grande porte e não pequenos sistemas de 3000 linhas)

1,7 - 1,9: Tornando-se um multiplicador: top 5%. Engenheiro está no bom caminho para o status de completo "multiplicador". Suas contribuições não só resolvem problemas imediatos, mas melhoram o estado da infra-estrutura da empresa. Ele sugere rotineiramente melhorias de arquitetura e processo, e está pronto para ser "líder técnico" para projetos importantes.

2,0 - 2,3: Multiplicador consolidado: engenheiro é um multiplicador concretizado cujas contribuições adicionam imenso valor ao time, sendo um líder técnico óbvio. Isto representa o top 2-3% de engenheiros de software na resolução de problemas, arquitetônico, e habilidades de liderança.(Acho que por aqui deve representar o top 0,25% de engenheiros, e se já não é sócio da empresa, provavelmente deve estar abrindo uma)

2.4 - 2.6: Tornando-se um multiplicador global ("Fellow"): conquistas do engenheiro são vastas e surpreendentes. As contribuições afetam toda uma empresa de software ou uma comunidade (por exemplo, com projetos open-source). Representa 0,25% de engenheiros de software. É confiável para trabalhar em pesquisa independente (com plena autonomia) e com as iniciativas de chumbo.(Desejo estar enganado, mas não há no Brasil, quem aqui influenciou/desenvolveu pra valer um framework utilizado em todo mundo?)

2,7 - 3,0: Super Sênior: engenheiro é conhecido dentro e fora da empresa como um dos melhores programadores vivos. Estas são as pessoas que podem projetar novas linguagens de programação."(Não há por aqui)

Quanto ganhar?

Com base nessa escala é interessante traçar um paralelo entre o nível em que o programador está e o quanto ele provavelmente deverá ganhar, adaptando, claro, à realidade brasileira.
Considerando no ano de 2015, que um programador que faça o código compilar(0.5) ganhe R$2.500 e um multiplicador(1.9), R$15.000, se avalie abaixo e tenha uma idéia do quanto você deveria estar ganhando. Código no JSFidlle

É claro que existem muitas outras variáveis pra determinar o seu valor e essa é apenas uma simplificação, mas é interessante manter, pelo menos, em mente que o seu salário não é determinado por quantas pessoas sabem fazer seu trabalho dentro da empresa. Ele é determinado pela relação entre a quantidade de pessoas "por aí afora" que são capazes de fazer o que você faz e a quantidade de pessoas/empresas que precisam do que você faz.

Assim como no mercado financeiro, seu valor presente de mercado também vai ser influenciado pela expectativa do valor futuro de suas habilidades, então continue firme e forte, aprenda rápido e nunca fique desatualizado.


Conclusão

O objetivo deste blog é contribuir ao máximo para que você, leitor, seja um completo agregador, mas passando primeiro pelos fundamentos. Espero que tenha gostado!


Próximos Passos

Vamos propor o melhor caminho para o aprendizado Javascript, respeitando o nível em que o leitor está. Esse post será extremamente útil para qualquer programador que almeja se tornar um forte agregador ou um iniciante que quer ser capaz de rapidamente extrair o essencial do javascript e melhor acompanhar as próximas postagens.

  • O melhor caminho para aprender javascript e dominá-lo

Sobre o Autor

Johel Carvalho

Johel Carvalho

Engenheiro Civil formado pelo Instituto Militar de Engenharia (IME-RJ) em Dezembro de 2012. Largou a profissão pelo desenvolvimento web, começando com C# e sendo atualmente aficionado por JavaScript.

comments powered by Disqus