Lambda School - Week 12: The SQL Sequel

“It’s working!”

— Anakin Skywalker (In his whiny youth)

Let me summarise this week for you:

* Working on a project, trying to build SQL queries *

“Hmmm, this is trickier than I thought. I don't know how to get these tables to merge. Let me try something..”

* 30 seconds later *

“Ahhh, I get it! Makes total sense! This goes there and then this other thingy ends up over here!”

* Another 30 seconds later*

“Wait, how does this work?”

Yeah, it was one of those weeks…

If you happen to have lived under a rock over the past couple of months, let me quickly introduce you to Lambda School. Lambda School offers online programs in software development, UX design, data science, iOS and Android mobile development. The best part? It has no up-front costs!

The curriculum is 9 months long with full-time enrollment. This used to be 30 weeks, but has recently been extended. Instead of paying tuition and having to take out a second mortgage just to pay tuition, Lambda School uses Income-Share Agreements (ISAs). With it, students pay a percentage of their monthly income after they’re employed. If you don't get a job, you don't pay anything. Second, you only start paying if you're making more than a certain amount per year. Depending on where you're based, different percentages and pay-off plans exist. Americans pay 17% for 2 years after graduation, while Europeans pay 10% for 4 years.

In the US, If you make less than $50k after graduation, you don't have to pay ‘em anything. Also, you will never, under any circumstance, pay back more than $30k. (Note: you'd have to be making more than $88,000 per year to achieve that) If you happen to make less than that, you simply pay less. After two years, you're off the hook What's more, if you don't find a job and spend all that time making less than $50k, the ISA lapses after a couple of years.

Recently, Lambda has introduced a living stipend program. It'll pay students $2000 per month to cover monthly bills while they focus fully on their studies. In return, Lambda asks for 10% of their income over 5 years. The payoff is capped at $50,000.

“But I Don't Even Like Puzzles!”

This was a week a lot of us had been looking forward to. Last week, we covered RESTful APIs, how to create endpoints, doing data sanitation, etc. Now, we’d cover the last piece of the puzzle; building databases and queries from scratch. We were to meet my arch-nemesis: SQL

For some reason, I've alway had a love/hate-relationship with SQL. Conceptually, I love it. Thinking in terms of interconnected tables just makes sense to me. Using it was also a breeze. For the most part, that is.

When you want to combine data from multiple tables in SQL, you have to do a so-called join. In essence, you're requesting that both tables get mashed into a single overview, based on the requirements you specify in the join query. And I always struggle to write them properly. My first two or three tries are always incomplete yet I have no clue why.

I definitely have to practice some more over the next couple of weeks. Use it or you lose it, right? There's no excuse for not having mastered this particular aspect of SQL. I've heard about a couple of good SQL courses on Udemy. I might check them out. It's all about reps, right?

This week was heavy on the theoretical side. Refreshing if you ask me. Being able to sit back and ponder the how's and why's of database design is a nice change of pace. Not having to pound out hundreds of lines of code per assignment is a plus too.

As we're nearing the end of the full-stack portion of the curriculum, I've started thinking more and more of what I'd like to do once I finish. I'm still flirting with the idea of building a startup somewhere in the next couple of years. At times, though, I don't feel completely confident in my ability to pull it off. And that's exactly what I wanted to talk about this week.

When pondering the very idea of running a startup, I get intimidated. From the get-go, you have to build a fully-scaleable database, a robust infrastructure, take care of authentication, accessibility and developer environment, right? Well, maybe not.

I recently had to remind myself that building a simple side-project isn't that difficult. Set up a rudimentary database, make sure authentication is in place, and just code away. However, I feel as if though there's this gulf of the unknowable separating my current skillset and the complex sub-systems tech giants like Uber or Amazon would use. Then the realization struck; “Of course there is!” I was comparing my current situation and skills with an organization that has thousands of people working on it.

I had a good talk with our teacher, Gabriel, and he slowly but surely walked me through what goes into building and designing a fully-fledged startup, from scaffolding and UX-flow to styling and routing. I felt relieved. I wasn't inadequate or not good enough. I was simply comparing something of extreme complexity, with many hundreds of layers added on top of each other, with something you can make in one go.

I realized that, no matter how smart someone is, you're not going to build a world-class, scaleable app in one go. Odds are you'll have to redesign and reiterate over a couple of features before your MVP is complete. Sure, there are a couple of rockstar programmers who can bang out an email client in an afternoon, but they're the ultimate outliers.

The vast majority of startups started with a very basic, some would say flawed, product. So they moved fast and release before they were ready. They updated their databases, making it more scaleable. They hired some PhDs to beef up their security. Simply put, they added layers of complexity until they reached the calibre of Google and Amazon.

So, note to self: Relax and trust the process.

Given enough time and a good team, it's possible to grow your startup further and further. You don't need to be a genius. Nor do you need to be a particularly great programmer. You just have to be willing to be scrappy and build upon your previous (flawed) iterations.

One step at a time.

Tools of the Trade

This week, we covered the following:

  • Relation Database Management Systems (RDBMS);
  • The basics of SQL. It's uses, history, basic;
  • Brief intro to NoSQL databases like MongoDB and GraphQL;
  • SQLite, PostGreSQL, migrations, and seeding;
  • Understanding data modelling and different data relationships (i.e. one-to-one, one-to-many, many-to-many);
  • Understanding relational vs. document-based databases;
  • Using Knex, a JS-based SQL query builder for node.

In my (oh-so-scarce) free time, I:

  • Did about two chapters of this React-Native course. For now, I'm putting this on the back-burner. I try to watch some of the videos when I've got the time, but I'm not frothing at the mouth to get into React-Native right now;
  • Played around with the MongoDB aggregation framework. Found a couple of challenges online that really stretch the limit to what I know of Mongo. I only later realized that aggregation and SQL joins aren't that dissimilar.
  • Finished a simple HackerRank clone and hosted it on Netlify. It's based on the examples in Robin Wieruch's ‘Road to React’, but I'm planning on adding further modifications. For now, it's just a searchable instance of Hacker News. I plan on adding some extra features to make it my go-to reader. Top articles of the week, categorization by subject and perhaps some fun statistics like most popular buzzwords over time.

State of the Lambda Union

This was one of those weeks where everything seemed fine and dandy, except for that one thing. Overall, it was a lot of fun to cover databases. I learned a bit more about the theory, got some extra reps under my belt in writing queries, and still kinda hate doing SQL joins.

Lambda School has now covered the entire stack, front to back. We've built our static websites and added functionality with native JavaScript. We've tackled React, state management and api requests. And the students now know how to build and connect databases. It's become a logical process.

Next week, we'll have to decide on whether or not we want to do a stint as a Project Manager. I still haven't made up my mind, but the idea is definitely appealing to me. We'll see…

Till next week!

Sign Up For Friday Favorites!

Join the 500+ people who receive my Friday Favorites newsletter in their inbox every week. It's a mash-up of the most interesting links, books, and ideas I came across that week, as well as my latest articles and book notes. If you're curious and looking for high-quality information, you should definitely join.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.