As a software engineering student, it can be daunting to even begin thinking about how large companies build and maintain software. Going from building simple apps with no users to an enterprise setting where an app has multiple teams working in tandem, new features being deployed, and millions of users who expect no downtime can be unfathomable to novice engineers (myself included).

In light of this, I set out to break down one of the most common software architecture styles that I encountered when researching how large companies build and maintain software.

At some point in our lives, we’ve all come across the idea that computers “speak” binary — a cryptic wall of 0s and 1s that somehow builds up to everything we see and do in our digital lives. Even as you read these words, the device you are using is somehow manipulating 0s and 1s to make it possible.

As a software engineering student, and more generally as a curious person, I wanted to bridge the gap between the polished interfaces that I interact with on a daily basis and the underlying mechanisms at work to enable them. This is…

As an artist transitioning into computer science, nothing struck fear into my heart like seeing mathematical notation.

When it came to understanding the runtime of algorithms and how it scales given an input, (time complexity) I was overwhelmed with the mathematical notation, coefficients, graphs, proofs, and concepts that seemed a lot more complex than they actually are. I thought I’d need to solve equations to be able to effectively find the runtime of my functions. Thankfully, I discovered that for the most part the runtime of algorithms can be figured out intuitively by following a small set of rules.

First…

When I started to learn about software engineering few things stumped me as much as recursion. I was able to grasp loops, data structures, and algorithms, but a succinct four line recursive function left my brain short circuiting.

Recursive functions are functions that call themselves, thereby repeating the logic they encapsulate until (hopefully) an end condition, or a base case is met. Since a recursive function calls itself and repeats its own logic, without a base case it would theoretically repeat forever, but in practice you’ll get a stack overflow when your function is called too many times.

The part…

Curious and passionate software engineer that uses way too many gifs.