[Blog] The importance of studying data structures and algorithms.

Often while browsing stackoverflow and reddit, I come across alot of people stating that in todays day and age the learning data structures and algorithms is not as important as it once was. With feature rich modern languages, powerful IDE’s, and more open source libraries than you can shake a stick at, many developers don’t see the need. The truth is most of us will never be 
library authors. Likewise, most of us will not be expected to implement a sort routine 
from scratch during our careers(besides from maybe during the interview process…). 
    So with all of these resources at our fingertips, why should we still study data structures and algorithms and their implementation and performance? The short answer is so that we know how to pick the right tool for the job at hand, and why it is we are choosing it. After all, when the only tool you have is a hammer, every problem looks like a nail: so lets keep plenty of tools in our respective toolboxes.
    The importance of knowing different data structures and their performance characteristics can be easily examined with a simple thought exercise. Take a moment to think of the different ways one could implement a Map data structure. How many did you come up with? I bet it was more than three.  To implement a map, you could use a Binary Search Tree, a hash table, an ordered array, an unordered linked list, or numerous other data structures for the underlying implementation. And the answer to which one we choose should depend upon a number of factors: Will this map be kept in main memory or on disk? Should the items be kept sorted? What is the expected ratio of reads vs writes? And tens of other factors we can add to our calculus for choosing the right data structure.
    Without knowing the options available to us, as well as their strengths and weaknesses, our
ability to pick the right tool for the job is that much more hampered. In todays world of cloud based services, high bandwidth, high performance computing the ability for software to perform at scale is of the utmost importance, and high performance data structures and algorithms are critical to writing scalable software.
    The study of Data Structures and Algorithms then is foundational in computer science. Knowing how to
choose the right data structure or algorithm is not a trivial task and is a skill that should be cultivated, practiced, and expanded throughout ones journey of software development.

Leave a Reply

Your email address will not be published. Required fields are marked *