After writing a very long post about my first day and what my first week was like at Makers Academy, I wanted to write a last one about the things I learnt. I know what you are thinking and yes, it’s a lot of writing for only the first week week, and my intention was to make only one post, but I wrote a lot and ended up having to do three different posts instead. C’est la vie!

This post is mainly for tracking my own progress during the course, so it may not be of much interest for other people, feel free to skip it.

Person reading a book with a cat and coffee next to them

One of the first things we were told at Makers Academy is that we have three main responsibilities regarding our learning:

  • We are responsible for choosing what to aim for (our goals)
  • For deciding how we are going to get there (our plan)
  • And we need to get insight into how we are doing and prove to ourselves that we have reached those goals (self-assessment)

Course goals

These are the proposed goals we have been given for the entire duration of the course:

I can make software

  • I can TDD anything
  • I can program fluently
  • I can debug anything
  • I can model anything
  • I can refactor anything
  • I have a methodical approach to solving problems

I’m equipped for long term growth

  • I manage my own wellbeing
  • I can learn anything by myself

I help my teams succeed

  • I use an agile product development process
  • I write code that is easy to change
  • I can justify the way I work
  • I grow collaboratively

For each goal, they give us examples of what “weak”, “moderate” and “strong” evidence that we have achieve those goals, and that is what I will use to assess my progress.

Goals grey notebook and pen by Ronnie Overgoor

During this week, I have worked towards the following goals:

I can TDD anything

I have been working on exercises on how to Test Driven Develop a single method, a single class and I started with a slightly more complicated exercise involving several classes together.

During these days, I have become confident writing tests for the instances of a single method and a single class that involves several methods. I have moderate and strong evidence of this in that I have watched videos of someone else doing the skill and it resembles my process, I have recorded myself and sent this video to a coach for assessment and I have also tried to teach this process to someone else.

Writing tests that your code should pass before you even write the code itself can seem a tedious process, but later down the line can mean the difference between spending days debugging your code and making sure it does what it needs to do every time you implement a new feature versus being able to run the tests again and seeing where it fails and why. This is one of the first skills you want to develop as a Software developer, as it will make your life (and everyone else’s you work with) much easier.

I can program fluently

Although I have been working towards this goal during the week, I still feel like I am a long way from getting there. I am capable and confident of programming some basic things but I am yet to get more fluent with my writing and my flow control.

I can debug anything

I am also currently working on my debugging skills. We have been given a couple of debugging exercises and I have been successful in completing them in the given time. I have moderate-strong evidence of this in the sense that I was able to explain this skill to someone else and they picked it up relatively quickly.

One of the sentences that stuck with me from one of the coaches was that the trick to debugging is that you have to “pee everywhere”. The meaning of this sentence is that if you print (“p”, “puts” or “print in Ruby language) every step of the code, you will be able to see much easier what is going on. I will try to write a post on this later on as it is one of my favourite parts of coding so far, it’s a bit like doing detective work!.

For someone starting in programming, this is definitely another one of the skills you want to understand from a start. There is nothing worse than staring at a block of code for hours trying to figure out what it is doing and where it is failing but not being able to get your head around it.

I can refactor anything

During the pre-course and the last week, I have been trying to leave my code as tidy as possible once it was functional. I have some evidence of this on the videos I have sent my coaches and on the pairing exercises I have done in the past, but I think I still have a lot of room to improve this skill.

I have a methodical approach to solving problems

I have been trying to approach the problems in a methodical way, for example creating “recipes” for our classes and methods, in which I described the problem, all the classes, methods and variables involved, their names and what type of object they were, and describing the tests in pseudocode before implementing them.

Another very important way of implementing this skill is breaking down big problems into small ones, and then tackling each of these individually.

I have some evidence of this, once more, on the videos I sent the coaches of me solving some problems and on the pairing sessions I have done with other people. This is a skill I still need to learn a lot of as well.

I manage my own wellbeing

This week has been challenging for a lot of reasons: I had a stomach bug for half of the week and was feeling quite weak, I have been living in a different environment and the commute could be quite exhausting. But all in all, I think I have been managing fairly well, tuning in for meditation sessions, eating well, exercising and focusing on all the good things this week has brought me. Except for the first couple of days, my stress levels have been fairly low which I am very happy about.

I grow collaboratively

I have found a lot of joy and growth in our pairing sessions, in a different way that if I were doing the exercises on my own. By myself, I feel like I can cover more materials much quicker, and with someone, I get a better understanding of the what and the why, and I learn how to put my knowledge into words in a way that it is easy to understand and implement.

Cat and water bottle on book by Quokkabottles