Ask HN: Developers with kids, how do you skill up?
I recently had one of my colleagues comment on my GitHub account graph - 'There won't be many green boxes in your account once you have a kid'. This was in response to my suggestions on how we should all keep learning.
I argued many good programmers have family with kids and still manage to keep up. They brushed me off saying it's just not possible or they don't look after their kids.
When i look up the internet I find people doing full time job delivering products while having a family and some still find plenty of time to blog or write books. How is this possible? Are these people super-human? How are you all doing or managing if you have kids/family?
529 comments
[ 3.3 ms ] story [ 416 ms ] threadthey also take lots of naps in the afternoon which equals down time for you.
so as a rule, when they sleep you have some free time.
As a single parent, now, I have to go to bed right after the kids do. The unexpected benefit is that I'm much healthier and happier. Also I have several full evenings a week with no kids to use for e.g. learning.
This, coupled with reduced income due to bootstrapping a business created too much relationship damage to recover from.
It's the time that rolls on whether you are present or not. It's the time when you said something to your kids and you realized you are becoming your father or your mother. It's the happy times and the sad times, it's the times of intense passions and times of gentleness. It's the time of living fully, without regrets, the time with the people you love, walking the path with purpose.
I feel this is a super important question. I've published it on LinkedIn with my thoughts. Hopefully, you will get some feedback there as well! https://www.linkedin.com/post/edit/6245042931087007744 Good luck!
You never know what kind of kids you'll get. Mine wake up every day at 5:55 to 6:30. Otherwise, generally good suggestions.
- Evenings after work is family time. Focusing on kids if necessary.
- Wednesday evening after kids go to bed, as well as early Saturday morning, is skill building time for me.
- Every other evening after kids go to bed is time spent with my wife.
This tends to be a good mix that keeps everyone happy.
You're right, 3 hours on Wednesday, and getting up early on a Saturday morning is plenty of time to learn something new, or apply the skills you have to a side-project.
I am lucky though. I am working for an early-stage startup, and there are a lot of opportunity to step up and skill build, not for its own sake, but because we need to.
I'm up by 430 every morning and in my office by 6, with gym time before I get in. I get a good 2-4 hours of 'me' time every single work day for learning or exploring- and it's also my most creative time of day. The gym lifts the early morning head fog and I get a lot of stuff done.
I'm almost always home by 4:30 or 5 and get a few hours of play time with the kids which usually rejuvenates me more. If I'm having a good day I may get a little exploratory work done after the kids go down, but usually I just let the mind rest a little or read some HN.
Mind you, I'm not forcing myself up at 4:30 with an alarm or anything. I'm up when I'm up and it's nearly always before or at 5.
But there are two things more important for me: 1. relationship: you have to spend time together to have one... 2. health: sports is a must- not daily ofc but twice per week.
If you work full-time and you want to go above and beyond, you're essentially working three days: work, before school + after school, and then your third day is learning or development.
Whatever that means for you in terms of reshuffling energy and other commitments will vary on your personality, energy level, etc, etc.
When you have a small child, it is extremely hard to multitask. So I wait until she is asleep. All after work time and weekends are for her.
Here is the way my schedule works: I pick her up from daycare, do dinner, playing, and then she goes to bed. I then take half an hour break, and delve into whatever I have going on, for about three hours.
I'm currently taking a Java class, writing technical blogs, and working out some Python. So I'll usually do an hour of reading/Java homework, then start a blog post, then finish off with whatever else I was working on.
Over the past three weeks, I developed this talk on big data[3]. That was probably the hardest because I needed a lot of time to write the code, test the code and concentrate, and all of my energy was just sapped.
All of this is to say that you can do it. For me personally it takes a lot of reshuffling and work and giving up things, but that's how kids work.
[1]http://blog.vickiboykis.com/2015/09/we-are-not-getting-the-f... [2]http://blog.vickiboykis.com/2012/07/sheryl-anne-marie-and-ma... [3]https://veekaybee.github.io/data-lake-talk/#/
I usually have about 4-5 hours of time after the kids go to bed. During this time I either program, talk with my wife, work on mixing records for clients (I'm also an audio engineer), compose music, rehearse with my band, research interesting things, etc.
If you are with a partner, try offering to watch the kids and suggest they do something enjoyable for themselves. This not only gives some quality time with the kids, it also makes it a lot easier to ask for time to do the things you want, or even have your partner reciprocate.
Interesting... My experience has been the opposite, the first ~6 months they sleep so much that there is plenty of time to do things. Then you get a phase where they start to crawl and then walk around. In that phase, you have to be attentive all the time to ensure that they don't harm themselves or break stuff :). That really changed when our daughter was ~2, when she knew what she can and cannot do and they can basically play more by themselves. She is now ~3, sometimes she plays alone (she likes Duplo) and sometimes we play together. Since she usually goes to bed at 19:00 and is a good sleeper, we usually have a couple of hours every night for ourselves.
What I learned: your time does get reduced drastically, but you spend the remaining time with more focus/direction. Also, you use your time smarter. E.g., I used to do sports (indoor climbing), but now I just cycle every day from/to work (~1 hour) to stay fit. It takes approximately the same time as going by train or car.
1. They can't move stage. Depending on their sleep schedule, this is easy, or it's still tiring.
2. They can move. They still have the baby sleep schedule. No sleep, no time.
3. They have a normal sleep schedule. You can sleep.
4. They can play with other kids. A chance to save time, if you can use it!
5. They go school. You have time.
6. They are teenagers. You wish they spent more time with you.
7. They move out. You miss them a lot.
8. They move far away. You miss them even more.
For all you new parents out there, this bit might seem like it will never happen, but it will, eventually. It might take longer than your friends kids, it might take longer than the books say, but don't despair - you'll get there
> 6. They are teenagers. You wish they spent more time with you.
My kids are only 1 & 3, but I'm very conscious of having learned the lesson of others on this. I believe spending time with your kids while they're happy to spend time with you is far more important than putting in extra hours at work or fixing bugs in your hobby projects
Phew, this list resonates. Never thought the time would come that my wife and I would get an uninterrupted night's sleep but sure enough time passes and we're at point 3.
Alas points 6 onwards are in the back of my mind. Tough balancing work and family but it's also such wonderful fun.
They sleep a lot, but they don't sleep at a stretch. It's hard to motivate yourself to do something when you get six hours of sleep in 45 minute increments.
When I think of those I follow in similar situations, it seems they tend to eschew learning for learning's sake, and even those who were successful programmers learn to delegate. (Rob Walling comes to mind) So whether it's running a product, or learning new skills, I think it's a matter of avoiding shiny object syndrome.
Programming couldn't bring me any of the happiness that being with my children could.
I also want to push back a little bit on the idea that "programming couldn't bring me any of the happiness that being with my children could." I see what you mean—that you enjoy time with your kids more than time with code. However, I can't help thinking that programming enables that free time. It's because of the programming that you can be with your children instead of working a second job to make ends meet. That's why "skilling up" is so vital. If you're already skilled enough to get the jobs you want, then yeah, maybe you're all set.
It feels like people get too hung up on keeping up with the new shiny when honestly, it is all about fundamentals. Anyone can pickup a new technology if they understand the design and architecture of systems/software.
A lot of what we regard as "skilling up" is just a product of our immature dev culture-learning stuff for the sake of buzzword compliance that doesn't improve anything in the long run. And the high failure rate of software projects shows that we aren't gaining a lot from this culture anyway.
Buzzword compliance is the tech world equivalent of sexual signaling that led to peacocks getting extravagant tails. Developers are stuck in a feedback loop with employers...the more pointless garbage they learn, the more employers value the pointless garbage, and the more developers are forced to learn more pointless garbage. Until they break down, and leave the field to younger men, who perpetuate the cycle.
Fundamental good practices should be learned early on, and honed at work. For the rest, we should work to break the cycle.
I understand that HN is (probably?) pretty web-centric, but this portion of your comment makes me wonder if it's just the web that's fucked. I'm not hearing a ton of complaints re: burnout or being left behind from the server-side, database, BI, or embedded spaces. Or maybe I'm not listening.
I appreciate what parenting has done to me, it's re-prioritized things for me, but it's also shown me that I should make an exit in the next five years, to save myself some sanity.
The last time I recall feeling this way was 2005-ish, when Java frameworks took off. Previously, small to medium sized java apps used servlets, jsp, jdbc, and something along the lines of the "java cookbook."
It was, in fact, inefficient, with lots of typing, and it was difficult to manage dependencies. I think the work that went into dependency injection, ORMs, MVC frameworks, and so forth was undertaken by smart people.
The result, unfortunately, was close to fatal for java as a language for small to medium sized web applications. Spring, Pico, Struts, Struts 2, Spring MVC, iBatis, Hibernate, Spring JPA, Wicket, Stripes, Tapestry... just to be clear, I understand that Java frameworks are no longer this chaotic, so I don't mean fatal in the sense that it never worked. I mean fatal in that this was the moment that I, and a lot of people who quietly enjoyed java and felt embarrassed when people made fun of java devs (blub programmers) here on HN reluctantly joined the chorus and gave up on it, never to return.
People complain about the complainers, asking why choice is such a bad thing. The problem was, getting any of the choices to work nicely together was a challenging. All of a sudden, something as simple as a crud front end became extremely challenging. I lost a lot of time and become, not exaggerating, very unhappy during this time. It made me not want to be a developer anymore.
I believe we are now in a similar time with javascript frameworks. It's not that these frameworks aren't addressing an important problem, intelligently. It's simply getting a basic crud app up and running is tough, and making the inevitable modifications to test, alter, implement business logic, and so fort, is vastly more complicated in SPA frameworks with some other backend than it is in, say, Rails. That doesn't mean these frameworks are the product of poor design or bad developers, it's the opposite. These are the product of exceptional people working on hard problems. But if you don't need it, you're putting yourself in the path of tremendous complexity and churn, for very little benefit.
If I learned one lesson from 2005, it's to have the conviction to stick with old, outdated technology, for longer, even when people are telling you it's wrong and out of date. I knew in 2005 that writing your own jdbc and routing around through Servlets wasn't going to be the right way to do it for much longer, but that doesn't mean you have to use the first round of frameworks that addresses this! Eventually I hopped over to Rails (a lot of people here on HN think rails developers picked it because they were magpie developers, I'm not sure how many people realize a lot of us picked it reluctantly, only after it really became clear that the time invested in a new framework would pay off).
And that would be my advice now, if you're free to make this choice. Stick with integrated systems, and pick one that is clear and well researched. If this isn't a possibility for you because of your requirements, then yes, by all means, do use (what I heard Ember described as) a rapidly evolving hack pad for brilliant developers working on extremely difficult problems.
Otherwise, watch, observe, try things out, but I'd stick with a better researched and integrated system like Rails, add javascript as needed but sparingly, Just because you know you won't be doing it like this forever doesn't mean you have to stop doing it like this right this moment!
And be aware, the solution to the java churn for many of us (myself included) wasn't that a winner emerged, it was that with a loud crashing noise, a different solution that addressed these problems swept them off the table.
I wouldn't be at all surprised if something like that happens here. The existing MVC approach is still a bit deficient with highly synchronized apps. Current advances in Rails 5 make...
I wrote my web app in a small self-made PHP framework 8 years ago and it's still running to this day, with only minor adjustments. The advantage is: I understand the entire "stack". In comparison, the current JS madness feels extremely fragile. I feel like it's impossible to write good code in it that'll be around for the next 8 years, when all of those dependencies are either updated to something entirely different – or simply disappeared.
Being with my daughter is probably one of the reasons I love my job, I get to work from home and my wife and daughter stay at home with me so I get to hang out with them on break/lunch, and there's no time lost with them on a commute. I don't work for the sake of work, but so that I can enjoy the other ~67 hours a week I'm awake with my family.
Coding is quite fun. A lot of the related guff that is part of software engineering in 'the real world' is quite frustrating.
Startup culture preaches move quickly, pivot when something doesn't work. I apply that to my development. In the past I might hammer on a bad design for two days until finally figuring out I was on the wrong path. I am much more focused now. I'd say I'm a more productive developer than I was without kids because I avoid a lot of dead ends and wasted time.
My tolerance for friction and pointless bullshit is also much lower. The main project is difficult to build and test due to lots of state? I create scripts to automate or I spin up a test project, investing an hour up front because I know it will pay off over time. In the past I wasted too much time doing things manually because it felt like extra work to automate it. There is a delicate balance here and it just takes experience to figure it out.
and then when you find some time it comes at a cost.
waking up early is an option, works well for me. but the catch is you get tired easily and then in long term it affects health.
my advise is to pick things very carefully, time is very limited.
I have no hobbies. I don't go to networking/startup events. I don't watch TV,Netflix, etc and I don't have cable. Rarely go on vacation, unless a family obligation to visit grandma.
Tactics: Office with 24/7 access outside house (worth the rent) Coffee shop open at 6 am/closes at 1 am with wi-fi.
Basically I work every morning at coffee shop before kids get up. Partner works late after kids go to bed at 8 pm. We work at the office lab every weekend, taking turns, with a sitter, or we just bring kids to office with coloring books, games etc.
Doing this you can work about 35 - 50 hours a week, but obviously it's not for everyone!
It's very challenging, but at the same time, much more fulfilling. I find myself more focused and therefore more efficient with my time. I learn but don't spend time going down rabbit holes. I ponder philosophy as I play with my children, and I often learn so much from them. And, their bed time is 2-3 hours before mine, so naturally I'm able to spend quality time with my wife, enjoy a hobby (I'm a guitarist, thinking of picking up piano), or get in some extra work or side projects.
Congrats on number 3, too!
I also play guitar, but unfortunately, haven't given it the attention it deserves.
I think that sometimes, new parents or non-parents can forget that kids are human, too. They're experiencing everything for the first time, literally, and it provides an opportunity for us parents to remember how incredibly compelling the world can be, tech or not.
PS - I have soooooooo many unfinished/unpublished blog posts!
My blog's in my profile, although I converted to a static hosted blog on github recently and haven't written anything since (classic!). I'm working on open sourcing something I think is pretty cool that I did at work, but it's pretty in-depth (mid-tier load balancing algorithm and design), so writing it up takes a bit of time!
You won't have as much time. But you will learn to make that time really count.
-- The Whole Story --
First, a little about my current, professional role; I'm one of 3 backend/web developers and the primary dev for our flagship i/e enterprise offering. I don't deal with architecture or design unless I request to do so. I am responsible for writing the majority of our tests, choosing and implementing the tools we test with, and participate fully in code-review, QA, and bug reporting/fixing. Like many devs, I attend weekly meet-ups, code side-projects, and do my best to stay abreast of developments in, well, development.
Personally, I have 2 children, 1 of pre-school age and the other in an early elementary school grade. I'm able to -
* help my oldest daughter with homework * attend school functions * pick them up from daycare often * do activities, like dress-up, painting, and building forts * each night: give them baths, read them bedtime stories, and sing them lullabies
Our sitter, a family friend, recently asked me "how do you do it?" and followed up with "I'd be exhausted!" Her question caught me off guard. I don't necessarily think I'm doing anything special. In fact, I often find myself worried that I'm not doing well enough. Luckily, there are people like her in my life who remind me that I, and my wife, do a pretty damn good job.
-- How is this possible? --
Well, for one, it's because of people like her; the people in my family's lives who care about us. Another contributing factor is the company I work for, an organization that actually cares about me. Our team is willing to pick up the slack when a member needs help. Being based in Chattanooga makes a difference, too, and although commute times can reach ~45 mins, it's a fairly low ceiling, especially when compared to SV commute times. Lastly, if you work on a team, and that team doesn't give you the opportunity to grow your own skill-set within your professional-role, then that team is failing you. There's a reason that professional athletes are given access to training facilities and musicians are allotted time for rehearsal; you need to exercise your dev muscles. If it weren't for my team sometimes giving me the opportunity to explore rabbit holes, and knowing when to pull me out, I wouldn't be half the dev I am today.
PS - yes, when you first become a parent, your education/productivity/effectiveness takes a hit; that's just how it is. Otherwise, you'd be leaving your significant other/partner to do it all, and I've seen how that can affect a relationship. It's important to acknowledge this drop-off, plan for it, and make up at least a portion of that lost ground over time.
Good luck!
Kids do require a lot of energy/time but it is often shared with other family/friends who are parents so it helps to have a good network.
Get resourceful in finding time like early in the morning or on the train.
Don't be afraid to use your "working" hours, good companies understand the value of skills development so your learning is really a win win for them and you assuming you are planning to stay there in the immediate future.
The best time for me to get extended learning is after my kids go to sleep. I have a 10 and 8 year old, they're usually asleep by 9. It was harder with very young kids. Now at this age its somewhat easier.
Do whatever you decide you want to do to "keep up" with github, open source, etc. But keep it absolutely as separate as possible from your family time.
When you have a day with the kid, make sure that you disconnect and get yourself as fully as you can into the right mindset. "My job today is to enjoy my time with my son/daughter, to be there for them, to be present with them." Leave your phone at home when you go to the park. Disconnect.
If you find yourself thinking that your parenting time is an annoying distraction from the coding problem you're trying to solve, you're in dangerous territory and need to re-calibrate.
This is a hard lesson that I constantly try to re-learn. When I'm successful, everything is much, much better.
I'm not a parent, but surely this is a little off; either can be a distraction from the other, the thing is to balance which the primary task is and when.
For example, say you get a phone call at work to inform you that your child's got into some kind of trouble at school (for example - I'm sure yours are great and this will never happen!) and that you need to pick them up. This could absolutely be a distraction from some coding/work problem you're trying to solve, but you're hardly in 'dangerous territory'.
I hack away for an hour each way, especially on my home journeys. I actually appreciate the long train journey. Thankfully it is all one journey without changes. And train delays once I am on the train I don't actually mind. Though I go first class so I have a guaranteed seat with table and comfort. Otherwise, I'd be a miserable sod.
Though I also had to cut out all time wasting like tv watching, time sinks like free newspapers on the train, and ban myself from any gaming before 11pm.
With one kid it felt like I hardly had any spare time for hacking or anything, and I was so envious of my previous childless me with all that spare time I had then. Now with two kids I am envious of all the spare time I had with just one kid!
I no longer add paragraphs to potential blog posts over a long time. Blogs have to be published as a draft the day I get the idea. Otherwise, over time my opinion changes and the post would be rewritten over and over again and then inspirations dwindles to another mothballed blog idea.
The same goes for hobby projects though with a slightly longer time frame. I force myself to concentrate on only one project and insist on reaching at least some sort of basic MVP before I jump onto the next shiny thing. On my http://code.flurdy.com some projects have a demo site, others where I lost focus do not.
Essentially these same principles are important at work as well :)
Also, some people have the ability to get into work and focus efficiently even for a 10 min slot, which can happen multiple time during the day.
We have a 14 month old that wakes up 3 to 4 times every night. Even using strategies with my partner to take turns, it weighs down on us and sleep becomes the priority after the kid and work.
I have no idea how people with more than 1 kid have any time to do anything, unless you have access to babysitters, of course.
Also, two kids spend time with each other! Sometimes I can get a bit of work done while they are playing legos. That's pure bliss.
48, son in university now.
As mempko said, kids can go to bed at a structured time. Kids getting enough sleep is really good for them and really good for you. After work I spend about three hours with the whole family, including supper and housework. Then the kids go to bed, and I get an hour of learning coding in, then hang out with my wife for an hour. Usually I get about theee straight hours on a project somewhere in the weekend.
Newborns are something else though. It's prudent to plan on being a sleep deprived zombie for three months. If you are in the lucky 33% that escapes this, rejoice!