| Based on your comments about salary and working at a startup, I think you're probably being taken advantage of. I think you may at least subconsciously know it too given that you wrote this post. Step one is to start dialing it back. Another commenter suggested reserving an early hour of the day for leetcode. That's a good idea. When you're ready to start work, don't. Work on a leetcode problem but timebox it to an hour. Then get about your workday. You'll very quickly start to realize that there's nothing special about algorithms. It's basic patterns. No one is asking you to invent new distributed consensus algorithms on the fly in a coding interview. Mostly they're looking for whether you studied to the test or not. So for the first little while, it's going to suck. You'll be stumped and frustrated. That's fine. Spend a bit of time trying to figure out the answer yourself but if you've given it an honest try, just google the answer. It's about pattern matching mostly so you need a base to pattern from. Make sure you type everything out. Don't copy/paste. That'll be important for both mental memory (multiple input paths (tactile + visual) leads to better retention) but also that muscle memory will be critical when it comes to the actual interviews. Eventually you'll get to cruise control. Easy problem won't be stumpers anymore, they'll actually be easy. Mediums will be hit and miss and hards will still be mostly failures but doing some every now and then it worth it for pattern matching to make the mediums easier. Now that you're cruising and touch typing without IDE assistance through the easys you're ready to interview. You'll probably fail the first few. Interviews are a skill separate from actual programming and they also involve a lot of luck. All the interviews have some random set of qualifications they feel are super important. Unless your practice overlaps heavily with their preferences they won't be inclined to hire you. And when there are like 5 interviewers on a loop you can afford not having overlap with one but if you don't have overlap with 2 or more that'll usually sink you. And like I said, you can grow that overlap percentage but not much, it's mostly luck. If you get a bunch of interviewers that mostly ask questions similar to the ones you practiced and you pattern match them easily (hashmap! tree search!) then you get hired. The first step though is cutting down your dedication to this company. You're dedicating your life to them and unless they're paying you enough to retire extremely early that's a really bad deal you're taking. So please cut back on your hours. Take that extra time to take care of yourself first and meet up with friends and family again. Use a small portion of the extra hours to grind out the algo questions. If you can write mobile and web apps you can learn this too. It's a different skill though and it will take time. But it's worth it because you need this practice to match up against everyone else that studied to the test. When you feel you're ready take a long vacation. At least two weeks. Line up a ton of interviews and just power through. Take a break of a least a few days in the middle to regroup and analyze but in general book at least 6 interviews (not phone screens) in those two weeks. Chances are if you've practiced enough you'll get at least one offer. If you don't, that's fine, it just means you need to practice more. Analyze what went wrong, practice more and try again in a few months. When you get an offer, don't stay at your current company. With your effort and dedication they absolutely know they're taking advantage of you. They'd probably be willing to double your total compensation if you were to actually be ready to leave. It's a trap though. They've already shown they're willing and able to take advantage and will do so again. So when you have a better offer elsewhere you should take it. Good luck. |