Throughout the past months of tapping away at my virtual ocean. I have been “stuck” many times. I have encountered bugs I don’t understand, I have encountered problems I don’t know how to solve, and I am even facing multiple such problems with my code as I am writing this post! In fact, as digital engineers, our jobs are done when we no longer have problems to solve! One could even characterize our work as continually being stuck! (Though hopefully not on the same thing over time.) So the trick is becoming “unstuck”—repeatedly.
Some of the readers out there may have played video games, a less significant portion may have played massively multiplayer games. In such games there is often a command known as “/unstuck”. One types it into chat when one can no longer progress due to getting, well, stuck. Then the game will often teleport your character to some reasonable location from which you may continue. And I certainly have wished I had that command writing the ocean simulation! Unfortunately, struggling against a software engineering “blocker” is not always simple.
Still, there are many techniques one might employ to get unstuck. The ones I’ve found helpful include talking to a mentor, talking to peers, reading the thoughts other developers share openly (even if you don’t adapt their proffered solutions, their insights can help spark your own ideas). Of course all these methods often require us to cite our sources, but this comes with the substantial advantages of sharing ideas; after all, that’s how we learn and grow. There are other more technical avenues that often help me too. Using a debugger, using simple print statements, stepping carefully through an algorithm on paper, using a profiler or even mere timers to gauge performance impact, and, of course, reading the documentation again.
Yet, I’m not really here to talk about these specific techniques. Those are all mere instances of the common theme. The truth is solving a problem boils down to one technique in my experience: just keep at it. You may not know the right path right away, but if you keep trying different things to get closer to the solution, the likelihood is that you will make it in the end. This is what I’ve experienced this term on the FFT (which is a lot closer to completion than it was), last term on the Gerstner waves, and with essentially every personal and educational project I’ve ever completed. This moral is so age old it may seem obvious, but it’s repeated in so many books, films, and tales because it bears repeating. Cliché can be tiresome, yet it is also surprisingly easy to forget in light of the apparent triteness that the wisdoms carried within so many mere platitudes are actually important.
So my advice for getting /unstuck in real life? Just keep trying. Naturally employ the proper tools to do so! Use all the techniques I’ve mentioned and more! Don’t work hard at the expense of working smart! Still, working hard is necessary to solve the hard problems. The problems worth solving are multiplexed, multifaceted and manifold, so just keep going. It may not be as quick or easy as typing /unstuck, but the rewards are incommunicably more valuable.