Somos “amadores remunerados”? – Notas, Explicações e Ampliação

Outro dia, compartilhamos dois posts que geraram ótimas reações. Um voltado para o público técnico (Somos “Amadores Remunerados”?), outro voltado para o público de gestão (“Transformação digital fica bem mais difícil quando remuneramos o amadorismo“)

Este post contem algumas notas, explicações e ampliações inspiradas nas reações que identificamos.

Nossa disciplina tem um ABC

Estamos realmente preparados para fazer o trabalho que estamos nos propondo a fazer?

Nossa tese era (e continua sendo), que profissionais da área de computação precisam conhecer e valorizar conceitos fundamentais (de computação) para fazer um bom trabalho.

Assim como um escritor precisa saber escrever (embora tenhamos bons corretores ortográficos),  um economista precisa saber somar, subtrair, multiplicar e dividir (embora, no dia a dia utilizem calculadoras e programas de computador para fazer os “cálculos difíceis”), precisamos saber algoritmos, estruturas de dados e entender o mínimo de como o computador funciona.

Muita gente argumentou que estávamos afirmando que todos precisavam saber temas avançados. É exatamente o contrário! [tweet]Não há nada de avançado em entender abstrações, estruturas de dados e os algoritmos clássicos.[/tweet] Houve quem perguntou se estes temas não são apenas para “cientistas” – acreditamos que não!

Qualquer big name vai cobrar exatamente esses fundamentos em suas entrevistas. Todas as big names estão erradas?

DICA: Que tal investir uma parcela, mesmo reduzida do seu tempo para estudar o ABC de nossa área? Garantimos que seu investimento de tempo e dinheiro vai valer a pena.

Sobre Frameworks e bibliotecas

A cada dia se espera mais e mais de TI.

Estamos inseridos em domínios cada vez mais complexos e, para que consigamos atender o mercado, estamos adotando ferramentas de produtividade para escrever código e frameworks (bibliotecas, serviços na nuvem) que resolvem bem problemas conhecidos.

É fundamental que utilizemos estes recursos. Mas, o que temos percebido é que, com muita frequência, esses frameworks são utilizados de forma imprópria porque os “profissionais” não conhecem o ABC.

Outro problema é que há uma pluralidade enorme desses recursos. A maioria resolvendo o mais do mesmo (só que de uma forma ligeiramente diferente). Houve quem disse que nossa “melhor característica” deveria ser “saber aprender”. Eu acrescento “saber selecionar”!

No longo prazo, entendemos que entender as abstrações (desenvolvidas a partir do ABC), ajuda a aprender mais rápido um framework novo ou banco de dados exótico.

Você aprenderá Neo4J bem mais rápido se souber grafos. Seu SQL (LINQ) vai ser muito mais “poderoso” se você souber trabalhar com conjuntos. Você usará TPL com mais tranquilidade se entender sobre processos, semáforos, mutexes. Seu Regex vai ser bem mais performático se você conhecer máquinas de estados.

[tweet]É realmente uma postura profissional programar com base em tentativa e erro?[/tweet]

Sobre atender o cliente

Houve quem disse que nossa classe está atendendo os clientes e que isso é importante. Foi dito que “estamos entregando software”!

Sites que não suportam uma escalada prevista de demanda (como ocorre na black friday); Aplicativos de companhias áreas que não conseguem concluir um check-in e não informam o usuário sobre o que há de errado; Aplicativos bancários que apresentam dados inconsistentes (um de nossos bancos, todos os meses, indica falha para fazer um TED quando este ocorre com sucesso [houve um caso em que fizemos dois TEDs e tivemos que contar com a boa vontade do beneficiário para reaver nosso dinheiro]); Centrais de atendimento que não conseguem dar um bom atendimento porque o “sistema está lento”; Restaurantes que não conseguem “fechar a conta” porque o sistema parou de funcionar (presenciamos isso duas vezes, em dois restaurantes diferentes, em apenas um dia); Aplicativos para gestão de contrato da companhia telefônica que não consegue mostrar meu saldo devedor, nem gerar um boleto para pagamento (obrigando o cliente a contatar o suporte todos os meses).

