Anthony J. Campbell

Lambda School - Week 9: Redux That! 🔁

Anthony J. Campbell
Lambda School - Week 9: Redux That! 🔁
I’m not a great programmer, I’m just a good programmer with great habits.
— Kent Beck

Week 9 of Lambda School is wrapped and done! And boy was it a tough one! This week, Redux was to be the bane of my existence.

For those not in the know, I’m a student at Lambda School’s Full-Stack Web Development program (Read more here). In short, Lambda School is an online learning company with 30-week programs that are free until you get a job. If you don’t get a job, they don’t get paid.

As usual, I've done a write-up of my experiences, ups and downs, shenanigans, and curriculum this week. I intend to keep this series running all the way until graduation! If you’re not yet caught up on my weekly recaps, I recommend you start here.

Finally, if you’re interested in signing up for Lambda School yourself, please consider using —> this link <—. With it, you’ll receive $250 after you attend your first day and Lambda will give me $250 for sending you there! Win-win!

All aboard the struggle bus!

We've come a long way. Two months ago, we got our first taste of what life at Lambda was like. Back then, we quickly got acquainted with the basics of HTML and CSS. Now, we're onto advanced state management. Yeah, the pace is intense…

Suppose you're building a website or app and you want to keep track of a couple of metrics. Whether or not someone has logged in, their account info, if they're premium members or not, so on and so forth. In essence, you want to keep track of a ‘state’. This is normally done on every individual component, with each keeping track of info that pertains to its operations.

Now, what do you think would happen if you're building something on the scale of Facebook? You'd end up with spaghetti-code like no other. What if a component has to talk to another one, placed far away? Obviously, there has to be a better way to do things. Redux is just that.

With Redux, you can have one overarching state (also called a ‘store’) which is then accessible anywhere you want. Whether your app consists of 5 parts or 5,000, it's all the same to Redux. It just so happens that Redux is quite tricky to wrap your head around in the beginning…

My expression on Monday morning.

My expression on Monday morning.

Redux would thoroughly kick my ass, I just didn't know it yet.

To set-up Redux, you have to have to split up your previous workflow. Actions, Reducers, Action Creators, and mapStateToProps; it all made my head spin. Were was I supposed to put what, again?

It was a lot to take in at first and the first two days passed by in a blur of unfamiliar terms and a lot of guessing. I knew Redux was a deterministic skill; there was a right way to do it and a wrong way. I just couldn't figure out what the right way was!

After barely managing to wrap up Tuesday's assignment (by taking more than a cursory glance at the solution), I knew I had to try a different approach. So, come Wednesday morning, I woke up at five o’clock, opened up Training Kit and went to work. I find that I learn best when taking it slow and summarising everything as I go along.

In a sense, I'm recreating the Feynman technique. By taking notes as if though I'll be teaching someone else (myself), I have to explain things logically and succinctly.

Four hours later, just before class started for the day, I finally got Redux.

Another day, another framework.

As always, here's a small recap of what we covered this week. It's staggering to see how much we've covered thus far over the past two months. At the end of Lambda, I might put everything together into one enormous list.

This week, we covered:

  • Redux (duh!);

  • Store;

  • Actions & Action Creators;

  • Data immutability;

  • Middleware;

  • Redux Thunk & Logger;

  • Async requests using Redux;

  • API-Token Authentication;

  • Protected Routing.

I also did the following outside of the curriculum:

  • During a lunch break, I quickly figured out how to use moment.js. I'd seen it mentioned in some of my documentation, so spent maybe twenty minutes browsing the docs.

  • I also spent an hour or two playing around ReactStrap, an alternative way of styling React components. Frankly, I didn't really care for it. Using vanilla bootstrap with HTML is so useful because it's instantly clear how the grid-system will affect your content. With React components being self-contained and in separate folders, this is absent; hence reducing its usefulness.

  • I watched the first couple of videos of this Udemy course on React Native and Redux. So far, I'd highly recommend it!

  • Finally, I reviewed about half of Wes Bos’ excellent course on Redux (found here);

Slowly but surely, a vision is starting to form of what skills I want to build before graduating from Lambda. Sure, we'll learn plenty. Hell, we haven't even covered the back-end or CS just yet.

I want to be capable of putting together an MVP of anything and everything I could ever come up with. Whether it's a language-learning app or a SaaS company doesn't matter. I want to be just dangerous enough to put together a public beta and look for funding.

State Of The Lambda Union

Is it just me or are these posts getting shorter?!

This week was by far the most difficult week thus far. I'd never used Redux, so there was no head-start to speak of. I struggled like you wouldn't believe. And yet I felt all the better when everything finally clicked.

Next week is build week. Normally, every Lambda student gets assigned to a team with members from different programs and cohorts. However, since we're the first (and currently only) EU cohort, there's no such option for us. However, some of the EU students have decided to work with the US-based students, differing timezones be damned.

Next week will be interesting. It'll be cool to see what we can come up with in four days of non-stop activity.

As always, I'll let you know next week.