Apesar da minha vida acadêmica ser bastante conturbada, sempre soube o que queria ser: programador. E a imagem que tinha desta profissão é muito próxima da imagem abaixo, usada em tantos memes:
Era uma visão bastante ingênua por razões óbvias (eu tinha menos de 10 anos), mas confesso que ainda a tenho ao menos em parte. Computação é minha musa e bandeira que defendo até as últimas consequências.
Curiosamente não fui direto para o mercado de TI: fui trabalhar em livrarias, depois para a faculdade de Filosofia e os programas que escrevia eram (e ainda são em grande parte) criados por puro prazer. Anos depois finalmente larguei a Filosofia (e livrarias) e entrei no mercado: foi um choque.
O choque dos cargos
De repente vi as pessoas atuando como programadores mas se chamando de “desenvolvedores”, “arquitetos”, “fullstack developer” (este último, mais recente) e raríssimas vezes como programadores. Aliás, eu via outro nome curioso: implementador. Aonde estavam os programadores?
Me perguntava: era ruim ser programador? Era inferior? Conheci arquitetos fantásticos: aqueles caras projetavam soluções completas e, logo em seguida, davam massa às suas idéias escrevendo seu código. E então ouvia que programadores de torre de marfim era algo negativo e toda aquela história que vários de vocês já devem ter ouvido.
Conforme o tempo ia passando mais choques apareciam: pra começar não bastava ser um programador, você era um developer e um developer X, aonde X correspondia ao nome de uma tecnologia como Java, PHP, C, Delphi, .net ou qualquer outra.
O que eu era? Quando entrei no mercado já “dominava” algumas linguagens: C, Pascal, Delphi, Visual Basic, Java, PHP, Javascript, VBScript… E em todas estas conhecia gente que criava coisas fantásticas. Que tipo de “gênio” eu queria (e poderia) ser? Queria todos.
Indo além, via também as diferentes atividades: havia o sujeito que projetava o sistema (e depois o implementava), aquele que testava, outro que programava, o sujeito que coletava requisitos, tinha também “o figura” que gerenciava e aquele outro que coordenava. Tantas atividades, que na teoria aparentavam ser tão distintas, mas que na prática deveriam interagir entre si mas acabavam ignorando-se umas às outras.
Eu via, por exemplo, o analista de requisitos que não conseguia entender como o programador pensava, o arquiteto “Niemeyer”, que projetava coisas quase impossíveis para os programadores “engenheiros” construírem, o programador que não entendia como o sujeito do teste pensava e acabavam pipocando conflitos, aquele gerente que buscava um Santo Graal da produtividade…
Ainda pior: cada programador focado em uma única tecnologia pensando de forma completamente diferente e, para meu horror, ignorando as soluções presentes em outras plataformas por pura e simples futilidade, vaidade ou ignorância. Programador que não entende programador???
Ficava óbvio pra mim que por mais que se tentasse a especialização, o especialista não podia ser um solipsista. A pessoa do QA precisa entender como pensam o programador, cliente, arquiteto, analista de requisitos, etc. E o mesmo para todas as outras áreas de atuação.
E aí virei “empresário”
A visão que tinha até então era a do funcionário e neste ano comecei a ver “o outro lado”: eu, como empregador, como vejo estes cargos? itexto é uma empresa de computação: não me interessa se vou lidar com C, Lisp, Java, C#, Delphi ou Clipper. A fundei para criar um estilo de vida profissional a ser compartilhado.
Meu objetivo é ajudar os profissionais de computação a se tornarem melhores e as empresas a tirar melhor proveito dos seus recursos e necessidades computacionais com nossa consultoria. Aonde entra o especialista estrito? Neste momento apenas se for para nos ensinar sua especialidade.
O especialista é caro (especialmente quando sua empresa é pequena). E estou usando o sentido estrito do termo: o que ele me dará é pouco comparado ao que iremos investir. Ainda pior: há aqueles que criam barreiras a qualquer solução que sua especialidade não abrace e acaba por nos limitar intelectualmente. Não basta ter um retorno mínimo: muitas vezes causa dano.
Claro: alguma especialidade é necessária. A minha é software, não administração: resolvemos com a Maria Angélica, que nos liberou para poder fazer aquilo que sei. Mas o especialista não poderia dizer o mesmo, digo, que faz apenas X dentro do processo de software por ser apenas “aquilo que sabe fazer bem”?
Respondo: você pode até fazer apenas aquilo, mas obrigatoriamente deve conhecer as outras áreas para se tornar realmente útil a nós. Um sujeito .net que apenas critique Java (e vice-versa) e não reconhece as suas vantagens é nocivo. Um testador que chama de “preguiçoso” o programador por que este “se esqueceu” de executar um teste o vejo como um tóxico (negativo). Um gerente de projetos que joga prazos absurdos por acreditar que a equipe está “enrolando” não passa pela minha porta. O arquiteto que projeta algo ignorando as capacidades da sua equipe e do seu cliente para nós fede.
Software é uma atividade interdisciplinar em sua essência, negar este fato é dar tiro no pé. Mais que interdisciplinar, geramos produtos baseados não em uma tecnologia, mas várias, cada qual nos oferecendo um ou mais caminhos para resolver os problemas que nossos clientes enfrentam. Fordismo quando o assunto é software não rola.
Esta nova realidade abriu muito meus olhos: é impressionante a dificuldade que temos em contratar. É tanta gente se rotulando e com isto reduzindo suas possibilidades de mercado que me assusta, cargos como “CTO”, por exemplo, que soam tão imponentes mas na prática acabam se mostrando inúteis, o cara “fullstack” que só conhece uma linguagem de programação (JavaScript), gente que sonha em ser “chefe” e se torna de cara “gerente de projeto” sem nunca ter visto um sistema ser criado, arquiteto que nunca programou e está buscando o primeiro projeto… Quanta gente “cara”!
Cegos guiando (ou gerando) cegos?
Será que estas pessoas sabem o que de fato estes rótulos significam, se é que significam alguma coisa? Confesso que sempre tive dificuldade em saber o que de fato EU sou. Programador? Arquiteto? Empresário? Consultor? Talvez “programador” me soe melhor aos ouvidos, mas sei que não é uma boa definição para meu caso. Prefiro “profissional de computação”.
Recentemente estive em um evento no qual o palestrante levantou o seguinte questionamento: “existe programador velho? Alguém se aposenta como tal?” (ele não respondeu, mas sua postura claramente respondia que “não”).
Achei curiosa a definição de velho (mais de 30 (sou um ancião portanto)), ainda mais interessante a ideia de programador (não havia). Aquilo me incomodou (muito): pessoas em início da carreira na platéia, vendo um cego que acreditava enxergar usando termos como developer, fullstack developer, architect e tantos outros em inglês.
Um cego guiando outros (pior: gerando cegueira), provavelmente formado por outro (cego (talvez sua cegueira se chame arrogância)). Senti duas coisas naquele dia: alegria por estar na itexto e a obrigação moral de questionar estas coisas.
Concordo plenamente com cada linha escrita. Parabéns pelo artigo Kico!
Oi Fabrício, obrigado! :)
Belo artigo Kico!
Isso me lembra o início da minha carreira. Quando chegava na minha empresa tinha aquela visão geral sobre a área de Informática. Cheguei a conclusão que o próprio mercado de trabalho cria empregados assim, e como a gente sabe, não deveria ser desse jeito pela própria volatilidade do mercado. Um dia precisamos programar em Java, outro dia é necessário usar PHP, e até mesmo alguns dias você precisará configurar uma rede.
Hoje estudo para concursos públicos, e sabe o que eles estão cobrando? Praticamente um pouco de tudo. O que eu recomendaria para qualquer um que trabalhe na área é que tente fazer pelo menos um concurso para saber o que é cobrado no mercado.
Oi Daniel, quanto tempo, obrigado!
Excelentes reflexões! Só gostaria de acrescentar algo relacionado a esta frase: “Fordismo quando o assunto é software não rola.” Ainda me causa revolta em ver várias empresas usando a esquizofrênica nomenclatura “fábrica de software”. Não consigo entender como as pessoas prometem entregar algo totalmente customizado e inédito usando uma linha de produção, que tem por objetivo, justamente, produzir peças iguais e em série!!!
Oi Carlos, obrigado!
Sobre as fábricas, escrevi sobre a origem do termo, e como o distorcem os no Brasil neste post:https://devkico.itexto.com.br/?p=1389
Reflexões filosóficas MUITO pertinentes. Eu mesmo me pego questionando as minhas habilidades – não necessariamente em programar, mas em todos os aspectos do desenvolvimento.
É ao mesmo tempo angustiante e reconfortante pensar que software é multidisciplinar. Angustiante porque dá a sensação de que eu não tenho todos os talentos necessários ao êxito de um projeto. Reconfortante porque eu posso pensar que, em algo que não sou bom, alguém é o responsável por esse trabalho e eu posso até mesmo acompanhá-lo e aprendê-lo com quem sabe (também não vale simplesmente jogar para o alto e fuck-se, porque eu não sei, outro que faça).
Infelizmente a grande cacetada de empresas ainda não tem estes entendimentos, estão presos a dogmas acientíficos de administração (nível Exame e PEGN) e, das duas uma (dois extremos): ou separam os trabalhos em especializações hiper-restritas ou exigem que o “profissional do século XVDADREWR” saiba tudo-de-tudo-de-tudo-de-tudo.
Muito boa a reflexão do texto, principalmente a parte em que fala sobre cegos guiando e/ou gerando outros.
Com relação aos rótulos, certa vez ouvi alguém dizer que ninguém que conheça menos de 3 linguagens pode se dizer programador. Nos dias de hoje tem muita gente se auto intitulando, mas quando vamos ver mal sabem o que o titulo significa.
Parabéns, ótimo texto.
Oi Leo, obrigado!