The Goal

The goal of this post is to look at the question, "How do I become a programmer?"

How do I Become a Programmer?

This is a loaded question! Unfortunately, an online search may give you something like the following suggestion:

  • Pick a programming language
  • Do some courses covering that language
  • Write some small apps
  • Apply for a programming job

While this is not necessarily wrong advice, it is so full of gaps that it is practically useless.

The above suggestion raises a number of questions. For example:

  • What programming language should I pick?
  • Why that particular language?
  • What courses should I take?
  • Why those courses?
  • What type of apps should I write?
  • Why those types of apps?
  • When am I ready to apply for a job?

When starting out, you unfortunately don’t have the knowledge to answer any of these questions.
Hench this website where you will find a proper answer to the question, "How do I become a programmer?"

From Zero to Software Developer

We will start out assuming that you know nothing about programming.
We will take things one step at a time.

Your first transition will be from Zero to Coder, then from Coder to Programmer, and finally from Programmer to Software Developer.

It is sort of obvious from this statement that a Software Developer knows more than a Programmer, who in return knows more than a Coder, who in return knows more than Abraham Lincoln about programming.

Now these transitions are really just a matter of scope rather than depth.
There are so many skills that you need to develop that we cannot go into them too deeply.
Also, it is counter-productive to go too deep into the topics we’re going to focus on.
For example, you don’t need to know everything about Microsoft Word to write a resignation letter.
You need to know only the very basics.

There was a lady working for one of my clients who used Microsoft Word for years without knowing how to save the documents.
She simply printed each letter and stored it in a filing cabinet.
Sometimes we can get quite far with limited knowledge, on the condition that it is the right knowledge at the right time.

However, the important reason we are not going into things too deep is threefold:

  • As you are going to learn a lot of new things, I want to prevent information overload.
  • YAGNI is short for "You ain’t going to need it!" So, we don't want to spend time learning things that are not needed at that particular point in time.
  • Similarly, learning unnecessary things will just slow us down.

So, instead of becoming a master in one particular skill, you will rather develop a broad set of skills, knowing just enough per skill for that particular point in time.
We will, however, revisit each skill and expand on it when needed.

Disclaimer

I guess a disclaimer is in order here. I am a Fullstack Software Developer, and my forte is designing and building Business Information Systems.
This is what I can help you become.
Fullstack just means that I am capable of building the whole application, from the User Interface (aka the Frontend) all the way to the Business Logic and Database (aka the Backend).

I cannot teach you how to build computer games or operating systems or compilers, for example.
Also, my native mobile app and Internet of Things (IoT) skills are limited as that’s not where my focus is.
That said, I am sure you will find resources online should you desire to focus on those areas instead.

Business Information Systems

Business Information Systems are applications that support the operations of businesses by recoding daily routine transactions, such as sales, for example. You will find these in most businesses. Examples are Point of Sale applications, Banking applications, Insurance applications, e-commerce applications, HR systems, ERP systems, etc...

Please note the interchangeable use of the terms Application and System.
Let’s briefly look at these applications/systems in a more academic way.

Information Systems

Business Information Systems fall under a category called Information Systems. Let’s briefly look at them by grouping them in two categories, Online Transaction Processing (OLTP) and Online Analytical Processing (OLAP) systems:

Online Transaction Processing (OLTP)

These systems are transaction-oriented and are used to record the daily transactions of a business. These transactions can be financial or non-financial of nature. These Transaction Processing Systems are very detail-oriented and are the entry point of a business’s data. They usually consist of various data capture screens. Although they capture all the business data, they are typically non-analytical in nature. Thus, reports generated by these systems tend to be detailed as they are generated with transaction-level data. These applications also regularly interact with third-party applications such as sending text messages, email, or communicating with banking systems to name a few.

Online Analytical Processing (OLAP)

These applications take the data generated by the Transaction Processing Systems (TPS) mentioned above and are used for decision-making. These are called Management Information Systems (MIS). Management Information Systems are in turn broken into more types such as Decision Support Systems (DSS) and Executive Support Systems (ESS).

Please feel free to read more about these online as we will focus on Transaction Processing Systems (TPS).

Conclusion

The above information should give you an idea of where the focus of this website will be. You will encounter Business Information Systems in your daily life with every business you deal with, so I believe it to be a good skill set to have when becoming a programmer.

Unfortunately, seeing that we’re just starting out, we’re facing a number of problems.
We will discuss this in the next post.