O programador especialista

Ben Spencer Blocked Unblock Seguir Seguindo 10 de janeiro

Eu tenho sido curioso sobre as diferenças entre programadores iniciantes e especialistas por um bom tempo. Um dia, dado o tempo e a experiência, podemos nos considerar um 'especialista'. Na indústria de tecnologia, tornar-se um especialista acontece rapidamente. Ou seja, após cerca de 3 a 5 anos, você pode ser promovido a um programador sênior sem qualquer teste real de seu conhecimento e habilidade. Sim, as empresas fazem isso por vários motivos:

  • Nós não temos dinheiro para te dar um aumento, então vamos lhe dar uma promoção.
  • Em vez de aceitar essa oferta tentadora de outra empresa, nós lhe daremos um novo título.
  • Você agora é responsável por orientar outros desenvolvedores.
  • Você está por aí tempo suficiente e agora você é o cara que sabe onde todos os esqueletos estão escondidos.

Além das estratégias de retenção, existe uma grande pressão para "ser o melhor". Toda empresa está competindo por um suprimento limitado de talentos e cada desenvolvedor deseja obter sua própria fatia do dinheiro. Então, nos esforçamos para nos tornar especialistas.

O jovem Savant

A indústria de tecnologia é obcecada pelo jovem prodígio. O rosto novo saiu direto de alguma universidade de ponta que pode "sem esforço" produzir centenas de linhas de código. Sem mencionar a qualidade, vamos supor que esse código seja à prova de balas. Sem orientação e orientação extensivas, como um jovem pode ter perspectiva suficiente para dizer se esse código satisfaz os requisitos de negócios mais profundos? Em outras palavras, como um jovem pode ter perspectiva ou sabedoria suficiente para tomar decisões importantes para si?

Certamente eles podem produzir código. Talvez muito código. Mas como podemos ter certeza de que esse código funcionará ou simplesmente será útil no futuro?

Foi bem pesquisado que simplesmente não amadurecemos até os 25 anos de idade . Nomeadamente, os nossos cérebros são incapazes de compreender as consequências a longo prazo até que simplesmente cresçamos e os nossos cérebros se tornam "ativados" para o fazer. Enquanto isso, estamos andando com uma perspectiva limitada sobre as consequências de longo prazo de nossas ações. Eu imagino que se você está lendo este artigo, você passou do período de recompensa de curto prazo da sua vida para uma perspectiva mais equilibrada de um cérebro totalmente funcional. Então, por que nossa indústria fetichiza a juventude? É preferível produzir um excesso de código sem pensar nos futuros versos algum planejamento cuidadoso?

Se eu fosse um gerente ou profissional de RH, eu poderia mitigar os riscos de contratar programadores jovens, mas energéticos, criando deliberadamente um sistema de verificações e balanços. Nomeadamente, ter um programador mais experiente para verificar as idéias inocentes, mas não implementáveis, de programadores menos experientes. É exatamente isso que Matt Briggs argumenta em seu artigo The Role of a Senior Developer . Ele chega a declarar que seu projeto está condenado sem ter um desenvolvedor sênior na equipe.

Espectro de Competência

Mais importante, não sabemos o que não sabemos. Especialmente como um novato, um simplesmente não tem a exposição necessária e prática quando se trata de habilidades técnicas mais complexas. No entanto, todos nós começamos em um estado de incompetência inconsciente . Depois que ficamos expostos a um conceito ou idéia em particular, nos movemos para o espaço desconfortável da incompetência consciente. Mas sem mais efeito e energia é fácil permanecer aqui. Pior, você pode não estar ciente do seu verdadeiro nível de habilidade. Com a pressão da indústria para ser brilhante em tudo, os comportamentos errados podem ser incentivados em favor de comportamentos mais produtivos, como reconhecer quando você não sabe alguma coisa.

Ainda assim, passar da incompetência consciente para a competência consciente é onde o trabalho começa. Não há como desenvolver uma habilidade sem prática. Ter conhecimento sobre um assunto é uma coisa, mas a habilidade demonstrável é uma história completamente diferente. Mesmo tendo uma habilidade demonstrável não equivale necessariamente à perícia. Quando você finalmente se move para o último estado, a competência inconsciente, você internalizou completamente o conhecimento e as habilidades necessárias.

O que pode explicar por que um especialista em domínio dá explicações tão enigmáticas sobre como obteve seu próprio nível de habilidade. Se eles passaram da fase de pensar sobre a habilidade em particular, eles podem ter dificuldade em articular como chegaram lá. Ou eles podem estar muito ocupados e dar uma resposta superficial para voltar à tarefa em mãos. Mas ter experiência não significa que você esteja bem equipado para explicar sua própria aquisição de habilidades ou ter as habilidades auxiliares necessárias para transmiti-las.