Estamos mesmo? Honestamente?  Não há mesmo nada de nossa responsabilidade em exemplos como os listados na citação? Eles são raros? Nunca viu acontecer com algo de sua empresa? O problema, nesses casos, foi causado por escolha de frameworks incorretos? Não seria mais assertivo admitir que o problema está nos “detalhes” e os detalhes vem dos fundamentos?

[tweet]A atitude mais “profissional” é mesmo deixar o erro estourar e fazer nosso cliente perder dinheiro para, então, pesquisar ativando círculo virtuoso do aprendizado reativo? [/tweet]

Sobre júnior, pleno e sênior

Nem todos precisam ter o mesmo nível de conhecimento! Concordo! Mas, assim como escrever, somar e multiplicar e dividir é básico. Conceitos de escrita de algoritmos e adoção de estruturas de dados corretas também deveriam ser. Não?

Um júnior deveria ter autonomia para escrever código e saber se ele vai performar bem (analisando a complexidade do algoritmo). Não deveria? Da mesma forma, o júnior precisaria saber que um “IndexOf” em um List de strings vai ser mais lento que um “Contains” em um Set. Não acha? Como o júnior vai saber escolher entre opções que ele nem sabe que existem? No “mundo real”, parece que as pessoas só sabem usar List e Dictionary. Por que será?

NOTA DO ELEMAR: Há muitos anos (mais de 20), eu tinha o desafio de resolver um problema de performance em um produto em que estava trabalhando. Depois de pesquisar horas em livros (internet não era tão rica quanto hoje), achei o que considerava ser uma boa solução.

Quando fui apresentar essa “boa solução” para meu chefe, na época, fui questionado sobre o porquê da minha escolha. Não soube explicar, senão por dizer que havia visto a resposta em um livro. Meu chefe argumentou, sabiamente, que “justificar uma escolha com base em opinião de outros, é perigoso”. Nunca mais esqueci disso!

Um pleno deveria saber escrever uma expressão regular decente (sem copiar do StackOverflow). Não? Deveria saber quando usar um Dictionary ou um Set. Deveria entender se é mesmo necessário dar aquele ToList() depois de uma consulta. Por que nossos códigos ficam tão presos a frameworks e temos tanta dificuldade de fazer substituições?

Um sênior deveria conseguir fazer um uso correto da TPL. Não acha? Um sênior deveria conseguir rodar uma “task” de importação de um arquivo texto sem “estourar a memória” e nem a “janela de tempo de processamento”. Não? Por que isso é dor?

Se sairmos de .NET e irmos trabalhar com Java (e vice-versa), o sênior não deveria virar júnior. Certo?

[tweet]É profissional dedicar nossas carreiras a sermos “programadores de framework”, tão descartáveis quanto eles ficam em períodos cada vez mais curtos?[/tweet]

Sobre faculdades

Houve quem entendesse que estávamos defendendo cursos acadêmicos. Não estávamos! Mas também não estávamos condenando.

Nossa posição é que um plano estruturado de estudos pode te ajudar a aprender mais rápido. Além disso, há gente com muito mais expertise que nós que há muitos anos vem preparando bons materiais para que possamos acelerar nosso aprendizado.

Queiramos ou não, o ABC ainda está bem refletido em parte dos currículos acadêmicos. Não podemos ignorar isso. Por outro lado, cabe a nós, de mercado, tentar aplicar o que aprendemos além de “passar na prova”

Sobre rótulos e humildade

Leia novamente a seção “Sobre júnior, pleno e sênior”.

Como você definiria o “profissional” que está no mercado sem conseguir cumprir bem aqueles requisitos?

Entendemos que a palavra “amador” talvez tenha te perturbado. Desculpe-nos!

ANALOGIA SIMPLES: Lembre daquela pessoa no caixa da padaria que usa a calculadora para tudo, por ter dificuldade com as operações fundamentais.

