Looks like we have a problem!
Here I am going to explore my use of problem solving techniques in the JavaScript-Kata during Sprint-4.
This should be simple! (Being blocked on a simple task)
What problem? I found this a few times when working with objects in objects where I just could not remember when sitting in front of the task. (The tasks in Manipulating objects and Gradebook)
How I approached it: I was kind with myself and reminded myself that it is a lot of new information to take in and that a big part of programming is about being able to find the answers rather than just know them.
How it felt: It was frustrating, but also really good to be able to practice being kind to myself and recognise that every time I was rereading and using the web resources the more I was setting pathways to remember in the future.
What did I learn? I learnt to be kind to myself, and that sometimes there are just things that don't stick so well so to leave tabs open so that I can go back with the next task and the next!
This is elegant!
What problem? Unjumble your words. A challenge asking for a string to be reversed and then returned.
How I approached it: Initially when reading the problem I was not quite sure how to do it, then reading the second line of instructions it gave me a good hint which had me thinking of array methods as well as working with strings. Which helped me to break down steps for getting to the solution. I could not remember the notation for the methods so a quick google got me to the right pages and I was off.
How it felt: It felt really awesome! I really liked being able to think through what I needed to do, google two things and then get it solved. With reading the notation I realised that I could combine some of the steps that I had thought of in the same line which led to some code that felt very pleasing to my brain.
What did I learn? That while I don't have to know exactly how to write the built in methods it is really helpful to have looked through the lists to know that they exist, this meant I knew I could google the type of method and see how the notation worked and use it to solve my problem quickly.
How do we do this? (Using problem solving techniques)
Pseudocode I do find it quite helpful to write out what I need the code to do in my own words before then trying to write the code for me when the task feels like it has a few steps or if I am not sure of how to start.
Trying something I am pretty big on this, I love to pop in some code and log it or run it to see what happens and test my knowledge. Sometimes I can get a little stuck on this when I should go to doing some googling or something else rather than continuing just playing around with the code seeing what happens when I change different things.
Rubber ducky method My eldest daughter is a great rubber duck, she is very enthusiastic about listening to me talk through what I need to do and it is cool how this can unlock ideas I didn't see before talking it through.
Reading error messages This was great in the kata! it helped me to see what the test was looking for, and also helped me to understand just what my code was sending back, which often was not quite what I expected.
Console.logging I have done this quite a lot also as I try and figure out what my code is doing and also to check that the small steps within my code are working. It can be really helpful in working out what code is doing that is not quite what I expected.
Googling I have used this a lot, both looking for solutions to problems I am having, looking up builtin methods I remember exist but cant think how they are written and also looking up the notation for things that I thought I knew but are not working. For I little I was wondering if I was going this too much but fortunately I then stumbled upon a meme about developers googling which had me feeling a lot better!
Asking your peers for help This is one that I get a little nervous with but as I get to know others more it is definitely getting easier and I think with pair programming this can only get easier also.
Asking coaches for help I have not really done this with coding challenges yet, but have had good check ins with the facilitators and they feel very accessible so don't think this should be challenging when I do need help from them.
Improving your process with reflection Once I get to the end of task and think about how I went about solving it, or what had me blocked I do often find that I learn things about how I learn or what works for me figuring things out, which then helps me with other tasks.
Nobody knows! (Asking for help is hard!)
This is an interesting thing, as so far it has mostly being that when I am going in circles I feel like I must be nearly there surely and so really want to keep at it to work it out myself and have that satisfaction, but when circling and circling I have a couple of times had to work through that resistance and go and get some guidance from a friend about what might be going on or pointers on what I am missing.
Another thing that can be a barrier is ego, the feeling that I should know the answers or be able to find then myself and the imposter syndrome saying that if I ask for others then others will know that I am not really up to the task.