Giovanni's Diary > Subjects > Writing > Reflections >
To think like a programmer
What is that distinguishes the work / creative process of a programmer from other sciences like physics or law?
I think a programmer works in two different worlds: a logical, formal world made of programming langugaes, APIs complex systems that have a clear way of working, and the real world where logic does not fully apply (interfacing with clients, the market, governments, power…). The role of a programmer is to build the logical, formal world from the needs of the non-formal real world, by utilizing both formal and informal methods. Such process is an engineering process, where a solution is build through iterations and trial and error.
A way of thinking that is particular to the programmer is reasoning through interfaces and abstractions. Instead of having to understand all the little details of a system, instead an interface exposes some functionalities (APIs) which are the lego-blocks of the software in the making. This is why a web programmer does not need to know how the operating system implements networking, or how pixels are drawn to the screen: the complicated details are abstraced away through an interface. This is one of the most powerful tool to a programmer.
Therefore a programmer is both a logician, an engineer, and a person able to understand and model the complexities of the world.
Some important skills to a programmer are the following:
- being able to continuously learn new things with great speed. The technology industry changes constantly and programmers need to build a strong muscle to learn and learn.
- learn by yourself by thinkering with systems. Not everything is well-documented and well-explained (or explained at all), so the programmer needs to become somewhat comfortable to work in alien systems.
Travel: Reflections, Index