Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: How do you make time for side projects and Leetcode grinding
64 points by cebert on Sept 16, 2023 | hide | past | favorite | 91 comments
Hi, I am looking for advice on how you make time for side projects and activities such as Leetcode grinding. I want to do both, but am having a difficult time making it happen.

It’s much more difficult to find time now that I have two small children (6 and 3). Also, my job is rewarding, but I easily have some 50-60 hour weeks semi-regularly and get on the hook for after-hours support. I’ve been a software engineer for over 15 years, so I’m pretty good at picking up new skills at this point.

I’d like to do some projects both because they’re fun and they are also helpful to highlight your skills. Additionally, Leetcode grinding is important in case you need to find a new job.



Grinding leetcode is inefficient. What you should be doing is familiarizing yourself with the common patterns you might expect to see in an interview. Look at the blind 75 and https://seanprashad.com/leetcode-patterns/.

Initially, you don’t need to solve any of the problems from scratch. Look up the problem on YouTube and someone will walk you through it. This will build your intuition of when to reach for a heap or for a DP array or when to do BFS, etc. If you don’t know these, then watch another video explaining the concepts. These videos are often 10-15 minutes so with a 30 minute time commitment a day you potentially can get through 3 a day, getting you through the complete blind 75 (more than enough) in less than a month or 1 of each of SP’s 22 patterns in a couple of weeks.

The great thing is you don’t need dedicated time for this approach, you can often start a video while tackling laundry or doing some dishes.

Then, start putting these into practice but spend no more than 10-15 minutes on the problem. If you can’t solve it, go watch the video again. There are so many times where you can have the right approach but make a stupid mistake that will cause you to flounder and you can pick up a better way of doing it. Eventually you will be solving these in 10-15 minutes and the time commitment will have remained at a minimum.

After this, find a new job that is only 40 hours a week and voila you’ve just opened up 10-20 hours for personal projects.


This. Do not try and do the problems from scratch. All you will end up doing is frustrating yourself for hours and taking far longer to get through the material than you need to. You wouldn't do this in any other field e.g you wouldn't jump into a Linear Algebra textbook with no prior experience and expect to be able to solve all of the problems without first reading the chapters. Don't expect to be able to do that with coding interview patterns either. I'd recommend NeetCode but there's also Algomonster as well.

https://neetcode.io/

https://algo.monster/


you just confirmed you don’t need any actual skill and just learn the solutions by heart to get hired


That's a disingenuous take. It's extremely unlikely you'll get asked any of these specific questions, but very likely you'll be asked something in the general space.

Core knowledge extrapolates... to learn system design, one studies the design of "solved" systems, thus learning to solve for new design problems.

If a company is asking leetcode questions verbatim, they probably don't care so much about that part of the interview anyway


i have been a software engineer for 20 years and never had to implement any of this stuff myself in my career. the last time i did was in my master’s program in CS. in contrast i’ve had to implement custom memory allocators and many other non trivial algorithms which cannot be implemented in 10 minutes but take days to design and implement.


If learning how to solve problems by reading a book is "memorizing solutions by heart" then yes, that's how most people do things.

Look, as much as you might want to believe you (and everyone else in the industry) are geniuses, the fact is that we memorize a lot of stuff that were painstakingly invented or discovered by great minds in the past.

If that is "don't need any actual skill" according to your dictionary, then so be it.


engineering is about creativity and practice and not about memorizing standard solutions. leetcode does not test the skills that matter.


Leetcode is not for engineering on the job though, it's purely a test for getting hired. You wouldn't expect lawyers to take an LSAT while on the job.

A lot of people, especially those who don't do Leetcode or work in a company that asks such questions, think Leetcode should somehow relate to the work and are annoyed, but it's just a test like any other.


To reword it, leetcode is a barrier to entry for newcomers. It's pure gatekeeping and it says as much when people think they have to 'grind' it to have any prospect of a job.

It teaches you absolutely nothing about the rest of the job, around comms and leadership, which most of the time are more important than your ability to solve puzzles.

It selects for people who want to get in and want to grind.


I think I disagree with this. I taught myself web dev mainly through Udemy courses and managed to land my first dev job through that. I've been working my way through Algomonster and Neetcode and, as someone with no formal education in computer science or programming, it's been filling in some gaps in my knowledge and I've mostly been enjoying the process. Some things I saw in the code base at my last job that I didn't comprehend fully at the time now make a lot more sense.


On the contrary, Leetcode is one of the most egalitarian ways there is for hiring applicants, because if you can pass the test, you're basically hired, at least at FAANG and adjacent. I'd hate to have employers show implicit bias through such saccharine distinctions as "personal fit."


I think you and the other person who replied to me were dismissing the value of soft skills and the other things you need to know as a software engineer that are adjacent to writing code.

To put it another way - do you have an opportunity in leetcode to say the value of solving a challenge isn’t worth the time invested?


