Problem solving during the learning process
Blocked on a problem
This week I have really noticed the limits of both my current knowledge and my ability to recall things I thought I already knew! It's been a challenging week with lots to learn and I definitely felt blocked a number of times.
One of the main things that stumped me this week was figuring out how to put things together. During the gradebook kata at one point I had a function that found all the student names and put them into the book and another that picked up all the scores. But I couldn't figure out how to add the scores to the book as well when the students names were being pulled in by the other function.
To work through the problem I used a few techniques. I started off by using pseudocode to map out what I wanted the function to do. Then I just gave it a try. As I went through I console logged to check that what I thought was happening was actually happening. Then I moved on to google. I used google to try and search for how to tackle parts of the code that weren't working rather than the full solution.
After all my attempts I still could not wrap my head around how to solve the problem, until the daily kata tutorial covered it. I was amazed how simple the tutorial made it, and I spent a bit of time working to understand exactly what the code was doing. At this point I realised that the way I had approached the problem was on the right track, but also that I'd attempted the solve it by jumping straight to the stretch challenge, and I could have hard coded the values in to start with.
Despite that, I was happy that I had approached it in that way because it made me feel like I was making something functional, rather then just ticking boxes on a test. Earlier during the kata's I worried that I was solving for the answer and that I wouldn't reach a true understanding of the code that way, but this challenge made me feel much better about this way of learning.
An elegant solution
I'm not too sure I've ever solved a problem elegantly! I feel like I fumbled my way through most of this weeks challenges. I did feel very confident in solving the FizzBuzz half of the superfizz buzz kata, although I found the second half difficult.
Problem solving techniques
I definitely lean more on some problem solving techniques than others - I really like to try and figure things out myself and sometimes find it difficult to ask for help. With that in mind my feelings on the problem solving tools are:
- Pseudocode:
I feel fairly confident on using this as a tool to loosely plan what I need to do, but sometimes I just want to jump straight in and then use pseudocode to refine my thinking if needed.
- Trying something
Just trying something can be a good way to learn, but I need to have some idea of what I am doing first or I'll just end up stabbing in the dark blindly. I'm confident with trying out things if I think I can mostly remember but if it's totally not computing I need to have a bit of a roadmap to follow or I begin to get overwhelmed.
- Rubber ducky method
I haven't used the rubber ducky method before but I know all too well the frustration of asking for help only to solve the problem yourself while asking. I'm sure I can find something on my desk to talk to if I need to!
- Reading error messages
Error messages definitely can give a lot of insight on what is happening with your code, and I've found them useful for pointing out missing brackets etc. I think the key is to step back and read them carefully!
- Console.logging
During the kata's I used console logging a lot to identify what exactly was happening with my code and to examine different variables. Using replit made it really easy to use this method of problem solving.
- Googling
Googling is my go to whenever i can't quite figure something out or I can't quite remember a syntax. I always try to make sure I am breaking down and understanding the solutions I find through google, rather than just copying things.
- Asking your peers for help
I'm not good at asking for help because I don't like to bother other people and I like to solve things myself. But I have been making extra effort to reach out and connect with others over the past few weeks. It's good to remind myself that any questions I ask publicly will probably help more people then I inconvience.
- Asking coaches for help
If I need extra help or I'm just not understanding something I'm comfortable reaching out.
- Improving your process with reflection
I think of using reflection to improve process in a couple of different ways. Firstly I like to reflect by going over my work and checking that I still understand it. Secondly I consider exploring and reapplying concepts outside of exercises to be a type of reflection. This is something I can really improve on because I find it hard to experiment on my own sometimes.