The Solution
In the previous post, we discussed the problems we will face when starting out on our journey to become a programmer.
We identified four questions that we need answers to:
- Where do I start?
- What do I learn?
- When do I know enough?
- Where do I go next?
The short answer is, "You need a roadmap!"
And not just any old roadmap.
You need a roadmap that will answer all four of these questions.
This roadmap will tell you:
- What topic to start with
- What about that topic you need to know
- When it is time to move on to another topic
- What topic to move on to next
So, where are you going to find such a roadmap?
Glad you asked!
It just so happens that I have developed such a roadmap.
I call it The Becoming a Programmer Series.
And you will find that roadmap in the Tutorials section of this website.
How is that for convenience?
I will take your hand and lead you step by step through your journey.
I have the benefit of knowing stuff that you don't know yet.
So I can show you the smart cuts to take.
Remember, no shortcuts, just smart cuts.
This way you will only learn the things necessary to do the job at that particular point in time.
If the next job requires new skills, we will add new information to your existing knowledge base.
Thus, no, information overload!
The other important thing is the order in which you will learn things.
I have designed the lessons in such a way that each new thing you learn will build upon what you have learned already.
For example, let's say the goal is to build a web application to capture your piano practice sessions.
As this is a typical Information System, you know there will be three layers.
You also know that the database is the most important, because without a database, there is no app.
So, the Becoming a Programmer series will first teach you everything you need to know to design and build the database.
After that, you will learn how to build the business logic for such an app.
Once you can do how to build the business layer of the app,
you will learn how to make this business layer 'talk' to the database you created earlier.
That, by the way, requires a different skill set than the skill set required to build the business layer.
Once the business layer is complete and can can communicate with the database, it is time to build a user interface.
Once the user interface has been built,
you have to learn how to make the user interface 'talk' with the business layer of the app.
Once again, that requires a different skill set.
As you can see, there are at least five layers in your app:
- The Database Layer
- The Business Logic Layer
- The Data Access Layer
- The User Interface Layer
- The Business Access Layer
All five of these layers require a different skill set, and we will also learn things in the order above.
On top of it all, you will learn different technology stacks.
A technology stack is a combination of the programming languages,
frameworks, libraries, databases, and build tools you are using to build an application.
This list is not exhaustive,
but it gives you a good idea that there is a bit more to software development than meets the eye initially.
Also, don't worry about any of the terms mentioned.
Eventually, they all will make sense.
Let's say we are going to use Java to build our music practice log app.
We will then pick the following technology stack:
- Java programming language
- PostgreSQL database
- Spring Boot Framework
- Gradle build tool
- Git version control
- Hibernate JPA implementation
- Spring MVC framework
- Spring Security
- Apache Commons Lang library
- Eclipse IDE
- JUnit for unit testing
And so the list goes on and on...
If you decide to build the app with C#, your technology stack will look different.
Same goes for JavaScript or Python.
Different stacks each time.
I guess a fair question would be, "Who decides what goes into a technology stack?"
The answer is a typical IT one.
It depends!
On what you ask?
On things like project requirements, team expertise, scalability,
performance, development speed, time-to-market, budget, maintenance, and component compatibility to name a few.
Luckily for us, many of these decisions have been made for us by the developers of frameworks.
Thus, if we decided to use a particular framework, most of the technology choices have been made.
Especially with what is called opinionated frameworks.
Any way, much more of this later in the series.
All you need to take away for now is that there is help available to become a programmer in the form of The Becoming a Programmer Series found in the Tutorials section of this website.