Para Programadores: Não tente entortar a colher. Isso é impossível. Em vez disso, apenas tente perceber a verdade. Não há colher. - Matrix
Já assistiu Matrix? Se ainda não, pare tudo o que está fazendo e vá assistir agora! Brincadeira, mas sugiro que faça isso quando estiver com tempo. No filme temos uma cena que muitos não entendem seu significado e profundidade, principalmente para nós que tanto amamos programar e ficar horas digitando linhas de código.
Vamos resumir um pouco o contexto, você consegue encontrar a cena também no youtube: Na cena, um jovem garoto (o Menino da Colher) diz a Neo: "Não tente entortar a colher. Isso é impossível. Em vez disso, apenas tente perceber a verdade. Não há colher. Então você verá que não é a colher que entorta, é só você mesmo." 🤯🤯
Quando eu assisti essa cena, eu demorei para entender, mas depois de alguns anos, vejo um valor muito grande para nosso dia a dia, como Engenheiros de Software. Como assim? Vou tentar explicar da melhor maneira possível.
Você já teve aqueles dias em que um problema de programação parece totalmente intransponível? Talvez um bug chato que não importa o quanto você percorra e leia seu código, ele se recusa a ser localizado. Ou talvez uma feature nova que você precisa implementar, mas a solução simplesmente não se encaixa na sua mente? Eu já passei muito por isso no passado! Acredite, não existe nenhum desenvolvedor que não tenha passado por essas ansiedades e dificuldades. É como se fosse impossível enxergar o real problema, a raiz de todo o caos. Mas vamos voltar ao filme Matrix.
No contexto do filme, a colher é uma representação da realidade fabricada pela Matrix. O garoto está dizendo que, para mudar a realidade, você não deve se concentrar em alterar as coisas dentro dela (a colher), mas sim perceber que a própria realidade (Matrix) é maleável e pode ser moldada por sua vontade. O que isso significa? Meu deus fiquei mais confuso ainda! Calma queridos jovens, vamos lá!
A partir daqui vou tentar expressar como eu entendo essa frase no contexto da programação:
-
Entendendo a realidade do problema: Na programação, às vezes você pode se deparar com um problema que parece impossível de resolver. Mas se você olhar para o problema de um ângulo diferente, ou mudar a maneira como você está pensando sobre o problema, muitas vezes pode encontrar uma solução. O Menino da Colher está essencialmente dizendo a Neo para mudar sua perspectiva - não é a colher que está entortando, é ele mesmo que está mudando.
-
Abstração e flexibilidade do pensamento: A ideia de que "não há colher" também pode ser interpretada como uma metáfora para o conceito de abstração em programação - a ideia de que o código que você escreve não é uma entidade física, mas uma representação de uma ideia ou conceito. Isso exige um pensamento flexível - assim como Neo precisa aceitar a ideia de que não há colher, os programadores precisam ser capazes de pensar em termos de abstrações, e não apenas em termos de linhas de código ou objetos físicos. Estamos construindo ideias, conceitos, regras de negócios!
-
Domínio sobre as regras: Quando Neo percebe que não há colher, ele ganha controle sobre a "realidade" na Matrix. Isso pode ser comparado ao momento em que um programador se torna suficientemente proficiente em uma linguagem ou tecnologia (Framework) que eles podem começar a "dobrá-la" à sua vontade, criando soluções inovadoras e eficientes que não seriam possíveis sem esse nível de entendimento. A dica aqui é que precisamos entender profundamento as tecnologias que estamos trabalhando se quisermos dominar elas!
Acho interessante que quando focamos um problema, parece que esquecemos o mar de possibilidades que temos para resolver esse problema. Por exemplo, você já se pegou pensando em seu código como uma série de variáveis, funções, loops e condicionais? Quando bate olho até vem aquele pensamento: "O que eu estou fazendo aqui?"😂. É normal se sentir perdido, principalmente quando o código foi escrito por outro desenvolvedor.
Mas assim como a colher na Matrix, nosso código não é apenas uma coleção de símbolos em uma tela. É uma representação de uma ideia, um conceito, um problema que estamos tentando resolver.
E assim como Neo precisa ver além da colher para entender Matrix, nós, como programadores, precisamos ver além das linhas de código para entender o problema que estamos tentando resolver. Isso é abstração - a habilidade de distanciar-se dos detalhes técnicos e ver o panorama geral. Não estamos apenas escrevendo código, estamos solucionando problemas!
E para fazer isso efetivamente, precisamos de flexibilidade de pensamento. Precisamos ser capazes de mudar nossa perspectiva, de ver as coisas de diferentes ângulos. Não podemos nos prender a uma única abordagem ou solução. Precisamos estar dispostos a questionar nossas suposições, a experimentar novas ideias, a aprender com nossos erros.
O que quero dizer com isso? Vamos voltar ao filme:
No filme Matrix, o personagem Neo só consegue mudar sua perspectiva quando ele finalmente aceita que a Matrix, a realidade fabricada que ele conhecia, não é real. Quando ele aceita que a "colher" que ele vê não é uma colher física, mas uma construção do Matrix, ele é capaz de "entortar" a colher com sua mente. Ele mudou sua percepção da realidade.
Quando estamos programando, encontrar a perspectiva correta para resolver um problema pode ser um pouco diferente, mas a ideia central é semelhante: precisamos estar dispostos a mudar nossa percepção, nossa abordagem. Sem isso nunca vamos nos libertar da nossa cadeia mental!
Mas como fazer isso? Vou listar sugestões que funcionaram, algumas podem te ajudar outras não, por isso tente abstrair as que podem realmente ser úteis:
-
Pare e respire: Às vezes, quando estamos muito focados em um problema, podemos ficar presos em um único modo de pensamento. Fazer uma pausa, mesmo que seja apenas para fazer uma caminhada ou tomar uma xícara de café, pode ajudar a limpar sua mente e permitir que você aborde o problema de uma nova direção quando voltar.
-
Peça ajuda: Outra perspectiva pode ser exatamente o que você precisa para encontrar a solução. Não tenha medo de pedir a opinião de um colega de trabalho ou buscar ajuda online. Às vezes, só o ato de explicar o problema para outra pessoa pode te ajudar a ver onde você estava preso.
-
Divida o problema: Se um problema parece muito grande ou complexo, dividi-lo em partes menores pode ajudar. Essa nova perspectiva pode revelar soluções que você não conseguia ver antes.
-
Revisite os fundamentos: Às vezes, voltar aos princípios básicos pode dar uma nova luz sobre um problema. Isso pode ser especialmente útil quando você está preso em um problema complexo.
-
Experimente: Não tenha medo de tentar coisas novas. Às vezes, a melhor maneira de encontrar uma nova perspectiva é experimentando novas abordagens. Mesmo que elas não funcionem, você pode aprender algo valioso que pode te ajudar a resolver o problema.
Lembre-se, assim como Neo teve que aceitar que a realidade que ele conhecia era uma ilusão para ver além dela, você também pode precisar deixar de lado suas primeiras impressões ou suposições sobre um problema de programação para encontrar a solução. Por isso não tenha uma visão limitada, busque alternativas e ajuda para resolver problemas e entender conceitos da programação.