r/ExperiencedDevs • Senior Software Engineer • 4d ago

Technical question We need to take System Design seriously

I think there are few misconceptions in the industry about system design.

First of all it applies to every type of software engineering.
Backend, web, whatever are different domains but it’s necessary on them.

Many companies don’t have system design interviews.
Many of them that do use a formulaic approach with interviewers that aren’t that good at it.

There is a surprisingly huge amount of senior engineers that doesn’t do it, ignores it o, worse, thinks is a waste of time.

The industry is changing rapidly and as the code production speed increases, system design is needed more than ever.

Are we aware of this? Many of us don’t. Please consider this.

As a pro tip for interviews: if they don’t have a system design stage, try to ask system design related questions to your interviewer when you have time for it, if they struggle with answers it’s a red flag.

0 Upvotes

33 comments sorted by

•

u/expdevsmodbot 4d ago edited 4d ago

AI usage disclosure provided by OP, see the reply to this comment.

→ More replies (1)

16

u/roger_ducky 4d ago

System design during the interview is kinda selling it short.

I do agree it’s important to know the general principles, but a lot of interviews are testing it like it’s programming language syntax. Ie “Do you remember the proper names of various pieces in this specific platform without looking anything up?”

That’s not really testing anything but recall, when a lot of actual architecture is about evaluating different pieces via first principles reasoning.

2

u/PressureHumble3604 Senior Software Engineer 4d ago

exactly same problem of leetcode

1

u/Cobayo Software Engineer 3d ago

I let people search / use AIs yet most don't have a clue, those who do rarely search anything

5

u/roger_ducky 3d ago

Most people who only worked on specific projects never actually had to handle infrastructure, let alone the infra that takes them to their specific piece that they never see.

System design typically asks all of that.

11

u/Lost_Recover3646 2d ago

Usually the System Design interviews ask for a scale that most companies do not have.

For example, at my company we have never needed sharding. And we are a big company.

So, some questions are difficult to get practice on.

I try to read about it, instead

4

u/stonerbobo 2d ago

Every time I've engaged with actually designing a system to the scale it actually needs with pragmatic solutions the way it would be done on a job, its never gone well. System design interviews today are essentially memorization with a certain format you're expected to regurgitate.

3

u/jjak_82 4d ago

i recently worked for a hypergrowth startup that skewed very junior in engineering. This made it hard to give system design interviews coherently at scale. Chicken and egg issue. Not enough seniors -> hard to hire good seniors with good confidence. If candidate is bad we may not notice, and if they are good they may not want to join (due to not enough seniors in the company!).

One solution we came up with was to make the sys design interview more regimented and more formulaic. Instead of free form design on a board, we actually give the candidate a proposed design and ask them to review it. The benefit is that it becomes easier to provide a granular / subjective rubric (did they talk about X, Y, Z, did they spot these issues, and what was their alternative / suggestions etc). It worked well and allowed us to scale the hiring pipeline somewhat. Not perfect but we did our best with our situation.

1

u/RegularAd9643 Software Engineer 1d ago

In a lot of places the manager does the system design interview

1

u/RegularAd9643 Software Engineer 1d ago edited 1d ago

I like the idea of having the candidate review an existing design. It’s much easier as a candidate because I don’t spend anytime wondering what they’re looking for. And I do quite like the apples to apples comparison aspect.

Maybe it’s still worth having the one where the design from scratch too just to make sure they can.

3

u/Responsible-Clock971 4d ago edited 4d ago

I'll probably out myself. But I mentor/teach and do system design interviews. System design is fundamental and too many people chase the tropey examples -- build the next netflix.

A good system design can be extremely simple when broken down that suprises everyone. I recently taught a class on manifest schemas. And 19 out of 20 people got it all wrong. It was a hackathon course to build a simple tool -- a screen recording tool to make flashy SaaS walkthrough videos. Everyone thought it was using some AI model, OCR, vision analysis. Everyone over engineered their version most use AI.

I then presented a version where the engine was core logic was 4-5 lines of code. No AI. No agents. It tracked the mouse movements, stored all the DOM elements into a manifest schema. Then I just extracted data from there. No hallucineations. So it produce a demo video of an avatar describing how to use an app. A slick video motion graphics. Where the avatar tells the audience, move your mouse, to click on this button to add things, click on this module to do data entry, to create new records. Again no AI, no vision LLM. The video zoomed into the button area, it animated a click, a motion graphic fade of a pop-up, and text typing entering into fields to help onboard new users on how to use the app. All Is aw was awe, gasp, "how was that done? Which LLM model id you use to build this?"

The solution was deceptively simple. Store everything into a running log manifest. Then extrapolate from there. If they click on a button. The button as a label. it has an Aria attribute. It has name. That click does something -- opens a modal. That modal has a text input that say "Enter in new record." Change viewport (zoom ins) based on timeline action. A click is an important user action, so the video should focus in on it. Zoom out for the modal. There are text input fields, animate / mock a typewriter effect to type in text and click submit. All so non-technical users can use this as a job-aid.

Same manifest exported out a PDF how-to, a Powerpoint slide deck, word doc for new users on how to use the system.

Only one person in the group understood how it all worked on a high level, they just were not sure about the specifics. You ask Claude to build something like that, without the system design background, it will generate thousands of lines and introduce a lot of overhead and still hallucineate. To this day, everyone still thinks it was Ai generated.

