Best way to learn anything
You remember 5% of what you hear in a lecture and about 10% of what you read. If you have visual and audio inputs you remember more, let’s say 20% and if you have a demonstration you can go up to 30%. This is about the maximum retention rate for passive learning.
To go further, you need to be an active participant of the lesson. So, if you have group discussions you can remember more: 50% of the information.
Next steps are practice by doing, where you remember about 75% of what you practice.
In order to learn software development you have to get here (active learning). It is just impossible to learn programming without well… practicing. It is the same as swimming, painting or singing. You might have a natural gift for this, you might be good at it, but in order to do it professionally you have to practice. The more, the better.
I will continue about how to practice software development when you are just starting, but there is yet another learning method, the most efficient one.
You learn 95% of what you teach others!
Remember this, as it is a foolproof method to learn anything new. Do a good job at explaining it to someone else and you will definitely remember everything about the shared knowledge.
The principles above are known as the Learning Pyramid , where the worst performant are old-school lectures and the best one is teaching others. Of course, you will probably make a combination which works for you, but we will see in the following paragraphs how to actually implement this system in order to be a better software developer.
Now, I know this works, and I will write a few examples below, but, as always, results might vary. The number one parameter which dictates how much you can accomplish in a task like this, is well… yourself.
In this regard, it is quite simple, if you invest time and energy into something, it grows.
You need discipline, focus and the right mindset to achieve 100%, but once you do it, the results are tenfold.
How to learn programming
This is especially important if you are just starting out, but can be also used by senior developers, if you wish to learn a new technology, transition on a new project etc.
1. Personal projects
Number one on my list are personal projects. This is by far the method with the highest degree of satisfaction and experience. When you work on something that you are passionate about, there is nothing that can stop you.
A personal project is something that resonates with you, your hobbies or just something you like. All you have to do is identify something you really want to do and how you can integrate it with the technology or language you want to learn. Think about something that will keep you working late at night and will offer you a great deal of accomplishment when you finish even a small part of it.
I will give you an example. In the first year learning computer science (a python course), the students were given the option to make a small practical application, a “library” app, which could account for a part of their grade. The project was already selected and the results were not great, only about 5 students deciding to go ahead and implement it, with mixed results.
When it was my turn to oversee the practical aspects of the course, I made a small change in the requirements: the project had to be a personal one, based on original ideas. Their first task was to find a name for the application, identify the target users and make a short description of the functionalities.
The results were amazing, with over 30 students participating in what became something similar with a small conference, with projects ranging from unique games, dog shelter apps to donation platforms and music editors. All written in python, of course.
What changed was that the students were working on something they actually liked… who would have thought 🙂.
So my advice is this: pick something you wanted to do for a long time, find a language/platform you wish to use and go ahead, do it. It might be something simple, like a game of life I wish to implement in HTML/JS, or something more complex if it is needed. Yes, it is time consuming, but so is watching Netflix.
2. Online resources
Number two on my list are online resources. Everything you need is already there, online. And usually free. There is no reason to not use the resources and this is equally important also when you are working.
There are thousands of websites and platforms which can be used to learn programming. Starting from algorithms, basic concepts to high level programming and rapid app development, the sky is the limit in this regard.
For example, a good starting language is python and I would recommend codecademy.com for the free course, but there are a lot of other platforms where you can get all the information for free. Think about w3schools.com, MIT free courses and so on.
Google is your friend here and actually an important skill. Knowing how to search for information is very important and can save you of a lot of wasted time when something is not working as expected.
The elephant in the room here is of course, stackoverflow which is a good resource when something breaks. Here, I have a single advice: use it, see how others solved the problem, then write the solution yourself. Don’t copy-paste code because you will have what is called “code-spaghetti” and you will most likely regret it.
That being said, the urge is very high to just use it, especially when there are a few lines involved, and it is a case of “let him who is without sin cast the first stone”, but never use code if you are not sure how it works.
3. Courses and boot-camps
I have mixed feelings here and mostly warnings. Yes, you can definitely pay for a course, be it online or offline, you can be part of a boot-camp, workshop and so on. They are very effective if there is something specific you wish to learn. As I said before, if you spend energy on something, it grows (this is something I learned from Colin Whitfield and is one of those thing that make a lot of sense, just that you didn’t think about it before).
That being said, having a dedicated trainer saves you a lot of time. You can use this in two cases: when you have absolutely no idea how to start, and when you are not disciplined enough to learn it yourself. Companies do it all the time and it usually works, but it can be a hit and miss.
The warning is this: you can learn something new a lot faster, but a course will not make you a developer. It takes years to become proficient and unfortunately there are a lot of fake courses and people which promise a lot and take a lot of money by straight-out lying about the results.
So again: if someone asks money and promises you that you will become a top developer in a few weeks, leave.
The closest thing I saw that kind of worked was a retraining course created by a university and a private company, which took 2 years!
So as a final thought, use this, in small doses 🙂.
4. University degree
This is tricky and I am obviously biased, but let me tell you this:
A university degree is not mandatory, but it sure does help.
We did our fair share of hiring and sifting through CVs. One of our must haves was a background in the industry. Shortly put, if you have a Computer Science or similar degree, it means that you spent at least 3-5 years doing this. It would be absurd to hire someone and then train him for 3 years before the person could become productive. It does happen, but it is rare.
Of course, if you are disciplined and really like the domain, you can be a self-taught programmer. In this case, your portfolio and previous experience are the ones which can balance the scales of not having formal training.
My advice is to go for it, if you wish to pursue a career in this domain. As usual, if it involves going into a lot of debt, please don’t. Find a way to work in a more accessible part of the industry, like QA and try to educate yourself at a lower cost. This is not such a big issue in most of Europe but it might be one in USA.
During the learning period, take a look at number 1 on the list. Do as many projects as possible and implement as much as you can. This is what you will remember when the courses are finished: the practical projects that you implemented.
I won’t spend a lot of time here, this is obviously the first step before you look for your first job. I recommend you make a good analysis of the possible companies that you might wish to work for in the future and prepare your CV for the internship interview.
There are other tips in this regard. First, always get a paid internship. From my point of view, if you work there, you should be paid. If the company does not put you on doing “real” work and thus believes that you should not be paid, there is no reason to lose time there.
You will learn a lot of stuff while you work, so look for a good company which is very clear about what you will be doing during your internship. Small companies might give you more of the real deal, but take care to not overwork yourself or get too much pressure too fast. If this happens, talk with your mentor and find solutions.
There are several ways to tackle the interview part. I would recommend two:
- Make a list on LinkedIn with the companies you think are a good fit, read the online reviews from current and former employees and send them your CV with a clear message specifying you are interested in an internship position. This is not different from any normal interview. Most companies will present offers to interns which did a good job during internship, so do your best to learn and deliver value for your team.
- As a pro tip, take your CV, print it and knock on their door. Ask for a HR manager and deliver your CV personally. This will add extra points for your chances to be selected. Never underestimate the power of showing up.
- There always is a technical interview. Prepare for it thoroughly, there are dedicated websites and tutorials which can help you a lot. This part will be as difficult as the higher ranking the company is situated.
(Bonus) Teaching others
I left the best part at the ending. What I mean by teaching others is not necessarily that you should become a teacher, not by far.
What I mean is that you can do the following:
- Form working groups with your colleagues when you are preparing for a test or just doing your home assignments. People asking other people how they solved something is the basis of stackoverflow’s success. Use it locally and wisely and it will work very well.
- If you are already working and you wish to learn something new, make a short 1 hour presentation about it and show it to your team. You will be amazed by how much time consuming it is, but it will help you clear any knowledge gaps you have in the matter
- Make a blog post about the thing you wish to learn. I had difficulties preparing for my last exam, so I started to write posts about the topics, which made it a lot easier. Check this one for example.
- Make a video about it, explaining the concepts to whomever might concern, you will be surprised to know how many people might be curious about the same topics. You can then post it on any social media you are comfortable sharing.
I hope this helped, please add your opinion in a comment. Also, we are working on a book (Software is Easy. People are hard), so please subscribe to keep in touch with our latest posts and progress. Thank you!