Somos “amadores remunerados”?

Antes de ler esse post, peço a você que ignore seu ego, apenas por alguns instantes. Esse texto não foi fácil de escrever e acho que também não será fácil de ler. Por favor, tenha em mente que não quero ofender a ninguém. Entretanto, acho que já passou hora de falarmos sério sobre nossa profissão.

NOTA: Este post foi motivado (provocado, na verdade) por uma discussão entre amigos, em um grupo de whatsapp, de uma comunidade técnica em que participo.

Por solicitação explícita dos envolvidos, não irei mencionar nomes. Mas, fui desafiado a falar publicamente com a mesma franqueza que usei naquele grupo.

Pare e pense! Estamos realmente preparados para fazer o trabalho que estamos nos propondo a fazer?

Minha pergunta não tem qualquer relação com o quanto você sabe sobre aquele framework lançado na semana passada. Não estou falando sobre microsserviços (com dois “s”). Não estou falando de DDD. Não estou falando da linguagem de programação da moda. Não estou falando daquele banco de dados novo. Não estou falando sobre nada daquilo que geralmente te faz sentir como um impostor.

Quando falei sobre estar preparado, estava falando do quanto você sabe sobre fundamentos!

Você sabe analisar a complexidade de um algoritmo? Se não sabe, como pode dizer como ele irá se comportar em produção com um volume de dados maior do que aquele que está usando em seus testes? Você será um daqueles desenvolvedores que repete o bordão “Na minha máquina funciona”?

NOTA: Na discussão privada, um amigo argumentou que boas ferramentas podem ajudar a avaliar o quanto um algoritmo tem em qualidade. Infelizmente, eles não podem determinar se o algoritmo escolhido é a opção correta para resolver um problema, nem se ele irá escalar bem.

Nem Resharper, nem Sonarqube vão te dizer se seu código escala mal. Em minha experiência, nem mesmo os testes de QA são suficientes, afinal, não refletem o que se encontra em produção. No final, é necessário uma combinação de experimentação e conhecimento.

O mais triste é que, se você não sabe avaliar se seu código “escala” bem, ele provavelmente não escala.

Quanto você sabe sobre estruturas de dados? Saberia implementar um hashtable “no braço”? Se não consegue, que critérios adota para escolher entre as diversas opções disponíveis em um framework moderno como .NET ou Java?

NOTA: Nessa mesma discussão, o mesmo amigo sugeriu que “no mercado” as pessoas não tem realmente a capacidade de implementar estruturas de dados “no braço”. Mas, mesmo assim, essas pessoas estão entregando código em produção que atende os desejos dos clientes.

Será que atende mesmo? Pagando que preço? Até quando?

Quanto você sabe sobre arquitetura de computadores? Caso saiba pouco, como você explica para seu cliente aquele “problema de arredondamento”? Que critérios você adota para otimizar seu código para a máquina que seu código irá rodar?

