— 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.
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.
This week, we covered the following:
In my (oh-so-scarce) free time, I:
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.
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!