I have now finished the first three weeks of Lambda. It is pretty intense. They throw a lot at you, constantly. It is difficult to keep up. But you learn a lot very quickly. Every Friday when it comes time to do that week’s challenge (which acts as the test to see if you’ve learned the material) it is incredibly daunting. But always doable. And then if you look at last week’s challenge it seems like a piece of cake compared to this week’s. I think that is a good pace to have, striving and challenging yourself so much that you are always working on something just out of reach. I don’t know if it is sustainable at the rate we’re doing it now. But I have a feeling that it is doable for six months.
This week we learned about networking and using different queues to do work simultaneously or in different orders. There is a lot of complexity that comes along with that and it is easy to get lost in webs of JSON, but it also feels like the door to the world has been opened. There are so many possibilities now. I think there are two big steps that we have taken so far in our progress. The first was getting some code I had written off of my computer and onto my phone to run. The door to my phone was opened. The second was getting from the isolated island of my phone out to the internet. The door to the world was opened. We haven’t done anything particularly impressive yet, or even all that interesting. Just worked with some simple API’s to GET or PUT some data. But I made a simple journal app that will sync between devices (and is also public to the world) and a Pokédex app that will load some information from an API about any Pokemon you want. I wrote all the code from scratch and I figured out how to communicate with the API. That’s not a thing I could have done last week. I think that is a common experience when going through a boot camp or class or whatever, but is especially true in this Lambda course.
There is something about just writing the code for yourself a few times that really helps you to internalize it. I have never really had a great grasp on GrandCentralDispatch or on using URLSesson but I am way more comfortable with them now. Partly because I’ve just written the code over and over and partly because I’ve had to struggle through figuring some things out for myself and partly because I am gaining familiarity with the documentation. I am seeing more and more correlation between reading the documentation and seeing what it actually looks like in practice. So it becomes easier and easier to read the documentation and then try to implement it myself.
As far as the class itself goes, I am pretty impressed with the amount and quality of material we’ve seen so far. There are some gaps. With everyone being remote I am sure communication is difficult and that sometimes leads to things feeling like they are disjointed, or loosely held together. I’ve found that if there is something you need to know, you’ve just got to keep asking it in different places until you get an answer. And you’ll probably get more than one different answer. But it usually works itself out. There are also a lot of typos/gaps in the instructions for the projects and no clear way to suggest changes. But if you do some basic problem-solving (which I think is a good skill to exercise as a programmer) you can usually figure what they intended. Or you can just make a decision for yourself and see what consequences it ends up having as you go along. Which is also probably good experience as a novice programmer. And if you make a mistake, you can always rollback to a previous commit, or just change what you have written. It’s code. It’s not written in stone.
One thing I have noticed in my classmates is that there are people who go through the instructions and follow them word for word and do very little experimenting and there are people who do a lot of experimenting while kind of loosely following the instructions. I think the ideal is somewhere in the middle. Following the instructions where you don’t know why it is having you do a certain thing, and experimenting where you do know why and what effect your changes will have. That way you get the best of both worlds, you get to stretch and challenge yourself on the things you already understand and you get to learn things about stuff you don’t already understand. The important thing is figuring out why.