So I was reading @jasonleow's post where he shared about his excitement of finally able to comprehend how programming works and how easy it is if you were to just do it step by step in what he coins it as Minimum Viable Interaction. Love it! He also accurately pointed out one important lesson that is lacking in alot of programming courses; computational thinking.
It got me thinking about my own programming journey. These 13 years haven't exactly been a bed of roses. Writing code is actually the easiest part for a programmer. But if you were to just settle for this, you will soon hit a roadblock in your journey.
When you start to work on a real-world application. Your initial code as you iterate on top of, eventually become a pile of mess that will come to haunts you. Troubleshooting will become a very troublesome process as your logic complexity grows and not before long you will reach a stage where you compromise user behavior... I can't even begin to count the number of times I struggled during a troubleshooting process and got demoralized so badly that it makes me wonder why am I doing this.
This makes me realize what really keeps me going for so long despite the numerous trials that were laid in front of me is this word called...
Because of passion, I do not want to just settle with just able to write code. I want to be able to write clean codes. Codes that anyone will be able to understand at one glance. I also want to be able to iterate on top of my code yet maintaining the level of complexity. Thus achieving readable and understandable codes at a glance. I also want to ensure my code is running efficiently, as well as able to write lesser and lesser code yet achieving the same logic.
There are so much to strive for and only passion will push you forward to seek for an answer and to be a better and better programmer.
In my years of interacting with programmers from all over the world. Ranging from freelancers to employees, I've seen programmers of all levels. Many of those who just want to get things done and merely write codes that work.
When you request for a slight change in behavior, they will grumble and complain none stop about how troublesome it is to make these supposedly small changes and suggesting it's better off leaving it this way and not touching it. This thinking will soon compromise the User Experience (UX) and creates stale code. This is why some programmers are not very good at UX because they force the user to follow them instead of the opposite.
On the other side of the spectrum, a better programmer will ensure the code being iterated on top of is still easy to maintain and if it's becoming complex, they will refactor to ensure the readability remains. That way, you won't be afraid of the code as the flexibility of change is always there.
So what exactly do you need to learn next to be a slightly better programmer than the average?
Learn these in the following manner:
- Object-Oriented Programming (OOP)
- Object-Oriented Analysis and Design (OOAD)
- Design Patterns
Once you have learned these 3 topics, you would have been able to write codes that is so much better many who settled down.
The next step then is to learn about refactoring codes, Test Driven Development (TDD), understanding how the database works, how programming works, dealing with memory efficiency etc...
Yes! There is so much to learn and this list is not even exhaustive. Personally, I feel I still got a long way to go too. This is why it's very important to have passion. Without passion, you will not seek to become better.
If you dont seek, as time goes by you will find yourself becoming a...