Ask HN: How do you make time for side projects and Leetcode grinding
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.
97 comments
[ 6795 ms ] story [ 385 ms ] threadIf 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 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.
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.
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.
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.
This is sad.
Sad, but, sadly, true.
Trivial example for framework X:
1. Setup environment (database, install frameworks, etc)
2. Generate boilerplate hello world application
3. Connect app to db
4. ...
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.
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.
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.
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).
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.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.
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.
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.
https://neetcode.io/
https://algo.monster/
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.
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.
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.
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.
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.
You learn the basic patterns, then you refine and combine those over years. For an outsider, this then looks like magic / creativity.
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.
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.
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?
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
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.
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.
Spend that time with your family!
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.
You need to be more clear about your intentions. Are you looking to find a new job soon?
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.
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 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).
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.
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.
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.
Are the specific types of questions asked by FAANG companies in interviews?
What's up with leetcode?! lol
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.
And never forget: It’s a marathon, not a sprint.