Home of a Creative Engineer

I am an engineer at heart. I love to build technical systems, both in hardware and software. In this section, I share my insights on building these systems.

Learning Programming – How to Become a Professional Software Developer

What does a Programmer Do?

Let’s start with the job description: What does a programmer do? He (or she) solves problems with a computer.

Figure 1. A computer solves problems given an input and a program to produce an output.

A computer is a machine that takes an input, processes it according to a sequence of commands, which is called a program, and then produces an output. So the task of a programmer is to understand a problem, find a way to solve it and make the computer solve it for him. The last part of it is done by writing a program, and this program is formulated in a programming language.

Figure 2. A programmer creates a program that will produce the desired output with the given input.

This means you have to learn skills from three different fields to become a software developer:

  1. Understand how a computer works.
  2. Learn to understand problems and rethink them in a way that also a computer could solve them.
  3. Train a computer to solve them, e.g. write a program in a programming language.

As you can see, only the last skill set is actually using a programming language! So to become a programmer, you should not start head first with a programming language. Instead, learn about your computer first.

How to do it will be the topic of the next article in this series.

The Missing Link: Crossing the Innovation Threshold

(more…)

Intuition in Engineering: How You can Become an Intuitive Engineer

(more…)

What’s in a name?

(more…)

Bug Hunting like a Detective

(more…)

On abstraction

What is the job of a software developer? Somebody gives us a machine and he says: We want to do it task X.

Then it is our job to make the machine do this. We have to configure it.
What can we configure? Normally we can configure the CPU. This means we write a piece of software.

(more…)