Hacker News new | ask | show | jobs
by barefoot 2490 days ago
After you collapse on the sofa for a few minutes you then get back to work keeping yourself current, right?

A reasonable measure of what it takes to stay current and relevant in this industry is twenty hours of dedicated reinvestment per week. Often times this reinvestment time is not afforded at work and as much as employers want to provide this as a benefit to developers, few offer the resources or time to allow developers to get anywhere close at work alone. Therefore, that time is likely your sole responsibility at home.

If you're like most developers you should be budgeting four hours each day M-F (or three if you include the weekend). I know many that push for even more.

Since our jobs tend to be sedentary and it's probably helpful to budget at least an hour for the gym a day to help mitigate the severe health effects of working a desk job, don't forget to factor time at the gym in your scheduling. Also, if you're like many developers I know you're likely on call and answering e-mails at home as well which is easy to forget about when calculating available time.

This then quickly becomes a challenging schedule even for eight hour days. Those selecting ten hour days are probably not reinvesting as much as they should and will potentially burn out or become irrelevant in the long term. I've attempted a sustained schedule of 12 hour work days with 4 hour reinvestment and an hour at the gym and found it unworkable in the long term.

7 comments

That is insanity. What could you possibly study four hours a day that would be worthwhile? That's just pumping in useless trivia information that will crowd out the useful development knowledge. Is it a web development thing? Framework-of-the-week psychosis? It just sounds like a recipe to get burnt to a crisp in a few years.
My first thought when reading your comment was "How could you possibly fit everything there is to learn into 4 hours a day?", but I think the disconnect is in two different conceptions of what a job is -

For most people, a job is something where you are hired to do a specific task for a specific wage, using specific skills that you learn once and then apply many times. "Make this button green." "Move the navbar 20px to the right." "When this button is clicked, send off an RPC to the server, and when it's complete, update the table with the relevant data."

These types of tasks lend themselves well to an "instruction manual" approach to skill acquisition: you read the manual, you apply it to your job, you memorize the parts that you use frequently, and you're done. Once you know everything in the manual, there's little point in studying further, because you know everything in the manual.

A smaller (but growing) minority of jobs require you to solve a vaguely-defined problem, where there is no manual because nobody's solved it before, and often times the problem hasn't even been posed in a tangible form. "Find out who wrote everything on the web." "Evaluate whether we should invest $5M into this venture capital fund." "Identify our next billion-dollar business." "Make cryptocurrency useful."

These jobs lend themselves to a "toolbox" approach. There is no manual, but if you have a wide enough breadth of experience, you've picked up a large variety of tools that you might be able to apply to the problem. So if you're tasked with figuring out who wrote what on the web, one approach might be ask the authors by having them add HTML markup, and then parsing and following that. Another approach might be to identify author bylines through machine-learning and then cross-reference them with a database of peoples' names that appear on the web. A third approach might be to identify pictures next to the byline and run facial recognition on them. You don't know which approach will be most useful until you're given the problem and actually try a few, but the bigger your toolbox, the more likely you are to find one that works.

The financial returns to these types of jobs tend to scale exponentially with their complexity, because the number of people who can solve them decreases exponentially. That's why it's beneficial to have as big a toolbox as you possibly can if you want to play in these markets.

I have never been the former, so I don't know how it works. That type of developer clearly must exist somewhere, because I hear people on HN talk about it, but I have always been a "hey, we have this interesting problem to solve, can you help" type of software developer. And yet, I have managed to stay quite good at this even without dedicating four hours of non-work time to it. To each their own.
I've done both of these types of jobs and I definitely feel different about them.

An example is if you work in any service industry. You don't have to think much, you just do when things need to be done. There's a lot of repetition so you just do without thinking. Or in an office job there's generally a set of tasks that you get done and this very clear path of how to do these things. I do think more time generally leads to more output for these jobs (maybe not in service if we're adding more time into the times of day when there isn't a demand for service, but I think everyone gets the point).

In my last job I worked as a researcher and I'm now in grad school. I feel like for the most part I accomplish way more when I'm not tied to a clock (I still like deadlines and think they are beneficial). But some days are just worthless. Some days 10hrs is nothing and I've forgotten to eat. But most days I'm productive in the morning then do other things mid day, be productive again, hang out with friends, then do research at night. These breaks help me end up getting a lot done. The problem I'm working on is far away (though I'm positive some part of my mind is working on it in the background). But as soon as I'm tied to a clock I feel like I get less done. In those moments where I'm drained I end up just looking busy or do something like browse HN. The thing is that these actions don't allow me to recover, so it's harder to get back to work and be as productive as I was in the morning.

