Graham Robertson

Musings on technology, music, psychology, and documenting my non-traditional path to software engineering.

Graham's Capstone Survival Guide: Week 3

The next installment of my guide for Launch School's Capstone program. This week? System design.

Purposefully poorly edited image of a title screen for the Nickelodeon show "Ned's Declassified School Survival Guide", with "Graham" covering "Ned", and "capstone" covering "school"

Preface

You can catch up on this guide by starting at week 1.

I'll be organizing these reflections into the three sections: Technical, Organizational, and Mental. These make the most sense to me because they are the three pillars that seem to bring about success during Capstone, and are also the areas of your life that might be the most impacted by Capstone.

And the most important disclaimer of all: unlike Core, Capstone is a living curriculum that is constantly changing based on what graduates are experiencing in the workforce. Specifics of topics of study, material, and more are subject to change by the time you may be in Capstone.

Technical

This past week was the first transition within Capstone: shifting from the previous topic of data structures and algorithms into our current topic of system(s) design.

System design can generally be thought of as how we approach solving problems that relate to scalability. The content within this portion of Capstone can be overwhelming; however, the most important aspect of this portion is building awareness and context of the issues that arise.

Don't feel pressured to know and understand every facet of the technology or tool you cover. We approach most of the information within system design from a user perspective. For example, there is a lot of stuff going on even within a single database server, and peoples' entire careers could be spent within that layer - we just need to know how to use databases and how different ones fit different use cases. The same goes for caches, load balancing, CDNs, and any other system design concept you might run into. We are users of these systems first and foremost, and if you keep that in mind you will feel comfortable as long as you're able to understand why and when to use that specific design pattern or technology.

Organizational

Diagrams. Lots and lots of diagrams. Find a tool you enjoy using for diagramming and get really comfortable with it. You'll see a lot of people using draw.io, but I also recommend Miro for collaborative diagramming and DBDiagram for quick Entity Relationship Diagrams.

You'll want to keep these diagrams around as you'll be able to then go back and reference them later to give yourself a refresher.

Mental

This is definitely the week where everyone could "feel it". The burnout, that is. Or perhaps burnout isn't the right word - instead, it's just the abrupt transition from MBL to JIT learning finally settling in. Your brain is soaking up a much larger quantity of information than you're used to in Core and at a much quicker pace. This is why you need to give yourself breaks and understand that some things just won't make their way into your brain on the first pass-through.

This is where the community aspect of Capstone kicks in. If you better digest content in video form, someone might have already found and shared a video on that topic in the Slack. If you come across a problem when setting up a VPS, someone might have posted something on Basecamp that addresses that same problem when they encountered it earlier.

And at the end of the day, awareness and context is enough to take with you and be able to research effectively. For example, if you haven't done much with databases, then the BASE acronym won't mean much to you - but even being aware of other terms like "ACID" and "the CAP Theorem" will help you when trying to find more information.

Conclusion

It's been a busy couple weeks. I've got a couple more interesting articles in the works, which is why this one is so brief. From this point on, I'll most likely write these reflections about each topic as opposed to each week. So I may spend a bit more time this week and write something more comprehensive for system design once I'm finished with this week if I deem it necessary. But after that these will be written from the perspective of a portion, rather than a week, of Capstone.