I began my software journey by focusing on the low-level aspects of development (video games, C++). Unsatisfied by the complexity and unreliability of the software I made, I felt the urge to study their underlying theoretical aspects (algebra, set and category theory) and how to model them (TLA+). I came to the conclusion you cannot solve a problem satisfactorily (i.e. with simplicity, reliability, efficiency, composability...) without both understanding its underlying formal structures and having a good grasp of what is technically feasible. Reconciling both ends of the spectrum is what I find fascinating about this field.
-
I like the correct-by-construction approach, as explained in the article Faultless systems: yes we can!. This involves modeling the system iteratively with increasing details, proving salient properties and demonstrating that each model refines ("implements") its higher-level predecessor.
-
I also find the work of Conal Elliott inspiring, with its emphasis on simplicity and composability.
You can reach me at dvnh87@protonmail.com