I think that's the trick here. Recovery. In mentally demanding jobs we don't consider rest. It'd be like working heavy duty construction all day every day. It's not sustainable. Or asking pro athletes to train at their max every day. Recovery is an essential part of training and being effective. I think you can train to get more hours of productivity in a day, but as long as we don't actually rest that will never happen because we don't recover.

But idk. Do others feel this way? Often I feel like many don't, but maybe people are just looking busy and we're caught in a feedback loop.

Excellent point. I would also like to point out that the instruction manual jobs that you mentioned are being automated away and the pace of automation over this type of job is likely to increase.
I personally study a thoughtful blend of the a number of subjects, including:

1. Machine Learning 2. Practical Software Development Tools and Techniques 3. Computer Science Fundamentals 4. Design 5. Marketing 6. Business Fundamentals 7. Strategy 8. Communication

I believe all of these are elemental to being a successful software developer in 2019. Machine learning is eating conventional software development from the inside out and conventional software development will eventually be mostly obsolete. Like many developers, I'm transitioning to this field to stay ahead of these upcoming changes.

Our jobs as software developers (and increasingly machine learning engineers and data scientists) demand superior communication skills and reasoning. Since the ultimate goal of most software today is to be sold for a profit an impactful area of study is business and marketing. Understanding how to structure software to best serve business goals means understanding the ecosystem that the creation lives in. Finally, the ultimate consumers of software and machine learning models are rarely technical and solid design skills are a good complement to a solid technical foundation.

Staying current and moving ahead in all of these areas of study takes at least four hours a day.

I appreciate the apparent effort you put into this post, but man there are a lot of fluff words in there. You inadvertently pegged my BS meter, even if you hadn't used "impactful." Ha!

I wish you nothing but success and hope your plan works out for you.

Everyone has a separate set of trigger words or phrases, I don't take offense.

As a side note, the phrase that machine learning is eating conventional software development might sound cringeworthy given how ML/AI is commonly portrayed by the media but it's the same description provided by Kunle Olukotun at NeurIPS (I was there when he delivered that talk).

I second what the previous guy said - what could you possibly be spending 4 hours daily on?

Anyone who claims to be current and moving ahead in all 8 of those areas would immediately set off red flags and signal to me that they definitely aren't current in all those areas.

I would argue that I'm current on the machine learning and practical software development side and minimally current on the others and improving.

To offer some background, on the machine learning side I've built and deployed over one hundred models using nearly every major machine learning technique available today. To stay sharp I actively compete in Kaggle and other competitions (and have won a few small competitions) and have attended over six large ML conferences over the past two years. I actively read through every major published book on machine learning and nearly an entire bookshelf dedicated to the practice. These books, as well as MOOCs contribute to the majority of my reinvestment time on this side. I turn around and directly apply this information to competitions and paid projects to help it stick. I also read through as many ML papers as I can budget time for. Arxiv Sanity Preserver is a great resource here (http://www.arxiv-sanity.com/).

On the software development side I've built and deployed over a hundred websites products and services in half a dozen languages over the last twenty years for clients or my own business. I subscribe to a litany of aggregators over python, c#, and javascript news and use that information to identify trends to focus on for the practical side. Outside of side projects to gain practice these skills I also use pluralsight, developer conferences, and (less frequently now) books to stay current on this side - which contribute to time against this daily.

On the computer science side I have a large collection of classic books I'm working through and rereading. Everything from the Intro to Algorithms to SICP. I'm currently on my second pass through MIT's 6.006 and 6.851. Much love for Erik Demaine. I own a collection of CS puzzle books including Cracking the Coding Interview and my wife tortures me weekly with dynamic programming puzzles on a whiteboard we have to keep sharp. Similarly, I also tackle LC and HR puzzles on a weekly basis.

On the marketing side I've managed a significant of marketing spend for clients and my own projects through every major marketing platform except facebook. Through this I've developed a skillset around split and multivariate testing. I've also run literally hundreds of marketing experiments to gain experience and understanding. I actively manage paid and organic marketing efforts for an array of projects which provides an additional impetus to stay current. To that end, I subscribe to a number of marketing news aggregators and I'm reading through every major marketing classic I can find. I've had more trouble finding good information on this side compared to other areas.

