It seems most of the development work I do these days mainly consists of finding appropriate libraries and duct taping them together, or schlepping strings around from place A to place B.

Algorithms and Data Structures, the foundations of “getting our computer to do something useful”, seems to have fallen by the wayside. However, they are still important! As soon as you write software that may be given a lot of data to operate on, you need to be aware of the performance characteristics of the software you wrote or the library you integrated. It can be the difference between waiting a day for an answer and waiting a minute.

Conversely, when you know your software will never be given a large input size to work on, there is no need to spend days trying to eek out every last bit of performance.

In a Sioux Lunch Boot Camp (formerly Kata Kitchen), I talked about this topic and challenged my colleagues to solve a simple algorithmic problem (in this case, merging an arbitrary number of sorted lists). I think it was a great exercise for everyone, going back to fundamentals and working some brain matter that is usually ignored. Unsurprisingly, most people failed to solve the problem within the allotted 45 minutes, though many had a good strategy for approaching the problem.

I put the slides on-line (below), in the hopes that they may be useful to someone. But the real message is: go and exercise. There are many platforms with algorithmic programming exercises, such as Project Euler. For this boot camp, I used Leetcode’s Online Judge, which is awesome because it also verifies the program with a test set, and a has an on-line editor that has smart indent (you’d be suprised how much difference that makes ;).

Go on, start coding!