The Goal
Welcome to The Becoming a Programmer Blog!
The goal of this website is fourfold:
- To answer the question, "How do I become a programmer?"
- by helping you transition from Zero to Software Developer
- and eventually become a Fullstack Software Developer
- with the focus on building Enterprise Applications
So the bottom line is I want to teach you to become a Fullstack Enterprise Application Software Developer. But what is that? Let us break it down working backwards.
Software Developer
A Software Developer (or programmer) is someone who designs and builds software applications that serve a specific use case. These applications run on mobile devices, desktops, laptops, and servers. They even run inside your microwave ovens and washing machines. Where there is an application running, first there was a programmer at work.
In summary, a Software Developer builds apps. Let us now see what an Enterprise Application is.
Enterprise Application
Enterprise Applications (also called Business Information Systems or Line-of-Business Systems) are the types of software applications you will find in most businesses around the world. These are applications that support the operations of businesses by recoding daily routine transactions, such as sales, for example.
They are either custom-built for a specific organization, such as the Netflix streaming app, or generic-built and used by many organizations, such as the MYOB accounting software. 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 term Application and System.
Information Systems
Line-of-Business systems fall under a category called Information Systems. Let’s briefly look at two categories of Information Systems; Online Transaction Processing (OLTP) and Online Analytical Processing (OLAP) systems.
Online Transaction Processing (OLTP)
OLTP 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 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 detail oriented as they are generated with transaction-level data. These applications also regularly interact with third-party applications such as text and email communication services or communicating with banking systems to name a few.
Online Analytical Processing (OLAP)
OLAP applications take the data generated by the Transaction Processing Systems (TPS) mentioned above and turn them into information to be used during decision-making. These are called Management Information Systems (MIS). Management Information Systems are in turn broken into even more types such as Decision Support Systems (DSS) and Executive Support Systems (ESS).
Please feel free to read more about these systems yourself as we will mainly focus on Transaction Processing Systems (TPS).
Full-stack Developer
A Full-stack developer is proficient in both frontend and backend technologies.
Front-end Developer
Frontend development is about building the visual parts of the applications. That is the part of the application the user interacts with via their mobile devices or laptops, for example. From the user’s perspective, the front end is the application, and thus a good user experience is important to ensure the ongoing success of an application. That is why companies, in addition to front-end developers, also employ designers to ensure a good user experience.
However, on each button click on the front end, a lot is happening behind the scenes. This is where backend development comes in.
Back-end Developer
Backend development deals with the number crunching and communication with databases and other internal or external services. Without a backend, there is no application.
To see the backend at work, let’s mail a vehicle insurance quotation to a prospect. To generate an insurance quotation, the backend will:
- Take all the required policyholder and vehicle information entered via the front end, and create an XML or JSON package.
- This package is then passed via a SOAP or REST service to the insurer’s rating engine (often called a black box).
- Once premiums are calculated, the results are returned to the caller, and
- the premiums are extracted, and
- the quotation gets updated accordingly.
- A document generator service then generates a PDF version of the quotation, and
- a mailing service mails the PDF quotation to the prospect.
As you can see, the majority of the work happens behind the scenes.
Specialisation
People with an eye for design are typically drawn towards front-end development, whereas others may be more drawn towards backend development. However, even if you decide to specialize, it is important to have a good working knowledge of both frontend and backend development.
So, how do I become a programmer?
How do I Become a Programmer?
This is a loaded question! An online search may give you the following suggestion:
- Pick a programming language
- and do some courses covering that language.
- Write some small apps
- and finally, 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 so many unanswered 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 better answer to, "How do I become a programmer?".
From Zero to Software Developer
We will start out assuming that you know nothing about programming. So we will take things one step at a time. The first transition will be from:
- Zero to Coder,
- then from Coder to Programmer,
- then from Programmer to Software Developer.
It is sort of obvious from the above that a Software Developer knows more than a Programmer, who in return knows more than a Coder, who in return knows more than what Abraham Lincoln knew about programming.
Now these transitions are really just a matter of scope rather than depth. There are such a lot of skillsets that you need to learn that we cannot go into each too deep.
For example, you don’t need to know everything from Microsoft Word to write a resignation letter. You probably need to know only the very basics and will still be able to write a pretty good letter. Sometimes we can get quite far with limited knowledge.
Here are some reasons we don’t want to go into things too deep:
- It is counter-productive to go too deep into topics when starting out as learning new things require time to settle.
- I want to prevent information overload
- YAGNI - You ain’t gonna need it!
- Learning unnecessary things will just slow us down
So, instead of becoming a master in any one particular skill, you will rather develop a broad set of skills, knowing just enough per skill to do the job at hand at that particular point in time. However, we will revisit each skill and expand on it when needed.
Disclaimer
I am a Fullstack Software Developer, and my forte is building Line-of-Business applications (also called Enterprise Applications). So learning how to build Line-of-Business applications is what I can help you with.
If you want to learn how to build games, you may want to find other sources to help you.
Also, my native mobile app and Internet of Things (IoT) skills are limited as that’s not where my focus lies.
That said, you will still benefit from the fundamental content as that is applicable to programming in general.
Conclusion
So that is my goal with this website — to teach you to become a programmer, proficient in both frontend and backend technologies.
Next, I will discuss the challenges you will face when starting out learning to become a programmer.