Leetcode is the initial layer. Once you show that you can code (because many can bullshit their way through a non-technical interview, I've seen that first hand at other companies where the employee couldn't code themselves out of a wet paper bag), then you go to the later rounds to show your soft skills.


Who will be hired if three candidates can pass the leetcode test?


yeah, and the test is not relevant, so it should no longer be used, and instead people should be hired on past projects and skills, perhaps on a 2 week trial.


Sure, you can want that but if you want to win, you have to play the game that's there, not what you'd personally want. Of course, you can reject that game for a different one but then you lose out on its benefits, such as massively higher pay.


Pattern recognition is pretty much at the core of creative work in an engineering context, of which memorizing existing patterns is the first half.


if you just need to apply standard patterns than you are not actually inventing but just doing code monkey stuff, and you can’t really call that engineering


I wouldn't call constantly inventing new technology the only thing that qualifies as "engineering". It's about solving the problem under the given constraints. Sometimes that means evaluating existing solutions and determining that the problem is not novel and can be solved either in whole or in part with off the shelf software or textbook algorithms.

The fact that this is the majority of business problems these days doesn't mean that no engineering is happening. IMO what actually is "not engineering" are the emotional, gut driven processes behind the software at some companies. No due diligence is done, requirements are scant, novelty frameworks are used, testing is a joke, etc. Anything resembling engineering is usually an accident in such places. I'm not saying process light environments are "not doing it right", I mean places that do nearly everything in an arbitrary, cargo-culted fashion.


Every professional discipline is typically preceded by years of study. Want to become a jazz musician? Great, first study recital of classical music for a couple years, then learn all there is to learn about scales, functional harmony, ...

You learn the basic patterns, then you refine and combine those over years. For an outsider, this then looks like magic / creativity.


The flaw in your argument is that you assume people are hired to do "real engineering" instead of "code monkeying".

As you implicitly admitted, "code monkeying" is a skill. Whether this skill "matters" is really the hiring company/team's business, and none of yours.


the problem is that leetcode style interviews are used by all companies now and not a % of the market.

what you fail to see just like most other engineers is that it is being used to discriminate and as a tool for keeping compensation under control.


What I'm seeing is that the gatekeeping mechanism artificially restricts qualified candidates from passing the interview tests and the reduced supply of employable candidates causes the compensation of companies practicing leetcode interviews to rise instead (and it makes you bitter because you think you're better than them).

I'm also seeing that given hiring leetcode-trained code monkeys seem to be working fine for the FAANG companies that practice it, perhaps they don't really need that many "real engineers" that can come up with creative solutions to problems. If that's the case they're just hiring the kind of people they actually need the most, and the accusation of "discrimination" doesn't really hold.

