Every engineer has a mental model of the discipline they practice in. A car mechanic has a mental model of how and where to start when someone brings in a car for repair.
Similarly each programmer has a unique mental model of how they approach solutions to a problem. How do you do it? Do you have a mental algorithm for the entire process from the start to the solution and subsequent refinement?
- Distributed backends - Tuning databases - Next.js + react based complex web-apps - react-native based android apps - socket programming - multiplayer software - canvas based software - And currently learning database engineering
After exploring so many fields, either I have lost a unified mental model for programming, or the mental model has become so large that it resides out of my active memory and guides my intuition.
I explored most of these fields being a contractor, and then am entrepreneur. As a result, I didn't have enough validation on my code, and only had achieving the business results as my guiding principle.
I work at a mfaang now, so get enough validation on my output from peers to know that the solutions I come up with are technically sound.
There's still one field that I very much wanted to add to my skillset but couldn't for some or the other reason - k8s based ci/cd at scale on a cloud platform.