Os desenvolvedores de pilha cheia estão de fato presos no nível intermediário. Poupe-se do sofrimento - não siga esse caminho


Nos tempos em que comecei a aprender a codificar, confiei nas doninhas sábias com seu mantra "Linguagens de programação não importam". Fiquei obcecado com a idéia de um dia me tornar um desenvolvedor que pode fazer qualquer coisa. Aquele cara que transfere sua experiência de uma tecnologia para outra e transcende as minúcias. Mas essa ideia falhou miseravelmente.


A obsessão de saber tudo


Aprendi C # e .NET em diferentes domínios de aplicativos (asp.net, wpf, xamarin), js / ts (react / redux, node) e me convenci de que tinha o poder de fazer o que quisesse. Meu pensamento foi abstraído, eu era eficiente em vários paradigmas de programação ao mesmo tempo e tinha habilidades práticas em todos os aspectos da engenharia de software profissional. Eu estava pronto para ridicularizar aqueles idosos de 40 e poucos anos com o vício em uma única tecnologia, que passaram metade da vida para entender o que eu poderia entender em uma semana. Eu estava quase declarando que mergulhar fundo em algum domínio do conhecimento era para idiotas que estavam felizes em ter o mesmo emprego pelo resto de suas vidas, enquanto eu estava abstraído de tudo.


Eu pensei que tudo era exatamente a mesma coisa, então eu meio que vi um padrão consistente. Agora, quando meu trabalho envolvia a codificação em algum Python ridículo, eu dizia: 'Dê-me algum tempo para ler rapidamente as especificações, e estarei pronto para trabalhar com essa merda em nível sênior. Por que complicações provavelmente poderiam existir do tipo que nunca vi antes? E assim eu fui vítima do culto à negligência de detalhes. Deixe os juniores mexer nos detalhes, visto que eles são incompetentes com a abstração.


As lacunas de conhecimento são sutis e não são imediatamente visíveis


Certa vez, desenvolvi um design baseado em classes abstratas no TypeScript e fui ridicularizado porque, aparentemente, ninguém faz isso dessa maneira no TypeScript. Certamente fingi que meus colegas eram idiotas sem esperança. Isso costumava ajudar antes, mas dessa vez me deixou com um sabor ruim.


Sua reputação de um bom desenvolvedor pode disfarçar suas lacunas de conhecimento, tanto de seus colegas quanto de você mesmo. Você, portanto, desconhece um número enorme de especificidades críticas, mas é claro que não pode vê-las, exatamente porque não as conhece.


Foi quando minha má série começou. Poof! Eu não tinha idéia sobre os tipos de índices no SQL. Bam! Esqueci quando devo chamar um construtor estático em C #. Opa! Não consegui implementar o IDisposable corretamente sem procurá-lo no Google. Ah, e eu estava tentando alterar o estado de um componente de reação.


Suspeitei então que minha abstração não estava realmente funcionando. Que os tipos de tecnologia com os quais eu estava lidando eram diferentes, afinal, e que detalhes eram importantes. Cada ecossistema técnico possui suas próprias práticas recomendadas. Sua experiência com o .NET não será prejudicial ao trabalhar com o jvm, mas não poderá substituí-lo. Minha habilidade auto-avaliada de "ter aprendido a aprender" resultou em um jogo de imaginação. Minha velocidade de aprendizado não foi mais rápida que a dos outros. Essa percepção chegou tarde demais.


Minha habilidade era apenas um saco de idéias conflitantes - eu estava sendo dilacerada com um pouco de conhecimento daqui e dali. Eu não me tornei automaticamente um especialista em tudo. Em vez disso, tornei-me um desenvolvedor de nível médio multi-qualificado, motivo de chacota para 40 e poucos idosos que dominavam uma tecnologia. Assim, percebi que escolher o caminho do full-stack foi um erro.


Batendo-me sobre isso


O problema é que as empresas precisam de desenvolvedores de pilha completa. Não, não as imitações como eu, mas os idosos versáteis, os caras que têm cinco anos de experiência em cada uma das tecnologias de pilha completa sob seus cintos.


No entanto, esses unicórnios não existem, então as empresas buscam o auto-engano. Eles pegam um engenheiro medíocre de nível médio, especializado em três tecnologias importantes e o chamam de desenvolvedor sênior de pilha completa. Esse cargo transforma o engenheiro em um impostor e serve como uma fonte inesgotável de um complexo de inferioridade. Qualquer desenvolvedor comum que se concentre em apenas uma tecnologia sabe disso melhor. Agora posso admitir que não estou pronto para colaborar em termos iguais com pessoas que são muito melhores do que eu em alguma coisa. Caso contrário, passará uma semana antes que eu me derrube até a morte.


A auto-recriminação é uma doença enorme em nossa indústria, mas nós a curamos com o remédio errado. Trocamos proclamações de como somos super-heróis cercados por idiotas. Negamos coisas como desvalorização sênior, continuamos dizendo que nos subestimamos, só precisamos jogar fora nossa humildade e acreditar em nossa deusa interna do desenvolvimento de software. Achamos que precisamos colocar o chapéu de arrogância e dar o dedo a quem tem pouca fé em nós.


Bem, precisamos apenas reconhecer que o desenvolvimento é difícil não apenas para quem está de fora, mas também para nós. Não saber de nada em nenhum momento é bom. Se você tem uma lacuna, isso não significa que você vale menos e precisa ser expulso da comunidade.


Mas em algum lugar no nível mais profundo de auto-reflexão ainda estamos nos vencendo. Os desenvolvedores de pilha cheia se xingam por não terem profundo conhecimento de tecnologia. Especialistas em disciplina única lamentam que não tenham uma ampla gama de habilidades.


Aprender em profundidade vs aprender em profundidade


Aqui temos o mesmo velho dilema: você pode aprender em profundidade ou profundidade, mas não os dois ao mesmo tempo. Percebi um efeito colateral interessante: quando você começa a aprender uma nova tecnologia, a antiga parece menos interessante. Mas no mundo da TI, se você não atualizar seu conhecimento sobre tecnologia dentro de um ano, isso o tornará obsoleto.


Se você deseja continuar sendo um desenvolvedor de pilha completa, precisará ler as notas de versão de alguns TypeScript, testando tudo isso enquanto lê, mesmo que não sinta vontade. Ainda assim, você estará a quilômetros de distância de um desenvolvedor que codifica todos os dias especificamente no TypeScript.


O principal problema desse conflito é que não temos idéia do que é melhor. Nós, e especialmente as empresas, queremos os dois lados. Todos têm as habilidades certas e profundas.


Não sei o que é melhor, mas sei como é do ponto de vista de um desenvolvedor de pilha completa. Você gastará muito mais tempo aprendendo, comparado aos desenvolvedores de um idioma. Isso continuará enquanto sua carreira durar, e você ainda não terá o nível de proficiência deles.


Você será bem-vindo em qualquer lugar, mas em nenhum lugar realmente em casa. Apesar de seus enormes esforços, todos os gurus da próxima grande novidade vão surgir na boca, alegando que você não vale a pena ser chamado de veterano.


Você ficará preso no nível intermediário para sempre.


Eu decidi seguir meu caminho. Eu poderia tentar aprender algo realmente aprofundado, eu poderia treinar novamente para o gerenciamento (o campo em que o conhecimento superficial é um padrão do setor), mas prefiro permanecer do jeito que sou e suportar o sofrimento até realmente aprender tudo sobre qualquer coisa.

Source: https://habr.com/ru/post/pt436596/


All Articles