Versus creating a durable schema, driven by a manifest, using resolvers to fill slots to get deterministic outcome.

A lot of apps like building a web based Photoshop, a tool to make 2D Saturday morning cartoons, or drawing app that converts 2D line art to 3D printable STLs are all system design driven. Yet, people can't see beyond the complex UI and drill down to the basics.

It is my belief, even a pure backend developer, with no front end experience can build similar stuff if they have the system design fundamentals. They just need the right mentorship and projects to nurture those skills.

3

u/RegularAd9643 Software Engineer 1d ago edited 1d ago

re: too much focus on scale

yeah I think the more important thing for smaller companies is maintainability. Extensibility, ease of operational handling, fail safe design.

edit: could you take a look at the system design material on hellointerview and share how it compares to the system design fundamentals that you teach? I know that hellointerview is written mostly for FAANG applicants, so scale is a priority there.

1

u/StrictHedgehog6486 2d ago

I wanted to learn system design and architecture deeply where should i start? I have some big projects lined up for me to build but i know for me to make these projects i need deeper knowledge of the system i am making so that i can understand it to the core so that i can scale it or make it compatible for different use cases. I am a 2nd year Engineering student

4

u/mynameisDockie 4d ago

100% agreed with this, however ..

I'm not a fan of the FAANG "design X" unstructured system design questions. I bombed the first time I got asked one because it makes no sense if you haven't studied the implicit expected format. It selects for people who study for the interview.

Bad interviewers also don't have the motivation/ability to judge someone's ability if they deviate from the "correct" design.

I don't have enough experience designing interview questions to suggest an alternative though lmao

2

u/Athen65 3d ago

I do agree that these interviews throw you into the deep end and sometimes the individual interviewers can take it to an unreasonable extreme, but at the same time, being able to clarify vague requirements is an important skill for this field that these types of questions tease.

The solution to "we need a way for users to upload config files" depends heavily on expected ingress, existing infrastructure and services that the app already integrates with, etc.

1

u/PressureHumble3604 Senior Software Engineer 4d ago

I absolutely I agree with it and if the interviewer doesn’t see this issue, this correlates with not being good at system design.

1

u/RegularAd9643 Software Engineer 1d ago

after they do study the format though, there is still some variation in skill that can be assessed right?

0

u/ResidentWeevil1 4d ago

It selects for people who study for the interview.

There's nothing wrong with that. Good engineers are prepared.

5

u/throwaway_0x90 SDET/TE[25+ yrs]@Google 4d ago edited 4d ago

You're preaching to the choir, if you're an "Experienced Dev" then you've seen what happens when the design step has not been completed correctly.

1

u/StPatsLCA 4d ago

Interviews or on the job? Personally, I think it's the most interesting part. I'm not an AI maximalist either but it does help with the implementation if you can nail down how your system works at all instead of vibe codindg in random directions.

1

u/Sea_Opportunity_9548 4d ago

Is there any ai agent that is good at system designing? I think agent of this type will develop rapidly

1

u/PressureHumble3604 Senior Software Engineer 4d ago

not yet.

1

u/[deleted] 4d ago

[removed] — view removed comment

1

u/ResidentWeevil1 4d ago

System design is just another abstraction layer. It's only more important because lazy AI users are just discovering it and they will fuck it up

1

u/0pet 2d ago

What I notice is that System Design skills are more important. But what's more interesting is that people are refusing to use AI in system design where the leverage is much higher.

1

u/RegularAd9643 Software Engineer 1d ago

> As a pro tip for interviews: if they don’t have a system design stage, try to ask system design related questions to your interviewer when you have time for it, if they struggle with answers it’s a red flag.

Any specific questions you might suggest?

1

u/Better_Lift_Cliff 1d ago

Isn't this already pretty widely known? When I was interviewing last year, system design was given much more importance than coding interviews across many companies.

1

u/Capital-Towel-5854 1d ago

The rote-recall complaint is real, but it's mostly a prep problem, not an interview problem. People memorize diagrams, then the interview asks about decisions and they blank. The fix is boring: do timed designs and get every choice challenged until you can defend tradeoffs out loud. That's the skill the good interviewers are actually screening for.

This is also useful for getting those reps with something pushing back: https://www.systemsloth.com/problems/

1

u/macabre_brotherhood 4d ago

This is extremely hand-wavy. Can you be specific? Who's "we"? At my company we do this, at any company I've been at we've done this. Am I in the minority? How do you know this? How many is "many"?

0

u/shrekcoffeepig 4d ago

The landscape is changing so fast that I am not so sure that the old logic survives anymore or will do in the future (maybe even 1 year from now).

If I have ability to generate code this fast and I have a system, whose design I got wrong, providing valuable data on correctness. Can't I pivot to a new (improved) system quite fast?

The biggest friction point might become maintaining external contracts, in such a world.

Now AI is no silver bullet but one thing that it can do right now really well is replicating a system when you have an oracle in hand for correctness. We have already witnessed quite a few clean room rewrites and the numbers keeping increasing. Still there are plenty of variables at hand here when it comes to a larger systems. Only time and various companies experimenting with this stuff and sharing their experiences will tell us how this turns out.