devs, how do you deal with the mental fatigue of constant context switching?
Posted by Fabulous_Bluebird931@reddit | ExperiencedDevs | View on Reddit | 199 comments
I'm working across frontend, backend, and some infra. Usually have vs code, postman, docker, browser dev tools, and blackbox (often with multi panels) open. Every small task ends up needing five tools, three tabs, and switching between projects.
By the end of the day, my brain feels like it never fully focused on anything.
If you're dealing with this, how do you manage it? Actual strategies (not just 'take breaks' or 'do Pomodoro') would be helpful
Factory__Lad@reddit
Note taking. But also, you really can’t be in a job where people keep expecting you to drop whatever you are doing and context switch. Beyond some point it’s just non negotiable. I suppose this might also apply to situations where there are 10000 concentric layers of software and you can’t ever get any of them right.
originalchronoguy@reddit
I dunno about that. I get called into random production, security firefighting meetings throughout the day. I also get the random. "Quick, get a presentation for the CTO / VP of last year's POC we demoed to a stage of 300 execs" all the time. Quickly called in to answer some random status update to a CxO and major stakeholders. Get called into some infra issue because last nights patching broke some network policy so apps are failing and Infra/DevOps can't read code from the guy who is on PTO.
Factory__Lad@reddit
Nice, but my point is that beyond some level, no one can be expected to cope with this.
I got to the point where we had given up on making the software robust, there was a memory leak we realistically did not have the resources to investigate properly, one of our users kept writing me letters in a spidery green handwriting about a portfolio calculation he didn’t think was right, the phone wouldn’t stop ringing and I would regularly be in the middle of trying to fix a critical bug when a whimsical sales guy would call to tell me a funny joke about cat food
choochoopain@reddit
I think I might have ADHD so honestly it's just second nature to me
driving-crooner-0@reddit
I’m diagnosed with ADHD and it’s insanely hard for me to context switch. It’s so hard to focus in general that when I do, it becomes a state of hyper-focus and getting out of it is very irritating, even at the expense of completing other important priorities.
edgmnt_net@reddit
Some context switching is annoying, some actually helps people remain motivated and avoid boredom (even if less efficient). If I'm working on something boring, I may welcome an interesting interruption/question from someone else.
NoctisValentine@reddit
Also diagnosed and this is how it works for me. I don't choose what to focus on, my brain does without my saying so. And good luck context switching when it doesn't want to.
PhotoGeneticDisorder@reddit
ADHD here as well. I like what you said, "I don't choose what to focus on". It's just like that for me as well. I can force myself to focus on tasks by adding deadlines (and then starting work just before them to amp up the adrenaline) but really context switching when my brain says 'no' is just impossible.
FWIW, I find that smoking CBD helps a lot. It works like chamomile tea, but doesn't make you sleepy. Helps with focus a lot, as I'm much less distracted after a few CBD vapes.
msamprz@reddit
Also diagnosed and largely find that my "attention to everything because I can't pay attention to one thing" has largely been helpful. I can definitely context switch very well and with good quality (note, I'm not saying multitask!), but it does take a toll. I become an energy vacuum, and at the end of the day I go into autopilot and can say the dumbest things. Also, over the long term, it only works if I'm getting all the praise I need, so you can imagine it is not very realistic to keep it up because sometimes you just don't get rewarded, especially as an employee.
spiddly_spoo@reddit
I'm also diagnosed with adhd and context switching is also super tough for me. I think our brains are so bad at filtering out noisy stimuli (be it physical or mental) and it's like my brain refuses to think if it's feeling the slightest bit uncomfortable from all the noise. Usually the kind of quick adhd context switching I do is anti-productive as it's various irrelevant stimuli that annoyingly capture my attention. I had a job sort of like OP mentions before and I could only function by inducing a sense of panic and extreme urgency to sort of amplify the dopamine from the current task and cut through everything else, but this was of course not sustainable and destroyed me. Anyway, cheers 🍻
alelkid@reddit
Did you find a sustainable solution for this?
NoctisValentine@reddit
My solution is to just rely on the deadlines (external, internal doesn't work) and trust I'll pull through. My output is generally very up and down, highly productive or zero, no in-between. Generally I find that balances out with the rest of the team in the long run. It does just feel like constant cycles of small burnout, but at least the diagnosis helps me feel accepting of that. This also applies to nearly every aspect of my life too, it's all or nothing, no half measures.
callofthevoid_@reddit
I needed to read this, thank you.
spiddly_spoo@reddit
I don't think I've found a silver bullet. I now work for a very chill company and work on a team with highly structured scrum process and a product manager that's really good at breaking things down. So I basically have a lot more external structure and it's not super stressful if I dip in productivity. I have a hybrid job and for a while I would procrastinate all day when working from home feeling guilty and then I'd be so stressed I'd finally start working at like 6pm and then get wired and stay up till 12/1am and be wrecked for the next day. Now I'm a bit more aware of when I just won't be productive and I'll choose to not work during the day and do house chores or other stuff and then work from like 7pm-10pm. I just recently decided to start going to a shared office space nearby for my work from home days hoping that will help. A lot of it is finding the right amount of stimulation: not having lights that are too bright, playing music or audio that is the right type of stimulation. I think the biggest thing is probably getting a lot of sleep and exercise. I'm really struggling today since I didn't sleep well the past two nights. If had perfect sleep hygiene I think most of my problems would go away. Last night I was so tired, when I got back from working out I just locked into scrolling on Reddit for like 2 hours the whole time being like "I need to break out of this and get ready for bed!". My adhd is somewhat severe though.
alelkid@reddit
Ok so basically you have enough motivation(guides) to push you to do the work. Got it, I’ve also some success with taking energy breaks (say running breathing meditation) to stay focused, also more structured daily plan
nullpotato@reddit
My team is primarily 3 adhd people and we found we can force artifical time limit panic by doing things for each other. Example: I will never get around to updating the wiki but if Dave needs me to update the wiki then my brain cares because it isn't my problem, I am helping someone else out. So from the outside it looks like one round of hot potato but it is enough to trick our adhd brains into getting boring crap done.
fakehalo@reddit
I was one of them Ritalin kids from the late 80s/early 90s, and I think ADHD is a mixed bag and it manifests from person to person differently.
I personally find it overall beneficial. I've always likened my condition to my brain having to spin a bunch of plates whether I want to or not, so sticking a bunch of context related to coding on all those plates works out fairly well for me... but existing in general is a struggle when I don't want to spin plates any longer.
electricpuzzle@reddit
There’s a really great book called ADHD 2.0 with recent research and this is a big part of it. It has been scientifically proven that the “switch” in our brains is faulty. Either we have trouble staying in one state of mind or we get stuck in it. There are some techniques you can use to help combat this, I would check out the book! (Personal endorsement only)
BookFinderBot@reddit
ADHD 2.0 New Science and Essential Strategies for Thriving with Distraction--from Childhood through Adulthood by Edward M. Hallowell, M.D., John J. Ratey, M.D.
I'm a bot, built by your friendly reddit developers at /r/ProgrammingPals. Reply to any comment with /u/BookFinderBot - I'll reply with book information. Remove me from replies here. If I have made a mistake, accept my apology.
MediocreOchre@reddit
Just posted a reply, I feel on the opposite side of this. I context switch and make enough progress until I get bored again or the next switch happens.
lesg0brandon2024@reddit
Agreed. With ADHD, if I don’t work on more than 1 at a time, I lose complete motivation and don’t do anything. Tricking brain by using adrenaline.
Hudell@reddit
Yep. I'm diagnosed with ADHD and over time I got used to just deal with whatever is in my screen. If I alt+tab I instantly forget what the previous window was, but I also instantly know all the context for the current window.
If I'm working on a piece of code and have to navigate away from it, I leave a bookmark (Delph-style bookmarks is a great plugin). Also plenty of useful keyboard shortcuts. Did you know that Ctrl+U is like an "undo" for cursor position? If you press F12 to go to a function definition you can press Ctrl+U to go back to where you were. Ctrl+arrow moves your cursor between words separated by spaces or hyphens, while Alt+arrow moves your cursor between words separated by underscores or capital letters. I also have some custom shortcuts to navigate between blocks and brackets and that sort of stuff.
Those shortcuts are mostly universal, they even work here in this comment box (they might be slightly different on macs). The only exception I've seen is VSCode, which bizarrely prevents those shortcuts from working even when they are from the OS, and it's one of the reasons I don't use it.
TheWhiteKnight@reddit
Hah, this! And get good at using alt-tab and every keyboard short cut imaginable, avoiding use of your mouse when moving between tabs, apps, windows, editors, etc.
I'm always shocked when I see developers sharing their screen and using their mouse to switch tabs and move between windows / editors etc. Everything takes wayyy longer.
SlightAddress@reddit
I've been saying for 25 years. "Mouse is 10x slower than the keys"...
Ahchuu@reddit
I used to be like that, but I now have become more spacial. I'll use Win + Tab, or whatever MacOS calls that blow out view, and then click that way. I'm also a browser tab hoarder, but I group all my tabs near each other. I might have 3 or 4 tabs open with different OpenShift views in a browser. I will click on a random one that is close when making a large jump, then I know based on the one I see loaded if I need to shift left/right and how many times to get to the tab I was looking for.
So I am not purely all keyboard, nor am I all mouse. I am some kind of spacial combo user who uses a mouse to make large movements and then the keyboard for finer adjustments.
Software_Engineer09@reddit
Ha, after 10 years I haven’t figured it out yet. Many days I’m mentally drained doing exactly what you described. I’m also a lead so throw in random “management” related tasks that get tossed into the mix too and it makes for a lot of fun. I think at some point I became numb to it and I just thrive in the chaos.
jhartikainen@reddit
There's really two ways to this, neither is perfect and neither fully solves it.
I think uuqstrings' suggestions can also be helpful.
byshovets@reddit
absolutely! Many years ago I stopped fighting with jira and started using it as my external brain: tasks, whole projects, even everyday work logs go there now. Not the best tool, but it is a standard and everyone else in the org has an access
HaterTot@reddit
I spend like 30% or more of my day on notes alone. Using Jira tickets as a brain dump location has been cathartic. Main lesson I am continuously learning is to write as if the reader (me) has zero context — like that movie Memento.
utopia-@reddit
LOL. Perfectly put.
I actually do not know how people work in these kinds of jobs without doing this.
UntestedMethod@reddit
Yeah, I'd consider note keeping as one of the most helpful skills for developers to practice and a highly valuable habit to get into.
The version I've settled into is a daily work journal w/ rolling to-do list (borrowing some idea from bullet journaling and adapting it to my specific needs). I always jot down the key step I've completed and what the next steps I plan to take are. The amount of mental fatigue it saves is truly remarkable. When our team started doing time tracking, it was also pretty easy to update my daily notes template with a section to record what I worked on in time blocks. Having that log has also come in really handy more than once where I'm trying to remember some command or website I remember using but don't remember the exact syntax, I just search my previous notes for some keyword and thank my past self for writing it down.
Plus it's made it very difficult for random things to "slip through the cracks"... You know those odd-jobs or details that are generally nbd as long as you actually remember about them when you have the spare minute to fit them in amongst the more substantial tasks.
vanisher_1@reddit
What do you you for time tracking task? org mode?
UntestedMethod@reddit
No I keep it simple with plaintext markdown. I only need 15 minute blocks, not precise minutes or seconds or whatever.
I find purpose-specific tools just get in the way in this case. Plaintext/markdown gives a lot more flexibility.
Using a consistent format for how to structure the time blocks makes it easy to run grep or custom scripts on it to generate whatever summary reports I need.
yoko_ac@reddit
Can second notetaking — it really makes a difference. I know some people don't like using tickets (Redmine, Jira, whatever), but they can be structured in a meaningful way, capturing your thoughts and the "why" behind what was done. That kind of context is super helpful, even when you come back to something years later. Same goes for linking tickets — seeing where an issue came from and what it might affect next is underrated.
shagieIsMe@reddit
In my "I should look at that" set of things is Obsidian - https://obsidian.md - which recently did a "now free for work" post. https://obsidian.md/blog/free-for-work/
I really should be doing a dev diary to keep track of what I'm working on and the "don't let this slip through the cracks". Jira is good... but there's the "this got done but there's some debt hanging around it that I need to consider when I touch it again... but the backlog no-priority unassigned Jira that has the idea is too hard to find when looking at it again."
Repulsive_Zombie5129@reddit
I second obsidian. Markdown helps me organize my thoughts but i just don't like using jira for my notes since stories get closed out and moved around.
Obsidian keeps everything in one place and I know where to find all of my notes.
jhnnns@reddit
I agree. The second point was a game changer for me: Everytime I temporarily switch to another project, I leave a todo.md to pick up my train of thought next time I switch back.
NUTTA_BUSTAH@reddit
I tend to be so swamped I leave them directly in code. Much faster to get back to the train of thought when there is a todo right on the line that sparked the thought. Quick grep for TODO already gives me the full picture.
Ok_Lavishness9265@reddit
Every now and then I turn OFF all my external monitors. I just keep 1 single screen ON. That helps me to focus and get less distracted.
Spleeeee@reddit
I’m a single threaded, asynchronous, event driven person with adhd. I am very good at context switching but also have bad memory leaks.
micseydel@reddit
Thanks for this comment, the top-voted answer mentioned note-making but I've tried to take that to next level: https://github.com/micseydel/tinker-casting
I'm a "single threaded, asynchronous, event driven person" too but with my extended mind, the single thread is replaced with a network of actors. Still async, still event-driven, but fewer memory leaks :)
If you're curious, I'd love to know your thoughts. I'm still trying to figure out how to explain my project, so if it doesn't make sense yet, my apologies 😅
napkin41@reddit
It’s easy. I just remember I need money to live.
ZukowskiHardware@reddit
It is part of the job but I always let people know it will make things take longer
Schedule_Left@reddit
But ofcourse they don't really care. "It only took [developer x] 3 days to complete something similar, so it should take the same amount of time for you." Well [developer x] has been in that codebase for 10 years.
OldeFortran77@reddit
The worst is having meetings thrown in the middle. Everything you were working on gets dumped from your brain so you can concentrate on the meeting.
Schedule_Left@reddit
And in the meetings you have 5 people asking you if you did the thing they asked you to. Each requiring a context switch.
ice_cream_beaver@reddit
We don’t
Schedule_Left@reddit
The only true answer. Anybody else who thinks you or they can, are working with product.
OwlShitty@reddit
FACTS
LifeJustKeepsGoing@reddit
Try to stay relaxed, make sure you are taking notes. If you try to keep 10 different things all in your head you'll become stressed, and stress equals fatigue. Take short breaks for yourself. After doing this for 15 years it still gets me sometimes.
hkric41six@reddit
Glad this is at the top
TheOnceAndFutureDoug@reddit
Or we don't switch. I get pings and at this point in my career I'll acknowledge it and maybe throw it into a ticket but unless it's a P0 I'm staying on what I'm doing. And I make sure any engineers under me are the same.
If you're constantly context switching your manager isn't doing their job.
PoopsCodeAllTheTime@reddit
The bridge toll must always be paid to the bridge troll, if you don't want to pay, don't cross.
william_fontaine@reddit
I've been paying the troll toll for far too long
Purple-Cap4457@reddit
Only true answer 😂
fruxzak@reddit
Time blocking
MediocreOchre@reddit
Undiagnosed ADHD. It made me struggle to excel in high school and college, now I’m a Jedi that does a lot of a little bit everywhere all at once and that’s super valuable at a startup.
However it causes a large amount of anxiety for me.
I’m on ADHD meds now for the first time as an adult, and can finish a few more things before bouncing around the room with slightly less stress/anxiety.
NonProphet8theist@reddit
Color-coded tab groups in Chrome was a game-changer for me.
Bright_Aside_6827@reddit
Reduce context switching ?
NastroAzzurro@reddit
What’s described in the post isn’t even context switching.
ings0c@reddit
Yes, that’s working on one task and needing multiple tools to do it - which is inescapable.
Context switching is swapping between unrelated tasks, and it sucks because it’s hard to transition your brain from deep thought on one task to deep thought on another quickly, not because you have too many tabs open and get lost.
AncientElevator9@reddit
git stash.. or add+commit, you can always squash later
hardolaf@reddit
Yeah. I group related tasks together so I can focus on one context, swap to another one for a group of tasks, then swap to another context for another group. This only changes when I'm on the support rotation for stuff in production and during that week, my bosses have always assumed that zero scheduled work gets done.
Varrianda@reddit
Yeah to me context switching is jumping between two different intents. Like a manager who oversees 2 totally different teams, having to constantly context switch between each meeting.
mercival@reddit
Yeah, I've never heard of tool switching as a term, or confused for switching context. Really weird.
Their reddit profile seems more vibe coder than experienced dev, so perhaps just finding it draining having to continually switch from writing prompts and testing code they don't understand, instead of just coding.
That is draining.
UntestedMethod@reddit
Sounds like normal full-stack development tasks to me
Brief-Translator1370@reddit
You are right. Unless he's somehow switching tasks completely everytime he opens a new window then it's not context switching
Efficient_Sector_870@reddit
Looool yeah this "context switching" just sounds like development with no context switching
AncientElevator9@reddit
Work on one thing (PR) at a time.
PGadmin is always open, running in docker container.
I never develop in containers, always local (Ubuntu, so honestly the changes are going to be minimal if anything when it's in the container)
When doing backend I usually don't even have the frontend running.
We built a custom e2e API test runner, so no need for postman.
We don't stack migrations, so right after I pull I branch down to review my next step is local_setup_api.sh which makes the migrations, migrates and loads fixtures.
When doing frontend my backend is usually on main, unless frontend needs something that hasn't been merged to main yet.
As far as context switching between like reviewing PRs and working on your own, just branches and stash, use -m to keep better track of your stashes.
Env vars are persisted to a terminal session, so I'll never get confused what should be set to what... I just source my ~/env_setup.sh
Evening-Mix6872@reddit
I use obsidian to plan out the entire process step by step.
Then I step by step walk through and test as I go to ensure each component is working in each tool / part of code.
Using obsidian to keep my train of thought for me is largely how I manage so much context switching.
I also have these tools open with a lot going on & one story generally requires me to touch at least 3 projects.
autophage@reddit
I experience relatively little friction when moving between different tools. I'm regularly bouncing between two IDEs (one for the frontend, one for the backend), browser tabs (logging, Swagger, using the application, jira, github), SSMS or pgadmin, 2+ terminal windows (one for git, one per microservice I'm running), Notepad++ for taking notes, and some sort of Docker interface (maybe another terminal or maybe Docker Desktop, depending on the project).
Plus email and messaging stuff (doubled, because I'm a contractor, so I generally need separate lines of communication for my own company vs. my client.)
But when I'm bouncing between those, I'm not thinking of them as independent things. The task at hand might be "figure out why this value is being unexpectedly updated". Open the frontend in the browser, trace the network request, check the front-end code, figure out the controller it's calling, take a look at the backend code; I see that the mapping looks correct, so I start to suspect something in the database. So I move over to the DB tooling I've got installed. Hmm, looks like everything's as expected there - but wait, there's a stored procedure that might be invoked. Time to head over to message the DBA and see if they know what triggers that. While I'm waiting to hear back, maybe I'll check one more place in the codebase and see if there's some less-obvious invocation through reflection or something.
Sure, I "swapped between 6 different applications", but that wasn't 5 context switches - my context stayed mostly the same, I'm still looking into the same thing, just tracing it across different layers. I'm zooming in and out, up and down the stack, but not side to side across different subjects, if that makes sense.
nichijou_no_picks@reddit
an actual suggestion besides saying to suck it up:
I use a separate local VM per different project.
I work in IT services consulting, simultaneously working with multiple clients, different tech stacks, different type/scope of work. Might work on one tool for one day, which I'll need to revisit for another single day 2 months later, while in parallel working on multiple long term projects.
If I have a dedicated project VM (with full desktop environment), I can open it up, with everything exactly where I last left it. my notes are there, even my browser history matches that project only, tooling is exactly for that project only. it greatly reduces the feel of context switching, since I get to swap the entire environment to match my context instead, and I don't waste time figuring stuff out again.
I also use color themeing like "the green themed environment is for my ongoing data migration project", while the cappuccin purple is the "that backed project X". which helps with directly dropping my mind in the right state of a totally different context.
just make sure they spec your laptop with plenty of storage
Shazvox@reddit
I usually explain that I can do BE good, FE good, infra good or all of them half assed.
NocteOra@reddit
I don't think “context switching” is a problem for me. I feel it's only frustrating for me when I'm working on a slow PC and losing time when I have to switch from one project/stack to another.
Also maybe that's because I sometimes think about the shitty physical jobs I've had before and how hard and worse they were in comparison to this one.
sp3ng@reddit
Work in much smaller chunks. I've found that the more my calendar fills up with meetings, the more I have to work this way to be productive. The side effect has been learning that it's a great way to work regardless and I still work that way on days where my calendar is more open. It's something that everyone should be doing regardless if working in a Continuous Integration practicing team, it's also something that things like TDD encourage and drive you towards.
Write a small fraction of a larger piece of functionality, with a couple of effective tests, put it behind a feature toggle and commit/push it, let it be reviewed while you're distracted by the next meeting or something else. There is no such thing as too small. A single function here and there, a preparatory refactor (e.g. extract method or extract interface) of some code you'll need to integrate with, the skeleton of a single UI component, etc... work in very small steps, get it into the main branch and iterate, iterate, iterate.
Sometimes, there are situations that warrant a much longer and more singular focus... debugging a particularly nasty issue with an unknown cause for example. But this sort of work, work that truly cannot be broken down into small iterations, is far, far rarer than most people think IMO.
In more and more senior roles when you have less and less time available to spend on-tools and focused... you have to instead focus on achieving the right impact, in smaller and more incremental steps. If something is starting to look like a large chunk of work, is there a more effective way to achieve the same outcome? Is the outcome even desired? How does it weigh up against other things you could be focusing on? etc.
Complex-Magazine6690@reddit
Context switching will always have a cost associated. I find that the 2 main tools to reduce the cost are:
- note taking
- window management tool which lets me focus each commonly used application using a specific hotkey (this also includes the note taking app).
Once I got used to working this way, I find that my stream of consciousness doesn't really get broken in quite the same way, though again, there is still always some cost of switching context.
tOLJY@reddit
Probably a bit of a non-answer, but you just get good at it. I used to be terrible at context switching and then at some point it wasn't an issue anymore and I didn't even notice until long after it happened.
addictedAndWantHelp@reddit
Any realistic answers???
I have to switch contexts between tasks in the same project as well as different projects part of the same family as well as for a totally different product.
thekwoka@reddit
do it less
dryiceboy@reddit
I worked in a small organization and this was my daily routine for years. Burned me out. Still recovering from it. It’s not normal to be on 101% of your capacity all the time.
lunivore@reddit
TDD, mostly. I leave my work with a failing test that I can come back to later. Yesterday I needed to change a library so I could get something working in my service, so I checked my service in with a failing test (git commit --amend later), fixed up the library, pushed a PR, went back to the service, and logged off last night leaving some stuff failing for this morning.
The open tabs (Kibana, Jira, ChatGPT, several wiki pages and a calendar full of meetings because context switching is the norm for me) - they're useful for reminding me about the context, but it's the failing automated tests at service and unit level which let me step straight back into the flow.
zarlo5899@reddit
i got a new job and i get migraines a lot
Secure_Candidate_221@reddit
I just want to get the job done even at the expense of my mentality
twnbay76@reddit
Some days I walk in saying I'm gonna be face in IDE for 10 hours straight, no distractions other than bio breaks.
Then my manager comes up to me and asks me to do a quick thing for him and I comply because I'm tryna not get PIP'd. Then, there's some outage that needs tending to. Then, I have a meeting. Then, I'm hungry. Then, the day is 2/3 over and I'm sad.
DadJokesAndGuitar@reddit
IMO it’s the hardest part of the job. The real killer is a context switch without having real progress; make sure before you switch again you produced measurable progress on the task.
mr_brobot__@reddit
Moving from ticket to ticket and closing them out is no big deal for me. I can even handle balancing some PR reviews too…but the meetings are fucking awful. I swear a 1 hr meeting is more like it drains 3 hours of productivity. And then we get peppered with them all throughout the week, often multiple times per day.
rincewind316@reddit
Use Emacs to build a dev environment that is bespoke to your specific role. Feel the flow like never before.
madbadanddangerous@reddit
If I have a meeting at 8:30 am and 11 am, I will not do any deep work between the two meetings. If I do, I find that I inevitably get stuck in a problem then have to jump onto the 11 am meeting while in "coding brain" and have to switch to "human talking brain" which is exhausting and frustrating.
I'm a team lead right now which is the worst place to be for context switching. I have to keep an eye on Slack at all times to help get my team unstuck or offer feedback on whatever they're working on, plus managing 2-4 hours of meetings per day. There might be slots of time to get into deep work but there's always a danger of interruption - especially during on-call weeks.
I think team lead is probably the worst place to be in your career ladder because you have enough meetings and interpersonal responsibilities that you need to be engaged socially much of the time, but you also are expected to be hands-on keyboard churning out deep work code projects. I've heard it gets easier again if you move up the chain either fully into IC path or fully into managerial path, but this half and half position is mentally exhausting
Irish_and_idiotic@reddit
Iam also a tech lead and I feel that it’s the worst position i have ever had. Constant context switching. Dealing with hot and cold devs. I’ll never take a promo again I want to be a senior for life.
rrrhys@reddit
Have you tried burnout
Ashken@reddit
I do the best I can to focus on one thing at a time. I may have started 8 things, but then I pick one thing to try to get it actually accomplished by the end of the day.
Jiuholar@reddit
one task at a time. This is the absolute #1 thing. you shouldn't be reviewing a pr, reading logs and working on feature code at the same time. these are all distinct workflows that require a different mindset.
teams/slack is async communication. you do not have to reply straight away.
schedule blocks of work in your calendar for specific tasks
to do list - anything distracting that comes up while in the middle of a task gets added to this. Don't be tempted to "just take a look" at logs or code. Manage expectations with your team accordingly "I'll be able to take a look at this in 30 minutes"
powertoys workspaces for common workflows
windows virtual desktops - if you need to start a new task before completing the previous, start the new task on a new desktop
script + automate everything you can. Sshing into a box to get logs regularly? Script it. Checking status of k8s pods? Script it. This has never been easier with LLMs - you can whip up something in a matter of seconds
chrome tab groups - all tabs for ongoing tasks get sent to a new group
exercise daily, preferably before work, preferably exercise that includes 30m of sunshine on your skin
protein heavy breakfast
regular breaks (pomodoro). I use a tray application called workrave to remind me to stand up and stretch every hour.
break tickets down into smaller pieces. if a ticket requires you to think about k8s, frontend and backend at the same time, it's too big.
BoringPeopleAintReal@reddit
I'm pretty sure most of us have undiagnosed ADHD so we just kinda context swap on to the next thing after being exhausted lol
bang_ding_ow@reddit
Poorly
redditthrowaway0315@reddit
The only way is to switch to a job that doesn't do that.
foodeater184@reddit
I use a terminal-based development environment with tmux+vim+direnv+claude code so that when I change directories my environment loads and my sessions persist in their own windows that I can easily navigate through with my keyboard. I use Wavebox as a browser (in addition to chrome) and have it set up in such a way that I can work across multiple projects easily. I have three monitors and group my meetings as much as possible. LLMs make context switching MUCH easier, at least for the project I'm allowed to use it in. I designed this development environment before AI was worth using and it has held up really well across my crazy ADHD way of working.
JackSpyder@reddit
My last company was a consultancy. This week im in a funded startup approaching 6 months old but only 2nd week.
Both have context switching but the startup is task context switching within a singular context.
The previous job was total customer context switching which was extremely jaring.
Im enjoying the startup immensely. The team ahead of me has done an excellent job of building a backlog for the next wee while with detail and with regular prioritisation. Everyone is senior+ level so things are well thought out, we know and track when we take on tech debt for speed. Tasks are broken down quite small.
I've been trying to keep context swaps within a day to ideally 0 or 1. Between days, things can change. Unless it's an emergency I don't swap until im finished my current task. The sense of acomplishment helps. If several tasks are coupled, we'll try and get people working on them together. So both sides are ready at once and they can discuss approaches. We dont do stand ups or any nonsense. Just text in slack about it, huddle where needed, speak up.
We have a few end of day meets a week to sync on decisions and issues, check priorities. It all feels very mature and sensible for a startup moving very fast with approaching pressure points coming soon.
renoirb@reddit
I get PIPed, and fired.
ADHDer. Over achiever. But not the way it’s expected.
FarYam3061@reddit
prioritize, focus, revaluate, repeat
SomeEffective8139@reddit
I keep tickets meticulously updated to reflect their state so nobody ever asks me what the status is. One of the worst things I see with inexperienced or lazy devs is tickets just float around in some kind of vaguely "in progress" state for weeks or months at a time. I move mine to a "blocked" state when I cannot make progress on them or need someone else to do something for me, or even better, I assign them to whoever needs to do the thing to unblock me before I can work on the ticket. If the ticket has unclear requirements (which is a common problem), I move it back to some kind of "not ready to be worked on" state and clearly document in the ticket what I need to start working on it.
I insist on understanding the priority of something before I start working on it. If your manager is not ordering tickets by priority, get them to start doing it. If you have an "oh shit" queue of unplanned work, force the people filing these tickets to select a priority level, with a clear definition of what each priority means. If they select the wrong priority level, like elevating something trivial to a P1, set it back to the correct level. The priority levels have to be objective like impact to the revenue funnel, impact to top ARR customers, etc.
This gets us to a good place:
With clear priority, you and everyone who can see your work board knows what you should be working on right now.
With tickets being correctly updated, everyone knows what the state of each effort is so there is no need to check in on your progress.
Now you work on one thing at a time, in priority order. If you get pulled to some new thing, you prioritize it, update its status correctly, and resume working on the top priority thing.
If anyone gives you shit about this, you can say "I am currently working on this top priority issue that we all agree, by agreeing to the prioritization, is the most important thing to work on."
Is it easy to enforce this? No. But it works. I argue it is actually the only process that works, because multi-tasking is actually impossible and in reality, if you are multitasking, you are not actually completing work. Realistically, you'll have to spend some amount of time doing the prioritization and state management of the issues, but this process minimizes the overhead.
It works for me.
ButterPotatoHead@reddit
Not only switching from one stack/tech to another but going from coding to mentoring to talking to leadership to running a meeting to trying to talk to product/business and back to coding etc.
I personally can't get any kind of coding done in a window of less than 2-4 hours. It takes me at least a half hour to get into the zone and then I need uninterrupted time for a few hours.
Having a meeting every hour or two makes it impossible.
To answer your question, I deliberately block out time on my calendar, for example my Tuesdays and Fridays are pretty blocked out and I can go heads down.
I am a "staff engineer" sliced into 5-10 teams.
lordlod@reddit
A tool I use is multiple desktops. I do this in Linux (xmonad) but even Windows seems to have reasonable multiple desktops these days.
Two screens, a desktop on each screen. A pair for frontend, a pair for backend, additionals for slack etc. This setup allows me to properly switch my working environment in an instant.
Process: 1. Read about next task/ticket. Stand up and switch desktops - DO NO WORK. 2. Go do something like go to the bathroom or make a cup of tea. 2a. Think about the new task, transition your headspace. 3. Sit down, you are now in the appropriate environment. Work.
I used the same process for most task switches. Meetings start ten minutes before the meeting, I review the notes, go to the bathroom and make a cup of tea. That ensures that my thinking brain is on the meeting, not whatever compiler error was causing me issues just before.
Also what everyone else was saying, you minimise the number of transitions. If you are working full stack you do one half, then the other, then adjust the first, it should be three tickets with a documented plan so you have very clear transitions. If you are managing you have clearly communicated time blocks for different tasks.
And turn off the general email/slack alert pings. They are asynchronous communication, you check them at a time suitable for you.
pickledplumber@reddit
I just vegetate. Takes me until 4pm on Sunday to feel normal.
Normal_Transition783@reddit
One thing that’s helped me immensely is drastically reducing the number of apps and tools I use. I trimmed down to just a terminal-based toolkit (like tmux + Vim), a browser, and a minimal note-taking system (Obsidian synced via Git). Even dropped heavier IDEs and bulky apps altogether.
Also, I started using a system-wide AI layer like HoverGPT. It integrates right over everything - terminal, browser, Slack, docs, massively cutting down on copy-pasting and switching between tabs or separate ChatGPT sessions. It sounds small, but the mental fatigue it saves is huge. Everything feels more streamlined and less scatterbrained.
Mission_Cook_3401@reddit
If at all possible I only do one thing per day.
03263@reddit
I just got used to it. I don't work too hard on any one thing, if I let myself build up too much mental state and get in the zone, then it guarantees the next distraction will cause that to all get lost. If I work on smaller chunks and leave context clues for myself, it's easier to come back to.
I can't explain exactly how to do it, just years of adapting to an environment of constant interruptions forced me to figure out how to work that way.
nouns@reddit
Push back to your team lead & manager; let them know there's too much on your plate and they need to help you manage it (it's in the job's name after all). Come with some ideas on what that might look like.
quypro_daica@reddit
have you read thinking fast and slow? Context switching requires mental effort. If you want the switching to be smoother, you need to have higher IQ
79215185-1feb-44c6@reddit
Impossible.
You just cope.
General_Break_1712@reddit
you can never eliminate it. You can mitigate it
YouDoHaveValue@reddit
Breaks, walks outside, hit the gym daily.
That and TBH taking it easier and not rushing. If it takes two weeks it takes two weeks, they're not gonna pay me more for killing myself to get it done a few days sooner.
Visual_Counter5306@reddit
Not a problem, actually. A context switch takes almost 30 minutes anyway, so while I'm setting up the infra and local env and a switching between versions, I can grab a coffee, write some messages, etc. That basically means I work less. I start at 9 and go offline right at 4 PM. Who cares?
Got a question about an issue in a different version or a different app? No problem. I can answer it in 1 to 2 hours, which means I cannot continue working on my bugfix, feature, or whatever so I'm blocked until that. The day still ends at 4, no matter what.
originalchronoguy@reddit
Lucky for you, scaffolding and environment is literally 20 seconds. Git Pull. Make start-envrionment start-app. I should be hating myself for making bootstrapping and orchestrating infra as simple as a Makefile. In 20 seconds, I can have a git repo, jenkins, hashicorp vault, kong gateway, and kafka running all locally.
Visual_Counter5306@reddit
Nah, I NEED 30 mins 😉
BrofessorOfLogic@reddit
I prefer to work like that. I like doing frontend, backend, and infra at the same time. It's more stimulating to work with various tools, and to have a holistic approach, i.e. deliver value and features as opposed to just focusing on one technology.
But I understand that not everyone is the same. I think some people prefer to focus more on one thing at a time. And that's totally fine.
There are jobs that focus only on frontend, or data science, or database administration, or just API services. If that sounds appealing to you, then look for jobs like that instead.
Then-Boat8912@reddit
I use a Linux desktop with two monitors and switch between workspaces. So each workspace has 2 monitors and a specific purpose. I hotkey switch which is instant.
This doesn’t solve cognizant context switching but it helps organization when it’s necessary.
AustinYQM@reddit
reduce the number of tools.
I usually have a few copies of IntelliJ open for the backend (Spring) and the frontend (React). Then I have a browser open to see my frontend and that's about it. I can use IntelliJ's http client to test backend calls and use it to automatically generate those calls from my code. IntelliJ will also handle most docker (well podman) interactions.
redditthrowaway5527@reddit
This is a junior level question, man... ask in the weekly thread
BlueInt32@reddit
There's nothing more senior than trying to improve the way we organise our work. Junior people do not do that, they just do what they want first.
redditthrowaway5527@reddit
Right, but it's phrased in a junior way. He doesn't say what he's tried and didn't work, without any reflection at all. Dismissed two completely valid answers for some reason not mentioned.
https://www.youtube.com/watch?v=lOTyUfOHgas
Some_Developer_Guy@reddit
Work life boundaries. I can put up with just about anything during business hours as long as the checks keep clearing.
vvh0am1@reddit
Slowing down and dividing something into smaller steps helps
Hugus@reddit
Creatine. Use it, it makes a WORLD of difference. And that's not only in these situations it helps.
Bob_the_gladiator@reddit
I just spend a lot of time sitting and staring at my computer and that's probably healthy
hippydipster@reddit
I go outside and count the frogs and toads. I can't count the tadpoles because there are thousands. This does wonders for my state of mind.
BlueInt32@reddit
I used to have a system in Notion with a single database where items (todos, notes, whatever is thrown at me) are following those rules at all times : 1/ always sorted by priority 2/ should all fit in a screen 3/ each item can have tags/categories relevant to the job (mine were stories codes, people's names, meta stuff like "HR", "daily discussion" or "pending") 4/ clean up every evening and prioritize 3 items for the next day
But then my company forbid Notion use so I recreated this system in full text with a simple file in vim and custom color syntax 😅 basically my tags keywords are all highlighted based on my own rules, a bit like a DSL (this is surprisingly simpler to configure than I expected). With time, my notes db got to several files dedicated to solidified or long run topics, ... This requires a certain level of nerdiness, like a kind of self made meta project that only you can understand. Finally I would 100% not go back to notion, Electron apps or other note taking systems are consistently unfit to my specific needs and are often jokingly slow compared to vim. Any text editor could do but color syntax is key. I now feel completely lost without that system at my current job.
Objective-Table8492@reddit
My process: I get fed up, I remember the paycheck, I carry on with the context switching.
theyellowbrother@reddit
That is part of the job as you climb the ladder. Staff, Lead, Principal and Architect roles.
I have 6 projects I am going in and out of daily. In addition to the ad-hoc interruptions like huddles. You get use to it.
Humdaak_9000@reddit
You might get used to it.
Stop assuming everyone is like you.
Like that corporate "wisdom" you'll get better at talking to people if you do it a lot. I've been told that lie for more than 40 years. Turns out I'm just autistic.
theyellowbrother@reddit
As I mentioned, when you get up in the ladder, you have to do a lot of pivoting. As a Principal engineer, you will be shifting gears throughout the day because that is literally your job.
You meet with UI/UX in the morning, shift to project planning with PMs, meet with Infra on DevOps planning or reviewing security vulnerabilities, present to Enterprise architecture for review on a project. All these different interactions are for different projects you need to provide guidance. If one can't pivot throughout the day, then one isn't providing value to the organization for a role at that level.
I see no difference from this to the days I was in high school going from one period to the next. Algebra in the Period 1, History in Period 2, Spanish in Period 3, etc.. We were all trained like this since middle school.
BatmansMom@reddit
Asking for advice as someone who's nervous about this career progression.
The way you describe this seems like much easier context switching as the contexts are information for meetings, presentations, reviews, etc. These tasks are less intense/immersive (maybe the wrong words) to me than doing actual development. Doing legacy code traces for example or building out complex features need more cognitive effort for me than the things you describe at the principal level.
Do you find that context switching is easier as a principal? Or does context switching still feel very similar to how it did at lower levels?
Varrianda@reddit
Genuine question, have you actually experienced the scope of work that you replied to? Let me assure you it is not easy, and I’d much rather be heads down in a tough debugging/coding challenge than in and out of different meetings all day.
theyellowbrother@reddit
To me, there is definitely more pivoting throughout the day.
There are definitely a lot of meetings. But you can do a lot of context switching on a technical level. -- Getting calls for code review on code you are or familiar with.
Firefighting is also a common thing. You can be called into a production outage/bug on a project or code base you are not familiar with. Another engineer is on PTO and you are the most senior around that you are called to fix it in 10-15 minutes. I can see where that is stressful; debugging an outage you on code you never touched or looked at. If you can keep your cool and be methodical, you will come out ok. With experience, you can be the most calm person in those situations. I know how to read logs and decipher production errors easier and that is all based past experiences.
Humdaak_9000@reddit
You act like this is a good thing and not abusive conditioning. Which seems to have taken extremely well in your case.
Varrianda@reddit
I mean you either get used to it or cap out in your career. If you can’t context switch effectively you’ll have a hard time being a force multiplier, which is usually what’s expected out of more senior folks.
backfire10z@reddit
Autistic or not, doing something more often and critically examining how you performed should lead to at least some noticeably better results. Masking is such a widespread thing for a reason.
Varrianda@reddit
I smoke weed when I get off work lmao
hubilation@reddit
ritalin
lastPixelDigital@reddit
If you can group similar tasks, I would do that. In terms of multiple tools, I organize my apps to specific screens and worspaces.
Shut off notifications for few a few hours. schedule "busy" blocks in your calendar. take breaks - especially when you feel a bit stuck or frustrated.
I make todo lists on paper, it's my preference and it helps me focus and remember what was the higher priority items.
ElliotAlderson2024@reddit
and now on top of all that, they want you to start writing AI agents.
DoingItForEli@reddit
Use notepad to take quick notes of what you want to do for the day, what you have done, etc. The goal is to focus on one task at a time, do it right so there's minimal revisiting, and planning ahead of time and understanding the bigger picture also saves a ton of time on tasks later. Constantly going back and modifying existing code because of some change that should have been planned for from the start can waste all kinds of time (and time is one of the most critical resources for any software company trying to compete for work.)
Visual-Blackberry874@reddit
Nap
marssaxman@reddit
Whenever I get into that state it means that I am trying to keep too many things active in working memory. I solve this with external memory: I open a new text file, and write down all of the things I am trying to keep track of at the moment. Everything I need to do, all the file paths or class names or URLs or whatever associated with the tasks I am working on, all of it: one big dump.
Then - ahhhh! I don't have to think about any of this stuff anymore!
I focus on the one thing that needs to get done, secure in the knowledge that I can refer to my text file when it's time to remember what needs to be done next.
danintexas@reddit
'Sure manager/product I will be more than happy to look at this bug/feature. Please add it to my backlog and I will look at it next!'
EternalNY1@reddit
After multiple decades?
Exhausting.
Within the first few years in this career you should be able to realize based on this alone, that this is something you can shrug off as part of the job, or something you really dislike.
I have tried as best I can to avoid "jake of all trades, master of none".
But that's difficult when C# has gone from pre-1.0 beta to 10.0.
Just one language alone ... keeping pace with that plus the 30 others every year is exhausting.
DrNoobz5000@reddit
Lmao like taking breaks and pomodoro aren’t actual strategies.
Listen noob, youre taking on too much and you’re trying to be a hero. This is a you problem. There’s no reason something small needs to take up so much headspace. If it is, you’re blowing it up because you don’t know how to break things into manageable chunks that can be completed.
So get your fuckin head out of your ass and focus. Start small. Create tickets. Prioritize. Tackle a small piece, deliver it, and move on to the next.
Get good, fuckin noob.
agumonkey@reddit
like with my car, i slow down
ALAS_POOR_YORICK_LOL@reddit
My add brain feasts on this.
JakoMyto@reddit
Is it just me or switching tools doesn't feel like context switch as long as I am focusing my task?
It just feels like tools switching isn't your main problem here.
kog@reddit
I take notes. More notes than you're probably thinking about.
DigThatData@reddit
I smoke a lot of weed. It doesn't relieve the fatigue, but it makes me ok with it.
The_0bserver@reddit
For me what worked was: get someone to start looking into certain parts of the project. Let them take ownership and make sure to give them the credit for the good job and you take a bit of the backlash on the bad ones.
Then from there, look more into how they are doing than the specifics of the job. And make sure to review code and sit with them to see how things are going regularly. This maybe more of a glorified middle manager than anything, but it gets the tasks done, they might also give newer ways to get certain things done. Usually it's worse off, but you all learn something from it.
Not certain if this is the right way, but it's working for me and my team I think.
Due_Upstairs_3518@reddit
I do not. I used to feel overwhelmed years ago, but honestly, I think it was mostly stress around the whole project, or life itself.
In my case, after years of dealing with stress, when I started to feel more like "an expert" and started to relax, I found that there was a lot of energy lost in overthinking and just stress.
And then things start to get easy. Some rules:
- You don't have to recall everything. Learn to write stuff down and organize knowledge. Use Obsidian.
- Never worry about details until the right time.
- Meditate. Daily.
gbe_@reddit
Are you actually context switching (i.e. work on something completelty different) with all those tools though? What you describe just sounds like a collection of tools. A carpenter wouldn't complain about having to context-switch because they've got both a drill and a saw to work with.
If you're really doing completely different things (like switching from implementing a backend feature to digging through logs for a colleague, then to writing documentation for a frontent thing, then back again, then running an
apt update && apt upgrade
somewhere, then back to backend dev, rinse and repeat), the only way to deal with that is, as the others have already stated: "don't do that".What helps me "not doing that" is to have clearly formulated tickets (including priorities that the relevant stakeholders agreed too), and planning the day ahead. For example:
main
changed since I last looked at things)The important part here is not "I'll spend exactly 1 hour and 5 minutes on this, then spin on a dime and do the other thing for 45 minutes, then back to this for 25 minutes, then back to the other thing for an hour", but to get a rough "Before lunch, I'll work on $x, after lunch I'll work on $y, and if there's a bit of time left in the day, I'll see how far I get on $z" idea.
It's also important to take breaks (such as lunch, but also stretch, drink a cup of water about once an hour or so). Resting and taking breaks is the number one antidote against mental fatigue.
xlb250@reddit
It’s really easy for me to context switch
techie2200@reddit
Stop context switching. Plan the job out so you understand where to start to reduce context switching.
If I need to do FE, BE, and Infra, odds are I'm starting with infra with some sensible defaults for whatever I'm going to be working on. Spinning up a new service? Sensible defaults for CPU/memory and any services it needs to run, get it up and running, move on.
Next is BE, build all the necessary data handling and endpoints, add auth, test with postman, get it all up and running the way I want and move on.
Finally FE, hook into the known APIs from the work I just did on the BE and build from there.
Once everything is working and running, then move on to dockerizing and fine-tuning infra.
CorDharel@reddit
I create a provate Outlook task for every Todo and delete it once I finished it. And I force myself to only do one task at a time, even in a boring meeting (not coding next to it). Also I try to take a short walk at least all 50-60 minutes.
bbpsword@reddit
You guys are focusing?
kush-js@reddit
I usually pull as much as I can into my IDE (vscode for me)
Frontend + backend both open in the IDE workspace Rest client extension Docker extension Postgres extension
For me having it all in one place helps with context switching. The one thing I do have to keep open seperately is just a browser/devtools, which I usually have open anyway.
allKindsOfDevStuff@reddit
By slamming the work laptop closed the moment it hits 5 O’ clock and forgetting all about it until the next day
latchkeylessons@reddit
Taking breaks by getting up, walking around and leaving the general proximity once every couple hours is important to me. And do not break up your time into smaller than 2 hour chunks. In some workflows or environments maybe you can go a bit more granular, but in general I'd say 2 hours is a minimum timebox for focusing on a given task.
But also learn to ignore things. Everyone's thing is important to them and they're probably justified in thinking so. Nevertheless, you are one person. At a higher level, you can really just focus on A) what's actually important for the progression/maintenance of your position, or B) focus on what makes your boss happy - those two may not be the same thing and if so then you must make this decision from time to time. Ideally your boss isn't making that decision difficult for you, but that's often not the case.
SamPlinth@reddit
I switched jobs.
1NqL6HWVUjA@reddit
Honestly, the way you're describing context switching isn't something I struggle with. If I'm working uninterrupted on a single task (heck, even a single project), I'm fine jumping between multiple tools and parts of the stack.
It's switching between actual dev work and interruptions for meetings, calls, questions, fires to put out, etc. — especially related to starkly different contexts (e.g. a different project/client) — that throws off my day.
Mr_Gonzalez15@reddit
You aren't able to - multitasking is a myth. You need 30 minutes of uninterrupted focus just to get into deep work.
shopnoakash2706@reddit
Yeah, the constant context switching is a killer. My brain feels fried by end of day. What helps me sometimes is aggressively batching similar tasks before jumping to another tool or project. Also, really leaning into IDE features to avoid leaving it as much as possible helps cut down on those switches.
iduzinternet@reddit
Fun note about tabs I tend to always put tabs for the same purposes in the same place in the same order for my consoles. Sometimes I’ve opened a tab for no purpose but to be a placeholder.
bstaruk@reddit
I think back to the days when I worked retail and made a fraction of what I do now, then I remember how fortunate I am and deal with whatever anyone needs me to with a smile on my face.
dacydergoth@reddit
EMACS 😉
metaphorm@reddit
there's no way that I know to make the context switching penalty go away. it's a heavy burden for all of us. the only way to effectively deal with it is to be very conscientious with your time management and try to protect yourself from interruptions.
DustinBrett@reddit
Keep good notes to refresh yourself of different contexts.
Snipercide@reddit
Some context switching will always required. It takes a long time for it to become comfortable. However it's wasteful and you should try to minimize it.
You should be strategizing. Before dong any work, have an organized plan. At the moment, it sounds like you're disorganized and just task switching willy-nilly. Why?
A common cause of this chaos is unclear requirements, and dev teams just developing to get things moving.
I know many here seem to hate Agile, but this is one of the advantages of Agile frameworks. They help us plan. Break your work down, and work on one thing at a time. Set your WIP limit etc..
Front-end, back-end, Infra... you shouldn't need to jump between them too often. Do one at a time. If you're following best practice and accepted standards, you shouldn't need to work on them simultaneously.
JaMMi01202@reddit
What would you do if a system had this issue? What re-design would be needed?
Are you able to make similar changes to how tasks come into you/your team?
How IS work assigned?
Why is the flow of work like it is currently?
Kyyndle@reddit
I genuinely don't.
Thankfully, its not a stressor, but it does make me very forgetful. I can barely remember what I did yesterday. I wish I was joking.
PastaSaladOverdose@reddit
Put teams/slack on away. Ignore email. Complete task. Put teams/slack on available. Get some coffee. Check email/DMs.
Rinse, repeat.
jimbo831@reddit
Using multiple tools to work on the same task is not context switching. This is just a necessary part of getting work done.
kittysempai-meowmeow@reddit
I try to stack meetings back to back and block of calendar time for dedicated tasks where I can control what I'm doing when.
Do I always succeed? Nope. But I give it my best attempt.
IcedDante@reddit
Taking a break and Pomodoro are "actual strategies". I do not know why you would dismiss them. For me running in the morning, no headphones, no cellphone, just being focused on quieting my mind and focusing on the birds chirping is an actual strategy for teaching my mind to focus.
On the actual work front, I start and/or end the day in Todoist. I write out the goals I need to accomplish in the most granular way possible. I order them in a way that makes sense for being able to accomplish them, then I start ticking them off. If I get interrupted it makes it easier to "come back" into what I was doing.
Finally booking 3-4 hours of focus time a day is a good thing depending on the job.
xabrol@reddit
Im just used to it, I manage multiple cluent projects at a time with meetings for two+ clients in the same day
Work in consulting so its just nature. Just got used to to it.
I use browser profiles to separate client accounts, sign ins, etc, and virtual desktops for open stuff for each client. Some clients give me their own laptop, some I use a vdi, some are byod and I use my stuff.
I like it, I hate doing one thing all day.
rkeet@reddit
Start looking into context switching under "Developer Experience". Realize there is a lot to do and improve on "integrations" and "knowledge silos" fronts. Pitch improvements. Get made the primary executor of said ideas. Get everyone enthusiastic for the plan. Have no one use the upgrades and integrations. Burn out.
putocrata@reddit
I just process everything in the kernel without preemption
Dukaso@reddit
You don't. You slowly go insane.
gk_instakilogram@reddit
I am tired boss - this is how i deal with it.
ReferenceError@reddit
The paycheck helps
StolenStutz@reddit
So true.
I am legitimately performing at my lowest in the last twenty years. It's a combination of many factors, but constant context-switching (which I'm largely unable to control) is one of them.
However... I'm also getting paid more than any other job. I took this one because it was easily a 25% bump over my previous one. So, as long as they pay me the big bucks, I will continue to be unproductive.
Insert gif of Woody Harrelson crying into his hundred dollar bills here.
ReferenceError@reddit
"Throw everything away you've spent a month working on! Leadership wants us to work on Y/Z not on W/X!!"
Sure, we won't ship anything this quarter, but the money spends and since it was your idea, I'm fairly certain we're in the clear when it backfires.
ReferenceError@reddit
In less of a joke answer, you need to account for it. Include it in estimates, include it in reporting, make sure that context switching is known as a real tangible aspect of your day-to-day. Try to shut it down as much as possible especially with multiple projects, and set real blocks of time for heads down time for development.
There's a reason that development is higher paying, its difficult to juggle, and if you don't it might not be a part of your day-to-day in the future.
planetoftheshrimps@reddit
Why would this be downvoted. 100% the best way to get out of burn out is gratitude towards the paycheck.
PhilosopherNo2640@reddit
For me it's a challenge. The biggest challenge is unexpected context switching. I'm trying to set boundaries better. Not every question or request needs an immediate response
strange-humor@reddit
There is this myth that humans multitask. They don't.
You are not task switching you are just dealing with a complex environment. Some of this is required, often it is poor design or isolation of responsibilities. Good system design can break these things appart and also have the advantage of making things testable below the integration test layer.
Rebles@reddit
I do research spikes at the start of the project to outline the architecture and tasks necessary for the project. It may include FE, BE, infra, etc. then, I identify the order of the tasks so I can focus on each task without context switching to another half way through a task. Or even better, I can assign junior SWEs tasks that can be worked on in parallel.
I also try to reduce or eliminate distractions / ahdoc requests as those context switches are expensive.
Finally, I try to get a good sense of how long the project will take vs the deadline over time. If we’re slipping, cut scope, cut distractions, ask for more time, etc.
pl487@reddit
This is like asking a coal miner how he deals with it being dark all the time down there. I don't know, man, you just go into the darkness every morning and hope you come out alive again.
d0rf47@reddit
I have to deal with this a lot frequently. My main strategy is to take meticulous notes as a debug issues and before I pivot to a new task leave notes on the last thing I was doing. It helps get back on track once returning. But I agree it is exhausting
pinpinbo@reddit
I write down everything. Including my next steps (train of thoughts). And ask AI to help remember as well.
ToyDingo@reddit
I've started taking A LOT of notes, and doing my best to organize them. So if I'm working in one domain, then suddenly I'm called into a meeting for another, I can take 3 minutes to read over my notes to refresh my brain on what the fuck we are about to talk about.
Sadly, this begins to take a bit of time out of the day to constantly take and organize my thoughts for future me to better handle any random situation. But it is worth it to not be caught flat-footed in a meeting.
gmidwood@reddit
Are you choosing to switch tasks or is someone else scheduling it for you?
If it's you then I'd suggest you plan your day in the morning and stick to it - having a task list helps.
If you're being told to switch then all you can do is tell the boss/pm/whoever how inefficient it is! You should make sure you suggest a better approach, don't just tell them it's crap, tell them how to make it better.
Whichever it is, get yourself a kanban board and make yourself a (prioritised) todo list. You can give other people access to drop tasks in and prioritise them, but the main thing is that they leave you alone to get on with it!
skwyckl@reddit
Comes natural with time, I guess... I write code in multiple languages, do everything from UI to infra (including k8 stuff), and honestly I don't really think about it, especially today with LLMs there to assist you with trivialities cause by context switching.
uuqstrings@reddit
Try to reduce interface friction. Can you use bookmarks instead of tabs? Can you combine the tools into a shell script? Can you put the projects into a single workspace?
Obviously those examples may not make sense for your context, but the point is to look for ways to amplify signal and reduce noise.
uuqstrings@reddit
Let me give you an example in my favorite simple noise-reducing tool for tab overwhelm: the funnel https://chromewebstore.google.com/detail/onetab/chphlpgkkbolifaimnlloiipkdnihall?hl=en&pli=1
Vegetable_Wishbone92@reddit
You don't. Work on one task at a time.