A Programmer’s Craft
In memory of Egeoluka, truly loved and truly missed.
For certain reasons, I have come to appreciate the title ‘programmer’.
Note: The below might seem basic but I find them invaluable in completing my understanding of the programmer’s craft.
A Programmers Task
A programmer has two primary tasks.
- To instruct a digital computer.
- To model reality.
A computer computes, stores and communicates. That’s all it does and that’ s all it can ever be instructed to do.
- To compute— CPU or/and GPU
- To store — Memory
- To communicate — Array of I/O devices.
Tools for Reasoning
To model reality, a programmer needs to have certain tools in his toolbox. They include but are not limited to.
- A model of computation — an abstraction of a computer’s architecture.
- An abstraction of the resources provided by a computer called an operating system.
- Program design techniques which include modular, procedural, oop patterns.
- Algorithm design techniques which includes greedy, divide and conquer, dynamic programming, randomized algorithms etc.
- Data types and structuring considerations.
- Language features and concepts like regular languages and context-free languages, interpreters and compilers.
- Mathematical reasoning
Problem Domain and Software Architecture
The final piece of the puzzle involves a complete understanding of the problem domain we are trying to model and how we organize our solution which of course falls under software architecture.