Anyway, what I originally objected to was your allegation that reading books and learning standard solutions don't allow one to acquire skills and your attitude that applying standard solutions is something beneath you. I totally understand what you're objecting to (I find leetcode style questions sub-optimal, and when I'm on the interviewer side I don't do it, and that's a competitive advantage for me when everyone else is competing sub-optimally), but unfortunately I am not quite sympathetic to somebody who thinks to familiarizing oneself with standard solutions is beneath them.


You literally sound like the kind of person who wants to reinvent the wheel.


Generously assuming software engineering is engineering - so you think that mechanical engineers or civil engineers don't reuse solutions 99.99% of the time?


I’d agree with you if someone somehow managed to memorize all the problems line by line, but that isn’t the case.

You’ve memorized how to build an array in your language of choice. You’ve memorized the patterns that require an array. You might’ve also picked up some techniques for splicing it.

When I see a master working, be it in woodworking, art, or engineering, everything is second nature. Years of seeing what worked and what doesn’t and they make it look effortlessly — almost like they memorized it all.

By all means, if the problem can be easily solved by DFS, but you want to be creative, try something else. If it was really creative, the interviewers will be sure to talk you up and you’ll beat out the “code monkey” that used DFS. If you invented some new type of search, I’ll look out for your paper on it. If you found a new way to hire and cut candidates only leaving the creative geniuses, I’m all ears.


Working 40 hours a week with two small children does not leave "10-20 hours for personal projects".

Spend that time with your family!


Thanks. Maybe I’m being too hard on myself.


> After this, find a new job that is only 40 hours a week and voila you’ve just opened up 10-20 hours for personal projects.

That’s the key takeaway. If you want more time outside work, find a job that gives you more time.

I once worked a 40% job (16 hours a week). I travelled through eastern Canada and all over Europe for four months while working that job, without any stress keeping up with it. More or less broke even on expenses/income. It’s a period of my life I wouldn’t change for anything.


This is good advice. Grinding leetcode literally almost killed me. Got a high fever after trying to go through it blind (as in without knowing anything about it and the patterns) and somehow almost sleepwalked off the balcony (20th floor)


The “tips” section on that linked page is really good!


If you’re regularly working 50-60 hours a week and have two small children, I don’t see how you can possibly make time for anything else. My advice is to cut back on your working hours if you can. Also, why do you want to grind leetcode? Unless you want to switch jobs in the next 3-6 months, grinding leetcode is not IMO a very good way to spend your limited time


Also approx. 15 years experience, have a newborn (my first). Probably different circumstances, but I'm in Australia - our hiring system doesn't value Leetcode at all (and even when I've gone to work for US businesses, we've done without needing to do it). So IMO Leetcode is a complete waste of time.

I've been told by a great many fathers before me that the child becomes the hobby. I don't 100% believe this myself; I've always had interests far exceeding my capacity to fully explore them, but I hope that when my kid is old enough, I can explore them with him. In the meantime, I tinker on my 3D printer on the weekends.

And as 95% of other comments have already effectively said - you're working way too much! I've only ever worked a 50+hr job for 2 years, straight out of high school. Now with a kid, I'm basically trying to figure out how to do less work, not more! Get your hours down to 37.5 or 40, and/or work 4 days a week.

Negotiate for extra pay for after-hours support. Time-and-a-half (or double-time if you can swing it!) whenever you get a call and have to work; ideally get a 10% retainer for the inconvenience of having to work.

Or, you know, get a different job without the after-hours support contract. Your time is important, particularly with two kids.


I think you will have to accept that you won't have time to sit down and grind leetcode or work on a project for very long. You might have only a few minutes to dedicate each day. I would see if you can find 15 minutes here and there, like the morning, lunch, and night. I bet you might be surprised at how much you can accomplish on a side project because you can think about it throughout the day, and then use your 15 minutes to code it up. Also, try and cut back at work... not getting roped into extra work and setting boundaries is also a skill. Let the younger devs cut their teeth on some issues. You might seem slightly rude at first, but once people understand you have boundaries, they will accept it. If they don't, then it's time to move on to someplace that does.


My kids are 6 and 2. The only time I have for this is after they are in bed, which is around 9:30 when they're both fully asleep, and I'm usually just ready to sit down and mentally checkout at that point.

I feel motivated all day to go to my office at nights, like I do right now, but I'm so drained after parenting kids all day.

I'm sure you're aware of this having a 6 year old, but once the 3 year old is a bit older you'll be able to do it during the day. I study and do stuff on weekends with my 6 year old while he plays Minecraft on a laptop next to me. And I try to explain how mods work and such. So you're almost there to when you can have some time back to do that stuff during the day.


Great point. My six year old is mostly self sufficient for a period of time now. The three year old is still a bit demanding, but is progressing rapidly.


My career was typically 60-80 hours a week, and I managed to do a Bachelors degree during it (military). My example is to say it’s POSSIBLE; I do not recommend it however. Here’s how I did it:

First, a supportive spouse. They need to have 100% buy-in on what you are doing and why.

Second, an solid goal. Why are you doing this? Without this, you won’t make it far.

Third, a healthy mind and body to hold up to the strain. Before embarking on this journey, get your diet and fitness right; this will pay dividends during the working time. Also incorporate this into the routine so you can do it without thinking.

Fourth, give up all hobbies, etc. to spend whatever time is leftover with the spouse and children. I mean this. Your goal path is now your hobby.

I managed to do a degree in Nuclear Engineering while a Senior Enlisted on Active Duty, working 60-80 hour weeks and deploying for a year at a time, using these guidelines. It’s not easy, it’s not fun, but it can accomplish those goals.

In reality, I’d advise getting a lower demand job so you have more time rather than embarking on the type of journey I did. I’m comfortably retired now, and I look back at those years with some very mixed emotions.


So, I did this too, but would not recommend it in general. I was a commissioned officer, so possibly even more busy, and went back to school for Applied Mathematics at first and then ended up switching to Computer Science in order to reskill and get out of the military to go into software instead. I was up at 3 most mornings spending a few hours on studying and homework, took another hour at lunch, then whatever it took in the evenings, on top of the job, staying in shape, bailing sergeants out of prison at 2 in the morning on Sunday, finding housing for privates who got kicked out of their houses for spousal battery, all the things you do in the military.

It's no way to live, frankly. I ended up with very serious spinal degeneration problems for years, probably due to the amount of sitting and all the rough exercise with no rest. I got divorced.

I guess it's a fine thing to do once in your life when you're still in your 20s. I got a significant bump up, earn more than a four-star general now, and never even work 40 hours in a week, let alone nights and weekends and being 24/7 on call like in the military. But the entire purpose of doing this is to relax afterward. You can't live your entire life like this. Nobody should be grinding and hussling for decades. Every now and then, I still get incredible spurts of energy to dive deep into side projects, continuing education, professional development, and all that, but we're talking maybe a couple months here and there every other year or so, and it's driven by honest intellectual curiosity, not by the feeling I have to do it or risk losing relevance. When you get older and have a family, they're more important. Your kids are never going to give a shit if you earn 400k or 700k and they're never going to give a shit if you're out of work for only 2 weeks or your next job search takes 3 months. It's not that big of a deal. But neglecting them and missing out on their lives is.

Ideally, find an actual job where the challenges and problems you face in the job itself force you to learn and keep up on skills. Don't blow the only spare time you have keeping up skills because your paid work is boring and unchallenging.


I don't recommend it (and I said as much in my post) by any means. I'm retired now and make more than enough to be comfortable at 40 (more than my last CO, who was an O6), and am deciding if I even want a second career.

I personally managed to balance it all and stay happily married (20 years this year), but I'm an outlier.

I didn't want to get into the weeds of what my career path was here; I've alluded to it elsewhere on HN. However, due to my skillset I held a post that was normally an O-3 to O-4 my last few years in; it made for an interesting dynamic. I was offered that seat as a civ as a GS-13 but elected to retire and figure the rest of my life out as far away from the military as I could.

I can say your more detailed schedule sounds much like mine was; trying to hold my position while doing any college at all was difficult due to the factors you alluded to. My branch (Navy) had much of the JO duties that the AF/Army assigns put on the Senior Enlisted (along with all of the normal stuff), especially in my area (Aviation; pilots tend to be pretty focused on their duties).


I think 60 hours is quite extreme and unsustainable. A good work-life balance is around 40 hours (and not every week) and it’s in this window that I try to create time and opportunities for side projects.


You shouldn't need to spend a lot of time on leetcode as a senior engineer. I do one leetcode problem every week from lists of recommend problems. You will realistically have 40 min of time to work on the problem, and you will go slower during the interview, so if I don't get an optimal solution in 30 min I give up and look at a solution. I'll spend at most another 30 min filling the gaps in my knowledge that will let me solve a similar problem next time I see one. I then add the problem to a queue of past problems I've failed. I've been doing this for years, but if you're just starting out you might need to cram more.

For side projects, I don't do them and have never had issues with that. I spend time reading stuff on my phone during downtime, which has been enough to keep me up to date on stuff.


I'm a newer dev... just under a year and feel I've made decent progress in that time. I hear about leetcode a lot but honestly am not really sure what it is, why it's talked about so much, why people 'grind' leetcode... and why do you specifically do a leetcode problem each week? Is it specific to just a certain small set of languages?

Are the specific types of questions asked by FAANG companies in interviews?

What's up with leetcode?! lol


They are the types of questions asked by FAANG and the wannabes (cargo cult style) for many years now. There's a site (and other resources) collecting those kinds of problems. They're mostly uninteresting and any CS graduate with a solid data structures and algorithms background (as in the 1xx and probably 3xx level courses, usually 2-3 total over a CS degree) should be able to figure them out if given time. But they aren't given time or they don't have that background or they putzed around in school instead of studying, so people memorize the answers instead for a large number of problems ("grinding") and hope that what they studied are the ones asked.


Leetcode is essentially what a Comp Sci student learns in their 2nd year Algorithms course. There are a few more esoteric algorithms that don't get covered in college and but 90% is stuff I remember from college.


innocent little lamb


Why not try to spend more time with your kids instead? They need you. Seems like a much better “investment” than grinding Leetcode.

And never forget: It’s a marathon, not a sprint.


I must have had very different experiences from everyone as I can't imagine how grinding leetcode is a worthwhile activity. Do you want to do leetcode because you find it helpful or because the hive mind of the internet says you should?


You have to do leetcode if you want any hope of being able to find a different job. You have to be ready for that kind of question.

I’m a software engineer with 20+ years of experience in a bunch of different industries. I know what I’m doing.

I did 3 interviews with 3 different companies in the past couple months and utterly failed at the leetcode style coding interviews. The last one was to “print out the contents of a binary tree, each level on its own line.”

I had 1/2 hour to do it. Oh, and I had to translate their sample seed code from Python to Java, since I’m stronger in Java.

I haven’t seen a raw binary tree in 20+ years. I at least remembered how to depth first traverse it, but haven’t seen in order traversal since my freshman year of college.

So look-I was able to read and translate Python, a language I don’t use to one I do, and pull out of deep storage how to traverse a binary tree one way, but since I couldn’t remember the other ways, I failed.

My daily job is far more about translating complex business requirements into appropriate data stores, improving performance, working with cloud providers - NOT banging out freshman level programming tasks. I’m out of practice for that.

So to be in a position to change jobs, you sadly have to spend time keeping that information freshened.

It’s not helpful to leetcode grind; I’d rather spend the time and energy I have for non-work coding to learn a net-new language. It’s not the “hive mind saying we should”.

It’s the stark reality of the hiring processes everyone has decided is necessary because there’s a myth that no one applying for a software development job can code and if you don’t do these kinds of interviews (and don’t screen any other way) you’ll hire these fakes.


I think it has helped me to do five to ten hours of refresher on elementary data structures and algorithms in the week or so leading up to interviewing at places like Google and Stripe.

But I really hate hearing that people are sinking hours and hours into doing tons of these problems, and on an ongoing basis. What a horrible waste of human life.


> You have to do leetcode if you want any hope of being able to find a different job.

It's funny how much perspective can differ between people. I have 15 years and was asked to do leetcode type of question twice, both times I was interviewed by person with significantly less experience.

I was also on the other side of hiring table and was never, not even once, asking people to do leetcode stuff during interview. I had way more practical approach which was giving me all signals I needed.

Having said all of this, my hobby is codingame and I enjoy competetive programming myself, it's pure fun and I enjoy it a lot.


> You have to do leetcode if you want any hope of being able to find a different job. You have to be ready for that kind of question.

I disagree with that statement. You don't have to do leetcode, though it can be helpful if they have leetcode-style problems to get timed practice (not everyone is good at the 30-minute challenge under pressure; for some reason my general test anxiety, which interviews can bring out, doesn't apply to code tasks).

