Learning data structures and algorithms as a History graduate

Learning data structures and algorithms as a History graduate

My experience of trying to learn core computer science concepts as a bootcamp student with a non-tech background

I’ve been learning to code for over a year and for the past six months I’ve been on a part-time software engineering bootcamp course. I’m making a career-shift into tech, with a previous career spanning ten years in the consultancy sector and at the National Trust (who conserve historic houses and countryside open to the public in the UK). Before that, I got an undergraduate degree in History from a top university and a Master’s degree in Heritage Management. What’s my point? My point is that absolutely none of that has prepared me for trying to understand what on earth data structures and algorithms are all about. There’s not a computer science degree in sight in that list of ‘things I have done’, which is a shame, because it would be pretty handy right now…

Why bother to learn about data structures and algorithms at all?

Good question. Partly to prepare for tech interviews and partly because, to be honest, I suspect I might find it interesting. What's more, it’s a challenge with a capital ‘C’. My bootcamp course has been absolutely excellent at teaching us practical full-stack tech skills, from JavaScript to SQL databases to REST APIs to React. I can now build full stack web apps with some confidence - or at least I know where to start (and I know what to Google). What the course doesn’t teach (yet) is what I imagine Computer Science grads can explain with ease - programming concepts such as Linked Lists, Hash Tables, Binary Search algorithms, Quick Sort algorithms, Recursion and Big O notation, to name but a few. That’s fair enough; the very nature of a bootcamp means there isn’t time to cover everything one would learn on a 3-year degree course and apparently it’s only the likes of Google, Amazon, Facebook and co. who put their interviewees through questions on these concepts. Do other, smaller companies expect this sort of knowledge from entry-level software developers? No idea. Ask me again when I’ve applied for a few jobs. But in the meantime, I’m slowly trying to get my head around a few of the most common data structure and algorithm concepts. What a way to spend a Friday morning…

This stuff is hard.

Firstly, this stuff is hard. Especially if, like me, you come from a non-STEM background and haven’t studied Maths since you were 16 years old. I wasn’t bad at it, back then, but it doesn’t mean I’ve remembered what ‘logarithm’ means twenty-odd years later (ask me to list Henry VIII’s wives in order on the other hand…). This isn’t the first time I’ve come across this; sometimes when learning to code, it’s not the actual coding that is difficult so much as the assumed knowledge of mathematical concepts/terms, which I’ve found often comes hand in hand. I've found myself having to refer to online resources meant for school children learning about logarithms for the first time, because even the 'Logarithm Basics for Dummies' article I read wasn't simple enough to dredge the long-forgotten knowledge out of the relevant recess of my brain. One day I will get round to doing freeCodeCamp's 'Algebra in 7 hours' online course.

Where to start?

So where should I start? How do I even know what I don't know, if you know what I mean.

One of the first things I did when I decided to shift careers into tech was to talk to the only Software Engineer I knew, an old friend of my brother’s who works at the BBC. He recommended that I get a copy of ‘Cracking the Coding Interview’ by Gayle Laakmann McDowell, which I happily did. I’ve since learned that it’s a bit of a bible for software engineers preparing for the job search. She writes really well and I do like the book a lot, however, it’s 696 pages long and bright green and, quite frankly, intimidating. Not to be deterred, I’ve decided to focus my learning on getting at least a basic understanding of what the author describes on page 60 as ‘the basics…the absolute, must-have knowledge’. I figure if I can briefly explain the concepts to my husband (also a History grad), I'll be halfway there...assuming he'll agree to listen in the first place, that is. Here are the basic concepts to learn according to Cracking the coding interview:

IMG_1970.jpg

Beginning with Big O

"Big O. This is such an important concept that we are dedicating an entire (long!) chapter to it. Big O time is the language and metric we use to describe the efficiency of algorithms. Not understanding it thoroughly can really hurt you in developing an algorithm. Not only might you be judged harshly for not really understanding Big O, but you will also struggle to judge when your algorithm is getting faster or slower. Master this concept." Cracking the Coding Interview by Gayle L. McDowell

So, first up, Big O! Armed with my big green book, a very helpful explanation from one of the tutors on my Bootcamp course and my good friend Google, my journey into the world of Computer Science theory has begun...wish me luck!

Get in touch

Come and say hi on Twitter @jlopenshaw - I talk about #100DaysOfCode, all things tech and my route to becoming a full stack developer. I’m on LinkedIn too.

Cover image: Still from “A Beautiful Mind” (Ron Howard, 2001) / Imagine Entertainment, via mappingignorance.org