Graham Robertson

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

Graham's Capstone Survival Guide: Week 1

A summary of my first week of Launch School's Capstone program - data structures, algorithms, and zoom meetings galore.

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

Outside of the Launch School ecosystem, I find myself consistently having to explain so much of the mystery surrounding the entirety of the program - mastery-based learning, fundamentals of software development, self-paced education, and more - and how it's not your run of the mill software development bootcamp.

Inside the Launch School ecosystem, I find many people look to the future and see a mysterious pipeline that is the Capstone program. While the secret sauce of Launch School is most definitely contained within the Core curriculum, I figured I would try to document my Capstone journey so that any future LS students can see what it could be like for them.

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

First, I'll remind everyone that before Capstone officially started, each of us spent about a month doing preparatory work individually so that we could hit the ground running. The prep work consists of familiarizing yourself with, not mastering, a wide array of technologies and concepts. So the below list is by no means a list of things to master in the span of a month.

Here were prep topics for my cohort:

  • Basic proficiency with Golang
  • Data structures and algorithms
  • React and Redux (basic CRUD functionality)
  • ES6 standards
  • Docker
  • AWS Practitioner Course (certification not required)
  • Ruby on Rails (optional since some come from the JS track without learning Ruby)
  • General preparations in regards to administration, organization, etc.

With that being said, let's dive in to this week's topic.

Data Structures and Algorithms

The first two weeks of Capstone currently consist of covering problem-solving in regards to many of the algorithms and data structures that come up during software engineering interviews.

Most days are broken up into three sections: a morning session spent reviewing the previous day's group homework and clarifying any points of confusion and sometimes introducing new material if everyone's up to speed, the next session spent covering new information and discussing it as a cohort, and a group session with your team.

This week, my team would meet to discuss a high-level approach to solve a problem - that is, discuss what algorithms would be the most efficient with the given problem. We covered and solved problems that dealt with the following: binary searches, two(or more)-pointer approaches, linked lists, recursion, and divide and conquer approaches.

After we determined the domain of the problem, we would either individually or as a group come up with an implementation to solve the problem. For certain algorithms, there's not much wiggle room for how to implement them, so we typically talked about the implementation together and then would break off to implement solutions for the bigger problems on our own.

We would then come back after a set amount of time and compare solutions, discuss time and space complexity differences if we arrived at different solutions, and then the next day one of us would end up presenting our approach and solution to the entire cohort.

Takeaways

I remember when I was in college for electrical engineering, I was tangentially aware of data structures and algorithms. Most of my knowledge, however, came from the few CS grads I took Intro to Programming with. And because they talked about DS&A like a vampire talked about garlic, I assumed I could never begin to understand them since I was a low-level person. I mean, they made Physics II sound like a walk in the park in comparison. And Physics II was my "third times the charm" class - meaning after not understanding anything the third attempt at taking it, I figured maybe EE ain't my thing and jumped ship.

Because of this, I also avoided DS&A like a vampire would avoid garlic. It just never occurred to me that they would be, all things considered, fairly straight-forward as long as you understand the fundamentals.

When I realized big-O notation (i.e. time / space complexity of an algorithm) could ultimately be thought of as the limit of that algorithm as a given input approaches positive infinity, I realized the reason so many of my CS classmates couldn't grasp it is because I had to take so much more math classes as a "pure" engineering student and they didn't. And it probably also had to do with my ex-alma mater not really having their stuff together in the CS department.

That's not to say you need a heavy math background to understand time complexity, since I could explain it in even simpler terms - given an input with an indeterminate size (like an array), certain operations will take longer as that given input gets bigger and bigger. That's the crux of time complexity. If that makes sense, time complexity will make sense.

At the end of the day, you'll still be building mental models for approaches to solving a problem that match certain problem domains - just like you've done in previous LS units (think LS216 or the XY109 interview).

Organizational

This is perhaps the biggest hurdle for me. As someone with severe ADHD, I struggle a lot with many essentials here. While I love the constant new information coming in and spiking the novelty receptors in my brain, the shift from my self-paced schedule in Core to the prescribed schedule in Capstone has been rough for me.

While it's not as strict in the timing and duration, it's still many more hours than I spent studying during Core - compound that with Zoom meeting fatigue and juggling other things like appointments, exercising, eating (I know how it sounds, but my meds are also appetite suppressants so eating can be more of a chore at times), and homework - and it can quickly feel overwhelming if you have been doing Core full-time.

Takeaways

Ultimately, the best thing this week taught me was to find a system that works for you and stick with it. Keep a calendar, a sticky note wall, whatever it is - and USE it. You will have many more meetings, deadlines, things to follow up on, etc. to keep up with than in Core.

And on the other hand, don't beat yourself up for feeling out of breath. Remember to actually step away from your computer during break periods, go outside, have a set hour that you stop working no matter how much you've finished, and at the end of the day this is a marathon not a sprint. You're not going to be able to handle the next day very well if you're overworked, tired, and irritable - it will just keep compounding and get worse.

Oh, and also (this is more of a note to self than anything), make sure you're keeping your desk and office clean and organized. It will make the days much less stressful when you don't have to constantly re-arrange the multiple cups, notepads, and microcontrollers on your desk just to write something down on a Post-It note.

Mental

There are obviously personal-life things that have impacted this as well, but if I'm being honest, I'm very tired. This week has been a bit of a whirlwind, and in the midst of it I was having trouble really delineating between days, events, and more. I recently increased my dosage for my meds, which helped somewhat on Friday, so I'm hoping that will continue to help with the time-blindness and executive functioning.

Takeaways

This kind of goes with the previous section a little bit but - be nice to yourself. You're gonna get stressed, anxious, and feel overwhelmed. If you feel lost, that's okay. Lean into it and rely on the amazing community around you to help you keep moving forward.

Set aside time for yourself. No matter what it looks like, it's important to do things that are rejuvenating for your mental health and well-being. While it might seem like work, writing these is one of those things for me. It allows me to process the past week, practice something I enjoy doing, and connect with new people.

Conclusion

I didn't really know what to expect going into Capstone (part of my reasoning behind writing this), so this week was mostly a re-adjust things as I went along type of week. A lot of figuring out things that work for me, how much time I need for things outside of Capstone, and getting better at realizing that 40 minutes have passed, actually, and not 10.

I know a lot of the road-signs on your path to Capstone can seem scary. But if you've gotten through the Core curriculum, I promise that you will be plenty prepared for Capstone. And no, you will not have to live under a rock for the 3 months it takes you to finish. That's not to say this isn't a time commitment, it very much is. But you can still go out with friends, have time to yourself, and do the things you love doing - you'll just have to be a lot more intentional with your time.

Thanks for reading and see you next week!