Writing this post in no way makes me a good programmer. I have been always collecting some points(online resources and some through experience) regarding how to always improve as a developer.
This post would serve as a reminder of those points.
So here is the list:
The general stuff
Know that you don’t know everything(and don’t bash yourself about it either). Just be ready to learn.
The technology field, from what I know, is right now the most dynamic of all the fields, specially if you look at it as a profession. The industry keeps on moving forward at a very high pace. Thinking that you know it all, might seriously hamper your progress. It is equally important that you are not cursing yourself about not knowing the next hot technology. Just keep an open mind, observe if there is something that really excites you and then start learning it. Also, there is no issue in taking small steps. I worked hard to learn the LAMP stack, got my PHP certification and then came in the MEANs and MERNs stack and I had to start all over again 🙂 .
Having focus really helps.
Being a developer you are always torn between what language to choose for your work or which one to learn next. You want to be the Frontend Hero, the Mobile app Ninja at the same time(and there is no reason you can’t be, specially with cross platform stacks). But a good rule that I found useful is to not run after too many technologies at once. Although it depends on how much time you can devote to learning, 2 technologies at a time would be enough to keep your mind churning. Your mastery over one tech. can also make learning the other faster and easier as they may share some common concepts. This will also help you with setting better goals. From personal experience: Trying to be everything, sometimes you might end up being nothing 🙁
A strong base is very important.
Whether it be working out in the gym or in front of your computer, strong “core” really helps. I realized it one day when I stuggled with a problem on some Online coding competition for 4-5 hours. After solving it I was giving myself virtual pats on the back, only to see some other fellow do it in less than an hour! I asked him how did he do it, his answer – it was a simple dynamic programming problem. Only if I had focused more Algorithms, I would have identified the problem easily. This is just an example, you might not be solving dynamic programming questions in your day to day work as a developer, but the point to take home is – “Devote some attention to learning the fundamentals of your trade”. A basic list for an app. developer can be :
- SOLID principles – they might not be directly applicable on all languages, but they give you a perspective on what to keep in mind when building your application.
- Knowing the most prevalent data structures and algorithms.
- Knowing your tools, like the IDE, build tools, your OS. If used correctly then can enhance the productivity and quality of your work.
- Databases – Usually with applications you need some form of persistence and it’s a good idea to learn database system well.
- Debugging – Really helpful if you are professional, find the tools that will help you with debugging, not only it helps you find bugs but it also help with learning the language more deeply.
Learn and apply
This has specifically happened with me, I have read so many technical books, watched plenty of courses. They gave me information but I wasn’t able to convert all of that into knowledge.
Reason for which was lack of application of the stuff that I learned. I kept on moving from one learning resource to another. This is what is called the “Illusion of competence”. When you are going through the material, you feel like, everything is great and you understand everything. But, what we miss during this sprint through the material is the little important details. Without practice, we fail to make the connections, that allow us to really think and build solutions in that technology. So make sure that whatever you learn, apply it as well. Where to apply it? Make a sample application(too many to do list apps?, be creative, maybe make a smaller version of a bigger app like a CRM), it might feel like taking too much time, but the experience will be enriching and you might also enjoy it as well.
I have more to say on this, but will continue in another post.