O que fazer quando não consigo resolver algo por conta própria?

Olá pessoal, boa noite.

De quinta para sexta-feira precisei entregar uma atividade para a aula de programação orientada a objetos que consistia na resolução do problema 682. Baseball Game do LeetCode; apesar de não ser o foco da matéria, o nosso professor vez ou outra nos apresenta alguns problemas "reais" para praticarmos.

Como o prazo estava curto tentei ser o mais breve possível, comecei a ler o enunciado e continuei quebrando a cabeça por bastante tempo e nenhuma solução surgia. Decidi procurar por "approachs" que ajudaram a compreender melhor o enunciado e quais caminhos eu poderia tomar para a resolução do problema, no entanto, não consegui sair do lugar; por fim, a contragosto, decidi olhar um código já existente, dividi o código e analisei cada condicional afim de buscar compreender o funcionamento daquela solução. Contudo, antes, durante e depois de ter entregue o trabalho fiquei com aquele sentimento de:"se não houver um código pronto não irei conseguir resolver nenhum problema."; durante esse devaneio, lembrei do meu antigo eu em 2019 quando estava começando a programar em Java, tentando converter Fahrenheit para Celsius, na época me recusei de todas as formas a procurar uma solução "pronta" e persisti tentando quebrar a cabeça, e por conta dessa recusa, acabei me frustrando e largando a programação por um tempo (só voltando a programar depois de ter entrado na faculdade). Conversando com meu professor ele sugeriu que o mais interessante seria começar a resolver esse tipo de problema com mais constância, por mais simples que fosse, fazendo isso eu iria desenvolver o meu raciocínio lógico e consequentemente a minha fluência na síntaxe da linguagem.

Confesso que não é a primeira vez que me pego refletindo a respeito desse assunto e tenho uma sensação de que se eu entender o que está acontecendo, talvez isso se torne uma virada de chave para a minha evolução. Algum de vocês já passaram por esse sentimento? Como vocẽs resolvem esse tipo de problema? Qual postura adotar? E por quê adotar tal postura? São tantas perguntas...

Como eu costumo fazer, respondo para todos que tiveram a sorte de chegar aqui, mas pegando o exemplo o OP.

Isso é normal, nem sempre conseguimos resolver todos os problemas, isso vale não só para iniciantes. Um desenvolvedor experiente tem que saber recolher requisitos muito bem, mas não tem a obrigação de saber de tudo. Tem momentos que você precisa perguntar para alguém algo mais. Quando está aprendendo seria interessante discutir com outras pessoas para tentar achar uma informação que ajuda mais de forma coletiva. Isso não é errado. Melhor ainda seria pesquisar e tentar achar mais informações para conseguir resolver a questão.

Jamais deveria pegar um código pronto ou mesmo fazê-lo coletivamente, se quer melhorar seu aprendizado e raciocínio. Isso é trapacear. Não o professor, é você, por iso vem o sentimento de culpa, o que é bom, já que vai repensar e tentar fazer melhor da próxima vez. Tem momentos que precisam fazer gambiarra no nosso trabalho e o seu caso foi uma gambiarra no aprendizado? Sim, isso acontece, também precisamos treinar o jogo de cintura, mas não podemos fazer disso uma norma. Quando temos dificuldade, quase sempre devemos passar por elas e não desanimar ou desistir (copiar).

Em alguns casos a pessoa só está tentando fazer algo na programação que ela ainda não está preparada, e deveria dar um passo para trás, isso é normal e pode ser muito benéfico.

Se a questão é o problema em si e não como programar aquilo, buscar informações é absolutamente normal. Claro que não deve ser a primeira escolha quando estará aprendendo. Programar é raciocinar, não importa no que, é igual treinar músculo na academia, só que o "músculo" aqui é o cérebro.

Eu vejo muito pessoas dizendo que não farão isso ou aquilo porque não vão usar no trabalho, que é perda de tempo, que é um passo desperdiçado que você pode pular, que não precisa estudar a teoria e entender todos os conceitos e verbetes corretamente do que se usa na área, que não precisa de matemática para programar, que não importa se você é ruim em comunicação e expressão, que faculdade é para trouxas e uma série de outras desculpas esfarrapadas de alguém que fez tudo errado e quer o mesmo para os demais, ou sabe que isso é errado, mas ele ganha alguma coisa falando isso para a pessoa, o que é um mau-caratismo monumental. Você quer coisa mais inútil que ficar caminhando ou correndo na rua ou esteira ou de bicicleta, algumas que não saem do lugar, sem estar indo para lugar algum, sem ter pressa, ou ficar levantando pesos de ferro com os braços e pernas, ficar fazendo certos movimentos em uma sala fechada sozinho ou com outras pessoas que não vai produzir nenhum produto ou serviço para terceiros? É, mas grande parte da população faz isso e muitas vezes paga bem caro para fazer isso.