Quando ela precisar usar “juros compostos”, primeiro vai precisar descobrir o que é isso (ou lembrar, afinal deve ter aprendido esse conceito sem importância na escola. Mas, por não usar no dia a dia, escolheu esquecer [afinal, o cérebro humano é limitado]). Então vai precisar aprender que botões apertar… enquanto a fila cresce (ou a fila na posição do caixa anda, e a pessoa na operação vai “empatar fila” em outro lugar – sempre com muita humildade e boas intenções).

Permita-nos ser mais humildes e mais “inclusivos”:

[tweet]REVISÃO: Precisamos de programadores que saibam os conceitos fundamentais de sua disciplina. Os riscos são grandes demais para que sejamos APENAS uma classe egocêntrica de “profissionais de framework” remunerados.[/tweet]

Compartilhe este insight:

Comentários

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

Subscribe
Notify of
guest
6 Comentários
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Tiago Tartari
Tiago Tartari
5 anos atrás

Comentário bem rápido!
Que texto!!!! ?

Elder da Silva
Elder da Silva
5 anos atrás

Sensacional.
Um ponto importante, os frameworks, tem vida curta.
Por isso prego a importância de dominar linguagens fortes (.net/java) mesmo sendo em cima de frameworks, mas que os conceitos básicos como descritos nao mudam!

Muito importante essa breve documentação profissional aqui descrita.

Fabrício Rissetto
Fabrício Rissetto
5 anos atrás

Já tinha gostado do primeiro texto, gostei ainda mais desse segundo.

“Se sairmos de .NET e irmos trabalhar com Java (e vice-versa), o sênior não deveria virar júnior”. Tenho utilizado isso como base pra minha carreira. Tento pautar o valor de meus conhecimentos em padrões e práticas ao invés de ferramentas (frameworks/libs/linguagens), que apesar de serem importantes e fundamentais no dia a dia, são mais “perecíveis”. Os padrões vão com você até mesmo quando você troca de stack: vão-se os anéis e ficam os dedos.

Alessandro de Souza
Alessandro de Souza
5 anos atrás

Ótimo texto, excelente explicação. Por favor: informem links de materiais para que eu possa voltar ao ABC… preciso urgente!!!!!! Obrigado.

Cristiano
Cristiano
5 anos atrás

Sou da área da Infraestrutura, mas acompanho teu site por me identificar bastante com a abordagem. Infelizmente esse problema esta presente em muitas profissões no Brasil. Talvez seja algo do próprio brasileiro. Somos superficiais. Nosso método de ensino (e avaliação) é superficial. Avaliamos a memorização de conceitos e nunca a capacidade de raciocinar. Os conceitos memorizados se perdem (nunca entendemos eles, afinal somente os decoramos) e vamos buscar as respostas para nossas perguntas no stackoverflow. O que funcionar primeiro vai, afinal o ‘bom’ é melhor do que nada, o ‘melhor’ só se der tempo (nunca dá).

Renan
Renan
5 anos atrás

A comunidade de desenvolvedores profissionais agradece. Com estes últimos posts e o post do Eduardo Pires sobre esta discussão deixam bem claro que independente do nível de desenvolvimento ou cargo, nós devemos sempre analisar como podemos escrever código e gerar soluções com maior qualidade. Por muito tempo trabalhei por conta própria e após 3 anos “na minha bolha” decidi melhorar meu conhecimento e a direção que tomei foi olhar para um dos livros mais antigos e completos que já vi sobre .NET, o “MCTS Self-Paced Training Kit (Exam 70-536)”. Isso meu ajudou muito pois quando decidi explorar mais o mercado e atuar mais na comunidade de desenvolvimento os conhecimentos adquiridos foram essenciais para melhorar minha curva de aprendizado e qualidade dos meus códigos.
Esta discussão vai ajudar muito aqueles que colocam seu crescimento profissional acima do ego. Excelente post, obrigado.

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
6
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

Somos “amadores remunerados”? – Notas, Explicações e Ampliação

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

Somos “amadores remunerados”? – Notas, Explicações e Ampliação

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?