On the design side I'm currently taking courses through Kadenze and own every a large collection of design classics that I've been reading through. Everything from universal principles of design (strongly recommend) to the design of everyday things. Beyond thoughtful practical application of these skills in hundreds of websites and apps I've also exhibited artwork.

It's a similar story for the remaining areas. Mostly paid courses, conferences, and classic textbooks (I budget about 20k a year for these resources). I also use Anki for remembering important concepts.

I've been at this (reinvesting continuously in all of these areas) for over ten years and averaging 15-20 hours per week of dedicated reinvestment with nearly no breaks for at least the past three years.

Man, you sound like you need a big fat blunt. There is more to life than what you are describing here. Do you have any hobbies?
What is your end goal?

C-level executive? Having your own start up? Retire early? Researcher who goes to a lot of conferences and applies state of the art techniques to solve problems?

Sounds like most of the things you are working on are just making you a more efficient cog in large organizations. But in terms of compensation, sounds like the skills you are pursuing will have diminishing returns for increasing your compensation, with out a clear goal and road map for where you want to end up.

Most people (me included) reading this think it's insane. I'm glad it works for you and makes you happy (does it?). I'm sure some pointy haired boss would love you.

TBH, if you said all this to me in an interview or cover email, I'd pass you over and maybe keep your email so I could show it to people at the pub after work for a laugh. I'm not trying to be mean, but maybe you're so deep in this that you haven't heard how it might be perceived?

You may think this is due to some buried jealousy at your ability to keep this up, but I promise you it's not. I'm thankful for the time I spent all day/night learning what I know, but I'm thankful for it because it lets me not spend the rest of my life in that cycle.

Are you doing this for personal growth/satisfaction/enrichment? If so, more power to you. I'm personally more inclined to read a (non textbook) book or watch sports during my free time, but if that's what you enjoy then good for you.

Or are you doing this to maximize earning potential? If so, to me (maybe not to you) that's wasted time, unless you're banking over (arbitrary figure) something like $750,000 or more yearly.

I think 8 subjects is too much too make any meaningful progress. I have 2x 30 minutes when I'm on the train, and that's just too little to study anything worthwhile. I mean, I can read a novel in three days, but anything involving math costs me about 1 hour to get into before I can really learn something.
Can you give a couple of concrete examples when you claim machine learning is 'eating conventional software development from the inside out'?
See the first six slides here: https://media.neurips.cc/Conferences/NIPS2018/Slides/Olukotu...

This is not my phrasing but as someone that's deployed several models in production that have replaced existing conventionally written and maintained areas of code I believe it.

The significance is the ability for machine learning to displace traditional software development is small but growing and there's no real practical limit.

Thanks, I've seen Karpathy's core argument before and to be honest, I don't buy it. Throwing everything at neural networks and forgetting all domain understanding (sometimes developed over centuries) just doesn't feel right. They can be good at certain use cases, certainly, but the eating argument is going too far and just seems like lazy justification of his own research area.
I think they're on the money with the dedicating a few hours a day to study/productivity outside of work - I just can't imagine doing it for the same thing I'm already getting paid for anymore. If they're really into programming/dev studies though it's totally fine but it feels like a recipe for burnout.

A lot of people do feel bad if they waste their days just looking at Youtube or social media all night after work - I think a lot of people feel the guilt after the fact but never work to execute on it because its so easy to procrastinate/skip small commitments of studying.

When I was at a shitty job I hated that meant most of that study time went to side hustles and learning the local language to build my CV, but now that I'm free and in a good job it mostly goes toward trying out completely unconnected things like Piano or Chinese - as long as it's productive I'm fine. Playing around in new things that interest you half for fun is the best approach to not burn out I think.

> What could you possibly study four hours a day that would be worthwhile?

You're quite correct that ephemeral and arbitrary arcana makes up a HUGE portion of current applied knowledge in the software field.

But if I could study 8+ hours a day over decades, I'm willing to bet I couldn't exhaust the limits of language/platform independent applicable computer science and mathematics that's presently available, let alone keep up with any new developments. And that's before getting into domain-dependent specific issues and practices.