A famosa frase atribuída a Michelangelo caracteriza seu nível de competência inconsciente.

Quando perguntaram a Michelangelo como ele fez sua estátua de Davi, ele teria dito: “É fácil. Você acabou de cortar a pedra que não se parece com David.

Perspectiva

Há uma citação de Alan Kay que me chamou a atenção desde que a ouvi. Talvez seja porque parece inteligente ou se você simplesmente muda a forma como olha para um problema que você pode fazer.

Perspectiva vale 80 pontos de QI.

Eu diria que os desenvolvedores novatos não têm uma perspectiva importante sobre o desenvolvimento de software. De fato, a indústria percebeu e lamentou o quão inadequadamente preparado para os rigores do desenvolvimento de software que os jovens graduados são. É simplesmente falta de experiência e perspectiva? Possivelmente. Ou talvez haja os duros golpes da vida que só vêm com tentativa e erro, e realmente fracassam no mundo adulto. Na era da inflação desenfreada e "todo mundo é um vencedor", é fácil superar qualquer desafio real à auto-estima. Alguém poderia perguntar: é porque sou um mau programador ou porque sou inexperiente nesta área? Eu abordei o programa de uma maneira subótima? Ou talvez isso não seja minha força. Eu ainda sei quais são meus pontos fortes? Bem, este é um problema que você pode resolver.

Localizador de Pontos Fortes

Quando eu tropecei no Localizador de Pontos Fortes , era tão obviamente bom que passei pouco tempo discutindo se eu deveria gastar os $ 20 e fazer o teste. Em suma, o Localizador de Pontos Fortes faz uma série de perguntas que ajudam você a identificar suas próprias forças. Você provavelmente já ouviu a frase "jogue com seus pontos fortes", mas é improvável que você tenha identificado suas verdadeiras forças. Eu sei que não fiz. Se você está curioso, meus pontos fortes são:

  • Deliberativo
  • Estratégico
  • Intelecção
  • Aprendiz
  • Entrada

Em retrospecto, algumas dessas forças parecem óbvias. Outros, como deliberativos, não são tão óbvios. Se você está curioso sobre suas próprias forças, encorajo você a descobri-las fazendo o teste. É fácil ter outros, talvez inocentemente, caracterizando suas próprias forças para você. Ou talvez você venha com eles por conta própria. Em vez disso, essa abordagem é apoiada por pesquisas e décadas de experiência. Proteja-se contra o desperdício de tempo e esforço, desenvolvendo as forças erradas. O sucesso e o crescimento de sua carreira dependem de sua capacidade real e do desenvolvimento de conhecimentos em seu domínio real.

O verdadeiro perito

Tanto tem sido escrito sobre especialistas que parece quase redundante neste momento. Você provavelmente é um leitor bem otimizado que consumiu muitos artigos, livros, vídeos, etc., mas posso dizer que as definições de especialidade que li sobre o assunto não foram satisfatórias. Pela minha própria experiência, eu vi tanto tecnólogos brilhantes quanto pessoas que passaram por décadas de experiência. Certamente, o desenvolvedor que repetiu o mesmo ano dez vezes não é o mesmo que um desenvolvedor que expandiu sua zona de conforto. No entanto, não existe um bom modelo que eu tenha encontrado. Um modelo que é repetível quando se trata de desenvolver expertise. É simplesmente conhecimento? Sabedoria? Perspectiva? Perícia? Ou alguma combinação?

Além disso, é muito mais fácil apontar para algo e descrever os sintomas em vez do processo subjacente que produz o chamado especialista. Podemos generalizar os sintomas aqui: inteligentes, capazes, experientes, técnicos e produtivos, entre muitas outras qualidades.

Peter Norvig detalhou uma abordagem para desenvolver expertise em praticamente qualquer área. 10 anos de prática deliberada . Estamos todos com tanta pressa para desenvolver as habilidades essenciais que parece que estamos correndo no lugar apenas para acompanhar. No entanto, a prática deliberada, sem compreender o estado final desejável, não seria de grande utilidade. Embora um desenvolvedor talentoso possa conceber intuitivamente uma solução, sem 10.000 horas de prática deliberada, é improvável que você desenvolva um domínio mais profundo.

Nosso campo é um pouco estranho. Você acha que os carpinteiros se sentam em alguma conferência de carpintaria e mitificam o raro e talentoso jovem mestre carpinteiro? Ou os engenheiros civis aplaudem os esforços heróicos de um engenheiro jovem, mas capaz, que resolveu algum problema complicado? Talvez toda indústria tenha seus mitos, mas para nosso empreendimento quase científico, consumimos prontamente livros, artigos e vídeos que "prometem" o nível de proficiência em tempo recorde. É como se, de alguma forma, no caminho para se tornar um melhor desenvolvedor, tivéssemos simultaneamente evitado décadas de pedagogia, neurociência e psicologia cognitiva aparentemente da noite para o dia. Realmente uma realização real.

