The increasing value of domain knowledge

A dovetail joint requires expertise but can allow for glue and nails to be done away with.

A lot of the work done in software engineering is menial. Often the profession is portrayed as people solving the complex problems that are posed in the academic discipline of computer science, and don’t get me wrong, having a foundational understanding of computer science upon which to develop your craft is important. It helps you to understand why some of the frustrations exist and to, although not often the case anymore, optimise code to be performant enough for a given task.

Software engineering has always been the craft of translating the spirit of a requirements document (or sentiment of the client) into a language free of ambiguity for the machine to understand.

The shift in grammatical style from English (or any other natural language) to that of a particular programming language notwithstanding almost the entirety of the job of a developer is providing clarification. Moreover providing clarification of the ambiguities in the job description in a clear way, that doesn’t become cluttered over time.

Any code that runs has chosen a path down this disambiguation process and problems arise when that path has been chosen incorrectly. That leads to a kind of bug automated testing can’t pick out. A bug that the IDE is unlikely to be able to ever provide assistance on.

Generally accepted practices can reduce the workload by making the task of disambiguation smaller. Take sorting, for example, this was a task that would have to be coded out in a way that best worked for the developer coding it for whatever task they needed. Higher-level languages include this as a built-in function where the developer doesn’t have to make the choice about the underlying mechanism. A similar thing is the case with serialization and JSON. By creating a standardised serialisation mechanism (Albeit not always sufficient) developers can simply call the library functions rather than come up with their own system of sterilisation.

As there is a progression with more standardization, perhaps queues, and simple web interfaces become built-in functions of a popular language, the less the developer has to think about the how and the more their job is focused on the what.

The more the developer is concerned with the what over the how, the more valuable industry-related knowledge becomes.


Popular posts from this blog

Exploring development timing through building a simple trading game

The twelve fold way

THREE.js: minecraft in a weekend