Web Development and Data Structure: What’s InsideTech
As a graduate student, I’m interviewing with some companies. These days, I feel the demand for SWE is pretty much lower than the previous. I don’t want to believe that’s the reason why all of the companies who contacted me are looking for the senior position, and I conducted one interview with company ‘A’ last Thursday and finally, rejected.
To me, rejection is not a big deal. I already got at least 50+ rejections and I think there were many variables of rejection such as I may not ready for the technical interview, or the ideal role for the position was not me, or I had a hard to communicate in English. Since any of company letting me know the reason for rejection, I can’t guarantee but at least I can stay myself to keep my ego.
However, the last interview brought me a different takeaway. It actually touched my ego. It was another senior position. Though the interview question was not difficult, after I got a rejection, I have doubts about my SWE experiences as well as the interview preparation. Am I prepare the right direction? What was a time when I use those data structures and algorithms for my development? I was looking back to the source codes that I wrote down previously and I found there were not too much of the line of code with data structures and algorithms.
Normally, I’ve developed the web which is consists of backend and frontend. Here, I usually used an API framework like Play framework with Scala for the backend and I used ReactJS for the frontend for the last six years. For that one, actually, I didn’t have to pay attention to the data structures and algorithms. The only I need to use was just some primitive types, objects and lists. There were already built-in data manipulating functions like sorting and filtering. And I normally used a map or foreach for the iteration. Since DB is mapped by ORM, I didn’t have to write down pure SQL or data mapping logic. My API server is a sort of.. bypassing server from DB to the endpoint.
I was frustrated when I found there was no effort to consider the data structures and algorithms. I was just googling the working example and adjusted to my code. Or, I was just good at finding relative libraries. That’s all. Since I was starting for the startup, my coding ability was tucked due to the pressure of deadlines.
So, am I REALLY have 5 years of SWE experiences? I don’t think so. I’m good at system design but I’m not good at coding itself which is a basic of every software engineer. While I was bent on the entire system design, I overlooked a basic. What a stupid..
Afterward, I just go back to the basics. I choose my main language which is Java, and I focus on basics such as advanced data structure and advanced algorithms preparing with my colleagues. After I feel I’m ready for them, I’ll refactor my previous code. For the Urhyme, it will be replaced by Spring Framework. And I’ll modularize some of the services into small services. For the React part, actually, I don’t know how to refactoring but maybe I’ll use TypeScript. At least, I’ll try to write down myself when I face with developing a new feature.
Even though I determined for the next things that I focus on, I still doubt is there any activity of designing good data structures and algorithms when it comes to web development? Since there are many great libraries, maybe web-based SWE easy to overlooks the importance of data structures and algorithms which is actually working a significant role internally. If I can’t use the open-sourced libraries, maybe it will take a lot of time to develop any kind of web service. These days it’s hard to develop without using any open-sourced libraries, however, we need to dedicate ourselves to elaborate our basic skills as an SWE.