Time flies. It really does.
One of the things I discovered when I first started this blog is that I really enjoy writing, and as much as the writing, the thinking about and reflecting. I haven’t taken the most direct route into coding by any means and so when I first started, I figured it would be a good idea to write down the little things that can help speed up a coder’s learning – partly for you, the reader who may be anywhere in their journey to coding mastery, but also for me, we tend to forget things if we don’t write them down and think about them!
And yet, it’s been a while since my last post simply because I’ve been too busy doing, and haven’t had a chance to come up for air and think, well, what have I learned the last few months? What would I tell past Jeremy to help him learn better.
Over the last few months I have:
- Done summer school for the first time and the last – I’m in an accelerated program so we’re pretty much in school year round!
- Completed the “interview courses” at UBC in Algorithms and Computer Systems – i.e. the ones that are meant to provide the foundational theory for answering most interview questions
- Built a web application for locating bike racks in Vancouver using Google Web Toolkit for a class project
- Started a four-month internship (a co-op really) at Axiom Zen, a startup in Vancouver downtown
- Coded a LOT during my internship
- Convinced myself (again) that I could definitely work as a software engineer (as a decent one too, I think – but then again I’m biased)
Classes, classes, classes…
The first three points in the list above kept me pretty busy all through summer, taking 4 courses at one time is no mean feat. I was super excited to take the courses that everyone said would prepare me really well for interviews for my next co-op and for a full-time job after graduation, but to be honest, I realized that the profs mostly covered the theory in a somewhat abstract way, and it was left to you to connect the dots come interview time. A typical university education some might say, but with the wealth of resources available out there, and if your one and only goal is to get the best software engineering gig as possible, I feel confident enough to say that learning CS theory in a university setting is not strictly necessary by any means. Helpful yes, but meeting up/being mentored by someone who already knows the stuff and thinking about the own problems – which university sometimes gives you little time to do – is more important. When learning about computation systems or algorithms at university, it’s easy to take little diversions into long and complex areas of the field which, while academically interesting, are not things anyone expects you to know in the real world 🙂
Some of the things I learned this summer were definitely interesting though. Particularly the intermediate algorithms course, which covered different approaches one can take to designing an algorithm for a particular problem – everything from stable matching to the debate over P vs NP.
An internship
I finished my last set of exams in late August, took a weekend off (can I even say that? Weekends are default holidays right?) and started my four-month software engineering internship at Axiom Zen. It’s technically a co-op since it’s coordinated through UBC and my university program, but there’s not much difference – I’ll call it an internship from here on in, just because it’s probably a lot clearer to anyone who’s not studied in Canada!
Before starting at Axiom Zen, I’d visited the office and the people a couple of times and really hit it off, so I was pretty much raring to go and started the Monday after classes were over. The company works with clients to develop web and mobile apps as well as incubates its own in-house startups, so it’s definitely a very interesting environment to work in. There is a pretty much flat hierarchy, so that’s definitely been a change from my last job where it was very clear who answered to whom and when (not the why so much, they always left that part out).
Learning and working/coding in the real world is a new stage to my coding journey, and one that I’m looking forward to sharing with you over the next few months. The plan is to write short posts with the little nuggets of wisdom that I’ve gleaned from working at the coalface of the industry, things you don’t or can’t generally pick up at school or working as an independent.
Since I started at Axiom Zen, I’ve been treated pretty much like a full-time software engineer and have written lots of code, and just generally gotten involved! That’s definitely something special – we’ve all heard of those internships where you do little more than fetch coffee and sneakily check facebook – so I’m having a good time and learning lots which I hope to translate into a collection of posts. Stay tuned!