Learning and maintaining the fundamentals is sufficient (again, modulo the benefit of timed practice). Even for your problem, there are only three places that an action can be applied to a node when traversing a binary tree: before traversing the children, between traversing the children, and after traversing the children. The traversal code is otherwise the same (this also applies generally to any tree structure, it's not just a binary tree thing though "in-order" is ambiguous when you have more than two child nodes).

  def traverse(node):
    if not node: return # alternatively, this test can be applied to left/right before the recursive calls but requires also testing before the initial call
    # pre-order
    traverse(node.left)
    # in-order
    traverse(node.right)
    # post-order
I've named them here, but those are the three positions you can put a print statement. Even if you don't have the time to work out which one is which, you only have three things to try. An important aspect of focusing on the fundamentals is recognizing why this traversal code is the same regardless of where the action will be placed: You're traversing a recursive data structure (`Node = None | (data: T, left: Node, right: Node)`), that in itself determines the fundamental recursive structure of the traversal code. This same approach can work with any recursive data type which mitigates the need to memorize any particular algorithm on specific recursive data types.


You still need to practice, you won't be getting easy questions like that all the time. There are tricks you need to know to solve many others.


> I at least remembered how to depth first traverse it, but haven’t seen in order traversal since my freshman year of college.

Well, to be fair an in-order traversal is not what you needed to solve that problem...an in-order traversal would get you the elements of the tree sorted, irrespective of level. This is not a "gotcha" problem where you either know it or you don't, it's about using a basic data structure in kind if a weird way.


50-60 hours plus two small children, no way you can have side projects and live to tell your children the story in 10 years.

That is, start looking at your mental & physical health, start cutting hours, then you can evaluate investing time in learning something you want.

As for Leetcode, I’m no fan, unless you’re looking to get a job in a FAANG-like entity, invest your time in something else.


Speaking as someone in a similar position, it’s not possible. You can have young kids or have time. Not both.

Which, sucks, given that what it sounds like you actually want rather than time to grind leetcode and do side projects is to find a different job.

But the way the industry is set up effectively precludes you from doing that, because as you’re aware, you need to have time to do stuff outside of work to get and prepare for interviews.


Exactly. It seems very difficult to prepare for interviews in their current form if you have a family or other external obligations such as caring for a sick friend or family member.


Your job is too many hours unless you’re someone with innate natural energy. Judge your own health and if you start to see signs of illness cut back side projects. Maybe consider that even though your current job is rewarding, it might be trapping you in a dead end if you can’t both do your job and the side activities required to stay relevant.


For me side projects are fun and so I often think about them and when I get the chance I just remember that really want to work on it.

Leetcode I don't like. I know I should do it, but it's not fun and it is never in my head, so I just don't ever find the time for that.

The lesson here is if you want to do something you will find the time. So phrase it or make it such that either of these to are fun for you to do.


Leetcode interviews are a way of selecting for people who are young and have free time to grind without saying this plainly. IOW you not having the time or the strength to prepare for these interviews is by design.


Wow, that sounds exhausting!

I've been doing development work professionally since 2000. In that capacity, I've been self-employed and worked for a number of firms providing work-for-hire development services. I worked full time for one mid-sized company (1,000's of employees) and it was not for me. I am now self employed again working on a second startup. At this point, I have enough savings to continue my current lifestyle in perpetuity whether I ever make a penny from my startup or not.

I've never heard the term "leetcode grinding" before but I assume you mean completing programming puzzle type interview questions. These types of questions might be prevalent at certain kinds of companies but I can count on one hand the number of times they were asked to me. I haven't interviewed as a candidate since 2013, though the hiring process I put in place at that company is still being used. There are some easy weeder type questions, but the process is largely practical.

It took me too long to realize this, but my time is my most precious resource. Investing a lot of time to get hired by a certain company is not a great investment of time. Recruiters will happily brief you on a firm's hiring process and share as much with you as possible to help you prepare successful. No need to do it if you're not looking. The more important part is to keep up on the new tech. If you're not getting it where you work, it's time to move on. Move on to the right company, one that provides opportunities for growth and needs and appreciates the skills you bring to the table. Find a place that's not going to expect you to work extra hours all the time. I regret working lots of extra hours when I was in my 20's. It did not help my career in any way.

In your free time, if you want to work on a project - at least pick something that you enjoy! If it could make you some income, that's even better.


Like others have said, finding small chunks of time here and there is best. To make the best use of short chunks of time, come up with a project plan ahead of time of for tasks you need to accomplish to move towards your goal.

Trivial example for framework X:

1. Setup environment (database, install frameworks, etc)

2. Generate boilerplate hello world application

3. Connect app to db

4. ...


> Leetcode grinding is important in case you need to find a new job.

This is sad.

Sad, but, sadly, true.


Patio11 has some excellent old articles on working with very little time available. Can’t help you with leetcode but can with side projects:

https://www.kalzumeus.com/2010/03/20/running-a-software-busi...

https://www.kalzumeus.com/2009/10/04/work-smarter-not-harder...

My own advice: dip your toe into the water. Do 10m this week. Expand if you like it. Just get a little bit done and you’ll be solving the problem rather than thinking about it.


I'm going to somehow contradict some of the comments and agree with others.

Every time I changed jobs in my career, whenever I grinded Leetcode I ended up in a better position (more and better job offers) than when I didn't. That being said there are diminishing returns. You don't need to solve hundreds of problems, possibly a few dozens should be enough to significantly change your odds.

However I agree with others that you are putting way too many hours. The other funny thing is that I have always, at least in part, done Leetcode during working hours. This might be an option for you to a) cut down working hours and b) actually use hours towards your goal.

