I've worked roles where our priorities shift with the wind. Many times it is for good reason, like a strategic customer to get a foothold in a market. Other times it is just because management hyped up some effort. All's this to say, nod saying you will do it then just go about your day doing focusing on the actual priorities. Don't let workload mount up bc deadlines are all made up.
You sort of do; stop doing work above a certain volume, stop meeting deadlines. This will have consequences, which may include a) firing or b) better volume and deadlines, depending on a number of factors.
If you're lucky, the managers are clueless and you can easily pad your estimates by 2 to 3x and still appear incredibly productive. The trick is pacing yourself.
doing LOTS of nothing can also be a huge power move. i was in software development, technical writing contracting in Silicon Valley back in the 80s. i stepped away to do something completely different for 40 years. curiosity in AI brought me back. the background acquired from my exploration of an apparently unrelated field enabled me to develop some very advanced software concepts relevant to the problems with AI, and implement them in working code.
It sounds like you could have a little "buffer time" where you "do nothing" to prevent burnout when you need that free time for something that pops up and to take adequate breaks to pace yourself cognitively speaking
Otherwise I don't see why you couldn't do lower value tasks with flexibility to abandon them if something higher value comes up
If you're still learning or giving opportunities to learn new things, stick it out. If you're stagnating and not allowed to learn new things, it's time to leave.
For the first 10 years or so, this is relevant. After that you can figure out what you really want to do.
Yes, the old rule is you are either earning or learning, if you are not doing either you should be out.
Early career pick learning and exposure to different technologies, processes, and company organizations.
That being said, this job market is pretty bad for the youngins so unless you are top 1% of noobs I would say focusing on stability and learning would be my north stars in the next 3 years.
If you're being treated poorly and it's causing you stress, leave.
It's going to take time to earn trust from peers and your manager to start getting more meatier work. If you're early career, I think 2 years is a good guideline. Many places hiring someone for their second job will expect you to be leaving your first job around 2-ish years. 2 years gives you the chance to take on larger projects and see the results of your work and get feedback about things you've pushed to production.
You probably shouldn't stay at your first job more than 3 or 4 years. The second job change is the hardest. It's when you realize that different companies do and value things differently. Staying too long at your first job will make it tougher to adjust. It's also good to get exposure to new ways of working while you're still agile enough to soak it up.
If you've left more than 2 or 3 jobs within 2 years it starts to look like a red flag.
There's a lot of wisdom in this. In addition to reserving some capacity for when true high-value work comes along, I think software engineering is not the type of job that you can do well if you're constantly busy. Trying to write some code as quickly as possible seldom yields the best design. This article doesn't get into another important aspect of this, which is how to get away with working at 80% capacity without getting in trouble with your manager. This takes a bit of care around communication and estimation of work. One of the first good pieces of advice that I got from older seasoned developers when I started my first real programming job has stayed with me to this day: take your estimate of how long it will take to do something and double it before communicating to your manager/users. As you get more experienced that ratio can come down to maybe 1.5x instead of 2x, but the principle still applies.
Kent Beck (maybe in Good News Factory but also in talks) that his team would never commit to more than half what they think they can get done. This is a good way to sustainability. And that's the optimization and precedent to set; that we are here for the long term, delivering steadily at a sustainable pace. It's a long game, and over promising only runs down trust, which is your biggest means too getting the space we need as Devs.
Under promise, build trust that we can do what we say, earn the space we need to not burn out.
Honestly the more senior I get (Lead), boundary setting and preserving my attention; not burning out, _is_ the job. Because there are myriad ways to do this to yourself.
Yep, if you want to run a sustainable business you don't look to fire on all cylinders all the time, but that's the rub, almost no owners are looking to run a sustainable business anymore.
Most people either want hypergrowth idiocy or to be bought by the people doing hypergrowth idiocy.
Setting consistent expectations means you can plan, you can actually reasonably budget, you can have predictability in your business dealings - if you are trying to run a good business these are all real features instead of "puts out more code that might or might not make us money, but at least we were pulling all nighters and adding perceived meaning to our lives!"
Also applies to research. Keep leeway to open yourself up for collaborations and you might score lots of easy wins even as you struggle with your 'main' project (it also makes you a more well-rounded, sociable scientist)
I've argued the same for 30+ years. Having some slack is healthy so that teams can be simultaneously proactive and reactive to issues. Even the best athletes do not train or compete 24/7.
It's a good practice to run at 80% utilization and it helps if you are not being managed by people with an overseer mentality, who demand 100% from you all day, everyday. They are the ones who misinterpret the look of software engineers working in relaxed silent repose as lazy idleness. That's why remote work is the best thing to allow me to keep some utilization in reserve and to keep my sanity.
Doing a little bit of "glue work" can make you indispensable and also a hero to your team if it makes everyone's work life a whole lot better and no one else knows how to do it.
If you want to collapse just run a system at 100% for baseline, there's no slack, there's no capacity to meet new demands, you're just running a permanent failure mode if there's any perturbation in the system.
I've been "Doing nothing" at work for a couple of weeks now, and it's freaking me out. Yes, I have asked for tasking, but the guy in charge is ... I just don't know.
> Second, preventing or mitigating an incident early (even by just knowing the right feature flag to turn off) can save huge amounts of money: both immediate lost revenue during the incident and future lost revenue from customers who would have pulled their business or refused to sign pending contracts.
Not to be sarcastic but just to offer an observation: in a sufficiently large or bureaucratic organization, preventing an incident from happening can rarely get you any credit or visibility. Such achievement falls into the bucket of "what you're supposed to do". So, those who navigate company dynamics well would rather let the incident happen and then be loud on the follow-up action items. The trick is not to turn an incident into a diaster, so it's a dedicate act.
This goes beyond work. A self made friend told me "if you are always working when will you have time to make money?" We all need free mental space to think.
The metaphor that changed my perspective came from the book, "The Power of Full Engagement", paraphrasing "you're behaving as if you're a world-class endurance athlete without an off season - stop it."
I know this is a code about me behaving as if I went to a world-class university for undergrad. I could have gotten into almost any world class university, so that's what I do.
This sounds a lot like being on call. If you like that kind of work, why not be an SRE instead? Maybe there also need to be people “on call” for responding to other kinds of events, though?
It also sounds a lot like getting pulled into meetings. People complain about it, but sometimes that’s the job.
I’ve had a half-written blog post in this vein for a while now using a fantasy RPG analogy: if you play a character that uses mana in any of these games, you’ll learn fairly quickly that using it all up all the time on trivial battles and running around empty leaves you with none when you genuinely need it.
Your mental energy deployed at work is not so dissimilar: keeping some in the tank gives you the option to deploy it strategically, rather than risking your health (burnout) when something unexpected comes up.
If you join a group in one of these games with a player who is bad at managing their mana, you’ll also find that they’re not such great teammates, either.
Sigh. This article is obviously completely correct, but I don't think the people who actually need to read it will care.
Running anything at constant 100% utilization means you are going to be working in crisis mode all of the time. Even in factory labor, the Toyota Way is several decades old now, and it involves making sure everyone has at least a little breathing room to step back and think about what they're doing. And obviously this is even more important for "knowledge workers" or anyone whose output requires any amount of creativity.
High functioning organizations have a good (not too much, but not too little) amount of slack in their work pipelines. Pretty sure there is not a single person with an MBA (or, lol, any consultants) that knows this anymore.
> I also believe that being too helpful leaves you vulnerable to predators. Tech companies are full of people who want to extract uncompensated work from software engineers4. This is different from work that arrives via normal channels, and for which you’re compensated by promotions, bonuses (and just your normal salary). I’m talking about work that arrives via backchannels, from people who don’t have the ability or willingness to ensure that work is formally recorded under your name. For instance, a product manager from another organization messaging you to say “you’re so good at querying data, would you mind pulling some statistics for me about X?”, or an engineer from another team asking you to “pair” on a piece of work that will ultimately involve you writing all the code and them quietly submitting the change under their own name.
Software allows clever people in a lucky position to benefit from the massive amount of work people have done before them. You should remain discipline so that when you do get your opportunity you don't add on to the garbage pile.
the bit about glue work is interesting, because in my time working for megacorps this has been an explicit part of the annual performance review (google called it "citizenship" which I think captured the essence of it - basically "what work did you do to make things better for the rest of the company").
on one hand it does seem a bit messed up - this was not in my "job description", so it was technically unpaid work that was nevertheless a formal part of my expectations. but on the other hand I really liked working in an environment where everyone spent some of their time and effort to improve things for everyone.
also making it an explicit requirement for everyone to do at least attempted to circumvent the more toxic culture of "I am a rockstar engineer and I'm busy doing important things, someone else can do the glue work". not to mention that "someone else" usually ended up being a woman, and that she was almost certainly getting paid less than said rockstar engineer.
the OP's implication is that the company should have formally hired someone to do all the glue work, but it is usually made up of enough diverse pieces that it would be practically impossible to hire a single person to do it - e.g. what sort of job title would cover "write documentation, interview software engineers, and organise a team off-site"? but those were all tasks that needed to be done and the citizenship requirement let the burden be distributed more fairly.
I think a better way to put it is not "don't do glue work" but "don't be the only chump doing unrewarded glue work", i.e. to push for a company culture where everyone is expected to do some of it and where it is formally recognised as work.
That does sound nice. I think the author would say that if it's part of your annual performance review, then you are being paid to do it. That's the real test, not the job description, which can't be expected to describe every single thing you end up doing once employed.
This reminds me very much of Buffer Time from Star Trek: Lower Decks, but applies pretty well to a lot of life. No slack = no margin for error or the unexpected...
It's kind of refreshing to see a "pontificating about what it means to be a SWE" blog post that doesn't have anything to do with the industry impact of LLMs. Like it's 2013 again.
59 comments
[ 3.2 ms ] story [ 86.8 ms ] threadYou need to learn to manage your manager(s). Google it.
Otherwise I don't see why you couldn't do lower value tasks with flexibility to abandon them if something higher value comes up
For the first 10 years or so, this is relevant. After that you can figure out what you really want to do.
Early career pick learning and exposure to different technologies, processes, and company organizations.
That being said, this job market is pretty bad for the youngins so unless you are top 1% of noobs I would say focusing on stability and learning would be my north stars in the next 3 years.
It's going to take time to earn trust from peers and your manager to start getting more meatier work. If you're early career, I think 2 years is a good guideline. Many places hiring someone for their second job will expect you to be leaving your first job around 2-ish years. 2 years gives you the chance to take on larger projects and see the results of your work and get feedback about things you've pushed to production.
You probably shouldn't stay at your first job more than 3 or 4 years. The second job change is the hardest. It's when you realize that different companies do and value things differently. Staying too long at your first job will make it tougher to adjust. It's also good to get exposure to new ways of working while you're still agile enough to soak it up.
If you've left more than 2 or 3 jobs within 2 years it starts to look like a red flag.
Most people either want hypergrowth idiocy or to be bought by the people doing hypergrowth idiocy.
Setting consistent expectations means you can plan, you can actually reasonably budget, you can have predictability in your business dealings - if you are trying to run a good business these are all real features instead of "puts out more code that might or might not make us money, but at least we were pulling all nighters and adding perceived meaning to our lives!"
Yeah, but did you take Hofstadter's Law into account?
It always takes longer than you expect, even when you take into account Hofstadter's law.
https://en.wikipedia.org/wiki/Hofstadter%27s_law
Doing a little bit of "glue work" can make you indispensable and also a hero to your team if it makes everyone's work life a whole lot better and no one else knows how to do it.
Not to be sarcastic but just to offer an observation: in a sufficiently large or bureaucratic organization, preventing an incident from happening can rarely get you any credit or visibility. Such achievement falls into the bucket of "what you're supposed to do". So, those who navigate company dynamics well would rather let the incident happen and then be loud on the follow-up action items. The trick is not to turn an incident into a diaster, so it's a dedicate act.
I've been focused on going out/socializing more which is unfortunately distracting me in life, all I can think about is going out getting laid
It also sounds a lot like getting pulled into meetings. People complain about it, but sometimes that’s the job.
Your mental energy deployed at work is not so dissimilar: keeping some in the tank gives you the option to deploy it strategically, rather than risking your health (burnout) when something unexpected comes up.
If you join a group in one of these games with a player who is bad at managing their mana, you’ll also find that they’re not such great teammates, either.
Running anything at constant 100% utilization means you are going to be working in crisis mode all of the time. Even in factory labor, the Toyota Way is several decades old now, and it involves making sure everyone has at least a little breathing room to step back and think about what they're doing. And obviously this is even more important for "knowledge workers" or anyone whose output requires any amount of creativity.
High functioning organizations have a good (not too much, but not too little) amount of slack in their work pipelines. Pretty sure there is not a single person with an MBA (or, lol, any consultants) that knows this anymore.
Put this in a frame.
on one hand it does seem a bit messed up - this was not in my "job description", so it was technically unpaid work that was nevertheless a formal part of my expectations. but on the other hand I really liked working in an environment where everyone spent some of their time and effort to improve things for everyone.
also making it an explicit requirement for everyone to do at least attempted to circumvent the more toxic culture of "I am a rockstar engineer and I'm busy doing important things, someone else can do the glue work". not to mention that "someone else" usually ended up being a woman, and that she was almost certainly getting paid less than said rockstar engineer.
the OP's implication is that the company should have formally hired someone to do all the glue work, but it is usually made up of enough diverse pieces that it would be practically impossible to hire a single person to do it - e.g. what sort of job title would cover "write documentation, interview software engineers, and organise a team off-site"? but those were all tasks that needed to be done and the citizenship requirement let the burden be distributed more fairly.
I think a better way to put it is not "don't do glue work" but "don't be the only chump doing unrewarded glue work", i.e. to push for a company culture where everyone is expected to do some of it and where it is formally recognised as work.
It also made me hate my life.