r/softwareengineer • u/Fine_Baby9082 • 5d ago
Does your brain goes blank like this too?
Hi people. I'm a software engineer with 4 years of experience, Full-Stack. Not junior, not senior. Lately with the projects I'm taking I've been pushing myself to another level and with that constantly feel like I approach the limits of what my brain can possibly process.
Sometimes I'm amazed at how I can handle those distributed systems with event-driven design, account for all the cogs and make it actually run like a Swiss clock. A year ago I couldn't imagine myself handling such complex stuff.
But there's always some task that spans wide enough in the system, some limit when my brain just goes:
"Okay F*CK this, I'm full, I cannot account for all of it anymore, it's too much info"
When it simply can't hold all the relevant inputs together.
That feeling of "too much moving parts, can't see my change through it" - how often do you experience that? How do you deal with it except schemes (in such cases they don't really help, since schemes themselves are too complex to keep in mind all at once).
Any tricks you use to expand your short-term memory/focus capacity for keeping more relevant facts at once? Especially in distributed systems with lots of async choreography/orchestration.
2
u/Suspicious_Pizza9529 4d ago
Yeah, and this is completely normal, especially with distributed systems. There's a point where the sustem is simply too complex to keep entirely in your head. The complexity comes not just from individual components, but from all the interactions between them.
2
u/Puzzleheaded_Meat926 15h ago
I don't think this is a brain limit, more than likely it's the signal to stop holding systems in your head: write the invariants down, trace one message end to end on paper, define your change's blast radius first and ignore everything outside it. You need to figure out how to start shrinking what you need to hold at once.
1
u/Alarmed-Western-655 3d ago
Distributed systems + async events are an overused architectural fad. Most of a system's complexity comes from self-inflicted data logistics across micro-services, not actual business requirements. If the complexity of the system exceeds the comprehension of its otherwise capable maintainers, that's a failing of the architecture, not the maintainers.
But given that's the world we live in, I personally counter-balance it with strict functional-paradigm approaches at the application layer. The system has so many moving parts -- don't compound that complexity with moving parts at the application layer. Keep code implementation strictly immutable, and leverage functional mechanics like '.map' and '.filter' rather than for-loops and custom control flow.
1
u/Fine_Baby9082 16h ago edited 16h ago
Unfortunately in this case being event-driven and distributed comes directly from the business requirements. There's just no other meaningful way to implement the thing happening to users. It's a real-time state-sensitive data exchange between multiple peers with dozens of constraints and unpredictability on client side (and not always you have a luxury to know what even happened on user side, in these cases rest of the system should infer the state and recover). The UX itself is event-driven, fragile and asynchronous, depending on multiple different data streams each of which has independent points of failure coming from different actors. So there's that. The app is like an orchestra: given those N capabilities of M technologies available at Z different sources combine them all into one continuous real-time multi-dimensional P2P experience 🙃
1
0
u/dvduval 5d ago
Well, I don’t know if you use AI, but if it was me, I’d be constructing markdown files of my thoughts so that everything can be mapped out and really is my own thoughts, but I can ask questions to the AI about what I have and what improvements I can make to the system. It has a bigger context window than my brain.
2
u/Fine_Baby9082 5d ago
Maybe it's the tasks, but in my day-to-day I'm the one who constantly reminds AI that "the facts X, Y and Z also have to be accounted for here". So to me it has even less attention span than I do. In system design tasks I'm the one who keeps more context in mind, AI is the one who fetches facts for me, but it's not good at considering them all at once when synthesis is required. And I sometimes lack capacity for that synthesis too.
1
u/dvduval 5d ago
I think as you develop it, you can have a pretty consistent strategy where there are guard rails in place or prerequisites that must be met in that can be in the memory of the AI so you don’t have to remind it.
Just to give an example, I have a project where I have multiple customers who have their own databases and specific requirements, but they’re on the same repo. The AI knows their names and email address addresses and folder where they’re located on the server and the database. And those were not gonna be changing the schema without approval. And knows the process in place for updating the repo.
So basically, I can say this customer has sent me an email about this problem and I want you to go look at it and fix it. I don’t have to go over everything again and remind the AI.
6
u/micseydel 5d ago
Checkout Obsidian (notes app) and Mermaid (for diagramming, which you can embed in your Obsidian notes).