How much is enough?
The web industry moves extremely quickly. We are learning all the time, and developers that aren’t quickly get left behind.
Trends and the new fun thing change all the time. CSS3 animations one week, Shadow DOM the next, Web Components another, JavaScript’s upcoming generators the week following and Node.js streams after that. And all of this is great fun to learn, and more importantly core to keeping abreast of new developments and therefore staying ‘relevant’ as a developer.
But recently, more than ever, I’ve realised I may be a decent developer. But I don’t think I’ll ever be a programmer. And it made me sad.
You might be wondering what the hell I’m on about. Stay with me. I personally don’t have a computer science background. I did a multimedia computing degree, and almost everything I know regarding code and web development is self-taught.
I also don’t have a good maths background. I didn’t really have a big interest at school, and left with a C at GCSE level and that was it for me and maths.
And then a discussion popped up on Reddit about being a programmer and how important it is to be able to create data structures and algorithms.
The key word is create, not use. I know data structures fairly well, and I know when and when not to use the majority of them. When it comes to algorithms for something like sorting it’s not generally something I have to deal with. In JS if I wanted to sort an Array I’d call Array.sort()
, most likely with a comparator function. Under the hood I know a couple of algorithms are used depending on browser and array length.
But could I write one of these algorithms from scratch, or create an entirely new one from scratch? Truthfully, no I don’t think so.
I started reading Introduction to Algorithms, and it was quite overwhelming (okay, extremely overwhelming). I then stumbled across a really good blog series called Computer Science in JavaScript, along with it’s Github Repo. These really helped with my understanding due to the diagrams. I could follow along, and understood what code was doing when I looked at it. But that’s the thing, following along is not writing yourself. Given time I could probably write an insertion sort, bubble sort and selection sort function now. Quicksort and merge sort functions, however, hurt my head a little bit more. The Luhn checksum function also made total sense, and was something I could replicate.
Something I struggle with is not being able to “be the best”. Not in any sort of arrogant way, but I don’t enjoy being average at things, I like to try my best and improve. But when do you just say, you know what, no. This isn’t something I can do.
Everyone has their skills, heck maybe some would struggle to write a recursive function to walk the DOM, but that’s second nature to me. On the whole though, the post really bummed me out a lot more than I’d like to admit. The greatest and most efficient things out there are normally backed by some sort of knowledge of algorithms. Does that mean I’ll just end up writing “alright” stuff in my career? Who knows. But It’s definitely put me on a downer this week.