Are we “paid amateurs”?

Before reading this post, I ask you to ignore your ego, just for a few moments. This text was not easy to write, and I think it will not be easy to read either. Please keep in mind that I do not want to offend anyone. However, I think it’s about time to talk seriously about our careers.

NOTE: This post was motivated by a discussion between friends, in a WhatsApp group, of a professional community in which I am a member.

By explicit request of those involved, I will not mention names. However, I was challenged to speak publicly with the same frankness I used in that group.

Take time and think! Are we REALLY prepared to do the work we are doing?

My question has nothing to do with how much you know about that framework released last week. I’m not talking about microservices. I’m not talking about DDD. I’m not talking about that popular programming language. I’m not talking about that new database. I’m not talking about anything that usually makes you feel like an impostor.

When I talked about being prepared, I was talking about how much you know about basics!

Do you know how to analyze the complexity of an algorithm? If you do not know, how can you tell how it will behave in production with a volume of data higher than the one you are using in your tests? Will you be one of those developers who repeats “On my machine works”?

NOTE: In that private discussion, a friend argued that proper tools could help assess how much an algorithm has in quality. Unfortunately, they can not determine whether the algorithm chosen is the correct option to solve a problem or whether it will scale well.

Neither Resharper nor Sonarqube will tell you if your code scales poorly. In my experience, not even the QA tests are sufficient; after all, they do not reflect what is in production. In the end, a combination of experimentation and knowledge is needed.

The saddest thing is that [tweet]if you do not know whether your code “scales” well, it probably does not scale[/tweet].

How much do you know about data structures? Would you implement a hashtable? If you can not, what criteria do you have to choose from the various options available in a modern framework like .NET or Java?

NOTE: In that same discussion, the same friend suggested that “in the real world” people cannot implement data structures themselves. However, even so, these people are delivering code in production that meets the desires of the customers.

Are we even delivering the software we are paid to develop?

How much do you know about Computer Architecture? If you know little, how do you explain that “rounding problem” to your customers? What criteria do you use to optimize your code for the machine your code will run?

How much do you know about how your code runs? About how the memory that your code is using is allocated and deallocated? What criteria do you use to decide whether to create a class or a struct (specifically speaking C#)?

To know the fundamentals is the minimum (the fundamental) so that we can perform any function. So why do we often ignore the “fundamentals” in software development?

Studying the “basics of computer science” may not be your focus, or what you’ve been learning recently. Maybe because the people who influence you (your technical references) have not told you that’s important. Perhaps, because your boss does not have the conditions (even techniques) to evaluate you by how much you have mastered (really) what you are doing. However, that does not change the fact that it is difficult to build anything substantial without the “fundamentals” being well worked out.

NOTE: Ignoring the basics may even lead you to adopt all the world’s patterns and frameworks to deliver a CRUD. You may be doing this just because someone you know, and respect has hinted that this is the way.

In a good college, you learn the “fundamentals”. Unfortunately, many people repeat that the focus of undergraduate and graduate courses should be more “practical.” As with math, I want to believe that the problem is the approach, not the subject.

I’m not saying that formal education or certifications are the only way to learn the basics. Surely, anyone (I believe), with some discipline, can understand and learn anything. Anyway, without the requirement of a resume, the challenge turns out to be much more significant.

Uncle Bob said we are the new scribes (please watch this talk). We are! Software is swallowing up the world and we, who work with software, have real chances of playing a leading role. We can change society for better or for worse. There is so much in our hands.

The opportunities are enormous, the challenges too. We need to be professionals and develop professionals. [tweet]We need real programmers with solid foundations. The risks are too high for us to be an egocentric class of paid amateurs.[/tweet]

NOTE: I do not own the truth. I’m very far from knowing everything. I know that even if I want to, I will never know everything. However, every day, almost thirty years ago (I began to write code at school), I try to learn the most important first.

If I offended you, I am truly sorry.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments

AUTOR

Elemar Júnior
Fundador e CEO da EximiaCo atua como tech trusted advisor ajudando empresas e profissionais a gerar mais resultados através da tecnologia.

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos.

Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

Insights EximiaCo

Confira os conteúdos de negócios e tecnologia desenvolvidos pelos nossos consultores:

Arquivo

Pós-pandemia, trabalho remoto e a retenção dos profissionais de TI

CTO Consulting e Especialista em Execução em TI
0
Queremos saber a sua opinião, deixe seu comentáriox
Oferta de pré-venda!

Mentoria em
Arquitetura de Software

Práticas, padrões & técnicas para Arquitetura de Software, de maneira efetiva, com base em cenários reais para profissionais envolvidos no projeto e implantação de software.

Muito obrigado!

Deu tudo certo com seu envio!
Logo entraremos em contato

Are we “paid amateurs”?

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Are we “paid amateurs”?

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

× Precisa de ajuda?