Blog Bugginho Academy

Você é engenheiro ou pedreiro?

É muito comum ouvirmos a frase: “Fulano é um pedreiro foda, trabalha há X anos e bota muito engenheiro no bolso” ou “Fulano é um excelente eletricista e não deve nada a nenhum engenheiro”. Durante boa parte de minha adolescência eu concordei com essas frases, mas simplesmente por desconhecer qual a real função de um engenheiro.

A grande questão é que nós que trabalhamos com TI, constantemente nos deparamos com pessoas que falam: “Fulano é fera no computador, ele sabe até instalar programas”. Quando isso acontece, a gente ri, mas será que a gente já parou para autocriticarmos? Vejo na internet muuuuuuuuuuuuuuuuuuuita gente achando que sabe mais do que realmente sabe, pessoas falando: “Fazer um Facebook é fácil, eu faria de boa” ou “Pra que eu vou estudar tal coisa? O que eu sei já está bom, consigo construir qualquer coisa que eu queira” ou “O importante é funcionar, seguir padrões só toma tempo e o no final o cliente nem vê/entende nada” ou “Cara, não perca tempo estudando algoritmo, a melhor maneira de aprender é fazendo, pega pensa em um software e desenvolve e vá aprendendo com as necessidades que forem surgindo”.

Diante de frases como essas, eu vejo que uma grande parte dos desenvolvedores do Brasil são na verdade “Pedreiros”. Um engenheiro planeja, projeta, analisa e gerencia a produção / execução de tarefas. Quando um engenheiro mecânico por exemplo projeta um carro, ele tem que se preocupar não só com o produto funcionar, ele pensa na usabilidade, na segurança, na ergonomia, em qual o púbico alvo, afinal, se o carro for esportivo, ele precisará se preocupar no desempenho do motor, freios, cambio, etc… Ele se preocupa também com a legislação, afinal cada país tem leis diferentes em relação a como um veículo é regulamentado ou não, e um infinidade de outras coisas. Um engenheiro civil, quando vai construir uma ponte, ele faz estudo do solo, analisa qual será o uso da ponte, porque isso influencia em quais materiais serão utilizados, qual o clima da região, e uma infinidade de outras coisas.

Há Bugginho, então você está dizendo que um engenheiro faz tudo sozinho?

Não, ele tem muita ajuda, muita mesmo. Ele precisa interagir com diversos outros profissionais, e por isso ele precisa de conhecimento em diversas áreas, e cabe a ele a responsabilidade (em alguns casos criminal) sobre o projeto.

É claro que um pedreiro depois de alguns anos de trabalho adquire uma boa experiência e pode até ter Know How para construir diversas coisas, mas será que se você perguntar a ele: “Qual seria o meu menor orçamento de materiais para construir de forma segura um prédio de 3 andares que deverá suportar trafego de carros utilitários nos 2 primeiros pisos?” ele saberia fazer esse estudo ou simplesmente “chutaria” baseado em suas experiências anteriores?

Blz Bugginho, entendi. Mas o que tudo isso tem a ver com Desenvolvimento de Softwares?

Tudo. Quando um cliente chega para você e pede uma loja virtual e você simplesmente pensa: “Vou instalar o WordPress num servidor compartilhado com o WooCommerce, um plugin de frete, um plugin de SEO e um plugin do PagSeguro”, sem analisar quem é o público alvo da loja, que tipo de produtos será comercializado, qual será o trafego diário, qual o plano de negócios da empresa, como funcionará a logística da loja, qual a legislação em cima do tipo de negócio da empresa, etc…Você está agindo como o pedreiro do exemplo anterior.

Achar que você já sabe demais e que não precisa aprender mais porque já consegue construir qualquer coisa é muito perigoso para a sua carreira (caso você de fato queira crescer na área), porque isso te limita. Novas tecnologias e metodologias estão surgindo o tempo todo e achar que já sabe tudo, fará com que você não tenha motivação para aprende-las.

Quando você acha que é melhor aprender fazendo (deixando de lado toda a parte teórica), você está novamente pensando como um pedreiro. Toda aquela parte “chata”: Lógica de programação, algorítimo, estrutura de dados, protocolos, etc… São extremamente importantes para saber como as coisas funcionam, mas é muuuuuuito comum as pessoas acharem que para fazer um software web, só precisa aprender umas tags html, uns estilos css, e uns trechos de código Java que o cara viu em uma video aula no Youtube. Por isso que é muito comum você vê perguntas como: “Como pego só os 5 primeiros registros de uma tabela com SQL?”.

E acredite, o mercado vê isso e eles sabem medir que tipo de “profissional é você”.

Quando um engenheiro vai construir um carro, ele aproveita muitos conhecimentos que outros engenheiro documentaram ao longo da história, afinal, não é a primeira vez que alguém faz um carro, então uma série de padrões já existem, seguir esses padrões além de facilitar o trabalho, aumenta a confiabilidade do projeto e o mesmo vale para os nossos Design Patterns.

É muito comum ver um projeto grande como o Facebook e achar que com o seu conhecimento atual você conseguiria criar, mas isso é uma visão muito simplória. Projetos como o Facebook, Youtube, Twitter, etc… são muito mais complexos do que parecem, e o “site” que a gente interage é só a ponta do iceberg.

E por fim, achar que você pode fazer de qualquer jeito só porque o cliente não entende é algo extremamente amador. Imagine se outros profissionais pensassem assim?

Médico: Vou costurar essa porra de qualquer jeito, o paciente não entende de porra nenhuma mesmo
Engenheiro Mecânico: Vou colocar qualquer tipo de trem de pouso nesse avião, o cliente não entende mesmo
Contador: Vou colocar qualquer valor nesse DRE, o cliente não entende de misera nenhuma mesmo

Temos que ter muita responsabilidade em nossa área, afinal até mesmo um site mal feito pode por em risco a saúde das empresas de nossos clientes. Um sistema que não escala, pode prejudicar o crescimento da empresa de nossos clientes.

Enfim, era isso que eu queria dizer. Deixem suas opiniões ai nos comentários. Valeu amiguinhos!!!

Bugginho Developer

10 comentários

  • Muito boa a leitura e reflexão buguinho… mas nem todos clientes estão dispostos a pagar uma equipe com engenheiro para construir seu ecommerce principalmente ser for de pequeno porte… enquanto um “pedreiro” instala e configura o wooCommerce por 1/10 do valor.

    • Obrigado pelo Feedback, Erick. Sim, você tem razão. Assim como nem todo mundo que constrói uma casa tem dinheiro para pagar um arquiteto / engenheiro. Mas o que eu quis dizer com esse exemplo é que muitas vezes alguns programadores já tem uma ideia formada do que é um “e-commece”, do que é um “ERP”, do que é um “CRM” e acha que se ele simplesmente pegar e instalar algo pronto e engessado, vai resolver o problema do cliente. Até para você escolher uma plataforma pronta é necessário fazer uma análise prévia, assim você saberá se é mais interessante por exemplo usar o WooCommerce, o Magento ou até mesmo uma plataforma de 50 reais por mês 😉

  • Texto muito bom. Uma continuação que talvez ajudaria seria uma pergunta que ficou em minha mente: e quanto ao lado dos clientes?

    Médico: Vou costurar essa porra de qualquer jeito, o paciente não entende de porra nenhuma mesmo.

    Um paciente ficaria o tempo que for preciso para ser curado dentro de uma sala de cirurgia. Jamais pediria um medico para fazer mais rápido pois tem um compromisso mais tarde.

    Engenheiro Mecânico: Vou colocar qualquer tipo de trem de pouso nesse avião, o cliente não entende mesmo

    Nenhum piloto vai entrar no avião enquanto uma base mínima de testes seja executada para o trem de pouso funcionar. Existe pressão para que eles executem dentro do prazo, mas todos estão cientes o suficiente para não entrar lá dentro sem testes.

    Contador: Vou colocar qualquer valor nesse DRE, o cliente não entende de misera nenhuma mesmo

    Da mesma forma que o cliente não entende 100%, mas ele entende de números e tem uma ideia de quão real aquele resultado é.

    A questão é: Como nos programadores podemos fazer para convencer um superior ou cliente que precisa de diversas etapas para se ter algo seguro e com qualidade enquanto tem alguém prometendo algo de 1 mês em 1 semana?

    Obs1 : vejo que muitos se arrependem depois de ver bugs para todo lado, mas mesmo assim vai continuar a procurar quem faz dessa forma, pois fulano cobra caro demais. Essas pessoas que fazem isso sempre irão existir, tanto o cliente que quer rápido e barato além do real, até o programador que promete tudo em pouquissimo tempo e não entraga nada ou tudo bugado.

    Obs2 : Eu entendo que a materia é para ajudar nos programadores ser pessoas melhores na nossa profissão, mas creio que muitos estão longe de fazer tudo que foi dito, e é dificil compentir preço contra eles.

    • Obrigado pelo seu Feedback Maurício, mas acho que você (assim como muitos) não pegaram 100% do que eu quis falar. Talvez tenha sido uma falha de comunicação de minha parte, vou reler o texto e tentar me policiar mais para os próximos.

      O que eu quis dizer é que existem tarefas simples que são negligenciadas e elas não geram nenhum custo a mais tampouco demandam mais tempo, o problema é que muitos DEVs simplesmente não querem estudar. Um exemplo. Se você estiver escrevendo um código onde uma mesma classe de sua aplicação tem diversas responsabilidades e acoplamentos ou regras de negócio na view / controller, ou um mesmo bloco de código que se repete diversas vezes na aplicação. O simples fato de ter em mente o SOLID lhe fará gastar mais tempo? O simples fato de você respeitar a hierarquia do MVC lhe fará gastar mais tempo? Com certeza não.

      Se você tem orçamento / prazo, você pode e deve se preocupar com documentação, TDD, etc… mas se não tem tempo, pelo menos deve entregar um código de qualidade, já que isso pode prejudicar você mesmo no futuro. 😉

  • Era justamente o texto que eu precisava ler. Eu estou fazendo engenharia civil porque gosto muito de exatas e gosto resolver problemas, mas eu comecei a hesitar por causa da frase “Fulano é um pedreiro foda, trabalha há X anos e bota muito engenheiro no bolso”. Mas ainda quero fazer uma pergunta: É constrangedor um engenheiro civil que nunca foi servente ou pedreiro, ou é algo extremamente natural?

    • Extremamente natural. Durante sua formação você poderá estagiar várias vezes e participar de experiências que vão lhe dar bastante conhecimento prático sobre a sua área. Não há necessidade de você trabalhar como pedreiro ou coisa parecida, mas se você quiser, nada te impede também 😉

Your Header Sidebar area is currently empty. Hurry up and add some widgets.