The Teacher
Introduction
In this article, I want to tell you a bit about myself before we start with this series.
I originally studied pharmacy and ran a private hospital pharmacy for some years before I became a full-time programmer. Before that though, while doing my compulsory two-year military service, I was charged with developing a Therapeutic Drug Monitoring application for a Military Hospital. Although I knew nothing about computers and programming at the time, I found the process of interacting with the programmers fascinating and wanted to know more.
I didn't have the space for a PC, so I bought myself an HP-28S programmable calculator and went to work, spending night after night consuming the manuals and trying out stuff. To my surprise, everything just made sense to me. I was hooked! And that's how it all started. The end! Not quite...
The Languages
In this section, I want to give you an overview of the programming languages, databases and frameworks I have learned over the years.
dBase & Clipper
After my two years in the military, I went to work as a pharmacist and bought my first PC. My first programming language was dBase. Technically, I used the updated version of dBase that came with the Clipper compiler.
While running the hospital pharmacy I built a very successful Stock Management System with Clipper that eventually was used in at least two other hospital pharmacies as well if memory serves me correctly.
During this time, Microsoft developed a product they called Microsoft Windows. Immediately, the green and amber monitors became so 80's. Everybody bought their first colour monitors. I remember, my first colour monitor was the size of a small car. Ok, it wasn't that big but it nearly cost that much. So all DOS users moved to Widows which meant that the programming languages had to follow.
Visual Objects
Nantucket Corp, the owners of Clipper, we bought out by Computer Associates (now called CA Technologies) and released a Clipper of Windows which they called Visual Objects.
At the time I met up with a startup company selling residential and commercial insurance. I built their first system with Visual Objects.
With both the Clipper for MS-DOS and Visual Objects for Windows, I used the DBF database files to store the application and business data.
Visual Objects however was a disaster to work with as the code base would become corrupt for no apparent reason. I eventually reached a point where I could not recover my code, so I had to look for a better option.
Delphi
Fortunately, a company called Borland, just released Delphi, a general-purpose programming language that was based on Object Pascal. These days Delphi belongs to Embarcadero Technologies.
Delphi came with a great IDE and the relational database that shipped with it was called Interbase.
So, I rebuilt the applications for my insurance client with Delphi and Interbase as the database. However, soon after the new app went live, Interbase became open-sourced via a fork called Firebird. So, I swapped out Interbase for Firebird. Those Delphi apps were in production until 2015.
During my Delphi years, I also wrote various other Delphi apps for Managed Healthcare, Emergency Services, and Medical Schemes using Microsoft SQL Server as the database.
Java
In 1995, Sun Microsystems launched the Java programming language and, while using the Delphi apps on the client side, I started to implement new back-end services with Java.
By the way, Java is way more than a programming language. More on that later.
Then, the Java people made a clever move. Not only did they give us a programming platform, they also showed us how to program. And they did that with their J2EE framework (these days called Jakarta EE). Although the J2EE framework was overengineered and as a result suffered from performance issues, it was an important first step in the world of programming as we know it today. Today, we take these frameworks for granted. Over time, the J2EE framework was drastically improved and later renamed to Java EE (EE is short for Enterprise Edition).
In 2004, Rod Johnson released a lightweight framework called the Spring Framework. The Spring Framework addressed many of the issues the J2EE framework faced at the time.
The Spring Framework took off like crazy and Java EE is paying catchup to this day. That said, I am a fan of both frameworks and they are borrowing a lot from each other. You cannot go wrong with any of them and as a result, I will do courses on both.
In 2014, the Spring Framework people launched Spring Boot which is the Spring Framework plus some other goodies nicely wrapped in a convention-over-configuration bundle. This makes developing Java apps a breeze and has become the de-facto way of building Spring Framework apps these days.
In 2015 I rewrote all the Insurance apps with Java and Spring Boot. I decided to move away from Firebird and use the PostgreSQL relational database management system (RDBMS) instead, a decision I do not regret at all.
As these systems were no longer desktop apps, but web apps, I also used HTML, CSS and JavaScript extensively for the front-end work.
C
In the meantime, Microsoft released a new general-purpose programming language, called C# (pronounced See sharp). Around 2005 I started to use C# in addition to Java. Not out of necessity, but more out of curiosity. I am glad I did because I ended up writing a lot of new apps with C#. Microsoft, for example, just did a better job at desktop apps than Java did. The reason very much was that C# was Windows-specific at the time whereas Java tried to keep all platforms happy. That is not an easy thing to do even today.
Later, Microsoft also launched the .Net Framework (pronounced dot net) which allowed programmers to use multiple languages (such as C#, F# and Visual Basic) even within the same app.
With Java, you wrote the app with Java, which then ran on any platform such as Windows, MacOS, Unix or Linux.
With the .Net Framework, you wrote the app in several languages and ran the app on Windows only. Not too long ago, Microsoft changed the Windows-only approach and launched .Net Core, a cross-platform version of the .Net Framework that allows your app to run on all operating systems. I wish they had done that from the start, but they wouldn't listen to me.
With all the .Net apps I built over the years, I have also used several databases; Firebird, SQL Server, MySQL, PostgreSQL and SQLite.
From a front-end perspective, I used the .Net tools to build both desktop apps and web apps using ASP.NET Web Pages and ASP.NET MVC.
From a back-end perspective, I used .Net to build various monoliths and API microservices. I also did a fair amount of third-party integrations with banks and other insurers via SOAP and REST using both C# and Java.
PHP
Between 2011 and 2013 I built a PHP app for a consultancy firm. The app never went live. I didn't think it was funny as I received $0 for my work. Although I have enjoyed my time with PHP, I haven't built anything of substance with it since.
Python
Around 2013 I decided to learn Python and have been using it on and off since. These days, Python shines in the data analytics field.
Go
I have written a few small production apps with the Go language and really like the simplicity of the language. It takes time to get used to, especially when you have been working with C-type languages for some. But it's a great language and there are many success stories of companies rewriting their apps with Go. Some companies are lucky to start with Go from the word go (no pun intended I guess).
A Love for Learning
As you can probably see from the above, I am a life-long student. I love learning new things and will stop doing that a few days after I am dead.
Years ago, I promised myself that I would not go to bed if I hadn't learned something new that day. It doesn't matter what it is; it just has to be something I did not know yet. And so far, it has served me well.
A Love for Thinking
I am also fascinated with how we think. I guess you can call it thinking about thinking. I am sure you heard that critical thinking is a good skill to have. However, I think we are cheating ourselves.
I rather agree with the late Edward de Bono, who said that critical thinking is just one of six types of thinking. He discussed this in detail in his book Six Thinking Hats. Believe me; you will build better applications by applying all six types of thinking instead of just critical thinking. Please read his book. You will thank me later.
Even Casey Patton, a well-known software engineer, said, "Programming is Thinking, Not Typing." For me, thinking and learning are two sides of the same coin. You have to embrace both.
Programming requires a lot of learning, whereas design involves a lot of thinking. As I stated in previous articles, you need to be able to do both programming and design.
A Love for Reading
If you don't love learning and reading some more, please don't waste your time with programming. To become a programmer, you will need to put in a lot of hours of reading. Sometimes, those hours will be frustrating as hell. But also remember, those are the hours you learn the most. So embrace them!
A Love for Teaching
In the past, I have been accused of teaching people how to build a watch when they asked me for the time. I decided to take that as a compliment rather than an insult.
People love sharing with others what they love doing. And it is a good thing because you know it comes from the heart. Hopefully, that love for learning/teaching will come across in this series.
In Conclusion
I hope that this article gives you an idea of what I am capable of and what things I can teach you if you let me. I will teach you to become a programmer in the quickest and easiest time possible but that said, there are no shortcuts, just smart cuts.
Next, we will be looking at the world of Information Technology and Information Systems in the course, "The Big Picture". See you there!
Subscribe to my newsletter
Read articles from Deon Slabbert directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Deon Slabbert
Deon Slabbert
I am a fullstack software developer with 35 years experience building enterprise applications for the financial sector and have a passion for learning & teaching others the tools of the trade