I have been training a lot of new developers who have no idea about real world programming. All they have learned is bookish concepts in their bachelors and masters degree which is worth nothing for most of the IT companies.
The conditions of student is so bad, that the students passing out 4 or 6 years degree in IT, CS or CA cannot even design a decent HTML page.
Though there are lots of resources available these days over Internet. One can search around any topic and find documentations, videos to get started with. But, as I have observed, this does not lead to better programming skills.
It is because our education system makes us believe that, it takes high score on our degree to make a successful career, which is a plain lie.
Programming is a skill, and it has to be acquired. It needs focused approach, dedication, years of practice and the most important - understanding of what not to learn to become a good programmer.
Switch To Linux/Mac
Lots of students use Windows OS because it's easy. But that's where they go wrong.
Programmer's job is not to use easy software, but to build ones that are easier to use, and that requires power tools.
And the majority of the Windows OS users are not power users, and the things are designed for for simple users. If you need more power, start using Linux/Mac.
The most important benefit of using Unix based systems is that you use a lot of tools on daily basis that improves your programming logic directly or indirectly.
For example, take a shell/terminal application. Its been years since Linux/Mac system have it which Windows recently copied Ubuntu's Terminal application with some restrictions to it.
Switch to Linux or Mac as soon possible, make it your default Operating System and then do what you normally do with it - watch movies, surf internet in your favourite browser, and so on.
You may not like it in the beginning, but in long run, it will make you a better developer.
Learn Practical Programming
If you went to college, chances are you have learned some programming languages in colleges. The course content taught in Colleges is mostly theoretical.
And easiest way student think to learn programming is to join some classes of 2 to 6 months after they finish college education.
No, stop doing that. Stop learning lots of books and theories and start putting your knowledge into the practical. Go there and build something with your limited knowledge.
And while building something, if you feel to know more, go around and research on it. Learn something that gets your job done. Focus on practicality and not just mugging up the book or theory.
Learning through the experience, is the best learning. Theories are important, but only to sharpen what you've learned.
Trust me, out of so many years of programming experience I can tell you this. The sure shot way to remember the programming concepts more clearly, is to build something.
Learn Functional English
English might not be your primary or secondary language, but if your want to be a developer, then you need to learn functional english very well.
English is the language of the Internet. Most of the things happening all over the world are mostly shared in English. So if you want to learn new things, be updated with latest trends, then you must learn English.
Some people will say, I can't speak English well, so I can't be a good developer? No, that's not what I mean. You don't necessarily need to speak english well, but need to understand it. There's a difference.
If you can read english and understand it, if you can watch english movies and understand it, that's it. That's all you need to get ahead. You don't need to be expert, or scholar in English. So learn English!
Contribute to the Open Source
Now, lots of students asks me, "Sir, do you have any project idea for my college project?". Or, "what projects shall I do?" Or "I didn't learn much because I didn't get any project to work on".
Look, my friend. You don't need a billion dollar idea to learn programming. And frankly speaking, if you're in learning phase, you don't need to have a big project idea - something that nobody has built yet, to learn programming.
The world is full of fascinating problems waiting to be solved
Go search them. There are tons of open source projects out there who needs developer. Including the popular ones you've heard of like Angular, React, jQuery and so on. And including the ones you have NOT heard of, they are on sites like GitHub.
GitHub is a social coding platform where people share their project codes, come together and develop open source projects. There are many such sites, but GitHub is popular amongst them. There are hundreds of thousands applications that are still in developing phase.
Remember, software is never finished.
Just go to GitHub, signup yourself, start looking around and find project that you have interest in. Download the code, start using the software.
Understand how things are coded, check out it's issue list. See which issues people are facing and try to solve them. And if you can't solve them, find out bugs, or write articles on how to use them. The are also considered contributions which will also help you improve your programming logic.
Follow THE PATH
Now remember, this is really important one. The IT sector is changing rapidly. Before you finish learning one technology, chances are there will be more technologies ahead of you. And this is not going to stop soon.
Though this is true for all the fields, for IT fields, it can happen sooner than you expect. You need to be competitive.
If you want to make your career future proof, you need to learn how to survive this continuous learning loop.
And the path has helped me to stay ahead.
To follow the path: look to the master, follow the master, walk with the master, see through the master, become the master.
I will leave it up to you understand the meaning of this path. Because, it took me years to understand the importance and impact of these simple lines.
It's now a daily part of my life, how I learn, how I teach, and how I mentor my students. So, take your time.
Credits: Photo by rawpixel.com on Unsplash