In any event good luck.


I'm in the same boat, have 2 kids and want to enjoy trade the same way I used to many years ago :) but not at expense of my kids. This feels possible only in a universe where I run my own product and am capable of making a living (not the universe I live in atm)

I'm probably in worse situation than you since I have a problem you seem not having- motivation (I mean, you must be really motivated to put 60hrs every week, I hardly find motivation to do 40 and I'm guilty of feeling I have built everything that was to be built for that co I work for and now all my time is a waste..)


Don't do leetcode prep if you're trying to do side projects, Leetcode in itself can be a massive undertaking.


I often wonder what problems could be solved in the world if so much free programming time wasn’t wasted on leetcode.


Even among just software devs I'm guessing far more time is wasted on passive consumption like TikTok, YouTube, etc.


Brains need rest. Doing leetcode style exercises is not trading off against passive entertainment, it's trading off against the limited amount of active mental energy.


I never hear people talk like “I know I should grind more YouTube videos.” The leetcode phenomenon seems to be a particularly insidious time suck because it has the illusion of non-leisure value. The same level of energy and effort could be applied to open source or side projects that could benefit a great number of people.


It's incredibly difficult, honestly.

You're gonna have to prioritize which projects are important to you and cut corners/make sacrifices to dedicate a very small amount of time to them.

