My collection of Algorithms and Data Structures 🎉
In this post, I would like to share with the world my collection of data structures and algorithms. I have worked on this for the last several months to gain more confidence as a professional software engineer. Hopefully, this will shed some light for folks like me who was so scared the hell out of terms like recursion, graph, tree, backtracking, et cetera. Stay tuned and read on guys 😎
As of writing, I had worked in IT industry for approximately 5 years as a professional front-end engineer. I never found a need for these foundational things namely design patterns, data structures and algorithms (this post). Some of my good friends even told me that these are the things that differentiate developer from engineer. With all due respect, my friends defined developers as someone who could read and follow the doc, copy and pasting to make things happened. On the other hands, engineers are the one who truly understand the technologies and creating ones. Technologies could come and go but design patterns, algorithms and data structures just stay! I have been fortunately given countless opportunities to work on interesting problems at Axon. Most of these problems are very sophisticated that no ones could give me the right answer in the Internet. Hence, it forced me to look for answers in the open source worlds. I had to clone thousands if not millions line of codes to study and craft the right solution for our customers at Axon. Things like Zoomable, PDF searching and Media Player are the ones that I created on my own thanks to the open source community. And, I noticed something that almost if not all softwares have in common - they are just variants of different combinations from design patterns, data structures and algorithms. Let's go through couple of example I found:
React Final Form - Observer Pattern
Rollup - Binary Search
Reselect - Memoization
Quasar - Tree Traversal
React Query - Observer Pattern
As you could easily see, all fantastic open source libraries out there are just some sort of brilliant appliance of design patterns, data structures and algorithms in practice. Once said by Linus Torvalds 😎
Hopefully, you could be convinced by now how importance of design pattern, algorithms and data structures is in IT industry and start mastering it if you are not there yet. I started learning it for around a year now and it's probably one of the best decision I have made in my life. Not only does it boost my confidence when browsing open source software which is believably much better than close source 😆, but also it makes my own code become more performant and maintainable than I could think of years ago when I started got my feet wet in this fast-paced and exciting industry. Here is my favourite list of resources when learning design pattern, data structures and algorithms (believe me, this is the last time I stress these three terms 😝):
And last but never be the list is my ever growing collection of data structures and algorithms 🎉
There you have it guys, my take on what would place the fundamental blocks to become a professional software engineer. By mastering the concepts, the sky will be your limit - start writing code and make the world a better place to live 😇