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.
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)
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.
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.
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.
Trivial example for framework X:
1. Setup environment (database, install frameworks, etc)
2. Generate boilerplate hello world application
3. Connect app to db
4. ...
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.
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.
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.
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.
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.
You need to be more clear about your intentions. Are you looking to find a new job soon?
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.
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.
And never forget: It’s a marathon, not a sprint.
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 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"
If you are in Switzerland, drop me a line.
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.
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.
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!
Like you I have 2 babies (1 and 3).
I wake up at 6-7 and spend time with my wife and babies. We sit around mostly drinking coffee until 8:30, when we make breakfast. I start work at about 9 and then work until about 5.
From 5 to 7 involves: eating dinner with family, taking 3 year old outside to do work together (yard work, timber framing barn/shed(s), cutting up wood), or going on walks with everyone to the village.
Once babies are in bed (~7:30pm) and the house is quiet I have time for programming projects, or writing (I have a newsletter that got sort-of popular). This gives me about 1 to 3 hours a night, though. Usually 1, and I don't work every night. This is how I made https://carefulwords.com or am currently making https://garden.simonsarris.com (very work in progress!) and if I can find enough hours https://grotto.cc
On weekends I spend considerable time on outdoor projects (building and landscaping right now, cutting trees in winter) or family things. I try not to use the computer much during daylight hours (except right now because I'm tired from moving so much dirt around!) Usually outdoors I try to take 3 year old along with me so that my wife has an easier time.
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.
I'm probably in worse situation than you since Ihave a problem you probably don't have- 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 and now all my time now is a waste..)