Thinking as a PM (product) + SWE (Product Engineering)- Personal reflections
Personal reflections on my journey as Design engineer
In the last weeks and months I have been reflecting on my journey as software engineer, how my formal studies of Engineering Design played a role into shaping my perspective as a engineer. I have been keeping this perspective in mind while working on various projects but recently thought of adding it here to keep it as live journal. On the high level these I have captured my reflections in the following sections. I started to work as product development engineer for embedded systems and transitioned into software engineering developing full software systems but still focusing on resource constraints embedded devices. I want to jot down some thoughts on how the background of design engineering helps me to think at layers of abstraction.
What is design engineering?
Design engineering involves amalgamating principles of different engineerings disciplines, understanding the user needs, the problem space and the solution space, and designing solutions that are not only technically sound but also user-friendly, scalable, and maintainable. It requires a deep understanding of the problem domain, abstract thinking in designing solutions, systems thinking and most importantly the ability to think holistically about the system being designed.
Provides a framework to think about problems and solutions at different layers of abstraction
- Finding which problems to solve first, understanding the user needs and the business opportunity, etc. This helps in prioritizing the work and focusing on the most impactful problems to solve.
- Solutions thinking - from problem break down, targetted solutions and how to form strategies to tackle them. Holistically thinking about the system, the users, the problem space, the solution space, helps to understand the problems and solution space. Designing solutions weighing different trade-offs and considering different constraints.
- From the high level of abstraction - understanding the user needs, the problem space and the solution space, etc. This helps in not getting bogged down by the details and focusing on the bigger picture, understanding the dependencies between different components of the system.
- From the low level of abstraction - understanding the technical details, the constraints and trade-offs involved in building solutions, etc.
What is abstract thinking - how does it help in problem solving and solution design?
- Abstract thinking involves looking at the problem from a high level of abstraction, understanding the problem space and the solution space, etc.
- This helps in not getting bogged down by the details and focusing on the bigger picture, understanding the dependencies between different components of the system, etc.
- Breaking down the problem into smaller subproblems, understanding the dependencies between them, etc.
What ticks me and using this Design Engineering background as an asset
The framework discuss above helps lock the perspective towards owning the outcome (impact) of the work vs from the output perspective (know how and why from engineering).
My journey into product development, embedded systems, and now in SWE. What is Software engineering to me?
- In the early years of product development - exploring building blocks of engineering, understanding how things work, how they are built, etc. To dive deeper into the working of each I decided to understand the embedded systems - from PCB designs, hardware selection, firmware and driver development. This helped me to understand the working of the system at a deeper level and also understand the constraints and trade-offs involved in building solutions for embedded systems.
- Scaling those embedded systems both horizontally (across different product lines) and vertically (adding more features and capabilities) led me to software engineering. I started to work on building software solutions providing targeted solutions in form of platforms and modular designs to increase reusability and bring scale inherently into the design. This helped me to draw the design thinking into the software products and bring the abstract thinking into the software design and development process.
- To me software engineering is about building software products that are technically sound, user-friendly, scalable, and maintainable as it also involves understanding the problem space and the solution space. It is a building block of a system which works together with other building blocks to create a complete system.
Thinking as a PM first and then SWE
- Traits of a good PM - vision on what to build, understanding of the users and their needs, business value it generates, understanding of the problem space and the solution space, ability to drive the product development process.
- One crucial aspect which design engineering did not explicitly teach but I have learned over the years is the importance of business value and how it is crucial to understand the business value of the solutions we build. This is important to ensure that we are building solutions that aligns and generate value for the business and the users.
- Thinking as a PM first helps to understand who our customers are really, what are their problems and needs and then focus on solution development around them.
- How I fit this perspective into my work as a SWE - as every role has their customers - for a SWE the customers are the users of the software, the stakeholders who are impacted by the software and the business sense it drives
- Thinking from the design frameworks point of view - understanding the user needs, the problem space and the solution space, etc. helps to understand the problems and solution space. Designing solutions weighing different trade-offs and considering different constraints.
- There is a great overlap of this thought process with Software Architect roles who are usually responsible for designing the overall structure of the software system and greatly benefiting from the abstract thinking perspective and using the above framework.
What I am excited about in the future?
- Future of software engineering and how it is coming towards product thinking
- Working as a SWE during the GenAI and agentic transformation
- Helps one to think on higher level of abstraction
- Building products that are powered by GenAI and agentic capabilities
Stay in the loop
Get notified when a new post drops.