Quanto você sabe sobre como seu código é executado? Sobre como a memória que seu código está usando é alocada e descartada? Que critérios você usa para decidir se deve criar uma class ou uma struct (falando especificamente de C#).

Saber os fundamentos é o mínimo (o fundamental) para que possamos desempenhar qualquer função. Então, por que, frequentemente, ignoramos os “fundamentos” em desenvolvimento de software?

Estudar os “fundamentos da computação” talvez não seja seu foco, nem o que você se dedicou a aprender recentemente. Talvez, porque as pessoas que te influenciam (seus modelos) não tenham dito para você que isso é importante. Talvez, porque seu chefe não tenha condições (técnicas, mesmo) de avaliar você por quanto você domina (de verdade) o que está fazendo. Mas, isso não muda o fato de que é difícil construir qualquer coisa sólida sem que os “fundamentos” tenham sido bem trabalhados.

NOTA: Não estudar os fundamentos talvez esteja te levando, inclusive, a adotar todos os padrões do mundo para fazer um cadastro simples. Você pode estar fazendo isso só porque alguém que você conhece e respeita deu a entender que esse é o caminho (não é! e certamente, ele diria o mesmo).

Em uma boa faculdade, estuda-se os “fundamentos”. Infelizmente, muita gente repete que o foco dos cursos de graduação deveria ser mais “prático”. Como acontece na matemática, quero acreditar que o problema é como o conteúdo é abordado, e não no conteúdo que está sendo abordado.

Não estou dizendo que educação formal ou certificações sejam o único caminho para aprender os fundamentos. Seguramente, qualquer um (acredito), com alguma disciplina pode entender e aprender qualquer coisa. De qualquer forma, sem a exigência de um currículo, o desafio acaba sendo muito maior.

Uncle Bob disse que somos os novos escribas (por favor, assista essa palestra). Realmente somos! O software está engolindo o mundo e nós, que trabalhamos com software, temos chances reais de termos algum protagonismo. Podemos mudar a sociedade para o bem ou para o mal. Há muita coisa em nossas mãos.

As oportunidades são enormes. Os desafios também. Precisamos ser profissionais e desenvolver profissionais. Precisamos de programadores de verdade, com bases sólidas. Os riscos são grandes demais para que sejamos uma classe egocêntrica de amadores remunerados.

NOTA: Não sou dono da verdade. Estou muito longe de saber tudo. Sei que, mesmo que queira, não saberei tudo nunca. Entretanto, todos os dias, há quase trinta anos (comecei a escever código na escola), tento aprender primeiro o mais importante.

Se você se sentiu ofendido, desculpe. Se você se sentiu incomodado, ótimo!

77 Comentários
  1. JOAO MANOEL FREITAS ROLIM

    Em 1° lugar, não precisa pedir desculpas por falar a verdade. O POST está ótimo me senti incomodado e rever meus conceitos, mesmo sabendo que a maioria das coisas que foi falada eu estudei na faculdade, vejo que algumas ainda estão estão em um nível raso.
    Vamos rever alguns fundamentos.
    Valeu!

    1. Elemar Júnior

      Obrigado pelo carinho, João. Não é fácil deixar o ego de lado e tentar ver os fatos de forma objetiva.

      Saber escolher uma boa estrutura de dados. Pensar em como o código irá se comportar em produção. Explicar um comportamento estranho do computador. Nada disso deveria ser um assombro para quem quer viver profissionalmente de uma atividade.

      Humildade, boa vontade e disposição para aprender são essenciais. Mas não são suficientes.

      1. Felipe Oliveira

        Bom dia.

        Na minha faculdade os professores sempre batem nessa tecla, mas ao meu ver o “problema” é que na faculdade, assim como nas escolas, os conteúdos de exatas são dados de forma muito corrida, é muito conteúdo em pouco tempo para se assimilar, o cérebro não respira, acho que deveria haver uma seleção do que é mais importante e se trabalhar em cima disto.

        Na minha faculdade por exemplo, a base de banco com álgebra relacional foi bem mais tranquila do que a de programação, posso estar falando besteira, mas vimos as matérias de banco com calma ao longo de toda a faculdade, não vimos bancos não relacionais, mas vimos os fundamentos dos bancos relacionais.

        Em redes também tivemos uma base muito boa, as matérias foram divididas ao longo do período, vimos muito protocolos, o modelo OSI que o nosso professor não deixava esquecer, questões de segurança, muita coisa baixo nível mesmo.

        Agora sobre os fundamentos de programação, principalmente no que tange a estrutura de dados tenho certa dificuldade no que diz respeito a aplicação de cada uma das estruturas, mesma dificuldade que tenho com a matemática, as vezes essas disciplinas se tornam maçantes por você só ver um monte de teoria e não entender quando aplicá-las.

        Eu tive Design Patterns agora e são muitos padrões, anti padrões, padrões da web, para mim que estou começando é um pouco confuso tanta informação ao mesmo tempo.

        *O senhor conheceria alguma fonte confiável para estudar esses fundamentos?

        Obrigado.

  2. Rogério dos Santos Fernandes

    Excelente post. Concordo com tudo nele, inclusive recentemente comecei a ler mais livros de fundamentos da teoria da computação, buscando melhorar o profissional que me tornei após 7 anos de profissão.

    Além do aspecto técnico, gostaria de salientar que precisamos melhorar do lado humano também. Tecnologia frequentemente é a área mais machista da empresa, com gente que faz piada homofóbica e vulgar o dia todo. Precisamos mudar isso, pois precisamos de mais pessoas que queiram ajudar a processar os dados do mundo.

    1. William Barbosa dos Santos

      Creio esta ser a terceira vez em menos de 1 mês que vejo alguém da área falar sobre fundamentos.
      O que falta agora é especificar seu entendimento por fundamentos. Palavra óbvia, mas que cada um entende a sua maneira.
      Por ex: fundamento pode ser como implementar um algoritmo de Hashtable no papel, no C e em javascript. Em cada um destes pode ser feito de forma diferente.

      1. Elemar Júnior

        Os conceitos para implementação de qualquer estrutra de dados se mantem quase inalterados. Independente da linguagem.

        Estrutras de dados e algoritmos. Seria um ótimo começo.

    2. Elemar Júnior

      Concordo com você.

  3. Luiz Estevam

    Primeiramente parabéns pelo post Elemar.
    Para ser sincero essa questão de fundamentos já vem me incomodando a anos, infelizmente não fiz uma faculdade de renome, acreditei que a grade curricular do curso me desse todos os fundamentos necessários e ao final percebi que faltava muito mais base.
    Como acompanho você, Bassi (link até este post), Juan Lopes, entre outros…sempre fiquei admirado pelo alto nível de entendimento de vocês e pela dedicação que vocês colocam em cada assunto, se percebe que não é superficial.
    Porém acredito que houve uma queda no ensino de algumas instituições e também o mercado acabou exigindo menos de seus candidatos, afinal bastava saber arrastar botões ou o framework x do momento e devo confessar que por um tempo acabei surfando nesta onda.
    Enfim, recentemente vi seu post sobre performance referente a uma expressão regular e achei fantástico e sei que me falta muito mais deste tipo de entendimento para gerar questionamentos que levem a outras soluções e portanto seria de grande valia se você pudesse criar um treinamento ou guia para fortalecer a base, nos ajudaria a saber por onde devemos começar e qual caminho seguir, Só uma ideia. Abraço.

    1. Elemar Júnior

      Obrigado pelo carinho, Luiz.

      Não tenho intenção de criar treinamentos para a área. Mas, de qualquer forma, venho tentando compartilhar esse tipo de conteúdo há mais de uma década.

      Há um livro excelente: “Cracking the code interview”. Ele pode ser bem divertido e ajudar a preencher lacunas.

  4. Ygor Nascimento

    Namoro desenvolvimento de software a muito tempo, e só a um ano atrás iniciei com uma meta meus estudos para passar a trabalhar com essa “gatinha difícil” mas que vale a pena. Seus pensamentos sobre a profissão sempre me chamaram a atenção, e penso exatamente como este post seu. Estou procurando aprender o “menos errado” possível, e esses posts me ajudam a sempre endireitar o caminho. Obrigado!

    1. Elemar Júnior

      Obrigado pelo carinho.

  5. Rafael do Amaral Silva

    Excelente provocação, espero que o próximo POST desta serie (Assumindo que se tornará) será por onde devemos começar a aprender os fundamentos. Ansioso por mais.

    “If you don’t know, the thing to do is not to get scared, but to learn.”
    ― Ayn Rand, Atlas Shrugged

  6. Antonio Maniero

    Muito bom, pena não ter tudo o que rolou na conversa que deu origem (ainda que fantasticamente resumido), mas eu sei que hoje algo mais longo ninguém lê, o que faz parte do problema apontado.

    Como eu sei mais ou menos o teor da resposta que vem aí eu tenho que reconhecer que o mercado está tão carente de profissionais que aceita todo mundo, até quem só tem sopa de letrinhas modernas no currículo, é uma pena, mas é sim uma realidade. Eu adoraria que fosse diferente e faço minha parte enquanto dá. Até me queimo por tentar incutir a ideia do fundamento, tem gente que realmente se sente ofendida por dizer que ela precisa disto, ela que ainda não domina o assunto acha que sabe o que precisa aprender. Também admito que é complicado querer dizer o que é bom para a pessoa, ao mesmo tempo que é contra producente não ouvir quem já trilhou esse caminho.

    Pra mim o mais importante é que as pessoas que ensinam outras deveriam sim se responsabilizar, até o limite que lhe cabe, de incutir a necessidade do fundamento sempre que possível, mesmo que a pessoa por uma razão ou outra (não gosta, não sabe, não vende bem) não ajude diretamente as pessoas evoluírem nesse aspecto, só de falar sobre a necessidade já é uma grande coisa.

    Se as pessoas aprendessem os fundamentos talvez não precisariam dar tanta volta como a gente vê muito por aí. E sai mais barato fazer mais simples porque aplica os fundamentos. E dá um orgulho tremendo, mais que dizer que sabe ABC ou DEF e nem sabe porque usa isto.

    Obrigado pelo artigo que eu classifico como necessário acima de outras características também muito importantes.

    1. Elemar Júnior

      Obrigado pelo carinho.

      Como respondi no primeiro comentário, saber escolher uma boa estrutura de dados, pensar em como o código irá se comportar em produção, explicar um comportamento estranho do computador – nada disso deveria ser um assombro para quem quer viver profissionalmente de uma atividade.

      Humildade, boa vontade e disposição para aprender são essenciais. Mas não são suficientes.

  7. Marcelo Neves

    Excelente Elemar. Compartilho do seu ponto de vista.

    Meu trabalho hoje é focado em fazer e treinar profissionais em descobrir e validar as reais necessidades do cliente. Da mesma maneira que você pontuou essa deficiência nos deve, percebo um gap enorme em análise. A maioria de nós prefere ficar na superfície escrevendo histórias e seguindo métodos que te blindam da realidade. Ou seja, temos PO’s e analistas que não fazem análise, e fogem dos fundamentos.

    Me questiono quase que todos os dias: Como mostrar para esses profissionais o valor dos fundamentos?

    1. Elemar Júnior

      Com resultados tangíveis. Há, certamente, bons cases que podemos usar como referências.

  8. Valeria Ramos

    Caro Elemar me senti incomodada com o tema. Parabéns pelo assunto abordado. Também tenho 22 anos de experiência na área de TI em desenvolvimento de software e sempre esbarro neste dilema. Também não sou dona da verdade. Naveguei por várias organizações. E em minha opinião existe um desalinhamento nas expectativas entre as áreas de negócio e a área de TI. As áreas de negócio querem um software funcionando se possível para a semana que vem e não se interessam como ele foi construído ou que arquitetura foi utilizada. Por outro lado quando mais arquitetura ou design patterns aplicamos, quanto mais perfeito queremos fazer o software, mais tempo levamos no desenvolvimento. E o que vejo é que geralmente o cliente não quer pagar por este tempo a mais. Para evitar desentendimento e longas reuniões desagradáveis os mais espertos acabam fazendo o que dá com o tempo que tem. Obrigada pela oportunidade.

    1. Elemar Júnior

      Como profissionais, deve ser nosso compromisso saber balancear dívidas técnicas. As vezes, há mesmo uma janela de oportunidade que precisa ser aproveitada. Entretanto, é importante que deixemos claro para os gestores o aumento no custo de manutenção causados por essa dívida.

      O post que segue é direcionado aos gestores:

      https://www.eximia.co/pt/2019/06/01/transformacao-digital-fica-bem-mais-dificil-quando-remuneramos-o-amadorismo/

  9. Rafael

    O texto é excelente! Quem se sentiu ofendido são os “profissionais” que entram na área porque “dizem que dá dinheiro”, “está na moda”, “não precisa estudar, é só copiar e colar”. Muitos “profissionais” usam uma tecnologia, um framework ou uma linguagem e não sabem fundamentos básicos, não sabem qual problema aquilo resolve, ou como e porque resolve. Muitos “profissionais” sabem dar manutenção em um projeto de uma determinada tecnologia, mas não sabem criar um projeto do zero dessa mesma tecnologia. Como é possível isso? Simples, porque realmente não sabem sobre a tecnologia, apenas pensam que sabem. É por isso que é importante lembrar: ANTES de escolher tecnologia, arquitetura, framework, linguagem ou banco de dados, entenda o problema a ser resolvido. A área não é um playground, pra brincar de fazer escolhas pessoais que no fim comprometem todo um projeto. A área é um meio para resolver problemas e tornar a vida humana mais fácil e prática. Não somos pagos pra fazer escolhas pessoais, mas para resolver problemas da melhor e mais eficiente forma possível.

    1. Elemar Júnior

      Exato.

  10. Allef Gomes

    Olá. Primeiramente, desculpe eu colocar o meu linkedin ao invés de um site de portifólio, é que ainda não criei um.

    Eu sou desenvolvedor web/mobile fazem 2 anos e ultimamente eu estava pensando realmente sobre isso. Um dos programadores que trabalha comigo é desenvolvedor sênior e muita coisa ele se baseia em fundamentos.

    Estou lá faz um mês, mas o que eu tenho aprendido está me fazendo pensar sobre como fazer as coisas da melhor forma, em ter um fundamento mais sólido antes de fazer as coisas.

    E quero te dar parabéns pelo post e dizer muito obrigado pelas verdades ditas.

    Não sei se posso, mas queria te deixar uma pergunta. hehe

    Eu estou no 7 semestre da faculdade e com a experiência de 2 anos de trabalho e realmente tem um niverso que preciso aprender.

    *Como estudo realmente os fundamentos necessários para ser esse desenvolvedor que você vem a comentar nesse post?*

    Abraços.

    1. Elemar Júnior

      Comece por estruturas de dados e algoritmos.

      Sendo bem prático, recomendo um livro chamado “Cracking the code interview”

  11. Uerlen Santos

    Elemar, parabéns pelo post!
    Vai tirar muita gente da zona de conforto e eliminar algumas desculpas que se tornaram padrão para alguns (“Na minha maquina funciona, haha”).

    1. Elemar Júnior

      Esperamos que sim!

  12. Alessandro Trovato

    Elemar, parabéns pelo texto! Excelente abordagem. Por a mão na consciência e sem egos averiguar o quanto somos falhos nos faz pensar.
    Sugiro que em próximos posts compartilhe também qual a melhor forma de obter esses fundamentos com solidez. Qual o caminho das pedras? Há uma geração inteira entrando para esse mercado que precisa de um direcionamento.
    Fiz também uma pós que pensava ter uma ótima plataforma de conhecimento para exercer minha função mas no final vi que estava redondamente errado!
    Até a próxima !

    1. Elemar Júnior

      Comecemos por estruturas de dados e algoritmos. 🙂

  13. Daniel Pilon

    Excelente post, Elemar. Fica só a sugestão de fazer um próximo como gancho desse incentivando um path de conhecimento fundamental para cientistas da computação.

  14. Fernando Seguim

    O post é excelente, e bastante provocativo, e na minha opinião vem num momento oportuno, dado principalmente a ascensão (na última década principalmente) da comunidade técnica como provedora de conteúdo.

    Concordo com a maioria dos comentários, pois também me sinto desconfortável (e não é de hoje). Mas, também, sinto falta de (propostas) soluções.

    É um fato que existem muitos profissionais mal preparados (talvez sejamos esses, só não sabemos ou não queremos acreditar), mas como mudar esse cenário?

    Temos caminhado para o consenso de que a academia (brasileira) não está sendo capaz de suprir o preparo técnico de nós profissionais de software. Sejam os cursos tecnólogos, bacharéis e pós-graduações, todos visam entregar um conteúdo genérico (nesse caso usando o significado ruim do termo) e que atendam a expectativa e demanda do mercado. Por exemplo, frameworks JS, mobile e agile, que também possuem sua importância na formação de um profissional de software. Cobrar dessas IEs um conteúdo mais rico em fundamentos é parte de nosso direito, ou melhor, nossa obrigação enquanto alunos/consumidores.

    Por outro lado, tem ficado à cargo da comunidade suprir esse déficit técnico, compartilhando conhecimento em fóruns, post e eventos (presenciais e online), no entanto tenho sentido que isso não é o suficiente. E aqui que acho que a colocação do Elemar “Como acontece na matemática, quero acreditar que o problema é como o conteúdo é abordado, e não no conteúdo que está sendo abordado.” mais significativa e provocativa.

    Tenho pensado em formas de tornar esse conteúdo que é importantíssimo para nossa profissão ser mais acessível e compreensível, pois alguns, se não a maioria, só são compreendidos após exemplificar muito. A acredito que é assim porque a forma como como são apresentados é morosa demais.

    Na prática, hoje conteúdos que dão foco em fundamentos competem a atenção do público, com outros conteúdos muito “mais atrativos e menos valorosos”, assim como um documentário bem formulado e produzido compete a atenção do espectador, com o cara da banheira de chocolate.
    Assim como os profissionais devem se preocupar em buscar esse conhecimento fundamental, os que se propões a compartilhar precisam buscar formas de fazer isso de maneira mais convidativa.

    1. Elemar Júnior

      Não é fácil! Mas, de uma forma geral, minha recomendação seria de “consistência e persistência”.

  15. Flavio Peinado

    Excelente provocação.

    Temos sempre que buscar um aperfeiçoamento.

    Mas como podemos (provocação) melhorar nossa categoria quando o entorno perdeu nível.

    Hoje o gerente é desorganizado (é ele que organiza o andamento do projeto), o usuário de negócios não tem a compreensão do trabalho dele e muitos menos como colocar isso em uma especificação.

    Mas tá todo mundo pós graduado.

    O convite é entender nosso papel neste mundo moderno.

    Não vivemos em um mundo de software e sim de gestão e assimilação de conhecimento. Sem isso seremos tirinhas vivas do Dilbert

    1. Elemar Júnior
  16. Felipe Lima

    Parabéns pelo tópico, compartilho da mesma opinião. Porém, eu entendo que o mercado de TI ainda é muito imaturo e um tema como este ainda não é um problema mensurável, logo, dificilmente o mesmo é gerenciavel criando certo comodismo por parte dos desenvolvedores.

    Eu entendo que ainda chegaremos lá, o mercado de alguma forma irá se ajustar e exigir qualidade nas entregas.

    Por enquanto, eu não vejo esse tema como prioridade. Acho que existem outras coisas, que não necessariamente estão relacionadas a fundamentos, mas sim a processos que deveriam ser priorizadas.

    De qualquer forma eu adoraria que o tema fosse uma realidade, que pudéssemos exigir essa qualidade. Faço parte de um mercado relativamente pequeno, porém muito demandado e a realidade é assustadora. Infelizmente o mercado não está em posição de exigir muito, existe muita demanda vs. pouca mão de obra.

    1. Elemar Júnior

      Não podemos ser reféns. Qualidade não deveria ser opcional. Veja o impacto para negócio:

      https://www.eximia.co/pt/2019/06/01/transformacao-digital-fica-bem-mais-dificil-quando-remuneramos-o-amadorismo/

  17. Eduardo Pires

    Parabéns pelo post Elemar.
    Eu sempre fui a favor da provocação como forma de motivar!

    Como eu havia prometido, respondi sobre este assunto no post que acabei de escrever:
    https://www.eduardopires.net.br/2019/06/a-caracteristica-mais-importante-de-um-programador/

    Abs!

    1. Elemar Júnior

      Como falamos no grupo privado, É hora de você começar a levar suas duas BMW (como enfatizou) para mecânicos humildes e cheios de vontade de aprender. Né? 🙂

      Brincadeiras a parte, concordadmos em discordar. Certo?

    2. Elemar Júnior

      Em tempo, como disse, não uso o Github para fins didáticos.

      Meus projetos, que estão públicos e inacabados são um índice reverso e um workflow. Aceito sua ajuda para simplificar meus projetos se me permitir simplificar o seu.

      1. Eduardo Pires

        Elemar, eu defendi que o mercado não vê todo programador de uma única maneira, assim como um mecânico que conserta um fusca talvez não conserte uma BMW.
        Inclusive uma coisa que eu sei fazer muito bem é escolher mecânicos e desenvolvedores, acredite! É quando te peço para ter a tal visão de “mundo real”.

        Somos profissionais premiados por dividir nosso conhecimento com a comunidade, lembro que me disse que o seu GitHub não é para ter projetos de referência, que seus códigos são privados e quando experimentou ter projetos de referência não ficou satisfeito com o resultado. Acontece!

        Eu também vendo soluções, serviços e treinamentos mas além disto estou focado em compartilhar com a comunidade um pouco do que sei, se alguém aplicou errado o que de forma gratuita eu dissemino eu não me julgo culpado por isto, eu sigo compartilhando e inspirando pessoas até por que uma de nossas premiações é justamente sobre isto, correto?

        Assim que dei o primeiro commit no Equinox eu pedi seu feedback e até um PR de melhorias se tivesse no que opinar, até hoje espero pelos dois, mas já estive em seu blog para ler uma crítica sua ao meu projeto (até lembro que me ligou para avisar que o faria). Enfim, com certeza aceito.

        Abraços!

  18. Haz

    Obrigado por fazer a provocação e trazer a discussão à tona. Eu vou devolver a provocação e oferecer um contraponto pra tentar enriquecer a discussão.

    A ideia apresentada no seu texto, principalmente pelo fato de você estar defendendo a faculdade, me lembra do fracasso que é o nosso sistema de ensino, do fundamental ao superior, onde passamos anos estudando conceitos abstratos sem nunca usá-los no mundo real.

    Saber “como a memória que seu código está usando é alocada e descartada”, “arquitetura de computadores”, “estruturas de dados”, “implementar um hashtable no braço” é inútil se você nunca precisou disso.

    É melhor você passar anos criando coisas e impactando positivamente a vida das pessoas desde o dia zero do que estudando sobre fundamentos dos quais a maior parte você nunca vai precisar pra atingir seus objetivos.

    No percurso, você vai precisar aprender fundamentos relacionados àquilo com o qual você está trabalhando, e não necessariamente serão fundamentos de computação.

    O único fundamento que você precisa pra trabalhar com TI (e provavelmente com várias outras áreas) é saber aprender, saber ler, pesquisar, absorver conhecimento. E existem técnicas pra isso. E então você vai aprendendo conforme a necessidade. É principalmente nisso que a escola e a faculdade brasileira falham. Eu teria perdido 4 anos da minha vida na PUC-Rio se, em vez de me juntar com colegas e desenvolver projetos reais, eu tivesse me dedicado às disciplinas.

    1. Elemar Júnior

      Haz, obrigado por comentar.

      Me permita discordar de alguns pontos:

      1. Não defendi a faculdade, nem o sistema de ensino. Apenas destaquei que o currículo ajuda a orientar estudos.
      2. Indiquei no texto e repito aqui: como você seleciona a estrutura de dados correta se não sabe como elas funcionam? Como explica problemas de arredondamento ao cliente? Como pode colocar um código em produção, sem “topar” CPU e memória sem entender como funciona alocação/desalocação?
      3. É muito perigoso pautar como “único fundamento” saber aprender. Há um mínimo que precisamos saber para poder avançar com segurança. Não acha?

      Obviamente, tudo isso só tem valor se colocarmos em prática para melhorar o mercado e a vida das pessoas. Nesse ponto, concordamos.

      1. Haz

        Quando você precisar explicar qualquer coisa ao cliente, você tem que se preparar. Você tem que pesquisar sobre o que você vai falar, mesmo que você ache que você já sabe o suficiente. Estar sempre disposto a aprender e praticar o aprendizado diariamente é o principal recurso que você pode ter nessa área.

        Essa deveria ser a principal sugestão que deveríamos estar fazendo a novos desenvolvedores. Do contrário, corremos o risco de excluir pessoas que não têm condições de ficar anos estudando tais fundamentos antes de se tornarem profissionais. Elas não precisam entender alocação/desalocação e estruturas de dados para colocar em produção sites estáticos em um CDN, por exemplo.

        Em um futuro não muito distante, seres humanos não estarão escrevendo mais código de qualquer forma. Saber aprender será mais do que necessário.

        1. Elemar Júnior

          Haz, obrigado pelo comentário.

          Mas, como as pessoas vão saber o que é e quando usar um cdn? Aprendizado diário?

          Entendo seu ponto de vista. Concordo que aprender a aprender é fundamental. Mas não podemos parar nisso. Nem mesmo nos ofender quando alguém indicar que há um gap (raramente priorizado a percorrer)

          1. Haz

            Elas vão saber quando pesquisarem sobre “como criar um site”, que é o objetivo concreto delas. Termos como CDN vão surgir e ela vai ter que se aprofundar.

            O caminho é o inverso: primeiro surge a necessidade, e então você aprende o que precisa.

            Acho que concordamos que “não podemos parar nisso”.

        2. Elemar Júnior

          Vamos assumir que estamos falando de dois tipos de conhecimento aqui?

          O primeiro, relacionado com tecnologias, frameworks, recursos técnicos e afins. Nesse caso, concordamos em absoluto.

          O segundo, relacionado com conceitos fundamentais: estruturas de dados, algoritmos, … Nesse caso, TAMBÉM CONCORDAMOS. O problema, é que o momento em que o programador precisa desses conhecimentos é o momento em que resolve parar de “brincar” e começara programar. Logo, ….

  19. Tiago de Freitas Lima

    Olá, Elemar,

    Gostei bastante do texto, e acho que, de fato, é um debate necessário. Se me permite um comentário,

    Acho que a profissão de desenvolvimento de software tem algumas nuances, e seguiu um caminho estranho pelo próprio desenvolvimento da tecnologia: na minha visão, hoje,
    estranhamente, nós já trabalhamos “pouco” com os fundamentos da computação propriamente ditos pelo fato de que o tempo adicionou camadas e camadas de abstração
    sobre esses detalhes. Eu considero isso importante e necessário, e a meu ver foi uma das coisas que fez a indústria do software ter se desenvolvido como se deu. Mas houve consequências. Se me permite, vou dar alguns exemplos para detalhar meu ponto de vista.

    A primeira vez na vida que fiz um “código” foi em Assembly em um curso de Eletrônica no SENAI e, de fato, eu precisei aprender coisas sobre o funcionamento de um processador e memória. Mas será que, hoje, isso é mesmo necessário para escrever, digamos, uma aplicação web? Saber como funciona alocação de memória é interessante, útil e relevante, mas será absolutamente imprescindível? Perdoe-me, mas eu acho que não. Naturalmente, isso depende do contexto, mas não acho que seja algo como isso que separe um “amador” de um “profissional”.

    Eu concordo que os fundamentos são importantes em todas as profissões, inclusive na nossa. Mas será que, na nossa profissão, alguém que não conhece profundamente tais fundamentos não conseguirá fazer um software de qualidade e bem escrito para atender a necessidade que ele deseja? Sim, talvez essa pessoa não esteja fazendo o software mais rápido do planeta, ou que não esteja otimizado para uma hardware específico, mas isso faz dessa pessoa um “amador”? Desculpe, mas não acho.

    O seu exemplo sobre hashtable é interessante. Pessoalmente acho estruturas de dados importantíssimo e fundamental. Então, digamos que alguém estudou o assunto profundamente e agora sabe implementar, digamos, uma árvore rubro-negra. Pergunto: porque essa pessoa deveria (re)implementar uma árvore rubro-negra? Muitas linguagens oferecem essas estruturas de dados; eu acho importante conhecê-las justamente para habilitar o programador a saber o que usar e quando usar (digamos, quando usar uma lista indexada ou ligada, etc). Mas eu não julgaria alguém como “amador” por, digamos, não saber implementar com facilidade uma hashtable. Com todo o respeito à sua opinião, considero mais importante ele conhecer os fundamentos de modo a saber escolher as ferramentas adequadas.

    Enfim, hoje existem camadas e camadas de abstrações que separam o código escrito em uma linguagem de alto nível (Java, C#, Python, etc) de como a coisa realmente funciona no “bare metal”. Eu não vejo isso como um problema, e sim como algo ótimo. E considero que isso torna ainda mais importante conhecer os fundamentos: quando se conhece a base, o motivo de determinadas coisas serem como são, se consegue trabalhar melhor, tomar melhores decisões e utilizar melhor todas as coisas à disposição para escrever um software de qualidade.

    Eu também acho uma pena que alguns desenvolvedores não dêem importância a esses detalhes e acreditem que desenvolvimento de software é saber usar frameworks; ora, em algum momento, alguém escreveu aquele framework. E provavelmente esse alguém conhecia melhor tais fundamentos; conhecia tanto que os abstraiu para simplificar a vida de outros. O desenvolvimento de software sempre tendeu a adicionar tais facilidades e hoje é muito mais simples escrever um programa do que era no passado. Eu não acho isso algo ruim, e acredito que você e nossos colegas também não acham. Mas concordo totalmente que para nós, que temos software como profissão, isso não é o bastante. Precisamos conhecer as bases das coisas.

    Obrigado.

    1. Elemar Júnior

      Obrigado por compartilhar. Concordo com você em quase tudo.

      Realmente, as abstrações vieram para facilitar e acelerar o processo de desenvolvimento. Entretanto, precisamos ter o mínimo de preparo para, pelo menos, saber que abstrações usar.

      Quantas pessoas, na comunidade desenvolvedora, sabem o que é uma árvore rubro-negra (ou vermelho e preto)? Arrisco a dizer que bem poucas. Agora pense no mundo de oportunidades que ficam escondidas aí?

  20. Breno Duque Estrada Queirós

    Parabéns pelo post! É uma questão que eu mesmo já questionei sobre mim mesmo. Obrigado por contribuir dessa e de todas as formas que contribui para a comunidade!

    1. Elemar Júnior

      Obrigado pelo carinho.

  21. marcio

    A maioria dos desenvolvedores é composta por amadores mesmo. É como se se propusessem a realizar cirurgias depois de assistir o tutorial do fabricante de bisturi. O paradigma atual é o FOD – Framework Oriented Development. Se eu fosse cliente, imploraria: não me FOD!!
    Sobre descobrir se um algoritmo ou implementação escala ou não, sim, é possível fazer isso através de testes de performance. Não é só tuchar coisa no jMeter. Tem que ter fundamento e técnica para isso, manjar de SOs, teoria das filas, bancos de dados, etc. Mas dá pra fazer sim, com um ambiente de homologação em escala e foco na identificação de “cotovelos” no tempo de resposta e consumo de recursos.

    1. Elemar Júnior

      Márcio, dois pontos:

      1. Assumindo que seja suficiente, não deveríamos perguntar aquilo que já sabemos. Veja o custo de fazer testes dessa escala para verificar que um código não vai se comportar bem?
      2. De qualquer forma, você mesmo realça que para fazer bem os testes é preciso conhecer os fundamentos.

      Enfim.. mesmo que concordemos em discordar, gostei do seu ponto. Obrigado por compartilhar!

  22. Vinícius Mamoré Caldeira de Oliveira

    Muito obrigado mais uma vez Elemar, sua escrita agrega muito para a comunidade, me senti ofendido e incomodado! Hahaha

    Um post sobre o que são os fundamentos seria interessante para complementar.

    Abraço!

    1. Elemar Júnior

      Há muita coisa boa já escrita. Bons livros de estruturas de dados e algoritmos seriam bons pontos de partida.

  23. Carlos

    Muito obrigado por tal perspectiva, tenho considerado isso nos últimos anos e me direcionado a resolver tais lacunas.

    1. Elemar Júnior

      Obrigado a você pelo carinho.

  24. Danilo Andrade

    Eu e meus colegas tivemos basicamente essa mesma discussão está semana. Hoje em dia a maioria dos programadores apenas escrevem código sem saber realmente o que está sendo feito, não sabem como realmente funciona um algoritmo.

    A regra é entregar o projeto.

    1. Elemar Júnior
  25. Luiz Lula Rodrigues

    Elemar, todo desenvolvedor de software profissional é um cientista da computação?

    Admiro muito meus amigos que entendem profundamente sobre algoritmos, estrutura de dados e demais fundamentos da computação. Até hoje os entendia como “cientistas da computação”. Seriam estes os únicos desenvolvedores profissionais, e todo o resto, que não entende tanto dos fundamentos da computação, desenvolvedores amadores remunerados?

    1. Elemar Júnior

      Olá Luiz.

      Como escrevi no primeiro comentário: saber analisar a complexidade de um algoritmo, prever o impacto de seu código na memória e na CPU e explicar comportamentos aparentemente “estranhos” do computador não te torna um cientista.

  26. Keith

    Olá, estou em Portugal tem 1 ano e até a presente data não escuto falar em Arquitetura, a impressao que tenho é que não existe o perfil do arquiteto de sistemas que na minha opinião seria o maior responsável, claro junto ao programador, de construir e escalar um sistem. Outra critica que faço aqui em Portugal é que estão sempre querendo desenvolver sistema com a metade dos recursos que deveria ter, não se desenvolve sistemas como se faz com apps e arquitetura é uma coisa seria.

  27. André Mendes

    Elemar, boa tarde! Fantástico post, já a muito tempo estou incomodado por não saber tão bem os fundamentos como você menciona, pode, por gentileza, fazer indicações de materiais completos e que irão nos proporcionar esse valor que buscamos? Li seus posts sobre lead e stack, infelizmente o mercado não da tanto valor à isso quanto deveria, temos que estudar hoje mensageria, escalonamento, clouds e é porque o mercado pede isso, mas humildemente peço fontes para que possamos agregar esse valor perdido. Obrigado

    1. Elemar Júnior

      Quando for estudar mensageria, estude protocolos de comunicação. Quando for estudar escalonamento, entenda os limites. Cloud? Entenda como não fritar processamento atoa.

      Comece com estrutura de dados e algoritmos.

  28. Sergio Artero

    Obrigado pelo Post Elemar. Certamente é uma cutucada dessa que precisamos de vez em quando para nos colocarmos em nosso lugar e falar “Péra, não é por ai”.

    Admiro bastante suas ideias e a forma que as expõe.

    Que venha mais posts como este… Tapa gentil na cara de quem esta deixando o ego inflar em uma profissão maravilhosa como essa. Me senti sacudido, e isso é muito bom!!

    Abraços e até mais.

  29. João Pedro

    Então, vou compartilhar o meu pensamento aqui e algumas situações que vivi e tenho visto.

    Comecei a fazer faculdade de Engenharia de Software na UDESC em 2017. Eu não sabia quase nada, só tinha um pouco de experiência com Delphi (sim, Delphi). Hoje, na 5ª fase, devo muito por tudo que aprendi. Vi arquitetura, redes, sistemas operacionais, algoritmos/estrutura de dados, engenharia de requisitos, UX/UI… Enfim, muitas coisas.

    Porém, como nem tudo são flores, não posso dizer que a faculdade é mil maravilhas e muitas vezes criava-se um sentimento entre os colegas de: “E o mercado de trabalho? E as tecnologias mais atuais?”.

    Em 2018 eu arrumei um estágio em uma empresa aqui da minha cidade. Lá comecei a trabalhar com PHP, jQuery, JavaScript, HTML e CSS. E sabe a melhor parte disso? A empresa não usava e até hoje não usa nenhum framework. CSS tudo feito na mão, sem bootstrap, materialize. PHP também, sem nada, nenhuma lib. A única coisa que usávamos era o jQuery pro JavaScript (apesar de ter bastante coisa feita com javascript puro).

    Tudo que aprendi lá foi muito importante para mim e aliado ao conhecimento de faculdade me ajudou muito. Hoje, infelizmente, o que mais vejo é uma galera sem paciência, que já quer saber React sem nunca ter feito uma classe em javascript puro. Querendo usar axios mas nunca ter feito uma requisição com xmlhttprequest. Usar material UI sem nunca ter aprendido flexbox. Enfim, acredito que deu para entender.

    Por isso, na minha opinião, se você, assim como eu, não tem disciplina para estudar em casa conceitos que muitas vezes não são tão simples, talvez a faculdade lhe ajude nisso, assim como me ajudou.

  30. Maicon Carlos Pereira

    Elemar, parabéns pelo artigo.

    Sou formado em Ciência da Computação e os temas que você mencionou que são fundamentais foram abordados durante a graduação. Muitos deles com disciplinas específicas como: Estrutura de Dados, Complexidade de Algorítimos e Arquitetura de Computadores.

    O que você pensa sobre a “Regulamentação” do Profissional de TI? Não tenho uma opinião formada sobre isso, mas acho que o tema cabe dentro da discussão que você promoveu.

  31. Diego Schmitt Figliero

    Ótima reflexão!!!!

  32. Marcelo Magno Rodrigues

    Baita artigo!

    Concordo plenamente que estudar as bases de tudo o que produzimos é ponto de virada para se obter excelência no nosso trabalho. Estudar tecnologias é útil, como um mecânico que conhece novas ferramentas. Já estudar o fundamento que permeia as tecnologias é o que permite selecionar as mais adequadas, e usá-las da melhor forma.

    Mas tenho que discordar de um ponto muito importante: profissionalismo não é profundidade de conhecimento, nem embasamento teórico. O que diferencia o profissional do amador não é o quanto um ou outro entende da área em que atua. Profissionalismo reflete previsibilidade.
    O bom profissional é aquele que resolve o meu problema, sem criar outros, sem surpresas, e sem incomodação advindas de decisões que este tomou.
    Um pipoqueiro profissional vai chegar na hora certa no seu ponto diariamente, com roupas e apetrechos limpos, pipoca crocante, com sal na medida.
    Para isso, vai manter um estoque de milho para pipoca em casa como reserva. Da mesma maneira que não vai deixar faltar azeite um dia sequer. Ele terá um processo de produção controlado, em que conhece as variáveis, para ter a pipoca no ponto a cada porção.
    Ele não precisa entender uma vírgula de química para dar um bom serviço aos seus clientes.
    O que torna a pessoa um amador remunerado não é o quão superficial está seu conhecimento teórico sobre a área em que atua, mas o quanto ela se propõe a fazer coisas que exigem conhecimentos que ela não domina o suficiente para dar garantias ao seu cliente.

    Quer ser profissional? Não arrisque a confiança dos outros apostando em conhecimentos que você não tem.

    1. Elemar Júnior

      Olá Marcelo! Adorei a sua definição. Mas, por base nela mesmo entendo que concordamos ainda mais.

      Você considera que é possível fazer qualquer coisa útil sem usar estruturas de dados? Sem usar conexões e comunicação com a rede?

      Adorei mesmo sua referência. Obrigado por compartilhar.

      1. Marcelo Magno Rodrigues

        Concordo plenamente que o desenvolvedor precisa sim saber bases de teoria da computação, processamento pesquisa e estrutura de dados, uma vez que, diferente do do programador, o desenvolvedor se propõe a compreender um problema e evoluir uma solução para este. Mas há muitos processos simples que podem ser automatizados sem que problemas de consumo desnecessário de processamento e memória, entre outros, tenham grande impacto no produto final. E ainda, que não necessitam manutenção, então mesmo um código mau estruturado ainda não vai impactar o cliente.
        Muitos programadores trabalham com Delphi justamente por não quererem se preocupar com questões computacionais profundas, e nem por isso são menos profissionais. Acho que vale lembrar que conhecimento é custoso. Um cientista de computação com especialização em processamento distribuído e paralelo, e certificado em uma ou outra linguagem, cobraria um preço meio alto para fazer um sistema de padaria, pois a hora desse profissional é bem cotada no mercado. Mas o sistema da padaria precisa ser feito por alguém. Com isso vou supor que existe mercado pra toda qualidade de software, dos mais altos aos mais baixos requisitos.
        Meu ponto vem agora: quando alguém com menos conhecimento é mais profissional?

        Digamos que o filho do sócio, que está no 7o semestre de engenharia de computação se propõe a fazer o sistema da padaria. Ele tem conhecimento mais que necessário já. Mas o guri não quer nada com nada, e está todo mundo esperando o software ficar pronto, e meio com medo de que ele largue de mão e não termine nunca.

        Agora digamos que o tiozinho, que tem só o ensino médio, e fez um curso de Delphi e php pra ter uma profissão, se propõe a fazer o sistema. Ele, se portando como profissional, vai calcular um prazo, e um custo do para o software, baseando no valor das suas horas. Ele vai alocar tempo na agenda dele para que o trabalho ande nos conformes. Ele consegue visualizar o serviço do início ao fim, antes mesmo de começar, e ainda, conforme a pressa do cliente, vai saber dizer se precisará de ajuda para concluir.

        Qual dos dois tu considera mais profissional?

        Na minha simplória opinião, o profissionalismo vem muito mais de como nos posicionamos no mercado, e da nossa postura em relação ao trabalho que aceitamos. O tiozinho deixaria de ser profissional se aceitasse fazer algo que vai além das capacidades dele, pra não perder o serviço. Estar constantemente aprendendo e buscando nos agrega como profissionais, na medida que torna nossas horas mais produtivas, e quanto mais qualificados, mais confiáveis são nossas soluções.

  33. Carlos Junior

    Elemar, parabéns pelo artigo.

    Realmente é uma provocação, que gera uma reação nas pessoas. Gerou em mim, pois percebia algumas fraquezas, mas as mantinha. Me acendeu um sinal de alerta e vejo que preciso rever alguns conceitos.

    Abraços

  34. Anonimo

    Eu venho sentindo essa dor desde que comecei a trabalhar na área. Estou terminando a graduação e estudei tudo que você falou, mas não tenho oportunidade de usar com frequência e a maioria das pessoas que conheço que trabalham em outros lugares também não, porque não é isso que os gestores querem, como foi falado. Já pensei ser uma questão do local onde se trabalha, mas parece ser algo extremamente comum e a regra, não uma exceção. Para ser sincera, já inclusive esqueci muita coisa porque a oportunidade de usar nunca veio. Ninguém tem interesse em você passar um tempo criando um algoritmo que vá escalar bem, se estiver funcionando é o suficiente. Ninguém quer saber da sua análise da performance de um trecho de código. Diversas vezes que eu estive usando um tempo para esse tipo de análise foi explicitamente solicitado que eu não o fizesse e partisse para a primeira solução minimamente funcional. Colegas que tratam dos problemas assim são inclusive promovidos primeiro. Eu até entendo, por um lado, porque em vários contextos de desenvolvimento hoje em que mudanças enormes ocorrem o tempo todo, você pode acabar utilizando um tempo a mais para realizar uma solução melhor que um dia depois não vai ser mais necessária, porque o projeto mudou radicalmente do dia para a noite. Mas sinto que é grave a perda que temos quando não temos esses fundamentos ou quando eles se tornam irrelevantes perante nossos gestores. Outra coisa é que ninguém vai liberar um tempo para que seus funcionários com tais deficiências aprendam. Já não se libera tempo em empresa nem para aprender o framework da moda que será usado no projeto, imagine os fundamentos. Então apesar de concordar com o post, não vejo isso acontecendo até ser do interesse de gestores, que também não vejo ocorrendo tão cedo. Se você observar, isso não é apenas um problema da indústria de TI, é um problema cultural geral de um mudo extremamente acelerado, onde qualquer coisa que exija um tempo a mais perde vários pontos de prioridade. Os cursos de TI estão em massa se transformando em cursos mais “práticos” (aka aprender o que está sendo usado no mercado hoje e deu) por exigência do mercado e dos próprio alunos, mas isso também está acontecendo com outras áreas, até nas mais tradicionais. Existem pessoas formadas em enfermagem plenamente qualificadas que não conseguem emprego porque são enfermeiras, e não técnicas em enfermagem.

  35. Leandro Gonçalves de Oliveira

    Excelente publicação, Elemar. O único ponto que discordei é sobre saber implementar um hashset ou
    um hashtable na mão, pois acredito que isso não seja realmente importante, porém saber as diferenças das propriedades de um hashset e uma heap é fundamental. Isso converge para o seu primeiro ponto de análise de algoritmos. Aprendi isso já faculdade e me ajuda muito, principalmente a escolher a melhor estrutura de dados para o algoritmo que preciso desenvolver.

    Sobre essa briga de júnior/sênior, acredito que acontece basicamente por questões de remuneração. Por quase todas as empresas que passei, salário depende muito do cargo, e algumas vezes dos amigos superiores.

    Abraços!

  36. Odairto Martin

    Diante de tudo que foi falado, acredito que parte da responsabilidade desse nível (raso) de “profissionais” deve-se aos “tutoriais” de como fazer isso e aquilo, copiar e colar tem sido o “bypass” dos fundamentos, do entendimento e do por quê implementar algo da forma escolhida. Talvez a urgência que os projetos exigem tem participação nisso, enfim, é de fato um tema para sem pensar, refletir e discutir.

    Obrigado pelo post. Me contribuiu para reforçar a minha necessidade de se aprofundar mais no que me “atrevo” a trabalhar.

  37. Luis

    Doeu, heim? rs

    Eu sou bastante deficitário nesses pontos que você levantou, já tinha noção disso, mas estava postergando isso, pois hoje em dia saber 10000 ferramentas parece fazer mais sentido, e vamos meio que tentando acompanhar a correnteza.

    Se você não se importa uma pequena sugestão: escreva mais sobre o assunto e com mais dicas de como tapar essa lacuna.

    Abraços

  38. Marcio Hiroyuki

    Esse post me tira um pouco o peso da síndrome do impostor e me faz refletir que estou no caminho certo! 🙂

  39. Hudson Leite

    Elemar, parabéns pela exposição.

    Também não consegui capturar nada de ofensivo no seu texto. E isso, acredito, nos dias de hoje, já é muita coisa.

    Também já tenho bastante Kms rodados para entender que precisamos de tempo para amadurecer e com esse perder algumas certezas e ganharmos a capacidade de questionar, principalmente, a nós mesmos.

    Sempre acreditei que os conceitos são fundamentais para evitar a prática ingênua, mas sem o exercício (tentativa; erro; ressignificação; nova tentativa) aliado, não seria efetivado o crescimento cognitivo.

    Hoje sei da importância de acompanhar mestres e sábios para nos orientar e subsidiar as decisões de nossas rotas de aprendizado (daí porque considero o “autodidatismo” tão subentendido quanto o “mérito”).

    Portanto louvo seu esforço em manter os pequenos Padawans motivados em buscar conhecimento, bem como os Jedi, serem mais lenientes com os jovens incautos.

    Abraço.

  40. Marco Damaceno

    Primeiramente, parabéns pelo artigo! Soube desse seu post através do podcast da Lambda 3.

    Sobre o tema, concordo que estamos num momento em que temos mais programadores do lado amador do que profissional. Penso que esse fenômeno não é exclusivo da área de TI. Outras áreas estão com esse mesmo problema. Por exemplo, biologia, farmácia, veterinária. Tem pessoas que trabalham nos laboratórios que não sabem fazer pesquisa de base, fundamentais para se chegar mais rápido a uma solução para um eventual problema. Sem base, perde-se a criatividade. Quando tem uma dificuldade, ficam paralisados sem saber o que fazer e colocam a culpa no material utilizado.

    O que quero dizer com isso é que, devido a abundância de informação aliada à constante falta de tempo das pessoas e automatizações fizeram com que muitos passasem batidos pelos fundamentos. Muitas vezes pra entregar resultado dentro de um prazo. Com isso vem os bugs que já estamos acostumados, mas não deveríamos.

    Sair dessa situação acho bem difícil. Ouso dizer impossível.

  41. Anônimo

    Muito legal seu texto Elemar, concordo com todos os pontos. Queria aproveitar para trazer o mesmo problema para um outro contexto. Tudo isso dito você acredita se aplica também a pessoas palestrando em eventos de tecnologia? Tenho visto muitas pessoas palestrando e abordando temas de uma forma muito rasa apenas promovendo seus nomes por falarem constantemente em eventos sobre temas que da para aprender lendo a documentação sem muita dificuldade. Em resumo, você acredita que na comunidade há muito amador se colocando como guru de tecnologia?

  42. Renata Coelho

    Sinto um alívio incrível ao ler esse texto. Eu amo entender os fundamentos de tudo que faço e com grande frequência escuto que ninguém usa teoria na hora do “vamo ver” e que estudar é “idiotice” principalmente no universo de TI, afinal as grandes empresas não exigem mais curso superior.
    Faculdade não é garantia de bom profissional, nem de longe, mas conhecer os fundamentos na minha humilde opinião é fundamental.

    Obrigada pelo texto, incrível como sempre. 🙂

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *