When you saw the title, you may have thought
"Leetcode, As a React developer? what's he talking about? Coding tests don't relate to any specific role!"
Yes, you're right. If you're a software developer, depending on the company, you either take a coding test or get an assignment, or you might be right into a technical interview. If you already have some experience, you will likely get to the technical interview.
Let me tell you a little bit about myself. I began my career as a developer with my friend's help. He recommended me to his company. Before getting into the first company, my applications kept failing. It was maybe because I didn't have any relevant experience, great portfolios, or didn't go to university. I even got a high school diploma by taking the test as I quit high school. Nowadays, some people are saying that a degree is not important but it was not that in 2020, at least in Korea. Where did I learn coding? I learned coding by myself. I started it for fun and I wanted to do it as my job. I think I did a quite good job at my first company and as I took on a new project, building a new web service using React, my role became a frontend developer. There are two more companies where I worked at. I got into the companies by submitting assignments using React. I did some coding tests for other companies but I always failed. I gave a practicing coding test a try. However, it wasn't intriguing for me. It seemed like just a math and not practical. If I want to get into a big company, I may need to practice coding tests, but that is not my goal. This is what I thought. I like coding what I am doing and working with nice people. The salary that I received from my last company was enough for me. Everything seemed going well. There was no reason to practice coding tests. I was able to write the logic that I needed. I thought it would be better to hone the other skills such as design patterns, frontend, and something related to computer science or frontend roles instead of coding tests.
Last year, I moved to Germany with a working holiday visa, which allowed me to stay there for one year. Working closely with developers from different cultures is one of my dreams. Unfortunately, I couldn't get a job in time. Actually, I was supposed to start to work at a company but my contract was canceled ten days before starting to work because of their budget problem, but I don't know. They might have thought of me as not fitting into their culture or just my English was really bad, cause I met them in person to sign the contract. Anyway, on the flight way back home, I decided to do Leetcode every day. I plan to retry getting a job abroad but if I lose chances because of coding tests. I know I would regret that I didn't practice coding tests.
I solved some problems there before, around 15-20 maybe. It was super boring and I just didn't want to do it. But this time, I made up my mind. I clicked Top Interview 150 and started to solve problems. I watched some youtube videos before starting Leetcode. They say that it could be a waste of time if you get stuck in one problem for hours every time. If you don't know the solution in 30 mins or 1 hour, it would be better to see the explanation or the answer.
I did it. When I got stuck in a problem for longer than 1 hour or had no idea, I watched the solution on Neetcode youtube channel, and I tried it again by myself. Even after I solved a problem without difficulties, I watched his videos. I have done this every day and solved around 120 questions in about a month, which means I have solved 3 - 4 problems a day. As I saw solving hard questions was not necessary at the moment, I solved the all easy and medium questions in the Top 150 interview section. In fact, some medium questions used to be a hard question. I solved 2 hard questions before, so the total count of solved questions is 134 out of 150.
I feel like I didn't do leetcode, I did neetcode. Most of the things I learned so far have come from his videos. Without his videos, I wouldn't have been able to learn this much and solve as many problems as I did.
I am going to talk about what I learned and felt on the journey.
Easy is not easy
I first started easy questions on Array/String, two-pointers, sliding windows, and LinkedList. It was not very difficult to solve it. I used to move on to the next question when I easily solved a problem. However, this time, every time, after I solved a problem, I saw a solution on Neetcode YouTube channel.
The way he solved a problem is absolutely amazing. One day, I solved a problem and then mumbled 'Okay, I may not be as bad as I thought. I solved this problem in no time.'. It turned out my solution was not good. Easy questions are not easy. You can make a cup noodle doesn't mean you can cook, right?
Realized which aspect I lacked
I started to solve problems with Trees and Graphs. I noticed that it took me more time than the other types of problems. I realized that I lacked coming up with recursive logic. As I see it, It could be considered one of the most important abilities developers should have. It is not about Tree and Graph. I found that I lacked a certain way of thinking. I was truly happy about that.
It's not about writing code, it's about thinking
I watched dozens of Neetcode videos. At some point, I have got a question. "Why does a problem get so easy after watching his video?". I kept that in mind and watched his videos. He defines a problem and thinks about what exactly he has to solve while I've got to write coding first and think while coding. From there on, I took some time to think about the problem and figured out what I needed to solve. I got more calm and typed less code. It was not about writing code, all it was about thinking.
Started to enjoy thinking
It isn't boring stuff anymore. There were some questions I willingly spent more than two hours on. I could just have watched the solution though, I didn't. I have started to enjoy thinking and solving problems.
Wrap Up
"AI developers, backend developers, they may get some benefit from preparing coding tests. but as a frontend developer? I don't need to do coding tests. That's not practical. In a real project, there are not many situations where I have to come up with complex logic. As long as I have knowledge of data structures and how they work. That is enough. If I need, I will do that but I think coding tests would be like just memorizing solutions for me."
It was what I thought. And I got to know that it was completely wrong. I underestimated it. I've got more patience and it feels like my code quality has improved since I started to take more time before writing code. There is a project I'm working on and I wanted to put a table like the github contribution table on the website. I was thinking of installing a table component somewhere and customizing it. But then, I felt like I could make it by myself, and it was done much quicker than I expected. Yes, the improvements I've made so far have really started to benefit me in software development.
Now, I have got more confidence in coding tests, and I think I have got to know what types of problems I should solve to improve my weaknesses. I will keep doing Leetcode from time to time, I guess it may be more fun if I solve the problem with a different programming language you're interested in. For me, it would be go
.
I'm not saying that you have to practice coding tests. But if you're new in software development or you feel like you're not confident in coming up with some logic you need. I strongly recommend you to do Leetcode with Neetcode. Try to solve problems by yourself and then, listen and see how he explains, defines, and solves a problem. 100% sure, you will learn a lot of things. There is a course he recommends on his website.
Thank you for reading all this and hope you have a nice day!
Happy Coding!
Top comments (0)