The proved method: Apprenticeship
The reason one struggles at System Design Interviews is a lack of work experience building those systems. Why someone with 8 YOE hasn’t accumulated enough hours to be an expert? It’s not a surprise because most of our working hours, as a software engineer, are spent on meetings, writing docs, coding, learning the domain knowledge and business logic. All are necessary for career growth, but as a result, the time we spent on architecting distributed systems is a tiny fraction.
From my coaching experience, this gap can be bridged efficiently through a focused apprenticeship. For example, engineers with 5-10 years of experience, after around three months of coaching, gained the expertise level required by the Staff level. I think it’s because most qualified staff engineers have a similar number of effective hours on system design practice, regardless of their actual YOE.
During the coaching, I found some engineers have other gaps in behavior skills like communication. They will also be addressed. Like system design skills, communication, collaboration, and leadership are all critical for Staff+ level positions. (That why many says L3, L4, and L5 are the same job, L6+ is another.) Some behavioral signals are sought after in interviews. Interestingly, none of my coachees need improvement on coding.