My first programming jobs started when I was 19. However, this wasn’t my first contact with the IT market. It’s only now that I realise that I was a a CTO when I was 13 years old!
When I was 13, my parents already ran a small business. The business started with a grocery store but later evolved into a grocery stores supplier. About 20 people working in 3 different locations. At the beginning my role wasn’t very big — help with handling the customers, unpacking products from the deliveries, cleaning the warehouse. Nothing special.
In 1993 there was a big change in the Polish industry/economy. The VAT tax was introduced. Until that time the paper work around running such businesses was not complicated. This fact, though, changed a lot. What was possible before with just accountants dealing with the papers was now so complicated that it required computers and a software.
Guess who was the best computer specialist in our company at that time? You’re right — it was the 13 year old Andrzej. Me.
Suddenly my role in the company changed significantly. I became the CTO (I didn’t know back then — If I knew maybe I would asked for some benefits). My programming experience was close to 0 — retyping the BASIC code listings from a programming magazine to my Atari 800 XL doesn’t really count as programming, right?
First, we had to make a tender — from whom can we buy the required software?
Different sales people were invited to us or we visited them. Their sales process involved convincing a 13-yr old that their software is best. My domain knowledge was close to 0 (it’s even now that I have a hard time understanding the sense of the VAT tax, but that’s another topic…), my programming knowledge was non-existing. They had a hard time, I had a hard time.
Finally, thanks to recommendations, we have chosen a software built by a small company. Their only programmer was Mr. Krzysztof. He managed to build the software which was fully compatible with the law (the main requirement) and also was easy to understand so that a 13yr old can use it.
We agreed to work together and the software was put in use in our company. Mr. Krzysztof implemented some changes suggested by me and it was all ready to use. The whole process was actually very smooth. Back then I felt that’s the way it should be. I didn’t see anything unusual in the fact that the software “just worked”.
My role as the CTO was reduced to just managing some small improvements, always implemented by the programmer. I also learnt all the important procedures, like backups, choosing the right hardware, fixing the printer.
BTW, it’s worth noting that the backups were made on the 5 1/4 floppy disks looking like this:
Choosing the hardware was also fun. Being 13 I was smart enough to care what games are available. The first machine was a 286 PC, able to run the legendary SimCity 1.0.
During the day (it was still the summer school break), I was working at the office. During the night I was playing SimCity.
During the day, I was using the software to sell our products to the customers. I knew exactly how to improve the UI and Mr. Krzysztof was happy to implement it. He was often coming to our company with a big luggage containing a computer — he had a laptop back in 1993!
Some of the changes he actually implemented while talking to me. He opened this thing with a blue background (I think it was Borland Pascal), implemented the change, compiled, copied the files to a floppy disk, inserted the disk to our computer, copied the files locally and restarted the software. Continuous delivery, right?
It was obvious to me that things just work. They should work. The programmer is very intelligent, computers don’t make mistakes — why should anything break?
And then it happened.
I was talking with our customer, handling their order. They specifically chose the kind of cookies they want to buy for their store. I added it in the software, took the money, printed the invoice. I gave it to the storeroom employees, as always. There was no next customer, so I launched SimCity.
Suddenly, the customer is back. She claims that I made a mistake. They wanted cookies, but they got the mineral water. I looked at the invoice. Yes, it’s the mineral water. How did it happen? I’m sure I selected the cookies. Back to the software, display the order. It’s cookies here.
Printing it again, it’s the water now.
The foundations of my worldview were shaken at this moment.
“Mr. Krzysztof, can you confirm that this is a mistake in the software?”
“Yes, I’m sorry about that. It’s now fixed.”
I didn’t care that much about the fix. I didn’t care about the apologies.
It was like losing a friend.
I didn’t want to accept the fact that programmers can make mistakes.
I lost my trust to programmers that day.
If this happened once, it can happen again. What confidence can I have in the software?
How can I believe that the software won’t make me an idiot in the front our customers again?
“Dad, I think we need to consider changing the software we use. We can’t trust the current one.”
I was exaggerating. Now I know it.
The thing is, Mr. Krzysztof was a genius programmer. He made only this one mistake. After that I don’t remember anything serious. Over the next years, he evolved the software to support client-server architecture (thanks to this we had a computer at home now and I could spend nights playing SimCity at home and not in the office). He managed to extend the software to support different locations.
I know companies which still use that exact software until this day — 23 years later!
It just works.
Is there any lesson here?
I wouldn’t draw any conclusion from a 13-yeard old me.
But, as programmers, it’s worth remembering that it’s easy to lose the trust of our customers, our users. A trust that is once lost is hard to rebuild.