3 weeks of Viking, a post-mortem
Week 4 is about to start, but as I’ve been going I’ve been taking copious notes and jotting down thoughts and reflections. There are some (opinionated) details I hadn’t come across very often in my research of Viking Code School that you’ll find here.
There’s a lot going on every day and depending on whether I’m hitting a wall or succeeding I’ll feel differently in the moment but overall I’m satisfied with the last three weeks. I’ve learned a ton, there’s more to go, and on Friday I’ll be glad to say I’m 1/4 of the way through!
This goes beyond the remote, deferred payment structure of the program which are, of course, large perks that draw a lot of people. For starters, the application process is rigorous, much more so than a lot of other programs I applied to which I think says a lot about the course. Though it seems to vary slightly from student to student, I went through a 3 part process — a 60 minute, solo, algorithm test followed by a live, voice-only coding session, and finally a longer sample project using new technology.
Viking emphasizes software design and higher level programming concepts — before any coding starts (and, in many cases, even before you apply) there’s an expansive 2-unit focus on the concepts behind modular design, Agile methodologies, Test Driven Development, and user story based development. If you’ve been trying to learn on your own or looking into immersive programs you may have heard a lot about these without knowing what they really mean. They’re not difficult concepts, but getting some practical examples of each topic isn’t always easy just by reading Stack Overflow or completing beginner tutorials. Learning through online resources always left me wondering “Now what? How do I actually use this on a real project?”
Another, less talked about topic in other curricula: soft job skills. A majority of assignments are completed with pair programming and we learn to deal with real-world constraints, particularly time-management. At least once a session I find myself discussing with my pair how or if we should implement something at all considering the limited time we have before code review and presentations.
There’s also a heavy emphasis on the job search approach and building a narrative that explains your career transition. Part of that is writing blogs and having an online presence so that when those inevitable Google searches into your name happen, there’s something there. This is something I’ve found incredibly important for any industry — having a vapor trail sets you apart. Back when I first started looking for a job out of school my blog posts were mentioned in about two-thirds of my interviews and pivotal for the majority of my job offers. All this really set Viking apart from a few other programs I’d been looking into.
The Course So Far
The first 2 weeks have been focused on object-oriented programming (OOP), which I’d heard of previously but as with modular design, many resources I’ve encountered will mention without explicitly teaching you what that means for your code. There’s also a hefty section on computer science — big O, data structures, recursion, time and space complexity and why they all matter. I’ve been told more than once from employed engineers that their bosses don’t like to ‘hand hold’ bootcamp grads—and that many tend to know how to build but lack some fundamental CS knowledge.
There’s a lot to learn and I end up sitting at my desk for far longer than I’d like, but there’s a definite ‘learn by building’ mentality. The working knowledge part of those concepts I mentioned really comes from here. Reading homework each night covers the basics and the next day I’ll learn by building. If nothing else, the program’s daily structure really gets me poking around and breaking stuff so I truly understand what’s going on.
Hurdles and Hiccups
If there’s any real caveat or downside to an immersive program it’s that the pace is pretty brutal.
When I can read ahead, I think it’s alright. Certainly manageable. There’s a set schedule and rigidity that forces 90% of your time to be productive, even if that means getting really familiar with error messages. But if you fall behind at all — maybe you’ve misunderstood or didn’t get to finish all of the night’s reading — the subsequent pile up can be difficult to sort through.
With Viking specifically, there can be some bugs in the course. Here and there the lessons and written instructions can feel fragmented, for example: an assignment might have been changed recently but the corresponding instructions haven’t been fully updated. It’s bound to happen in such a large and packed curriculum but if you ever need clarification someone’s there to help you out. On the bright side, it really forces you to think about the given problem to solve it.
Pairing with someone who isn’t at your level can be frustrating. Sometimes one person has to carry the other, I’ve been on both sides of this and either you feel bad for having to be carried or slowed down for having to pull someone along. Other times it’s simply a daunting task to communicate with a pair. I might take for granted the way I think about a concept that can be completely new for my pair. Perhaps they conceptualize differently, they code with slightly different conventions, or maybe they’ve had just a bit less sleep than I did last night. 7 hours of coding with new concepts while having to constantly talk through a challenging problem can tire anyone out.
Week 3 is where things really start getting fun, we’ve built some simple apps with Sinatra and in week 4 we’re starting Rails! The last couple of weeks have taken some trial and error to figure out what I need to do to stay on top of things. I don’t think that I’ve ever worked this hard so constantly before which takes some getting used to.
I’m busy, I feel stressed, tired, sometimes frustrated, but I’m still excited about all of it. I feel challenged and engaged — I can also now say that I’ve built a web scraper and that’s pretty freaking cool.