So I've been employed as a software developer for over four years and it has come to my attention that I really don't know anything. I've stumbled my way into small role after small role and not coming from a computer science background is starting to catch up. Look, there is nothing wrong with working at smaller companies and getting a paycheck and creating very small APIs, but when you have interview after interview at larger tech companies (not FAANG, but not small either), and all of them give you the same spiel, "Brad, we really like you, you are a great person, have a wonderful attitude, and a great personality, but your skill set is just not where we need it to be."
So what is a data structure? Wikipedia defines a data structure when dealing with computer science as a data organization, management, and storage format that enables efficient access and modification. Based on this definition should we include integers, strings, and booleans, I say yes. Am I right, who knows. But I think for most developers sake, we'll say the array is the most basic and first data structure one should learn. And I won't go into much detail about arrays right now since I think I know them but if you read above you know that I don't actually know them that well and I need to relearn a bit. So now that we know the definition of a data structure I'm going to tell you what I think it is in my own terms.
As of now I would say a data structure is a means of organizing and processing data. I'm going to revisit my definition later in this series, and let's be honest will there be more? I sure hope so but I don't know, I cannot predict the future, but I truly hope I stick with this and really give it a good go. So now we sorta kinda know what a data structure is, so whats an algorithm?
Again going to steal the wikipedia definition, which stats that an algorithm is a finite sequence of well-defined instructions, typically used to solve a class of specific problems or to perform a computation. So from what I gather an algorithm is simply a way to solve a problem. I think we can all agree that there are hundreds if not thousands of ways to print out "Hello World", and the process in which you would make that happen could be considered an algorithm. How people have different ways of doing mathematics, are all algorithms. There are no wrong or right ways of doing algorithms as long as you get the expected output, that being said there are much more efficient algorithms out there than others.
So now I know what I'm supposed to learn and from what I've gathered and know this far, data structures are used during the process the implementation of an algorithm. Well there you have it, I finally made the commitment to start this and I bet there are some people who are reading this wondering how in the heck I managed to survive four years in the programming world without this knowledge? Well I guess I'm good? But for real I am learning every day and if you have any advice that helped you along your journey I would enjoy reading it. Thanks so much and stay tuned......