Hi my software engineer friends,
Want to ask what is the requirement for design skills at different levels.
I am a software engineer, and for each project I always write a design doc, most time I am listing different options for some implementation. But that is mostly about different ways of data flows, the pros and cons of each data flow. It is not related to design patterns, nor architectures, but it seems enough to move on with my project and team is generally OK with design doc like this way. To make a good design, I feel right now it is more about context, about familiar I am with team's tech stack and all the data flows, and make good judgement about how to implement something.
I also have that in mind "do not try to apply design patterns for the sake of applying it, use it organically".
So a few questions I have
Yes, totally normal to focus on implementation! It's actually pretty rare to apply the knowledge we learned in algorithms classes in normal SWE life.
This is especially true for more junior roles, where most of the job should be about implementation rather than architecture. I've found that good design docs are largely just really clear descriptions of the implementation, taking into account things like edge cases and future changes.
Also, check out this great deep dive of a real-life System Design in this masterclass.
If the project is higher level and influences multiple domains, it will probably be higher level.
I agree that you'll probably be writing design docs that are more focused on the granular parts. You'll generally stick to the accepted patterns in the code base for now with the end goal of getting your project shipped.
As you progress, you'll be focused on more system design related projects and thinking about the best way to design for scalability and picking between different tradeoffs.