3

Design skills for software engineer at different levels

Profile picture
Entry-Level Software Engineer [L3] at Googlea year ago

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

  1. Is it normal that in software engineer's daily job, the design is just about how to implementation something? Or I need to try to apply any design pattern or architecture? Is the general design concept same as object oriented design? Want to see am I under design stuff or I am overthinking about this
  2. How to you learn the design skills, especially to the space of web application?
  3. Any books recommended for designing web apps?
  4. What is your opinion about design skills at different levels?
  5. Do you think design is the core skill of a software engineer?
181
2

Discussion

(2 comments)
  • 4
    Profile picture
    Tech Lead/Manager at Meta, Pinterest, Kosei
    a year ago

    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.

  • 1
    Profile picture
    Software Engineer @ Taro, Pinterest
    a year ago

    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.

Google is an American multinational technology company that focuses on search engine technology, online advertising, cloud computing, and much more. It is considered one of the Big Five technology companies.
Google95 questions