Recently, I have been having discussions with software engineers from all across the globe on a platform called Dogehouse. On DogeHouse there has been a common opinion about DS&A(data structures and algorithms) which is the idea that learning DS&A is useless. In these discussions, I am always the disagreeing party because learning these ideas will help you optimize your software for scalability and speed.
Before learning the ideas of time complexity and how complexity impacts the overall software performance I was writing very complex code
Looking back at my code from high-school I realized that my average complexity in data-intensive methods was O(n^2). This at the time was beyond my understanding but if I knew where to implement a hashtable my programs would have performed better.
The common argument that I hear is that "I never have to resort to the use of the taught algorithms in the workplace"
This is a valid argument but in the underlying implementation of almost all software, there are optimized algorithms that handle certain tasks. Sure you can just use the software without knowing anything about it, but this type of abstraction destroys fundamental understanding.
DS&A saved me from many different nightmares!
Every time I have a problem that I have to solve, the first thing that comes to my mind is: "Will I need to be inserting items constantly ?, Do I Need a key-value pair? Will the data set need to be static? " etc. Based on these questions I clearly get an idea of what type of data structure should be implemented in that specific case, but if I knew nothing about data structures it would have taken me longer to come up with a viable solution!
Top comments (0)