In TCS interview they asked about what field are you interested to work in if selected. I heard from many of my friends that DS and Algo are used in “Backend”, so without thinking, I told him that if possible I would like to work in the Backend field.
He asked me ok, do you have experience with SQL and ETL(or something? did not know what is this, told him the same).?
I have a little bit experience in flask and react but I never got to use any DS or Algo in that.
So my question is where exactly is the DS and Algo are exactly used in Industry?
im poor at explaining but i will just say what i knew . in the industry for example FB there are diferent roles for the people working there like frontend engineer , backend engineer , frontend dev , frontend dev , fullstack engineer etc… when they face or knew that their services needed to be improved( optimise ) or to be faster they develop new technologies for example GraphQL · GitHub . graphql is a backend database query language(we can manipulate too ) which is very useful instead of restapi . thus for developing graphql kinda technologies companies do invest time and their Engineers develop using ds and algo in them . Developers just learn about documentation for that and they use them according to it . graphql is now opensource and was used by many companies and developers around the world .
No, it’s not a dumb question. Almost everyone on codechef, transitioning from competitive programming to real-world software dev has this question, and from my experience, sadly the answer is Nowhere.
The roles in the industry are mainly from Backend, frontend, Android, Big data, or ML. In none of these roles, you will need real DSA knowledge of the kind of used in competitive coding.
In research-oriented roles (maybe top 1% programmers) at Google Research, Microsoft Research etc use DSA and other deep computer science concepts.
As your experience says, DSA is rarely used in frontend (flask and react). DSA is sometimes needed in Backend, Big data or ML roles, where there is a large amount of data that needs to be processed fast or your service is getting lakhs of queries of users which need to be processed with minimal latencies. But, even there, we mostly used libraries and never code DSA on our own.
I interned at Google and worked on backend dev. Although I cannot give a lot of details about the project (due to NDA), the kind of DSA that we used was a BFS on a graph, caching of results and multi-threading / parallel computing. And, I doubt anyone uses more complicated DSA than this in regular work.
Maybe you will see binary search replacing linear search in some places, converting a loop into a map, so that you can access things in O(1), but not much complicated. I doubt anyone would be using segment trees, BIT, DP or such things in normal software dev anywhere.
Also, just a personal advice, try to work for small product-based startups rather than these big service-based companies (like TCS, InfoSys, Wipro etc). Also, if it works out for you, I would highly recommend doing an MTech from a tier 1 college (IIT/NIT/BITS etc) or if you can afford a foreign MS.
Learning Data Structures, Algorithm and practicing these in Competitive programming makes us a good programmer, with good logic building, fast thinking, intuition development, problem solving. All these aspects would help you become a very efficient programmer ready to develop and design software in the market.
At the end of the day, you have improved yourself from what you were yesterday. You have developed a good base of programming. The rest is just icing on the cake.