I’ve been wanting to write this article for a long time. When I look back at my life and ask the question – What if I knew this already, how my career paths would have been different?
And this is a good question to ask yourself. You learn a lot about yourself in ways you didn’t know. So, in this article, I would share 5 Things That I Wish I Knew When I Started Programming (a little keyword streak there :p)
Okay, let’s dive right in.
1. Focus On Data Structures and Algorithms From Day 1
When I was in college, data structures was my favourite subject but I only learned what was taught in college.
I knew how to create all the basic data structures like ArrayList, LinkedList, Stack and Queues but this is the basic stuff. This is where the foundation is laid but I wish I knew more than this back then. Like Graphs and its applications for example.
My advice to all the budding programmers out there – Start focussing more on the data structures and algorithms. Create small projects like sorting visualizer or shortest distance finder or recursion visualizer etc. This not only develops the important concepts in your head but also you will have some brilliant projects to showcase at the right time.
Another thing to look forward to is problem-solving. This is the most important part of the developer’s life. You got to be quick in developing algorithms to solve a given problem efficiently. And the only way you can do that is to practice. There are some very good websites that challenge you with good computer science problems. Make use of them. Try these,
I strongly recommend buying these two books,
These books may seem a bit costly now but trust me it’s a treasure of knowledge and will set you off the right path.
Robert Sedgewick is the founding chair and the William O. Baker Professor in Computer Science at Princeton University and was a member of the board of directors of Adobe Systems.
2. Not Try To Learn Everything
This is very important lesson that I learned late in my small career.
When I was starting to code, I was overwhelmed by the technologies around me. There are only 24 hours in a day and it is your responsibility to make them count.
Unfortunately, I was poor at managing these hours back then. I picked one tech stack and then I read about something else and then I hopped on to the other one. It took me time to realize that new technologies will continue to pop up every second and it is important to stay focussed and dedicated to the one tech-stack you know better.
The saying – Jack of all trades and master of none is actually bad in this field.
The saying that worked for me is – Jack of all trades and Master of One.
You gotta pick one tech stack. Be it python, java, c or c++. I cannot emphasise enough how important this is. And if you will ask for my preference… I would recommend you C++.
The reason being is that this language operates closer to memory. So, when you will develop data structures with this language, you will know a lot more about the memory management that takes place. And once you know how different pieces work together, you can take this learning to any other tech stack like Java.
It will help you to adapt to any new ecosystem faster and easier.
3. All Code Is Garbage
Never get intimidated by someone else’s code and start running towards excellence and perfection.
Remember this – All code is garbage. I’ve heard Tech Lead talking about Google. He mentioned that Google rewrites its entire code base every few years?
All programmers write shit code and then they learn and write some more shit code. That’s how it works.
Let me share my personal experience. When I started coding, I wrote shitty code and thought my code is the best. Just because it worked, I thought I know how to write code. But then I started working for a big MNC and I saw their code. It was well structured, followed best programming practices (that I knew of), looked clean. I thought to myself, what have I been doing so far. This is the way to write code.
But when I started learning about Object-Oriented Programming and Design Patterns. I started seeing shitty code everywhere again. The same code that I thought is perfect was actually a bag full of crap. Like real smelly crap.
So, the lesson to learn from my experience is that all code is garbage and you will never find the most perfect code in this industry. Sure, some coders would be more talented than you and would write it better but then again there will be someone better than them.
Never get hooked on perfection. It stalls you.
4. Focus On The Projects Not The Technology
As I said earlier, technology will keep on changing and evolving every second of every day of every week. You will have to stay in touch with that. That is expected of you. But there is one very important thing that most of the companies look for in their potential candidate and that is the number of projects they have under their belt.
Projects are directly related to your knowledge and speaks of your experience.
There are many candidates who are well versed with Javascript, Java or Python but there are a few who have real-world projects to showcase.
You should start focusing on creating projects.
Create as many projects as you can and showcase them in your profile.
The best place to showcase your projects is via Github. Other platforms like LinkedIn is also a very good place to showcase your skill set to a potential employer. Make use of these platforms religiously.
You can check out my Github profile for a reference.
5. Watch, Read and Listen
This should come naturally to you. If reading, watching educational videos and listening to ebooks is not your cup of tea… well then… you have to make it your cup of tea. Develop that taste in you. Without this, it is very difficult to find success in the IT world or any other domain.
The thing is that most people stop learning new stuff and that’s the end of their career growth. They stall at that very moment.
In the world of information, everyday something new comes in and you should be vigilante for that stuff. If you are actively subscribed to the right news and channels, you wouldn’t miss it.
Just remember this – In IT everything is simple and you are the only limitation.
It takes 14 days to learn a new language and develop something useful from it. The only thing is that you should believe in yourself and just DOOOOOOO…
I learned JAVA in less than a week. You don’t have to learn everything about a language before you develop a production-ready app. Just the basics will set you off. If your basics are clear than learning a new technology is a piece of cake.
Learning along the way will help you more than learning first and then making a move.
Keep the hunger alive. Keep reading, keep watching and keep listening.
See you next time.