To me, the difference between a good and a bad programmer is efficiency. If it’s not the only, it’s one of the differences. Many of us write code for living. Most of us struggle to solve problems that we are assigned by the organization. If we hit a wall we try hard to look for exact solution on StackOverflow and some other similar places. Most of the time we find the solution, apply it and end up being happy and sometimes we end up being a hero who saves the day.
Some of us try to understand these problems and this minority is called inefficient due to their time-consuming process. They take too much time to tackle the problem. Why ? Because, they don’t want to move until they grasp it totally instead of patching or fixing it blindly with those magical spells. The truth is that this minority is responsible for solutions majority uses and answers they get.
A quote by Oscar Wilde is relevant here —
Experience is the name everyone gives to their mistake
and I would like to extend it further —
Learning from those mistakes, finding root causes, solving those and sharing that knowledge is called expertise
It takes time for sure to understand those magical spells which solve the problem but is worth it because if you overlook or patch that problem for a day, you will spoil your week on that if something goes wrong. Taking time to understand those magical spells gives us the ability to craft our own magical spells. Being profitable is like building a tower while being experienced and expert is like building a castle. If you don’t believe me, look at the history of those who are successful today. They focused on problem solving and they surely didn’t ignore it or patched it, instead they fixed it in right way.
So what about choices of languages and frameworks. Choose one and choose the right one not the known or popular one. Let me reveal another truth, most of the programs that are efficient and profitable today are using right languages and frameworks, not your new, fancy bleeding edge hype, So be careful with choices. The bleeding edge tools are not that evil, they are invented just to solve some unique challenges that you probably don’t have. If you do, go with these.
I can’t suggest anything other than what Martin Fowler says —
Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
So, how we are supposed to write better and human readable code ? Well, there are a bunch of tools and practices to save us from writing bad code, Linters, Formatters, Inline Comments, Docs and READMEs, better commit messages are there to help us write human readable code. If you think these tools are burden, You certainly don’t care about collaboration. If that is a requirement and you are the only one then it’s okay, otherwise one day you will be struggling to understand your code.
Be cool with experiments, try solving problem and make yourself well-informed and efficient. That is something that will help you in long run.
Good Luck and Happy Coding.