If you’re working in software or any form of engineering, the engineering mindset is more important than the knowledge of any particular technology.
But what exactly is engineering mindset? It is hard to explain. It’s the kind of thing you can recognise when you see it in someone, but difficult to put in words. The Engineering Mindset thinks of the world in terms of solving problems by building things, understanding existing systems and creating systems where none exist.
Let’s Dive into Specifics
I try to break down the engineering mindset into the following pointers.
Solve Problems: There is a science to approaching and solving a problem like an engineer. It starts with trying to find the crux of the problem, break the problem into smaller parts, and find a way to solve it where the design can evolve with time.
Build Things: The engineer should be able to build products that would solve a problem, and figure out the science along the way.
System Level Thinking: The engineering mindset thinks about the entire system as a whole, keeping the overall outcome in mind, and not just focus on tiny details. For example, when building a product, it is important to keep in mind what purpose is being solved, and if there is another set of systems that can solve the problem in a better way.
Divide and Conquer: The engineer should be able to figure out the various small systems that make a larger system or product. This enables the engineer to figure out the various subsystems needed to build a large system, and thus create a path to developing complex systems.
Composition of Systems: This is the opposite of the previous point. The engineering mindset understands how to use existing systems and compose them into one larger system.
Building Abstractions: Related to the previous point — the engineer should be able to create an abstraction where none exists now, so the abstracted system can be reused.
Enhance Efficiency and Reliability: Build systems that increase the efficiency and reliability of an existing system. For example, ABS decreases the chance of a car (existing system) crashing and a seat belt reduces the chances of the passenger getting injured when it crashes.
Understand Tradeoffs: What are the pros and cons of different frameworks we use. Is time-to-market the most important thing right now, or should we build our system in a way that takes more time now but improves efficiency later? An Engineer is faced with tradeoffs everyday. Working with constraints is what actually leads to innovations. The engineering mindset is outcome driven. The answers to these questions is driven by the exact business outcome that is aimed for.
Leverage Existing Systems: The engineer is able to understand what is critical to their product, and what is peripheral. It is not necessary to build everything. For example, an e-commerce website might use an existing payment gateway instead of building their own. The engineering mindset knows that a product is built out of multiple systems working together. There are some that would need to be built, and some that can be used out of existing systems.
Growth Mindset: An engineer understands that a person’s abilities are not fixed. Instead of saying ‘I can’t write modular code’, the engineer understands that abilities are developed by habit and habits are developed by deliberate practice.