Always do Extra


(25 comments)
October 13th 2021


With all the stresses and demands of development that seem to send many of us to the exits early, how is it that some stick around? What's the secret to longevity in this career?

One thing I've noticed over the years is that there is at least one thing that seems to be common to every good, veteran programmer I know. They all follow the same deliberate and dare-I-say selfish rule to how they approach their time: Always do Extra. Now before you call "bullshit", let me explain what I mean...

Assume there's a reasonable amount of work you need to do to fulfill the base expectations for your job (i.e. your Normal Work) and then there's a little time left over. (I know some may argue this "left-over time" thing, but just go with me). In this remainder time you have a choice: you can do More, Extra, or Nothing (i.e. surf the interwebs). And it's with this decision that every reasonably happy, veteran developer I know distinguishes themselves. They all choose Extra.

But aren't More and Extra the same thing? No! They sound similar, but they're actually very different. Here's a simple example:

Say for this sprint you're assigned two form screens that take user input and then persist it to the database. Pretty straight-forward. This is your Normal Work - the default expectation of what you need to get done to be in good standing on your project.

Doing More would be completing those two screens and then taking on a third screen that's just like it. Yes, this would help move the project along faster and make your manager happy, and that's great, but in the long-run, More doesn't give you much.

Extra is different than More. Extra is finishing those two screens, but then researching a new library for form validation that might reduce the boilerplate code. Or it's learning ways to protect against common security vulnerabilities from data entry. These little off-ramps from the main highway of Normal Work could be dead-ends and not have any practical value to the project. But they might also be important contributions. And that's the thing with Extra. While the tangible value to the project is uncertain (it could be nothing this time or it could be something), the value to you is real.

Extra gives back in a couple ways. The first is philosophical. Extra is about having free will. It's about not being just a drone who monotonously does exactly what their told, but someone who asserts a little control and shapes their our own contributions and experiences in a way that's interesting or meaningful.

More practically though, Extra is also good for our careers. Our employability has everything to do with the diversity and depth of our experiences, and so Extra is what helps us broaden ourselves beyond just what's useful on our narrow project. Whereas grinding it out to finish that third screen wouldn't add any new skill or insight to our toolset, a little bit of exploration from Extra could.

Now there are of course caveats. Over the years I've seen developers get carried away with Extra. Extra is all they want to do. They spend their days researching new validation frameworks or security vulnerabilities, and then can't get their Normal Work done, those two basic screens. And sure this might be more fun for them, but it sucks for the rest of us because we have to pick up their slack if we want to deliver the project on time. So there are rules to Extra.

The first rule is this: Extra must be balanced against Normal Work. Real stuff still needs to get done. This is how we get paid. Shirking our Normal Work in favor of Extra might be more interesting, but it makes us shitty teammates at best, and unethical at worst. Note: there are a few "lucky" among us who find their way into roles where Extra is their Normal Work, and we call these people Architects. ;)

The second rule of Extra is that it must be aligned with your Normal Work. If what's on your plate is two form screens, Extra can't be learning about evolutionary algorithms or building a mobile app for your side hustle. It's got to be something that could help the project. It's never something we need to hide, but instead it's something we're eager to share with our teams - ala "hey, I did some research on X, and maybe this is something that could be valuable for us to try".

In the end, I hope it's clear that I'm not arguing that we neglect our Normal Work. This is what is expected of us, but the choice is what we do beyond this: Nothing, More, or Extra. In my experience, those who have had longevity in this field always choose Extra. I'd love to hear your thoughts.

I'm an "old" programmer who has been blogging for almost 20 years now. In 2017, I started Highline Solutions, a consulting company that helps with software architecture and full-stack development. I have two degrees from Carnegie Mellon University, one practical (Information and Decision Systems) and one not so much (Philosophy - thesis here). Pittsburgh, PA is my home where I live with my wife and 3 energetic boys.
I recently released a web app called TechRez, a "better resume for tech". The idea is that instead of sending out the same-old static PDF resume that's jam packed with buzz words and spans multiple pages, you can create a TechRez, which is modern, visual, and interactive. Try it out for free!
Got a Comment?

Comments (25)
LarryLobsterino
October 13, 2021
Great article, doing extra is what will grow you as a dev. However, I'd argue that sometimes the answer is doing nothing and keeping your sanity. Keep up the good work!
Ben
Yup, totally agree. Sometimes a little Nothing is what we need...and might even make us more productive in the long run, but at least healthier.
October 13, 2021
This is like reading propaganda. Doing eXtRa just makes your employer more money and I highly doubt if you're already a "super veteran excellent engineer" you're gonna learn a whole lot. If you finish what's expected of you, log off and go outside.
Ben
Respectfully disagree. Extra might make your employer more money, but it's a bit of a selfish thing too in that it's learning things that could be useful for the company/project, but might not be.