Prática deliberada é difícil

No entanto, a prática deliberada não orientada é difícil. Isso exige que você saia da sua zona de conforto. Isso exige humildade, pois você tem que admitir que não sabe como fazer alguma coisa. Você tem que se acostumar a falhar. Também requer alguns objetivos específicos sobre como você pode alcançar o estado desejado. Talvez você tenha a sorte de ter um mentor para guiá-lo. Se não, então você estará no deserto e terá que se virar sozinho.

Mais importante, nem toda prática é igualmente valiosa. Algumas tarefas podem ser difíceis, mas podem ser irrelevantes para seus objetivos. Talvez você esteja batendo com a cabeça em um problema que pode ser facilmente resolvido por uma mudança de perspectiva que vem de um mentor mais experiente. Ou uma pausa para o café mais longa.

Essa é a realidade. Você tem que colocar no trabalho. O trabalho em se tornar um mestre em qualquer ofício requer muita tentativa e erro e prática. Essa é a parte difícil. Como você pode se vender na perspectiva de fazer mais trabalho depois de voltar para casa depois de um longo dia de trabalho? Não há respostas fáceis, pois você precisa fazer concessões entre sua vida pessoal e profissional.

Características de um especialista

Houve alguma pesquisa feita sobre as diferenças entre programadores novatos e programadores especialistas. Aqui estão algumas dessas observações:

  • Os programadores especialistas não só dispõem de mais esquemas de conhecimento, estratégias e regras aplicáveis à solução de problemas de programação, mas percebem e lembram de “pedaços” de informação maiores do que os novatos. [1]
  • Especialistas lêem programas para execução de controle de fluxo, em vez de linha por linha (como texto). [1]
  • Os especialistas formam modelos conceituais detalhados que incorporam entidades abstratas, em vez de objetos concretos específicos da declaração do problema. [2]
  • Seus modelos acomodam vários níveis e são ricos o suficiente para suportar simulações mentais. [2]
  • Eles trazem para a tarefa sua experiência anterior, na forma de conhecimento das estruturas comumente ocorrentes (combinações dos primitivos) no domínio. [3]

Se eu tivesse que resumir, eu diria que um verdadeiro especialista desenvolveu o conhecimento, as estratégias e os modelos mentais necessários para se sobressair. Mais importante, mais do que habilidade, você precisa desenvolver seu próprio 'kit de ferramentas cognitivas'. Estas são as perspectivas, estratégias e linhas de raciocínio necessárias para fazer qualquer progresso em direção à maestria.

O longo caminho rumo à maestria

Eu resisti a transformar isso em uma lista das dez coisas que você pode fazer para se tornar um especialista. Se você é como eu, leio esses tipos de artigos, me sinto melhor comigo mesmo e esqueço rapidamente de implementar o que aprendi. A jornada, a jornada real, é naturalmente mais complexa do que qualquer artigo curto pode esperar esclarecer. No entanto, posso propor algumas perguntas que você pode se fazer:

  • O que eu quero sair da minha carreira?
  • O que vou desistir para conseguir o que eu quero?
  • Quais recursos vão me ajudar?
  • Qual nível de conhecimento técnico eu quero alcançar na minha área de atuação?

Não é razoável esperar que você possa se tornar tanto um programador de classe mundial e um violinista de classe mundial. Não é impossível, mas altamente improvável. Você simplesmente tem que escolher. Não há tempo suficiente em sua vida útil para obter as duas habilidades e mantê-las. No entanto, você pode decidir se tornar "decente". Tornar-se decente em algo pode ser suficiente para alcançar seu objetivo. Josh Kaufman escreveu longamente sobre como fazer exatamente isso. Considerando a rapidez com que a tecnologia muda, tornar-se "louca decente" em uma determinada habilidade pode ser suficiente para manter sua carreira à tona.

No entanto, desenvolver uma experiência verdadeiramente de classe mundial requer nada mais do que uma disposição favorável, grande determinação e aproximadamente 10 anos.

Referências

[1] – Sobre os efeitos cognitivos da aprendizagem de programação de computadores – Roy D. Pea, D. Midian Kurland – 1984 – Novas ideias em psicologia

[2] – Imagens mentais e visualização de software em equipes de desenvolvimento de software de alto desempenho . – Petre, mariana. – 2010 – Journal of Visual Languages & Computing.

[3] – O Projeto Aprendiz do Programador: Uma Visão Geral da Pesquisa – Charles Rich, Richard C. Waters – 1987