This post is a trip down the memory lane. Here I show how my own experience in software development have grown. We are talking about almost 40 years, of which over 25 years professionally. It has been quite a ride.
Stage 0 – casual observer
My father was a radio amateur. One of the things he liked was tracking certain satellites in their orbits. From magazines he received certain orbit data from which one could derive his own interpolated data. I watched him entering formulas in his programmable calculator. It must have been a Texas Instruments Ti-57. Entering the program and entering the basic data was a very labour intensive job, but it was interesting to see how the program spitted out all relevant interpolated orbit data. I must have been around 10 years old then, in 1980.
Stage 1 – happy hobbyist
My father bought a Timex Sinclair 1000, a cousin of the better known Sinclair ZX81. It used a regular TV for output and a traditional cassette recorder for external storage. When starting it up, one landed at a command prompt and could use a programming language called BASIC. Although the system had very limited capabilities, my father showed how a 2 lines program could fill the screen with my name. I was hooked! I started creating various kinds of simple programs. This was from 1982.
Soon after, a Sinclair ZX Spectrum replaced this ZX81 clone and it didn’t take long before I hopped on the MSX bandwagon. Then via MSX2 to a cheap PC clone. My skills in BASIC grew and I soon found its limits in terms of structured programming. I started looking into Pascal and learned how to set up a program in a more structured way.
Stage 2 – computer science
From 1990 to 1995 I studied computer science and earned a Bachelor degree. Here I learned true structured (imperative) programming in Pascal and C, and object oriented development primarily in C++. I learned about operating systems, databases and coding in assembly. In a traineeship I developed an object oriented program in Pascal with embedded SQL. I documented the whole thing and when I checked a few years later, the company was still using it and happy that it was so easy to correct a few bugs that I obviously had left. When looking back, I’m still impressed.
Stage 3 – professional career
From 1996 I developed my professional career in software testing and my focus was primarily on quality of existing software rather than developing myself. Still, I spent much time on automated functional testing and automated performance testing. (These do require a way of scripting anyway, both C-like and SQL.) I always used a black box test approach, meaning that I looked at the software from the outside, without having knowledge what was happening under the hood.
Only in 2018 I had the chance to work in a professional software development team. It was the first time that I actually lay my eyes on professional code. Then it became obvious that more modern languages like JAVA and advanced technologies don’t really help when the discipline lacks to create clear unit tests, clean up spaghetti code and document the functionality. What I saw here was a clear example of heavy technical debt. This observation led me to write this and this post about code quality and refactoring.