As pessoas chegam pagar centenas de reais por mês para fazer isso, muitas vezes sem grande supervisão. Mas ela não quer pagar isso para exercitar o cérebro em coisas que parecem inúteis e não vai produzir nada prático. Ela não quer pagar um valor menor para ter pouca supervisão que no final vai dar um diploma para ela, ou pelo menos um certificado em algum lugar que preza pela qualidade e formação real da pessoa (raro - até o diploma já anda mais sendo vendido do que conquistado, inclusive um pouco em algumas instituições públicas). Percebe que há uma priorização errada nas pessoas? Quantas vezes eu vi pais chegando com os filhos em escola pública ou baratinha com carrões caríssimos. Percebe que a pessoa tem um certo narcisismo (não necessariamente patológico) com o que as conhecidas ou aleatórias veem ela de forma concreta, visual mesmo, mas pouco se importam como vão perceber a capacidade de resolver problemas, raciocinar, de entender certos assuntos, analisar, pegar notícias e destrinchar por conta próprio para falar algo útil e não as besteiras que vomitam em redes sociais, de produzir algo realmente bom para a sociedade, independente se isso vai dar dinheiro ou não, mas que assim tem mais chances de dar dinheiro e pagar por certas coisas materiais que muitas vezes ainda só serão comprados para causar "inveja" nas pessoas. Elas não querem se sentir bem com si mesmas, elas acham que estão preparadas para a vida com o que têm, que não precisam estudar sobre o assunto, de buscar autoconhecimento, quem sabe com ajuda profissional. Ela sequer sabe onde está a felicidade.

Sua postura está correta, só precisa executar cada vez mais, ver o que tem falho na base para tentar mitigar isso. Se tiver um bom professor (cada vez mais raro, isso passou ser profissão, para muitos, não todos, de "salvação da lavoura", já que nada mais deu certo) ele poderá te ajudar, é função dele. Se não der, talvez precise pagar outro melhor para te ajudar, se puder. Infelizmente quase que só programador ensina e dá conselho de graça, mas não muito mais áreas se vendem tantos cursos ruins (marketing digital e coisas afins deve ser pior). Você não vê profissionais da saúde, inclusive cientistas, advogados, engenheiros, vários de humanos como psicólogos e pedagogos, e especialistas de diversas áreas ensinando de graça (tem exceção, claro, mas não como programadores). Remédio tem que custar caro, software tem de graça aos montes.

Tente alguma ajuda com o professor, se ele souber fazer vai te ajudar na dose exata para te desenvolver sem te prejudicar. Pescar o peixe é um processo lento e até chato, comprar na peixaria é mais fácil, você quer comer o peixe ou ser pescador? Penso nisso toda vez que se fala que essa nova geração não tem paciência, eles não deveriam tentar ser pescadores então.

Essa é a geração que mais quer comprar serviços prontos em vez de fazer. Ok, isso não é de todo ruim. Mas é a geração que quer que seu próprio serviço aconteça sozinho, então ele não ganha para pagar pelos serviços que deseja. Ele tem que fazer escolhas. Não vai dar certo essa coisa de ser a primeira geração que ganha na média menos que seus pais na mesma idade. A IA vai acelerar isso. Saber coisas não servirá mais, executar mecanicamente não terá valor, resolver problemas será fundamental.

Se questionar, procurar ajuda, já é estar acima da média.

Obrigado pela oportunidade de organizar alguns pensamentos que eu tenho em texto e que pode virar um texto melhor e vídeo mais para frente.

S2


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).

que resposta fenomenal meu caro! eu esperava algo técnico/teórico a respeito da área e em troca recebi um grande aprendizado que pode ser aplicado para qualquer área da vida, além de uma análise a respeito da sociedade e como essa reflexão pode nos ajudar a evoluir e aprender cada dia mais e mais. suas palavras me motivaram e ajudaram a dissipar o turbilhão de pensamentos que havia em minha mente, sei que não é uma jornada fácil, entretanto a dor de aprender vai sempre possuir um grande valor, mesmo que no momento não pareça; alguns colegas meus já me falaram que eu só precisava deixar a procrastinação de lado e deveria começar a escrever mais código, pois a teoria eu já tinha um bom domínio (modéstia a parte). acredito que de alguma forma a partir desse momento eu possa desenvolver melhor as minhas habilidades, as vezes é necessário voltar um passo para trás para que possamos dar dois para frente, no basquete eu fiz exatamente isso, quando foquei em fazer o básico bem feito o meu jogo acabou melhorando bastante e gradativamente fui me arriscando em movimentos e passes mais complexos; acredito que para tudo, em especial a programação seja assim, as vezes buscarmos a máxima perfomance a todo momento e por conta disso nos frustramos e a autocobrança deixa de ser um fator motivador e passa a ser um grande peso na nossa vida. tenho alguns planos e ideias em mente, praticar bastante e começar a "levar a sério" é um deles, voltar para os fundamentos não faz mal, se acostumar e se habituar com aquilo é a chave para desenvolvermos nossa "independência intelectual". obrigado pelo tempo e pelas palavras dedicadas, suas palavras estarão eternizadas em minha mente <3