Also, I'm with you on getting outside, but if I'm within work hours I feel like I should at least be available and not riding my bike. 🙂
Ben
October 13, 2021
Thanks for writing the article, it puts into words something I've felt before but hadn't seen written out. After finishing my work for a sprint, it's so so tempting to start working on tasks that are planned for next sprint. But you're so right that it's much more sustainable to do something slightly fun, slightly extra with that time.
Ben
Thanks! Exactly what I was thinking.
October 13, 2021
Always do extra for yourself. For your employer, just do your job. Excess growth is burning the world, not saving it.
Ben
Agreed about excess growth.
October 13, 2021
Awesome, you were able to put what I've been doing for years into words. Finished ticket(s) ahead of time? Spend some of this time learning new or better ways of doing things.

Unlike More Work, Extra Work isn't"free" work for your employer. Sure, it may improve your Normal Work over time, but mostly it improves your skills as a professional.
Ben
Thanks! Agreed.
October 13, 2021
I've found that the best engineers spend their time either reading or writing essays about software.
Ben
If you're the real Paul Graham, thank you! I'm inspired by your writing. And if you're not him, thanks also. 🙂
October 13, 2021
I think some people are misconstruing "Extra Work" as burning the midnight oil. That's not the case. "Extra Work" might be 15 minutes of investigation at 2:30pm after you've picked up a ticket from the sprint backlog.

Great article.
Ben
Thanks. Exactly. I probably could have re-worded "capacity"...but capacity is within work hours. I'm definitely not advocating burning the midnight oil. I did that early on, but quickly found how unsustainable that is. Balance is key.
October 13, 2021
Hi Ben,

I totally agree with you.
I realised once that doing the extra mile, and performing better always pay off on the long run. I use to say "great Prix are won on boxes", of course you need to do a very good course, but boxes give you that extra room to win. That's a least for me.

Thanks and keep going!
Francisco
Ben
Thanks!
October 13, 2021
Perhaps better to say "sometimes do extra"? "Always" never allows for the satisfaction of having finished the job.
Ben
Yes, definitely..."sometimes" is more nuanced/accurate, but not as provocative as a blog post title - haha.
Jayson Liang
October 13, 2021
I agree with you.

Choosing Extra over more does give the developer a stronger sense of control, thus potentially avoid burnout while creating this sort of win-win for oneself and the employer.

I would argue that the use of "always choose Extra" is a bit too strong. I know it's a matter of self discipline, but my strategy of longevity is that sometimes after a big project, I would choose Nothing just so I can sit back and appreciate the work I've put in.
Ben
Yes. I do think there's something in our psychology that needs some control/autonomy, and Extra helps with that. Thanks!
Larry the tester
October 14, 2021
testing the captcha
Ben
It works! :)
TotallyAHuman
October 14, 2021
I think the overall idea of trying to be on the lookout to improve the codebase, the processes, the system architecture... is on point, although I completely disagree with the fact that this is an "Extra". This is a trait of a good engineer independent of their seniority, and it is present in the "Normal work" and is not something we should do on a "spare time" but always.

I also think that you're trying to elicit this point of view of yours by incorrectly tying it to "software veterans" whatever that means. For one good engineer that does a good job trying to improve, there are 10 that just want to do their jobs, get money and go home to enjoy their lives.

In my honest opinion, this trait you described here doesn't affect the longevity of an engineer's career. Finding a good personal life-work balance and trying to find a steady and productive development pace is the key.
Ben
You must be a human because you got past my impenetrable captcha! Lol. Great points. I do think doing Extra is a trait of good engineer, independent of seniority...but precisely because it's a trait that then supports balance, it's a critical one if you want to have longevity. While I have come across plenty of veteran programmers with a "punch the clock" mentality, and choose Nothing or More over Extra, my experience is that these people aren't super happy or engaged in their profession anymore. It's just a means to an end. And while that's not necessarily a bad thing in the big picture (having a life is more important!) I find it the person more inspiring who does still take a lot of pride in their craft, enjoys learning and growing, and thinks of what they do as a career/profession more than a job.
Zlodo
October 14, 2021
Guy who employs programmers: "doing extra work is good for you, actually"

If you want to do extra work that's really interesting, work on your own projects on your own time
Ben
Yeah, of course...side projects on your own time are great. But on the company's time, there is often a little bit of "downtime" where you're not grinding out some code for a requirement, and you have a choice with what to do with that time.
David Goldstein
October 14, 2021
Yes Ben I think your assessment is spot-on.

