I started my software career with no experience in a small electronics and software company which build bespoke realtime turnkey, i.e. you switched it on, and it would run with no user input needed, systems for a variety of industries. The language of choice was Forth. Which is a stack based language, so it uses reverse Polish notation. Forth provided it’s own assembler, which got used for interrupts. I built systems for airports, railways and Prestel. The hardware was either STE or VME, usually with a processor board, then other boards for memory, communications and digital I/O. The processor was usually a 6809, and later a 68000, which felt like a luxury. You would have to write everything, much as you would on a Arduino, but with no libraries. You had to write it all yourself. Most equipment didn’t have a display, so you would program the machine via a terminal, a VT100 or similar. Once the program was written, it would be burned into EPROMS, then full system testing would start, although testing of each bit would be done as it was written.
Much of it was communications. Controlling terminals, as a user interface, and controlling modems for communication. The data passed was all via custom protocols, made up to suit the system. All error detection and correction was part of the design. Often data rates were quite slow, so packing as much data into a packet was important. Hours were spent checking comms logs, checking for errors. A lot of the time this was using a HP 4951 protocol analyser, like the one shown.
C was the next language I used that for tunnels and fire brigades. Again, lots of comms, but interfacing with sensors and controlling equipment, too: environmental sensors and lights and fans for tunnels; buttons, automatic doors, sounders and flashing lights for fire brigades. Again this was on STE & VME.
After that, I did software testing in Spain, for a satellite ground station, which was part of EGNOS, then returned to the UK, for more Fire Brigades.
I started to use Python towards the end of my professional engineering phase, mostly for system emulators. It’s fun how rapidly you can put something together, which I’m enjoying, which is why I chose it to write Akiniscope.