The Tractability of Software

Nick Best
1 min readOct 16, 2019

--

As a young and foolish engineer, I would tell people that writing software is easy. This seems to be a common refrain from many young, bright engineers who are able to quickly pick up enough of the basics to build simple things, or make non-trivial additions to existing codebases.

Software is like writing: there are few constraints. This makes it close to the expression of pure thought. The young engineer finds delight and excitement in this. It is easy to transform their thoughts into a workable, coded solution. The underlying problem here is that a young engineer’s thoughts are rarely organized and coherent. Furthermore, this young engineer has conflated the tractability of software with the notion that writing software is easy.

IMO, understanding this nuance is crucial. It should come before learning the rules of expression: syntax, data structures, frameworks, etc. It is the difference between an engineer who is always striving to write more concise, more correct code, and an engineer who calls themselves an expert yet are content to produce unintelligible work. It’s the difference between an organized and clean codebase that is easy to add complexity to and one full of bugs and technical debt and it takes months for the team to add new features.

The problem with tractable mediums is that few people become experts in them. If one thinks that simply expressing the solution is the final destination they will never become successful. A successful software engineer’s main objective is to not let themselves be content with expression alone.

--

--