The following post is from Spring 2016 Java Developer Course student, Kevin. Stay tuned for more blog posts regarding his experience in the course. Thank you Kevin for taking time to share your experience with us.
The Six Stages of Debugging
I’m jumping into java with very little experience. I’ve been a musician both performing and teaching for nearly the last decade. As a musician learning a programming language, I feel a similarity to learning a musical instrument. While a lot of things are very new, I see similarities in bridging the theory to application. Learning certain scenarios in a vacuum and putting them in a real situation and watching everything go crazy. It shows that sometimes knowing is truly half the battle. When I teach guitar I use this mantra a lot “Guitar is a problem solving instrument”. If someone is ok with getting something wrong and then investigating why, how, and when, then they’ll do fine in music and many other things in life.
Our instructor, Kent Smotherman, walked in on day 1 wearing a hoodie with a list inscribed. I read “the 6 stages of debugging.” It almost read like the stages of grieving.
1. This can’t happen.
2. That doesn’t happen on my machine.
3. That shouldn’t happen.
4. Why does that happen?
5. Oh, I see.
6. How did that even work?
I could immediately relate this to problem solving in the music world. Maybe I’d modify line 2, replacing “machine” with “instrument”. When rehearsing a tune with a band, solving one problem could lead to two more, or could show the underlying problem with a song. When debugging, one solution can render other important parts of the code useless.
4th Dimensional Thinking & the Mind Palace
Kent Smotherman told us from Day 1 that we should consider “4th Dimensional Thinking” when solving problems. Think chronologically for clues when the code gets complicated. I found myself using this hint more and more. It convinced me that my problem solving tactics needed an upgrade. As a musician, I rely on audio memory more often than photographic memory. I needed to visually keep track of variables and concepts instead of letting them float in the ether to be pulled out like I do for notes when jamming with other musicians. I recalled hearing about the mind palace. A technique in which a house is visualized and in walking through said house, memories and facts can be stored in the rooms. I chose to make a mind palace for a basic html site. Using the mind palace technique I was able to use imagery, space, and storytelling to strengthen the ability to keep track.
Example: Associate friends you know with certain divs. They can be wearing the tags and other codes on a shirt or hat.
Starting the week off was HTML and CSS. I felt comfortable using this as a starting point because I felt like the last time I was tech fluent was around 2003. This also was a good starting point to try the new mind palace technique during the first week. The tricky thing to me was keeping track of inline versus block content for the divs I was creating. Mostly because of how I would reconcile these concepts in a mind palace with all the other tags and html? My best bet was to vision the mind palace as a blueprint and see sections as inline and block. Other things were easier to put into the mind palace.
This would easily be the chandelier of the mind palace.
Career = Passion(Work, Hobby)
Memorization techniques are neat and all, but the real bread and butter is to put in some serious work. Then to have the work in turn integrate into your life. In music, I was learning songs for a paycheck, but was also learning songs for fun on my own. I need to have programming and the mindset of programming creep into my hobbies and become a new passion for me as I look for work in this new field. After I’m done with schoolwork, I research for an hour or so. On weekends, I try to mod or hack appliances in my home, often with hilarious results. My next project will be making a media server with a Raspberry Pi. I’m passionate about using my skills to help people. Whether it’s a breakthrough helpful app for a hospital or a simple web design.
Here’s to learning a new language. Be back next week.