My official CV starts with a first full time programming job I got in November 1999. My first task was to develop a patch for a back end of GCC 2.7 to make it generate code for a custom embedded board based on a derivative of m68k. My salary was $200net/mo, which was kind of cool at that time and place...
But I had been programming for 10 years already, and sometimes even earned some money (but cash flow was negative). My story is quite typical for my generation, and some of my traits as a s/w developer have deep roots in programming for 8 bit home PCs of 80-s.
When I was 8 we got a first Moldavian home computer. Moldavian, no kidding!
I quickly learned BASIC and developed a game with simple graphics, about 400LOC. I tried learning 8080 assembly but did not understand anything. Lesson learned:
Dijkstra was right about mental mutilation beyond hope of regeneration - since that time I still spend too much time debugging and too little time thinking.
Two years passed, and it appeared that a lot of my schoolmates have a Spectrum48k (and some even 128k, but they were a posh minority). We lived in a neighborhood that was built for engineers and workers of an electronics plant (the one that was producing avionics for MiG fighter jets). ZX Spectrum (the "Delta-S" modification) was its consumer targeted product :) I quickly developed one of the biggest collections of pirated games in our school. (Thanks a lot Bill Gilbert and his friends!) Lesson learned:
an ecosystem is as important as platform features.
There were so many games on my audio-cassettes that I actually did not write anything interesting on my own at that time. Instead I was spending a lot of time reverse engineering and tweaking other's code. So I mastered BASIC and became more familiar with Z80 assembler. Lesson learned:
since that time I enjoy reverse engineering and reading big blobs of source code.
In 1992 my Spectrum went through upgrades: the first was a floppy drive that could read and write 5 inch disks, SD (360KB). The second upgrade was a sound card - Yamaha AY-3-8912
. I bought it because it was very cheap, and some newer games that were developed for 128K RAM could run in 48K if there is a sound card and floppy drive. I wished I could do a real upgrade to 128K but that was too expensive. Lesson learned:
IO performance is more important than memory and CPU performance.
Upgrading from cassettes player to floppy was the most life-changing upgrade I ever had. Here is why: every summer I spent in Sergeevka village with my grandparents. I tried getting my computer there, but it did not quite work. The mains voltage was fluctuating in 170V-250V range, and saving/loading with a cassette recorder was usually impossible. Same with disk actually, but it only takes few seconds to write 10K to floppy disk so chances were usually high. Lesson learned:
that summers taught me to concentrate despite stress and noise and to backup often.
In early/mid-90s PC era had began in our town (more on that in the next post