Over the years I have grown up to have a very clear definition for engineering - I would call it an art where you strive to solve problems permanently wherein the solution leads to an expected impact.

Hence the key ingredients for what makes an action to be called ā€˜engineering’ in my definition would be, that it,

  1. Solves a problem. Sometimes there might be problems which in reality are illusions. An engineer is expected to see through illusions and find the real problem.
  2. The impact is expected
  3. The solutions does not create more problems
  4. Solutions are designed to last and can be sustained over a long period of time

In one of my previous writings I explored my understanding about coding vs programming - that expression however was very much focused onto the current state of the world. If we have to think a few years in future, I would say

ā€œMachines will begin handling Coding as well as Programming, while the role of Humans will stick to Engineeringā€

Coding is syntax and implementation - which is already being handled by machines. Programming is the how to solve a particular problem and ensuring how every single block of code collaborates to act as a system. And Engineering is knowing what to solve with a more wider context of who will be using the solution. Engineering also ensures that the solution is efficient and sticks for a long duration time.

In many cases machines have already started handling programming tasks. Consider the latest ā€˜Plan’ feature launched by Cursor, multiple agents together are able to build system by system for an app. They analyse the requirement, makes a list of tasks and ensures all task work as a single system.