Se você ficar bravo cada vez que você se frustrar e parar de programar pode procurar outra área agora!

Essa semana estava tentando integrar com uma API, Já fiz essas integrações centenas de vezes. Estava a uma semana tentando achar o problema de porque não estava funcionando. Continuei pesquisando e encontrando formas de enviar os dados repetidas vezes até dar certo. A documentação da API estava errada e a solução estava nos comentários de um github aleatório.

O que aconteceria se eu tivesse largado tudo porque não consegui da primeira vez? Saído do emprego? Nunca mais trabalhar com APIs desse tipo?

Foi uma semana inteira se frustrando cada vez que eu recebia uma resposta de erro. Mas eu sabia que eu precisava terminar esse trabalho, eu não tenho tempo pra pensar se vou ou não conseguir

Eu tenho que conseguir

Independente de quanto tempo demore, independente de quantas vezes diferentes eu preciso fazer, independente de ter que jogar um mês de trabalho fora e ter que encontrar uma API semelhante, o que importa é somente finalizar o trabalho.

Enquanto você não colocar na sua cabeça que você precisa resolver seus problemas e aceitar que você não sabe tudo (é impossível saber) você vai acabar deixando a frustração dominar sua vida

Não conseguiu resolver? pesquise, procure alternativas. Mesmo assim não conseguiu? Olhe o código fonte mesmo! Veja como outras pessoas fizeram.

Se você pegar esse mesmo problema daqui uma semana você vai saber fazer?

Se sim

Você aprendeu !

Se não

Faça novamente até entender, procure formas diferentes de fazer, apague totalmente o código e faça de novo até aprender como resolver!

sempre me recordo desse evento (a frustação que tive) com muito amagor, na época eu era jovem e tava tentando descobrir qual caminho iria tomar, e engraçado pensar que quando eu voltei pra esse problema consegui resolvê-lo rapidamente e sem muitas dificuldades; tenho que te admitir que não me vejo em outra área sem ser essa e portanto, reconheço que a dedicação precisa ser maior que a frustação **sempre**. acredito que a depender do momento ou contexto é necessário optar por uma solução (você mencionou o trabalho e eu a atividade) que o prazo nos permita, mas que é necessário revisitar aquele problema e de fato compreender se houve um aprendizado ou não. Hoje existem vários meios de se tentar resolver algum problema, eu gosto muito de pesquisar em documentações e ler em fóruns, sinto que dessa forma estou construindo o meu aprendizado. > *"Faça novamente até entender, procure formas diferentes de fazer, apague totalmente o código e faça de novo até aprender como resolver!"* muito obrigado por sua resposta, ela é o tapa que a gente precisa para acordar pra vida!

Mano, já passei por isso várias vezes, e posso te garantir: todo mundo que programa já teve essa sensação em algum momento. O que você descreveu é aquele dilema clássico entre “quebrar a cabeça sozinho” e “olhar soluções prontas”. O importante é encontrar um equilíbrio.

Olhar um código pronto não significa que você "trapaceou" ou que nunca vai conseguir resolver algo sozinho. O aprendizado na programação vem de entender os padrões e a lógica por trás das soluções, não de reinventar a roda toda vez. Se você analisou a solução, quebrou em partes e realmente entendeu, isso já foi um aprendizado valioso.

Uma coisa que me ajudou muito foi seguir um ciclo de tentativa antes de partir para a solução pronta: 1️⃣ Ler e entender bem o problema (às vezes o desafio não está no código, mas na interpretação); 2️⃣ Anotar diferentes abordagens que vêm à cabeça, mesmo que pareçam ruins; 3️⃣ Testar aos poucos sem medo de errar; 4️⃣ Pesquisar conceitos e estratégias (não só códigos prontos); 5️⃣ Só então, olhar soluções prontas — e quando olhar, sempre tentar reescrevê-las do zero, sem copiar e colar.

Sobre a postura: seu professor mandou bem no conselho. Resolver problemas constantemente (mesmo os fáceis) faz diferença absurda no raciocínio lógico. Com o tempo, você vai perceber que os padrões vão se repetindo e que problemas que antes pareciam impossíveis começam a se tornar intuitivos.

No fim das contas, o que importa é continuar praticando sem se cobrar tanto. Todo dev passa por isso, e é exatamente essa persistência que define a evolução. 🚀🔥