Especially in the practical realities of how most of us are going about our work, versus the ideals of how project planning and execution "should be".

For me it has always been the case that my planned time to execute includes some wiggle room for the unknown, or the natural ebb and flow of personal productivity.

Getting a task done ahead of time then affords me choices...
* is the team swamped? i can jump ahead and get more done
* was this task overly complicated, not executed cleanly, or inefficient in some way? then i'll take a little time to try to improve not only today's code but how we do more of it in the future
* have i sacrificed my well being lately to keep up with work? if so then maybe i'll take on some low-impact work like catching up on some documentation or researching something new

Ben
Great points. Thanks for that.
October 15, 2021
Ben,

Thanks for this. Doing "extra" is an excellent way for developers to grow their skills. You don't have to do it 100% of the time that you have down time. In my career I've had periods where I did "extra" and it's undoubtedly helped me climb through the ranks. There have also been periods that I give myself a mental break. Those quiet periods haven't hurt me but the "extra" periods have made all the difference.
Ben
Yup..."always" was too strong. Totally agree some quiet periods are important. Thanks.
Bob
October 15, 2021
I largely agree and I have done this too. But it's good to keep in mind "what if my Employer has software that is watching me? What if there are screenshots taken every few seconds, and they are reviewing that every week?" So any "extra" that I do I make sure that it is closely related to what I'm working on. I will usually do things like explore the capabilities of my editor, or read the documentation for a programming standard library function to see if there are any overloaded functions that could be useful.
Ben
Good point. Some companies are more watchful than others, in my experience. I have not heard of screenshots being taken...that seems a bit draconian...but definitely have heard of managers getting reports of browsing history.
October 17, 2021
I agree with you, but in practice, it depends a lot on the complexity of the project you are working on.
In most cases, the assigned tasks take more time than the estimated time.
I find that some extra could be done in between tasks or on Friday afternoon. And that is NOT always possible.
German
October 17, 2021
Hey! This was a really good reading! I enjoyed it! thanks!
snpunee
October 17, 2021
this is how we grow for junior dev to senior dev. great article
Louise
October 18, 2021
For me, the first thing with extra time is checking in on the other members of the team, is someone stuck, does someone have a seriously underestimated task etc?

In this way, I have learnt more about other disciplines on my team, DevOps, Testing tools and many more.

If I want to investigate better ways to things, I always add it as a task, so the team can join in the discussion. Usually the PM is on board.
October 18, 2021
Great insight! I love the contrast between “more” and “extra”. I’m definitely going to steal that. (By “steal” I mean point people to this article.)

I really appreciate the part where you mentioned extra could be a dead end. Yep. Absolutely. That’s been my experience, probably more often than not. And that is 100% okay because we still accomplished what we set out to do: exercised free will (I like the word “agency”) and learned something.

Oh, but sometimes it’s not a dead end… :-)
Manuel
October 24, 2021
Find an excuse to expand your knowledge. In other words, get shit done faster and then just do what interests you.
Evan
October 24, 2021
When you need to do “nothing” to stay sane, I’d argue you’re already past capacity. There’s a difference between time and personal wellness. Most of us in this industry are salaried. Our hours may be somewhat flexible. Managing our health and energy is as important as managing our time in the long run.

That said, sometimes I’ve been able to turn “extra” into rest. But usually I make the mistake of front loading extra and finishing “normal” late. This is ultimately a product of insecurity and lack of experience, in my estimation.
Michael
October 24, 2021
Wow, I do exactly this. I always spend an hour or two in the morning reading a technical book before doing normal work. It’s so important to me that I do it the first thing in the morning, when I am most alert.
October 26, 2021
I know a guy who did a huge amount of Extra. To the point where he probably wasn't doing enough Normal. And, as you can guess, he lost his job. And the other part about the Extra was that it had nothing to do with his Normal(rule #2). So Ben's theory applies. But, if my friend were to be able to create the next Twitter(eg) with his Extra, would that be warranted? Keeping your Normal job is probably recommended. But if you can veer off to a place with your Extra that you believe could create something outstanding, can you justify shifting the Extra vs. Normal balance? Or, should you just work that much harder on your Extra on the side. And, Ben, is it possible what I'm calling Extra is more of a Side Project and I'm missing your point?
Ben
Interesting point! In my definition (which I of course made up out of nowhere :), this does break rule #2 as you mentioned, but I think it probably does still qualify as Extra IMO - it's just that "dangerous" kind of Extra because it deviates from what you're being paid to do during work hours...and so losing your job is unfortunately maybe not unexpected.

That being said, I do know some developers who have done this type of unaligned-Extra during work hours, and then have spun it into new businesses. Whether this is ethical or not is another question ...but definitely some do it.