I realize that barefoot was speaking about studying things that are relevant to your job, but because you asked "what could you possible study for hours...that would be worthwhile", I'm going to say "study whatever interests you", regardless of it's relevance to your job. There are plenty of things worth studying for hours a day...as a hobby. I'm currently studying HAM radio & GIS systems.
Haha, yes, I recognise a lot of myself in this description. My previous job was a start-up and I was working maybe 8.30-6.30 most days with 20-30 minutes lunch and also working on open source software in the evenings (I still do the open source stuff and it's one of the few things I actually enjoy). I also attended regular exercise classes and the job came with crunch periods.

Despite switching jobs a year ago to an 8.45 - 5.30 schedule I'm now so burnt out I'm taking 4 months out and will probably try to change fields. Software is well renumerated but it's a gilded cage, I am under no illusions other people are better off or other jobs are without stress, but trying to be a good programmer has reduced me mentally and physically to the point I can't face the thought of working.

It really seems to depend on the company culture (which itself depends on the actual product) and office setup. E.g. I work remotely, spend time throughout the day relaxing and always done by 3pm and very well compensated
Lmao, this is just so absolutely ridiculous. Nobody needs to spend that long outside of work keeping yourself current... it's much more effective to just try to transition your actual work-work to being current and maybe spend a few hours here and there working on something interesting.

If your current job isn't keeping your skills up to date, you need to switch ASAP. But even if it's not and you can't switch... jesus, it doesn't take 20hr/week to learn some new stuff

I agree outside of software development. However, the only constant in our industry is change and that change demands continuous reinvestment. The only other way to grow is to focus on complementary skills with longer relevancy and that takes real time.

Your proposed alternative solutions to switch jobs or apply current skills at work (I'm assuming new skills or understanding) are common solutions used by many developers but ultimately have significant detrimental effects on companies both from very high industry churn rates as well as unnecessary application of new technologies by unskilled and inexperienced practitioners. These are as ubiquitous as they are bad and from a principled perspective I refuse to use them.

Well, you do whatever you think is best, however for me I am never going to be so loyal to an employer that I will spend 20hr/week outside of work making up for the lack of relevant tech I am encountering at work. And personally I wouldn't recommend that.
>A reasonable measure of what it takes to stay current and relevant in this industry is twenty hours of dedicated reinvestment per week.

Which industry is that exactly? Because it's sure not mine, and I'm a software engineer, which I thought was the default assumption here.

The guy is, assuming some normalcy, unhealthy. Maybe he's very young and still in the learning phase where you're eating up all your time learning, or maybe some physical/mental difference (Autism, etc). He's clearly never been burned out, and notice he budgets no time for social activities. Very unhealthy.
It's a challenging habit to start but not as difficult as you'd imagine to maintain. That said, I've met a number of other professionals that sustain similar schedules. I have an array of hobbies including flying, rock climbing, tennis, and traveling. I've never been diagnosed with any behavior or personality disorder and organize social time primarily around the weekends. I also hit the gym every day which helps a lot. I completely credit any success I've had to working out frequently.

I don't cast any judgement over developers not choosing to reinvest. I also think it's critical to know your limits and stay within them. I've been burned out several times throughout my career and know where my limits are.

I am however very certain that this industry rewards continued learning and with the right mindset it's very rewarding both in the short and long term.

>It's a challenging habit to start but not as difficult as you'd imagine to maintain.

The question is, why would you want to? I don't spend any time at all staying current on my own time. I stay current on my employer's time. That's part of what they pay me for. If they don't want to pay for it, then I'm finding a new employer.

Furthermore, I just have no idea where you come up with 20 hours per week. The kind of software I write just doesn't change anywhere near that fast, and I'm doing cutting-edge R&D! When I need to learn a new thing to do my job effectively, I go do research and learn whatever I need to. I don't, and see absolutely no reason to actively seek out new things to learn that I have no immediate plan to actually use.

>That said, I've met a number of other professionals that sustain similar schedules.

Have you really? I've worked for years, and I'm not sure I've met anyone fitting this description.

What the heck! This is how you fall into a deep despair of depression because you wake up one day and realize your greatest skill is leetcode and job hopping. 12 years in the industry, I can tell you that you'll be fine with zero grinding. Once you learn how to learn, you can pick up anything you want on your employer's time if you have your fundamentals down. You have a life outside of SE, live it.
This might be the least healthy comment I’ve read on HN
> A reasonable measure of what it takes to stay current and relevant in this industry is twenty hours of dedicated reinvestment per week.

That's insane - do we have statistics on people who do that?