By "cutting corners," I mean things like settling for lower test coverage than you're comfortable with, hacky CI (if you do CI), more tightly-coupled code than your happy with; i.e. all of the things that startups do to ship stuff fast.

As for leetcode, I'd recommend doing that during downtime at work (if you can) and focusing on one problem a day, especially given your years of experience.

Many of the medium/hard problems are basically puzzles; you either have that kind of mind or you don't. In my opinion, this is why side projects matter way more: you can bullshit Leetcode problems (by memorization), but you can't bullshit _things that actually fucking work_.

(#338, "Counting Bits", is a great example. The trivial solution is O(n) time, but getting to the O(log n) time solution requires you to think about the pattern in which the 1's in the bit sequence typically generate. I would've never thought of that had I not read the solution.)

Like some other posters have said, you'd be much better off (re)learning foundational data structures and algorithms and, if you can, implementing them from scratch. No, you'll never actually implement a hashtable library or quicksort, but knowing how to do those things will help when you get asked a leetcode-like question.

Good luck!


50-60 hours weeks seems too much, even if it is semi-regularly, to have a side project. If you can "cut" 2-3 hours a week from your job, it helps to make space for some tinkering.

If you can, get up earlier every morning, before everybody wake up in the house. You must be very motivated if you are not a morning guy.

Other solution is to have a fixed schedule, like having a meeting with yourself, with a "not disturb" agreement with your family (very difficult with young kids)


For me, it is not the hours, but the context switch between work, side project, and family that is difficult .


The context switching, for me, is made easier by separating the contexts in space and time (NB: No kids yet).

For space, I mean parts of the home or going to an office (I telework occasionally, but have lab work that cannot be moved or done from home). My home office is upstairs, I don't spend much time in that area unless I'm working on a computer. The sitting room (my reading space a lot of the time, future kid play area) is separate from the kitchen and living (TV) room. The home gym (such as it is, yoga mat and rowing machine) is in the basement (living in CO has a perk, nearly every house has a basement which is useful for storage, exercise space, and hobby space).

Even virtual spaces. My home office has, if I brought it home, two computers: My personal PC and my work laptop. They are not the same, I cannot access work stuff from my personal system. The only work app I have on my phone is Duo for MFA. When my telework day ends, I shove that laptop back into its bag and don't open it again until the next day. So if I'm working on a side project or even just gaming, I cannot easily go back to work.

For time, I find intermediating activities to separate contexts if needed (mostly work and home life). The commute is this, but when teleworking I'd go for a walk, do yard work, or exercise (often all three, no kids so that part of my day is still pretty much mine). Once I'm done with the physical activities or commute, I'm in a new context and have cleared my head from work. This works even if they're in the same space. Going back to virtual spaces, switching from work to hobby programming is easier if I've left the office for a bit.


So I would not put side projects and leetcode grinding in the same vain. It's like saying how do you find time for your favorite sport and having to do exercises that you have to whether you like it or not because your health depends on it. Yes you could enjoy leet code. In either case if you enjoy it and you are doing it for an intrinsic desire you will find time. By the way doing so may not make you more employable or even a better coder and it should never be an expectation by employers.

Now you kinda answered part of your question. Looks like your day job is very rewarding that when you are tired you are "good" tired and you need a recharge so you can go back to that goodness the next day. For me my spike in side projects came when my job sucked. The more it sucked (regardless of how tired it made me) the more I'd come home fuelled. Again ymmv!

Same with boring exercises, I mean leetcode. Frankly I have not seen a good reason for lc unless to crack that faang job (I'd just pay for premium and go through company Xs problems a month before the interviews). Sad but true.


There are still plenty of good SWE jobs out there that don’t require a whiteboard-style interview. But having said that, I try to think of Leetcode as akin to a crossword puzzle or sudoku, just kind of a good brain-workout for fun every now and then. Sometimes you get it, sometimes you don’t. Even if those types of problems don’t come up very often in day-to-day work I think it’s good practice.


I saved up money, didn't have children, and quit my job to find the time to work on passion projects. I don't think I would be able to do it with a family, children, and while working a full-time job -- at least not past my 20s unless I had extremely strong health/fitness habits.


It’s not easy. I have two children under two, a full time job and am actively interviewing. I do not have a baby sitter. It is often long hours. There is no magic solution. Keeping yourself in shape helps a lot because your brain moves faster if your body works well.


Spend the time you'd spend on leetcode to build a network instead. Give a talk at a meetup. A good topic is "how I used tool X to debug problem Y". At the end of the talk mention you are building your network, etc.

If you are in Switzerland, drop me a line.


Get another job that doesn't require 50-60 hour work weeks for crying out loud.


Move to a job that pays you to learn the things you want to learn. So you do not need to take the time out of your family


> I’d like to do some projects both because they’re fun and they are also helpful to highlight your skills. Additionally, Leetcode grinding is important in case you need to find a new job.

You need to be more clear about your intentions. Are you looking to find a new job soon?


I’m not sure my particular division is doing the greatest, so I want to be ready if layoffs happen.


the last paragraph of the OP highlights the problematic state of hiring. if you can build something, why do you need to leetcode? and if you can leetcode but cannot build something, why should you get hired?


Work part time and don't have kids, pretty much. Kids are great in many respects, but they are also going to eat a lot of time and money and limit which sorts of career bets are of acceptable risk.


Switch between activities. One month leetcode one month projects.


For me, it's all about enforcing WLB. I work a maximum of 40h/wk and to be frank sometimes I work an hour or two less.

Let me put it this way - I know I cannot compete with people who are able and (for some reason) willing to work 60+ hours / week. So I don't try. Maybe I'm lucky and am charismatic (I dunno about that) or smart (also dunno about that, I mean I get by, but -) enough that I excel with fewer hours, but also I think a lot of it is just setting boundaries and using ninja moves to just be more effective instead of wasting time.

Many of the people who work longs hours are either not actually working during them, or are working but are so eager to die for capitalism that they don't try to solve the problem in any other way than death marching.

Example. A coworker had been death marching for 2 days on a project and I was getting worried about him (he likes being the coding hero but also has mental health issues.) So I pressed a bit here and there in the background and find out all Product actually wanted to do is something rather simpler and that they could do just by using a different feature in a particular odd way. So I had my manager suggest to my coworker that he investigate this way. He left work and went to bed on time that night. And I do this for myself. I don't shirk work, but if someone is in a rush and you simply present to them "take longer" or "cut scope to focus on what you really care about", it usually goes well.

Will I eventually get dinged for not being willing to death march? Maybe. I haven't had to do it yet so far. And in the instances where projects ran late, it hasnt been for reasons that even doubling my hours would've helped.

So anyway, I know it can feel like it isn't as simple as "just don't work such long hours" but also sometimes it is (just being willing to set boundaries).

So, with that, even with 3 kids aged 3, 2, and under-1, I still have a few hours each night to spend with my kids, wife, and do a little bit of coding here and there.


cebert no advise here, but let's just say I feel for you.

That many programmers have to post something like this here shows how nerd-psychopath (I mean the interviewers) a large portion of the interviewer programmers are. A slave hiring another slave by holding the hiree to a misplaced sense of loyalty, and standards of their sorry profession. A sobering reminder of how people are their own worst enemies.


By not having a job!


don't


As context, I am in my late 30's, I'm a dev with a 3 and 1.5 year old, and I aim to build a side-business leveraging AI in some form starting in January while doing my due diligence and ideation this year. As more background, I did start a startup in my late 20's that failed before marriage and kids and entrepreneurship runs in my family - so I have a strong emotional desire to build again.

I give that context to help you see what I mean that the reason side projects and leet code have taken a back seat to your other initiatives (playing/building a relationship with your kids, time with your spouse, maintaining progression or status quo in your job to make a living) is that you haven't found a way to make it a true priority in your mind.

An analogy I find useful for myself to be honest with my own priorities is to think about your other life initiatives as epics on a Jira board. And during backlog grooming and at the beginning of every quarter and sprint, your team is tasked to re-evaluate competing tasks from different epics - some of which you have committed to at the start of the quarter and need to deliver an outcome by the end of the quarter, and some that are aspirational - like cleaning up tech debt most times. As you know being an sw engineer, some things just end up perpetually in the backlog.

And applying that to family life, with kids, you ultimately ended up with 2 new initiatives, one for each kid (each epic with their own stories and things you'd like to do and you find important). And this, for the first time in most people lives creates a true time constraint because now you can't possibly do all stories for all the epics in your life. So you have to pick and chose wisely.

Emotionally, this is hard to come to grips with and accept - for myself especially on a daily with my strong dive and frustration I can't capitalize on the AI moment now with the speed I wish I could had I not had kids. But in my heart, the Kids epics will always take priority and I derive a lot of personal, non financial, satisfaction from working on them.

So in this framework of thinking of your life ^, you can then begin to do the grinding work of trying to constantly figure out how to do other personally important epics from the backlog by trying to "kill 2 birds with 1 stone" like I try to do by combining kid activities with my backlog tasks - ex. make a morning quiet time routine for the kids to play with each other on the weekends when I have the most energy and clear thought to make progress on ideation and try to think of the next steps in testing my business ideas either by doing or just spending time to think.

This ^ type of constant thinking is only present if you truly value the other epics in your backlog (for you it could be side project or leetcode) and don't find it even more draining to think about. If you emotionally feel drained thinking of doing those tasks, then you won't have clear emotional alignment and as a result, never want to try to squeeze in these tasks into an already fully committed sprint or quarter of epics/tasks related to your family and job.

For many, including myself, leetcode's lack of clear deterministic value to career growth often makes it hard for me to really want to focus on it. Whereas, I have strong desire throughout my life to build a company of my own.

I'll give you an example of how strong my desire to start a company by next year by saying, I purposefully looked for jobs this year that did not prioritize my upward corporate trajectory to director of eng and instead looked for months softly on LinkedIn and just asking around for contract jobs or full-time jobs that paid well (maintained our family afloat and met the requirements of my epic of paying bills) and did not demand more than exactly 40 hours a week where I had to even think about the work during off-hours. And I was fortunate enough to have one show up within 4 months. And now doing this job, I can easily spend 30 hours a week thinking/doing work for that job and now have 10 hours during the week, when the kids are in daycare!, to focus on build.

And as context, a year ago I did not have this strong of a desire because there was not a great new tech shift to make building a company easier, and secondly, I was highly focused on having my 2nd child (our decided last) and just getting him to an age where he could be more autonomous (around 1.25 yrs old I've found for this guy). So my "epic" of starting a company was not a strong emotional desire because the pieces and timing were not there.

I say this in order to maybe help in framing how to make sense of your own prioritization in your heart on these other things you want to do. Sometimes the timing is not right just as it is in the corporate world and why you do quarterly business reviews in Google or other companies to dynamically realign based on the situation around you to make that one initiative seem like it is the right time. If you are a business strategy nut like me, you should read Working Backwards the book for an anecdote on how even Jeff Bezos could not force Amazon Prime to happen. He wanted them to deliver that promise of 2 day delivery but not all the pieces were there and quarter after quarter they tried to "kill 2 birds with 1 stone" by fitting all the pieces needed to make Amazon Prime possible logistically with other immediately impactful initiatives.

This is just to say ^ even in work, companies face the same constraint problem you have with your 3 and 6 year old - they want to do amazing things now but can't because there are 50 other immediately impactful and amazing epics to work on. And depending on how strong a drive there is by leaders to get those done, they can either wither away or be incrementally worked on by trying to "kill 2 birds with 1 stone".

Hope this framing helps you find your drive and filter through your personal emotional priorities to find a productive path forward on your current backlog initiatives of "side projects" or "leetcode for career development or job security"




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: