Tiago Gouvêa

Blog

Dicas para se tornar um bom programador, um hacker ou mestre Jedi

Dicas para se tornar um bom programador, um hacker ou mestre Jedi

Quem vem me acompanhando pode achar que eu já escrevi sobre isso, ou até que eu sempre venho escrevendo sobre isso. Mas o fato é que as pessoas realmente querem saber e sempre me perguntam sobre “como se tornar um programador“, “qual linguagem aprender“, “como ser um hacker” e até “como se tornar um jedi“.

Decidi então escrever este post, juntando as peças e ressaltando o que é mais importante nisso tudo; o quanto você consegue aprender sozinho.

Aprender sozinho

Este é o grande segredo, o grande mistério, o grande detalhe que faz um adolescente de 16 anos ser um programador incrível ou ser um hacker imbatível, e vou explicar porque ao longo deste post. 

Aprender leva tempo, muito tempo, e este tempo ninguém tem para te ensinar, portanto é preciso aprender sozinho. Neste ponto o programador e o hacker têm muito em comum. É preciso sentar, refletir sobre um problema e achar as possíveis soluções, por conta própria.

“Aprender a aprender”, é importante também. Descobrir como você funciona, como entende melhor, se é vendo um vídeo, lendo um livro ou seguindo um tutorial enquanto  lê o livro em paralelo. Tudo gira em torno de aprender, e para isso é preciso ter muita paciência.

Paciência você deve ter meu jovem Padawan

Mestre Yoda

A mentalidade Hacker

Estou falando do hacker, mas não me refiro ao Hacker “mau”, me refiro a pessoa que tenta entender como as coisas funcionam, que “desconstrói” qualquer estrutura em sua cabeça e a partir dai começa a traçar novos caminhos, novas formas de “montar” e “reconstruir”, talvez de uma forma melhor, talvez de uma forma que não tenha falhas ou só de um jeito diferente mesmo.

É desta maneira que um hacker entende um sistema, um serviço ou servidor, e percebe onde existem falhas, por onde ele pode (se quiser) acessar algo que não poderia.

Agora… não dá pra imaginar alguém ensinando isso pro hacker, porque se outra pessoa estivesse tendo que pensar por ele, seria o outro o hacker. O hacker precisa pensar por si próprio, precisa desenvolver seu próprio pensamento.

O tipo de pensamento

Esse pensamento necessário para programar ou para hackear, não é igual a parar para pensar quanto é 13 x 17, é um pensamento mais lento, mais demorado, que precisa avaliar vários aspectos, diversas possibilidades, possíveis problemas ao seguir em um caminho…

Os problemas simples de programação (tipo aqueles que se faz na faculdade) não existem no ambiente de trabalho. No mundo real as decisões são muito mais complexas e o código exige muito mais raciocínio, porque cada pequena parte de código deve se encaixar em todo o resto, deve receber os parâmetros desejados e retornar o resultado desejado sem erro, sem ser lento, sem consumir muitos recursos, etc e tal.

A maioria das pessoas trabalham em funções que não exigem um pensamento 100% presente. Alguns podem trabalhar pensando até em outras coisas, outros passam meses sem aprender nada novo no seu trabalho, porque é sempre a mesma coisa. Na programação a coisa é diferente, tudo gira em torno do pensamento e do ato  de pensar, é um trabalho totalmente intelectual onde seu foco e concentração serão sempre necessários.

Persistência

Algumas pessoas gostam de pensar que “só gente muito inteligente” faz tudo isso, e estas são pessoas um tanto preguiçosas, porque já falharam ao tentar perceber a primeira parte da realidade. É preciso ter inteligência para pensar, mas não é preciso ser um gênio ou tão inteligente assim, acho que a principal característica deve ser a persistência.

Faça. Ou não faça. Não existe a tentativa

Mestre Yoda

Ao enfrentar um pequeno desafio no código, ou estudando um sistema operacional, é preciso refletir e relembrar o que se sabe para descobrir uma solução. Você vai por um caminho, não dá certo, pensa em outro, mas já vê que não vai funcionar, e segue pensando, imaginando… depois de algum tempo (pode ser segundo, minutos, horas ou dias) você descobre como fazer, e faz.

Esse tempo pensando se torna um conhecimento seu. Você irá consultar isso quando enfrentar os próximos desafios. Cada vez que encontra uma solução isso fica gravado no seu cérebro; o problema, os caminhos e a solução. Dai, se torna um pouco mais fácil encarar um desafio maior, sabendo o que você sabe agora.

Algumas das coisas que você pensou e que não resolveram o problema, também servem de aprendizado. Você tem ideias incríveis e mirabolantes enquanto busca a solução. Dai imagino que o cérebro é igual a um músculo (na musculação), ele vai ficando cada vez mais forte, mais treinado para resolver problemas.

Em um lugar escuro nos encontramos, e um pouco mais de conhecimento ilumina nosso caminho

Mestre Yoda

Um bom programador

O programador segue nesta linha, do raciocínio, é como o hacker. O programador senta e pensa. Não tem pra onde correr e nem ninguém pra quem perguntar.

Quando comecei a ter contato com programadores com muita experiência pela internet, um deles me falou que eu só deveria perguntar pra ele quando não tivesse mais nenhum recurso pra procurar. Enquanto houvesse chance de eu encontrar uma solução por mim mesmo, que buscasse, que tentasse. Afinal, ele não estava ali ao meu dispor, e se fosse ficar respondendo pergunta de todo mundo que tivesse duvida, ele não faria mais nada da vida. Hoje eu que me vejo nesta posição, seja em função do blog aqui ou de eventos que participo, as pessoas chegam perguntando todo tipo de coisas e as vezes não param pra pensar pro si próprias.

Quando uma coisa emperra, ou simplesmente não funciona como o esperado, você vai ao google e faz sua busca sem qualquer problema. Não tem qualquer demérito nisso, não faz de você um burro ou preguiçoso. Por curiosidade, abri meu histórico do Google agora escrevi “stackoverflow” para ver quantas vezes em um dia eu acesso uma resposta lá… e vi que entre 15 e 20 vezes ao dia. O print abaixo não me deixa mentir.

 

 

O que um bom programador realmente evita de fazer, é copiar e colar um código, sem tentar entende-lo. Se você tem muitas linhas de código que não entende, você está refém disto, porque se der um erro você nunca saberá se vem daquelas linhas ou não. Então, precisando buscar a solução, ao encontra-la, o bom programador aproveita e aprende mais com aquilo.

Trabalhando em uma equipe

Uma coisa é aprender a escrever códigos e conseguir até implementar algo interessante. Outra coisa é trabalhar em uma equipe de desenvolvimento; duas ou três pessoas contigo, que irão desenvolver algo juntos. Se cada um fará uma parte inteira para juntar lá na frente, ou se a todo tempo os códigos precisaram se encaixar, é uma estratégia do time, mas uma coisa é certa, você terá que adequar seu raciocínio aos raciocínios dos demais. Precisará saber ouvir, para quando alguém apresentar uma proposta de solução você possa tentar entender e validar junto se aquilo realmente vai dar certo. Precisará saber falar, para expor seu ponto de vista de forma que os outros entendam e sem ser insistente demais. Precisará saber refletir e imaginar, para pensar se o que os outros estão falando ou fazendo irá funcionar bem em conjunto com sua parte.

É engraçado, no dia a dia das nossas vidas raramente paramos para pensar em conjunto, mesmo. Mas em um time de desenvolvimento isso é uma constante. Ora todos precisam pensar como irão implementar um módulo inteiro do sistema, ora é um perguntando pro outro como resolver um código que não quer funcionar, pedindo ajuda.

É preciso um tanto de sinceridade e também humildade para que este processo funcione bem. Se uma das partes se acha inteligente ou esperto demais para ouvir os outros, ficará ilhado. Se um membro não gosta de ouvir as sugestões ou não tem a paciência necessária para escutar e pensar, ficará para trás. Portanto é preciso estar ligado, atento, consciente, concentrado e integrado.

Muitas das verdades que temos dependem de nosso ponto de vista.

Mestre Yoda

Quem resolve os problemas?

É esta pessoa que todo mundo está precisando! Como programador percebi que se alguém não sabe configurar um celular novo, me chamam, se um aparelho de som estraga, também me chamam, se a porta de um móvel emperra, me pedem ajuda, se tem um vazamento de água, “o Tiago pode ajudar”… o programador é um resolvedor de problemas, e o hacker também. Essa é a essência.

Aprender a programar é coisa fácildifícil é resolver os problemas usando código. Falei isso no meu grupo de whatsapp estes dias e todos ficaram super reflexivos, inspirados e motivados.

Ou você faz parte do problema, ou você faz parte da solução

Autor desconhecido

É disso que estou falando desde o começo do post, se você está disposto a se colocar na posição de quem resolverá problemas, terá que desenvolver seu raciocínio, treinar seu pensamento e exercitar sua capacidade de pensar por um longo período. Este é o caminho.

Quando realmente se sabe muito?

Não sei, estou há vinte anos aprendendo e cada vez mais percebendo que sei bem pouco.  Parece que quanto mais aprendo, mas vejo que tem coisas demais que não sei. Então, proporcionalmente, parece que estou sabendo menos com o tempo. 🙂

Mas só de poder chegar aqui e compartilhar com vocês tudo isso, já está valendo a pena.

 

Muito a aprender você ainda tem, jovem Padawan.

Mestre Yoda

 

 
 

Classificado como: Posts Profissionais

Participar comentando (2) →
  1. Troia 10 de Setembro de 2018

    Realmente Tiago, o que você diz faz todo o sentido. Na última parte do texto eu me identifiquei muito, quando você diz que quando mais a gente aprende, parece que menos a gente sabe, é um ciclo muito louco. Porém um problema que acaba acontecendo, caso isso não seja controlado adequadamente, são sinais de ansiedade e sindrome do importor. Por mais que você seja muito bom, você nunca se considera bom o suficiente, mas na realidade esse patamar nuncar vai existir. Abraços!

    Responder
    • Tiago Gouvêa 10 de Setembro de 2018

      É verdade Troia! Essa área causa já uma ansiedade nas pessoas, e essa coisa de “estar sempre sem saber tudo” pode prejudicar a pessoa sim. Grato por participar!

      Responder

Deixe seu comentário