I just completed my second week of Java bootcamp at Tech Elevator. This week we learned more data structures than I thought my brain could handle and tried (keyword: “tried”) to implement them in solving several algorithms. And that was just Monday-Wednesday! One of fellow classmates mentioned that he didn’t learn this much throughout an entire semester of a Java course in college. So needless to say this week provided a lot of opportunity to learn how to deal with and overcome being stuck.
The Algorithm is Laughing at Me
A commonly misquoted definition of insanity is “doing the same thing over and over again and expecting different results.” I guess that means I’ve gone insane because I found myself trying the same thing over and over again to solve some of our algorithm exercises, to no avail. It felt like trying to press a square peg into a circle-shaped hole. No matter how you twist the square peg or how hard you press down on it, it’s not going to fit! So what do you do when you finally realize that it’s not working and you have no idea how to fix it? Here are some ideas that I tried this week that proved to be very helpful:
1. Walk Away
Sometimes you just need to walk away and take a break before you end up throwing your computer across the room. Personally, my brain begins to feel all fuzzy and like it might explode if I try to reconfigure one more loop or if statement. Taking a break gives your brain time to breathe and can surprisingly open the door to the solution once you’re not staring blankly at a screen anymore.
Google has always been a close friend of mine but at this point I may have to start paying a subscription fee for how much I’ve used it over the past two weeks. There are tons of coding resources online for any language that your heart desires to learn. I have found that there is a bit of a science to googling effectively especially when learning the basics. It can be very easy to search a specific problem and find the exact answer you need. This can be helpful from time to time but should not be relied on. I tend to use google for more general searches to learn more about a concept before getting more specific.
3. ASK FOR HELP
Honestly, this should be an obvious given but for me I am much more likely to stare at the same problem for two hours before asking for help. I think it’s this sense of wanting to figure it out on my own but I’m learning more and more that programming is about teamwork and bouncing ideas off of those around you. I’ve made it a point to be a part of a virtual study group, which has been really helpful! Our instructors are also incredibly approachable and always willing to walk through a problem with you.
4. Self-care FTW
Taking on the challenge of a software development bootcamp can be daunting. For most programs it’s 3-4 months of learning as much as you can while trying to polish up your resume and network as much as possible so that you can find a job afterwards. It can be very easy to lose track of taking care of yourself. Last Saturday I sat at my computer for 8 hours and forgot to eat anything or drink any water. Not okay! You have to make sure you’re taking care of yourself because that’s the only way you’ll be healthy enough to retain all of this crazy information. So if you find yourself sitting at your laptop, stuck on problem, maybe go eat some food, go for a run, get some sleep or take a shower. You probably need it.
Last on my list, but certainly not least. Finding someone to vent to, especially someone who understands where you’re coming from can be very therapeutic. Yesterday we had a virtual breakout session where we discussed common stressors and how we’ve learned to cope. We also participated in an alumni panel where former TE students shared their experience through the program and what their life looks like now. It was so encouraging to hear from alumni who have been exactly where I am and hear about their successful careers after completing the program. It’s extremely helpful to know that you’re not the exception, most have been where you are. Everyone gets stuck at one point or another and the sooner you realize that the sooner you guys can band together and kick some algorithm butt!
How do You Get Unstuck?
Obviously this is not a comprehensive list and I’m learning daily what techniques work and which ones don’t. I’d love to hear your go-to for getting unstuck in the comments!
Top comments (13)
The wording is a great help in debugging and continuing a stalled train of thought: describe the problem as if you were looking for a stranger with it who is absolutely unfamiliar with the circumstances, articulate the purpose of the task, how it works, and what can cause trouble. The more detailed you are about the problem, the more likely you are to come up with a solution without the help of others, and if you don’t figure it out yourself, you can actually ask the question on a forum.
Also use words for planning. UML diagrams and similar brainstorming solutions can help, but you only really see the task in full, in detail, if you describe the operation, because you are already thinking about possible mistakes and pitfalls while writing. If you read back your previous thoughts while writing, your brain won’t “short-circuit,” meaning you won’t get into the same train of thought over and over again.
What Jeff and others achieved this week was substantial. Every day we give double digit complex algorithmic problems to brand new developers. This is at its most intense from Thursday of week 1 to Thursday of week 2. Just getting through it is a feat, and coping strategies are mandatory. It is a good, good program, and as you go through what Jeff has this week, you emerge stronger, smarter, more capable, and ready to appreciate the complexities of larger applications and object oriented programming. All of this to say: Jeff knows what he's talking about.
Nicely written post !!
I've read online that in Bootcamps, the learning is pretty quick and intensive.
I'm learning to code on freeCodeCamp, whenever I get stuck, I try freeCodeCamp's forum, where you get a response within a couple of minutes, I google sometimes & when it can be discussed quickly I ask on freeCodeCamp's discord channel.
I simply camping myself with
PlayStationfor days. Or
mountain-bikingand bring along a laptop in my backpack. Sometimes fresh air and earthy smell stimulate my creativity... lol
That’s a great idea! I haven’t had the chance to do any work outside yet but I can see how that would be beneficial
If I get frustrated while coding I better take a break and came back to code after refreshing my mind either by going out or talking with friends. After returning to code I might find solutions on web and I can easily learn and apply those changes to my code. Take a break is quite important step in this process.
I try to remember what I read in this short book(let) by James Webb Young - brilliant. Read the comments for a general idea, but it's not a long book at all (maybe 30 pages).
I wrote a bit about it here.
In a more specific sense, I find refreshing my function and argument types or a quick flow-diagram in whimsical help.
Besides all the above and its variants I will sometimes write a blank page new algorithm as a code sketch in a completely different language from the implementation language. Or in a made up DSL that seems to fit the problem. This can often get me moving again by casting the problem differently instead of banging my head against the same wall.
Taking a break seems to be a good solution. I listen to music, eat something maybe play a game and then come back to it. Usually I figure out a solution shortly after.
I totally ask for help. Or maybe look hard and hard for alternatives. And when I see no way out, I start crocheting! Reading a book also helps me.