Programador Pedreiro E Programador Engenheiro
Atenção, não sou profeta... posso mudar de opinião, mas esse é um texto livre que eu vou usar pra expressar um ponto que eu tenho observado enquanto desenvolvedor.
Quero já deixar muito claro, eu amo programar e tem sido um hobbie e um trabalho muito satisfatório pra mim, me sinto uma pessoa realizada com meu trabalho mesmo não estando recebendo um tostão para trabalhar, mesmo meu trabalho gerando imenso valor a outras pessoas. É difícil negociar tendo pouco tempo prático na área e a curva de aprendizado com certas tecnologias me faz não entregar o trabalho que eu queria entregar e sim o trabalho que eu consigo fazer... farei um post sobre isso mais pra frente, foi uma história interessante que aborda "Bom código Vs Produto e Valor pro cliente"
Tenho visto na área uma melancolia sobre a prática do trabalho e o mercado malvado com os pobres programadores pedreiros(alguns engenheiros também). MAS cara, que porra é esse de pedreiro ? Se tá viajando.
NÃO, não estou, analogia is my passion. Se liga na paranoia do pai que vc vai entender.
Um pedreiro é aquele que simplesmente faz o que o engenheiro manda, taca 3 de areia pra 1 de cimento (sim, eu já fui pedreiro), mas o pedreiro não faz ideia da reação química, e em seguida física, que causa o endurecimento do produto dessa mistura.
O engenheiro sabe, e mesmo se ele não soubesse, ele saberia que 3 de areia com 1 de cimento rende uma massa q sustenta prédio... MAS ele devia saber, percebe já a relação?
Existe um termo que um colega sênior meu usa "soy dev", dev de soja se for na ignorância, pesquise o nascimento desse termo é muito interessante. Um soy dev é o programador pedreiro que simplesmente copia tutorial e não entende oq acontece "debaixo do capô", pergunte um tamanho de um booleano pra seu amigo desenvolvedor, se ele nem fizer ideia é pedreiro, se falar que é 1 bite ele é no mínimo estudioso, agora, se ele perguntar de volta "qual linguagem ?" Esse sim é um engenheiro.
O ponto é, um pedreiro consegue fazer o mesmo botão que o engenheiro, chamar a mesma função e usar os argumentos certos... como no final isso é oq o cliente está vendo, um botão, faz com que muito pedreiro tem entrado nessa área da computação, que na minha opinião é umas das áreas mais densas que existem(um mesclado de matemática,lógica, física, café gourmet... não é para qualquer um sabe? ). Aí acontece dos pedreiros desenvolvedores não conseguirem se adequar às novidades ou crescer na carreira e ter que ficar aceitando vaga arrombada, Rui demais da conta, acaba saindo da área e falando que é uma bosta. Agora, o engenheiro sabe muito bem como se adequar rapidamente numa tecnologia nova ou diferente que está presente no mercado, o cara tem a base, tem a lógica e, se for experiente, ele tem o molho, brincadeira, ele tem a prática do lado dele, ele sim vai conseguir suportar o mercado é usar isso a seu favor.
Você pode até pensar em querer apontar, "quem é você pra dizer isso ?" e eu respondo, sou o jô Soares. MAS antes disso pense, eu estou errado ? Realmente não existe essa "classe social" em nossa área? Abraço, amo todos, menos o Rogério.
Concordo contigo, mas vou um pouco mais além...
Algum tempo atrás eu li o livro "Inspirado: Como criar produtos de tecnologia que os clientes amam", e nele tem um conceito que eu considero ser a pura realidade do mercado de TI. Basicamente, o autor diz que existem dois tipos de devs/engenheiros:
1. Mercenário: É aquele que faz o que deve ser feito, seguindo a receitinha de bolo, sem questionar, sem inovar, faz apenas o necessário para receber o pagamento pelo serviço no final; 2. Missionário: É aquele que não apenas faz o que deve ser feito, mas também questiona, procura entender o porquê das coisas, tenta inovar e genuinamente resolver o problema do cliente, pra ele, o pagamento é uma consequência do trabalho bem feito.
E eu acho que é basicamente isso, de uma forma geral, as empresas querem e precisam do dev missionário, pois é ele que será capaz de realmente resolver um problema, alavancar o negócio e gerar lucro para a empresa, e esse cara não vai ficar sem emprego. Já o mercenário, ele é necessário apenas quando precisa de mão de obra em grande quantidade mesmo, que é justamente esse cenário do pedreiro que você comentou, porque esse cara precisa de tudo mastigado. E aí quando o mercenário fica sem a fonte de renda dele, ele vai reclamar dizendo que isso tudo é uma grande "bosta", porque ele não tem o apreço e nem o propósito de vida que o missionário tem.
Inclusive, acho que talvez essa seja a grande diferença de um para o outro, o missionário tem o propósito de vida de criar soluções que resolvam um problema real, o mercenário só quer ganhar dinheiro...
Colega, você estava absolutamente correto. Eu já escrevi sobre exatamente esta analogia, comparando a engenharia de software com a civil, em outra resposta aqui. O termo soy dev ou programador pedreiro também apareceu aqui no tabnews como 'Programador Chaves:' e rendeu até um vídeo do criador desta plataforma no YouTube.
É claro que existem muitas classes, como em qualquer outras profissão. Para evitar ser um programador pedreiro, é simples: aprenda como as coisas funcionam 'por baixo do capô', como você mencionou. Isso significa entender Sistemas Operacionais, Banco de Dados, C, Assembly, Redes, entre muitas outras coisas básicas.
Na linha do programador pedreiro, vejo outra classe de 'desenvolvedores web' ou mesmo aqueles que realmente pensam que JS é a melhor coisa do mundo e perdem completamente o ponto de que a web (HTML, JS, CSS) é apenas uma GUI estúpida para sistemas de computação (as vezes) extremamente sofisticados.
Então, eles aprendem JavaScript do lado do servidor e começam a se chamar de 'engenheiros de web full stack'. Sim, existem verdadeiros engenheiros web full stack JS ganhando rios dinheiro, mas eles são simplemente "programadores de computador" ou "engenheiros de software" extremamente competentes que por acaso estão trablhando com esta stack, não por que é única coisa que eles sabem.
Ambos os termos têm pequenas diferenças, eu gosto de ambos, o que eu não gosto é de desenvolvedor web, desenvolvedor frontend React/Angular/Vue, desenvolvedor backend C++/Node.js/Java. Na minha visão, quanto mais qualificadores tem antes/depois de engenheiro/desenvolvedor/programador mais coisas erradas existem.
Eu gosto da definição de dev júnior expert, aquele que tem muitos anos de experiência e virou expert em entregar mais rápido as mesmas soluções de júnior, sem nunca evoluir de verdade. o outro ponto importante pra pensar essa analogia é: não se faz obra sem pedreiro.
o tamanho de um booleno é um bit, a menor unidade de informação da computação. porém depende da implementação da linguagem ou da sua representação em algum software. No MySQL, um campo do tipo booleano ocupado um byte, por exemplo.
Gostei do seu estilo.