Learning A New Technology(Programming Language)
My blueprint approach to learning a new programming language
In this article, I will be sharing my approach to learning a new technology, especially a programming language. I will give guidelines that I use when diving into a new language, you can choose to use these guidelines as they are or as a blueprint to tweak and make one for your own.
We have to first admit that each one has their own way or style when it comes to learning or acquiring information/knowledge, this wisdom allows me to understand that not everyone may relate to this post and that is the reason why it is just a blueprint.
Almost every day, in the tech world there is a new technology that is released and a need for humans to adopt it, also at the same time while an individual grows, they may grow some interest in some old technology or one that is already in use. When I learned to program I was programming in C, but when I had to start working in my first developer job I had to learn java, and recently after that, I had to learn python. Even if you know the principles of developing production-ready applications, it will take you twice more the time to get an application to production with a new language that you don't know compared to using something familiar.
The expectation is that developers must know everything in tech, that is why your friends are always asking you to hack Facebook, fix their computer & drive them to space 🙃🥲, so when that new project is introduced and you need to learn a new programming language how do you then get about learning it faster but getting the best out of it?
Well, enjoy this read and I hope it will add value.
1. Understand The Assignment
In any instance when faced with a task it is a good thing to apply some sort of strategy to accomplish it, in my case I apply a methodology called scrum, SCRUM is a framework for developing, delivering, and sustaining products, well that is just a short extract from Wikipedia.
This methodology is one of the vastly used methodologies in product management to assure that products are developed efficiently.
This is how I use it when starting a project, as this is a project too
- Identify the end goal: what is it that I want to accomplish, in this case, we want to learn a new programming language and in the end be comfortable writing code in it.
- draft a plan: now this is where you start breaking down the end goal, which is actually the problem to be solved. You will need to put a timeframe, this will help you break down the project into small achievable goals, identify parts of the project that can be made to smaller goals. Remember to be SMART, specific, measurable, achievable, realistic, and put in mind time. This means you need to understand how much time you have, what can you do in that space of time, and be honest with yourself as you wouldn't want to burnout, also just because you can read fast it doesn't mean that you understood what you were reading, this is why you need to identify your way of learning.
I am trying my best to keep this less complicated as possible, so the next parts are actually me diving into learning, we can consider them as my smaller tasks to accomplish.
So firstly, we look at...
2. Technology Background
Before you can start writing code it would be a great thing to do research about the technology you are about to use, you do not need to understand everything about it, just the overview and important part, asking questions is a good way of acquiring knowledge. The best place to start is the home page of the technology, here are some questions we can ask ourselves are:
- What is this technology About?
- Why was it created?
- Where is it used mostly?
- Is it functional or OOP based, or both? (this will help me later understand my limits)
You will realize that this task requires you to just roam the net and find answers, no coding yet and if you're part of a community you can ask people even more questions, what do you enjoy about this technology?, what are your frustrations about it?, but remember when asking questions always know that some fact* can be subjective to an individual, meaning it is not entirely true but biased.
Once you have all this information and more you can now prepare to move on to the next task.
please do add other questions on the comments that you can add to this section that helps with knowing more about a technology.
3. The learning process:
Now we are getting closer to the fun, that is writing some code, but first, we need to make sure are ready to zone out once we start. So in this section, we break down the learning process and get closer to our goal. Here is a guideline I follow when I now have enough information about the background of the technology.
- I would first look into the requirements needed for me to get this technology to my machine, from dependencies, IDE's, configurations, and such, so I would ask myself What is required for me to get this technology(Machine requirements such as RAM, Storage, etc, and dependencies/tools to be installed). This is basically preparing your development environment.
From here I would then get on it and Install, or get all the requirements in place, once that is done I would now want to start coding, Yey🥳🥳🥳!
So when my development environment is ready I would want to understand how the language looks like and how this(syntax) compares to other languages if I know any other languages, this allows me to avoid unnecessarily syntax errors in the future and to basically understand how the language was made to communicate instructions to us and to the computer,
- What is the syntax of the language, how does it compare to other languages I know?
Now that I know the syntax of the language I would like to start with the basics and learn how to create a variable, what is a variable? Try this BOOK.
Assuming you understand or have a little bit of knowledge about how data is stored in a computer, this information is needed before attempting to code because understanding data actually help with understanding variables, data structures, and a lot of other topics in programming.
- How to declare a variable? Here you get to play around with variables, reading and writing into them.
When you can write data into variables you can now explore the number of data types that this specific language supports.
- What data types does this language have? Identify and understand the data types used in this language, play around with them, manipulate them, format, read and display them as output. learn also some tricks that the language allows you to apply to the data, string/char usually have a lot of functions in any language that you can apply.
There is usually a blare line between data types and data structures, in a nutshell, data types can be referred to as a variable with just a single value while data structures may be referred to as a collection of data types, not making any sense, try this.
- What data structures does this language have? Play around with data structures and while on it find built-in functions that can be used on these structures.
Understanding how data is stored and manipulated in one part of programming, the other part is deciding what to do with data given a certain condition, so next, we look at control flow, this includes if statements and loops.
- How is Control Flow implemented here(if statements and loops)? Learn how to manipulate data based on given conditions, read and display data within if statements and loops.
As you are doing all the above you would probably realize how at times you turn to repeat code a lot, there is a term for avoiding such, it is called the DRY method, which means Do not Repeat Yourself, if code becomes repetitive it then leaves us wondering why are we even coding at all. To solve such problems and many others, we use functions.
- How are Functions done here? Here our code can be made modular, dynamic, and avoid repetition, this allows us to reuse code as we see fit.
Remember when we asked ourselves if the language is functional or OOP, that is because while functions solve a lot of issues, OOP solves even more, with OOP you get to make code more fun with Inheritance, Encapsulation, Abstraction, and Polymorphism, these concepts deserve a reading on their own so do some research. OOP is mostly known for introducing classes, take this as a way of creating your own data structure(object) and how it is represented is all up to you.
- How are classes done here? With OOP we can group typers and their related functionalities.
With the above you are almost good to go, you can create basic to intermediate applications, but in today's time's, programming languages come with advanced topics, it would be great to find out what are those topics for that specific technology, these topics were mainly introduced to help developers develop applications using the best programming standards possible and to also flex🥲😜
- What advanced topics does this lang have?
Once you have done all of the above it is now time to put your training to the test and be like a superhero. I don't see any other best way than to recreate some of the well-known applications out there, you can also take some of the most used systems and try to recreate them such as a teller machine, and if you already had something in mind, an idea that you want to explore you can put your skills to practice and start coding.
- practice with real-world examples.
4. Join a community
To be the best, you must roll with the best, the reality of programming is that you will get stuck, even if you have the best google skills😂, so joining a community is the best thing you can do as a developer, engage, assist others even if you don't know what their problems require, this is another way of learning, ask questions as many as you can. You can join communities on these platforms:
You can also grow your skills with these platforms:
Most platforms are specific to a certain career in tech, it would also be wise to follow channels of like-minded groups on Youtube.
5. Get reviews
When growth is what you seek, then getting reviews of the work you do from peers, or generally, anyone is the best thing you can do for yourself. Remember that not all feedback is constructive and one trait you can learn is to not entertain people who are demotivating you from being the best or doing what you love.
6. In Short
This is how my learning process goes
- Understand the technology and its history
- prepare your development environment
- learn the syntax
- learn data types and data structures of the language
- use control flow in this language
- implement functions and use built-in functions
- implement OOP
- learn the advanced topics and practice them
- create real-world applications
Learning is a lifelong journey, it never ends, one best way I discovered to learn something new is by doing, putting in the practice, and engaging, do not be an Island. as specified before this is not the only way, it may not be perfect but it works for me. Thank you for reading.
I would like to get your thoughts and inputs in the comments