Por que programação é tão difícil?

COMPARTILHAR:

Novos programadores, bem-vindos à indústria de desenvolvimento de software, não precisam dedicar dez anos de carreira à maneira mais difícil de aprender essas lições.

Agora, algumas coisas só podem ser aprendidas através da experiência. Posso dizer que essas coisas são importantes ou que acontecem na indústria, mas você provavelmente não vai acreditar em mim até ver isso acontecer em sua própria carreira. A decisão é sua, mas aqui estão algumas dicas úteis se você optar por aprendê-las da maneira mais fácil.

Habilidades interpessoais também são importantes para programadores

Você acabou de se formar na faculdade. Sua cabeça é um jardim onde você cultiva muitas coisas divertidas e criativas – afinal, você estará lá pelo resto da vida, por que não? Você não quer deixar as pessoas entrarem porque elas podem destruir e arruinar todo o seu trabalho duro com suas próprias maneiras diferentes de pensar e fazer as coisas. Você é bom em assimilação – descobrindo novas ideias, dividindo-as e analisando-as e colocando-as no vasto armazenamento de dados do cérebro do programador. Isso descreve bem a maioria dos programadores, e certamente eu. Se assim for, você é um bom candidato.

Levei quase metade da minha carreira de uma década em computação para perceber que trabalhar com pessoas às vezes pode ser difícil, e que o trabalho de um programador não é apenas trabalhar com computadores. Antes de usar um computador, alguém precisa descobrir em que realmente quer gastar seu dinheiro – o dinheiro pelo qual você é pago. Uma vez que eles descobrem, há muito tempo nas reuniões para discutir tudo e qualquer coisa – quanto tempo leva, qual é a maneira certa de projetar e quem precisa estar envolvido. Essas discussões raramente são rápidas ou fáceis, e se você já tem dificuldade em se comunicar de forma eficaz e convencer as pessoas de suas crenças, não fica melhor quando você tem que usar termos técnicos que nem todos entendem.

Em seguida, misture o fato de que nem todo mundo é fácil de se conviver e você tem uma receita para problemas. A maioria dos programadores já não possui habilidades pessoais, então eles imaginam a emoção de trabalhar apenas com um computador, que eles conhecem melhor que os humanos. Conforme explicado no parágrafo anterior, o oposto é verdadeiro. Goste ou não, você passará mais tempo com pessoas do que com computadores. Quando você finalmente arregaçar as mangas e começar a “programar como o vento”, você provavelmente está cansado de reuniões e de ser visto como um recurso em vez de valorizado por sua experiência. Embora cada empresa seja diferente, pode ser difícil encontrar uma com uma cultura corporativa amigável e confortável. Não só isso, mas as coisas estão mudando de um dia para o outro.

Sem perícia oficial

Muitas vezes, suas ideias sobre o que é uma solução de software útil colidirão enormemente com as ideias das pessoas que realmente tomam essas decisões. Você tem que ser capaz de viver com isso, trabalhar em projetos assustadores/chatos e viver com seus caroços como um adulto.

É mais provável que você acabe com um código mal escrito que outra pessoa 10 anos atrás, e seja acordado por seu despertador tocando às 3 da manhã em seu turno de suporte, do que ser selecionado para escrever um novo aplicativo web completo e complexo. A nova ferramenta sobre a qual você está lendo e salivando. Afinal, novas ferramentas podem ser caras e geralmente não é sua decisão.

Claro, cortar um gramado inteiro com um cortador de grama é uma ideia estúpida. No entanto, quando você pede um cortador de grama e ele é negado, você pode jogar a toalha ou aceitar o cortador de grama.

Um bom lugar para aprender programação DESCOMPLICANDO esse mundo todo é neste treinamento!

A curiosidade inata sobre a experimentação é obrigatória

Ter um bom entendimento de sintaxe, semântica e linguagem – conforme você ganha como estudante de português, matemática ou engenharia – ajuda bastante a ser um bom programador, mas isso não é tudo.

fullstack pro - sujeito programador

Mais importante do que isso é não ter medo de tentar as coisas – apertar botões – cometer erros – ver o que acontece. Picar um pouco. Escreva algum código ruim e veja-o desmoronar. Esta é a principal e melhor maneira de aprender sobre computadores. Se você acredita que alguém encontrará a resposta para você, você está apenas se limitando. Você tem que estar disposto a tentar você mesmo e aprender com os resultados, bons ou ruins.

Os requisitos do compilador/computador são absolutamente perfeitos

Imagine ser incapaz de enviar um e-mail até que você tenha corrigido todos os seus erros gramaticais, palavras com erros ortográficos e vírgulas faltando. Parece ridículo? Tome o computador como seu chefe e ele descreve todos os e-mails. Além do e-mail, estamos falando sobre escrever programas de computador.

Alcançar a perfeição exige muito compromisso, motivação e persistência – mais do que a maioria das pessoas. Programadores em potencial podem não ter motivação ou perseverança suficientes para superar obstáculos, bugs, bugs, especificações técnicas de 100 páginas e desafios de depuração para alcançar a etapa final da perfeição absoluta. É um longo caminho, especialmente sem curiosidade natural e habilidades linguísticas.

As ideias são simples; os programas de computador são complexos

Quando você programa, você está instruindo o computador a fazer algo. Os computadores podem fazer qualquer coisa que você possa imaginar. Você está lidando com ideias abstratas – ideias puras. Parece o paraíso, e é claro que há benefícios. Mas como tudo, tem suas desvantagens.

Muitas vezes, a ideia parece simples. Para aqueles com sabedoria interior sobre conceitos do mundo real, uma nova ideia pode parecer simples. Os computadores não possuem essa inteligência inerente, então mesmo as ideias mais simples, traduzidas em linguagem de computador, podem rapidamente se tornar complexas. Encontrar as instruções certas é uma tarefa assustadora, mesmo para programadores experientes – especialmente para coisas que não foram feitas antes. Se já foi feito antes, por que não comprar esse programa em vez de escrever um novo? O tempo do programador é caro – geralmente R$ 90/hora ou mais. Se um programa custa R$ 150 por usuário, o programa geralmente pode ser adquirido perpetuamente. Mesmo a R$ 300 por usuário, ainda é muito mais barato que R$ 150/hora.

Nem todo erro é um erro

Muitos novos programadores ficam intimidados na primeira vez que criam ou compilam algo, apenas para ver 50 marcas vermelhas, rabiscos ou erros e avisos pop-up. Para piorar as coisas, cada erro é alguma porcaria enigmática como “não é possível acessar o membro não estático do contexto estático”.

Meu conselho para você: relaxe! relaxe por um momento. Nem todo bug é um bug. Então, nem todo erro é sua culpa. Nem todo bug precisa ser corrigido imediatamente. Além disso, os bugs podem ser corrigidos.

A maioria dos editores de código modernos estão tão ocupados encontrando bugs que, mesmo antes de você terminar de digitar seu código, colocar todos os colchetes no lugar certo pode rapidamente parecer uma tarefa impossível. Novamente – acalme-se, dê um passo para trás e perceba que não é tão ruim quanto parece.

Estou programando há mais de uma década e acho que nunca escrevi um programa que funcionasse perfeitamente na minha primeira tentativa. Seu código terá erros! Acostume-se a ver aquelas marcas irritantes, vermelhas e onduladas por todo o lugar.

Então um bug não é necessariamente um bug. Sim, eventualmente o bug precisa ser corrigido antes que o programa possa ser executado. No entanto, o trabalho de eliminar bugs é secundário à tarefa de escrever código. E, como mencionado, a maioria dos editores de hoje detectará todos os erros possíveis muito antes de você terminar de escrever o código. Isso não torna esses erros mais importantes do que o que você já está fazendo. Não deixe que eles tropecem em você; eles acontecem, então esteja preparado e aprenda a colocá-los em espera até que você pegue o jeito das coisas. Quando você aprender a pensar como um computador, começará a entender quais erros são importantes e quais são apenas as peças que faltam em um programa que você ainda não terminou.

Para resumir: vermelho, rabiscado e irritante (um bug) não se traduz automaticamente em importante.

Bugs podem existir mesmo que haja erros

Imagine a satisfação de que, depois de muito trabalho duro, você pode finalmente corrigir todos esses bugs irritantes. Agora você pode começar a sua felicidade, certo? Incorreta.

Nem todo bug é um bug, e vice-versa: falta de bugs não é necessariamente falta de bugs. Só porque seu código está livre de bugs não significa que funcionará. Muitas vezes, você tem que assumir que seu código não funciona, mesmo que você tenha corrigido todos os bugs.

Existem dois tipos gerais de erros: erros de compilação (o tipo de linha ondulada vermelha) e erros de tempo de execução ou de lógica. Este último é o que estamos falando agora.

Supondo que seu código realmente seja executado. Isso significa que o computador entende e é capaz de executá-lo, mas não significa que a instrução em si não seja falha. O que seu cérebro apresenta pela primeira vez faz sentido para você, mas os computadores geralmente exigem mais detalhes do que o cérebro humano para entender um processo ou algoritmo.

Um exemplo perfeito é a divisão por zero. Então, esta expressão matemática é indefinida, mas se você simplesmente dividir x por y, o problema não é óbvio. x ou y podem ser qualquer valor. Sendo assim, somente quando o programa está em execução é que y tem um valor real, que pode ou não ser zero.

Um bom lugar para aprender programação DESCOMPLICANDO esse mundo todo é neste treinamento!

Resolva “O problema”, não apenas o problemas

Ao solucionar problemas ou depurar, é muito fácil ficar confuso sobre qual é realmente o problema real – passe o fio e gaste um tempo improdutivo perseguindo gansos que não têm nada a ver com o problema real em questão.

Ser um programador melhor tem muito a ver com ser capaz de identificar rapidamente a causa raiz de um problema – e depois corrigi-lo. Como eu gosto de dizer, resolva o problema.

Ao longo do caminho, muitas vezes você encontrará pequenos problemas relacionados que também podem precisar ser corrigidos – um problema, mas não um problema. Não relaxe só porque você resolveu alguns problemas. Resolver um problema do início ao fim exige muito esforço.

A depuração geralmente é considerada 99% concluída e está sendo depurada na maioria das vezes.

Isso ocorre porque até que você realmente conheça a causa raiz, saber quanto tempo levará para corrigi-la é um ponto discutível. Encontrar a causa raiz geralmente leva muito tempo.

Portanto, lembre-se destas regras simples de solução de problemas e depuração:

  • Sempre teste seu código
  • Verifique a sanidade e verifique tudo – especialmente coisas que você acha que não precisa
  • Tente não fazer mudanças “instintivas”, palpites aleatórios para convencer os erros a desaparecer; estes geralmente introduzem mais problemas
  • Em seguida, verifique novamente

A depuração por si só é uma prova simples de que um computador ou robô nunca dominará o mundo. Mostre-me um computador que possa depurar a si mesmo e eu lhe mostrarei um mundo sem programadores.

Problemas Fundamentais no Desenvolvimento de Software

Não importa o tamanho do seu programa ou software, sempre haverá pessoas que encontrarão uma maneira de abusar dele, mas acreditarão plenamente que deve funcionar dessa maneira. não confie em mim? Desenvolva algum software, publique-o e leia os comentários e e-mails que você recebe. Você logo descobrirá que isso é absolutamente verdade.

Cada um tem seu jeito de trabalhar. Um tamanho nunca servirá para todos, mas infelizmente para os programadores, um tamanho é muito mais barato e mais eficiente do que três ou quatro. Então, você raramente tem a chance de implementar todos os recursos possíveis – todos os sinos e assobios que você pode imaginar. Isso geralmente é exatamente o oposto do que a gerência pede de você. Eles queriam um produto mínimo viável básico (MVP) para testar o conceito, ver se os clientes gostavam dele e se valia a pena construir a versão completa.

A tecnologia é um alvo móvel imprevisível

Às vezes as pessoas não podem decidir o que querem – você tem que lidar com as consequências ou até mesmo limpar a bagunça. Edward Berard colocou desta forma: “Se ambos estiverem congelados, é fácil andar sobre a água e desenvolver software de acordo com as especificações”. na estrada. Louco, mas verdadeiro.

Quando você terminar seu projeto, poderá achá-lo desatualizado ou desnecessário. Talvez uma biblioteca ou estrutura da qual depende precise ser atualizada e sua empresa não queira financiar a atualização. Talvez você realmente envie para o cliente e ele nem queira usá-lo (já vi isso acontecer em meus próprios projetos).

A tecnologia depende de interações bem-sucedidas entre humanos e outros humanos, humanos e computadores e computadores e outros computadores. Tanto humanos quanto computadores podem ser imprevisíveis, e toda essa imprevisibilidade inerente não desaparece só porque você quer.

Um bom lugar para aprender programação DESCOMPLICANDO esse mundo todo é neste treinamento!

É difícil estimar

Os projetos mais interessantes e recompensadores geralmente são aqueles que nunca foram feitos antes. Por nunca serem feitos, estimar quanto tempo eles levarão é um certo ponto de frustração, dificuldade e dor. A imprevisibilidade (ponto 10 acima) é imprevisível por definição!

Os executivos de negócios nunca querem saber quanto tempo algo vai demorar. Eles geralmente estão interessados ​​em como fazê-lo mais rápido e com o menor orçamento.

Os programadores nunca se importam com quanto tempo ou recursos terão. Eles precisam de tempo livre para inovação e pesquisa. Eles precisam de novas ferramentas caras para codificar mais rápido e melhor. Portanto, a programação é técnica e criativa, e você não pode se apressar sem destruir o resultado final – mas geralmente é o caso. As linhas de montagem são apenas para processos simples, que mudam pouco e se repetem indefinidamente – nenhum deles é para desenvolvimento de software. Isso nunca pareceu impedir os gerentes de tentar transformá-lo em uma linha de montagem.

Estimar o esforço é a batalha sem fim que você está prestes a iniciar como programador. Ao encerrar esta visão geral da carreira, tudo o que posso dizer é: não se esqueça de rir e se divertir. Um dia, você pode descobrir que o humor é o que o mantém são.

Portanto, os programadores são agora mais valiosos para as empresas do que dinheiro. Não seja muito duro consigo mesmo; o computador cuidará disso. Dê a si mesmo um polegar para cima por seu interesse em uma carreira tão difícil, mas gratificante.

Leia também: 10 pacotes Node.js que todo desenvolvedor JavaScript precisa conhecer

COMPARTILHAR:
brayan

Brayan Monteiro

Bacharel em Sistemas de Informação pela Faculdade Maurício de Nassau e desenvolvedor PHP. Além de programador, produzo conteúdo e gerencio blogs. Sou especialista em desenvolvimento de software, SEO de sites e em negócios digitais.