A Programmer’s Craft

Chukwunonso Nwafor
2 min readApr 29, 2021

In memory of Egeoluka, truly loved and truly missed.

For certain reasons, I have come to appreciate the title ‘programmer’.

by Lukas Blazek — unsplash

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.

  1. To instruct a digital computer.
  2. 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.

  1. To compute— CPU or/and GPU
  2. To store — Memory
  3. 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.

  1. A model of computation — an abstraction of a computer’s architecture.
  2. An abstraction of the resources provided by a computer called an operating system.
  3. Program design techniques which include modular, procedural, oop patterns.
  4. Algorithm design techniques which includes greedy, divide and conquer, dynamic programming, randomized algorithms etc.
  5. Data types and structuring considerations.
  6. Language features and concepts like regular languages and context-free languages, interpreters and compilers.
  7. 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.

--

--