Many of my colleagues often ask me, "How do you know programming so well?"
It's interesting that even though I have never tried to become a programming expert, many people think so, even other "experts" :)
For me, programming is a skill.... like martial arts... and I want to be better in it every single day. Hopefully I will master this art every day a bit more.
So, when I discover something that "opens my eyes" in any way regarding programming I am very happy. Striving for the "right set of skills" changes the way I think... the way I work... the way I live...
At some point I realized that the most productive and the happiest developers I worked with had adopted this idea of "mastery" as their philosophy.
Colleagues who want to learn how to really use the true power of programming, not just copy logic from others who have already made solutions to different programming issues.
Ever since I've tried to get closer to this ideal myself.
However, while I've mostly been aware of the following;
To be an expert on the hottest things not on the hottest tools
Many people are chasing the next shiny object and pursue tools, not fundamental needs.
Technology changes. New technology is introduced over and over but fundamentals remain.
Become an expert at permanent things such as data cleaning, tables merging, dashboarding, data automation, not at very exclusive tools working on isolated platforms, etc.
But don't get it wrong, it's needed to master the best tools of the time. Everything will be grounded on fundamentals and the tools must be used as helpers. In fact, every new tool becomes easier to learn because they are just tools that do the same thing but faster and better.
If you knew it, you would do it
Focus on results, knowledge is the capacity to act
Reading a programming book of many pages end's up with plenty of ideas but in the real world, nothing actually happens.
Don't focus on accumulating learning but on accumulating results. To transcend the current situation, it's actually needed to change the reality. And, what changes the reality is results, not knowledge. Knowledge is not kinetic power but potential power. Applied knowledge is power
And never allow resistance to get in the way to implementing the new tools. Always use the easiest of datasets and implement the new technique. Put a formula into practice, see how it works, how it fails. See what happens and tweak it till it works.
You learn what's in your experience.
In the journey to programming mastery the worst number is ONE.
One technique to solve a problem. One single use of a tool/technique. One tool studied one time.
To become a true programming master, it's fundamental to learn one thing many times and go many times for that one thing.
E.g. know all there is about performance - it matters
Study something when you don't know it and study it again when you know it. The best part comes when you study something you start knowing. The tool becomes increasingly more predictable. Confidence is built to try new conditions and scenarios. Confidence must be growing contoniously
One becomes resourceful...
Keep and refine a library of programming techniques and wisdom
Keep the programming findings properly sorted out. Whether to use notes, a library, samples, etc.
Keep your own insights as well as those of others.
Sooner or later, they are needed when complex or new projects are faced.
Work persistently - it takes time and effort to gain programming knowledge and to gather a comprehensive library.
Collaborate with others in order to get access to programming insider techniques and wisdom never been thought of.
Nothing will ever happen until someone make things happen.
Never try to be an expert
Main goal is not to be an expert, instead, it is to be useful.
Become useful for the organization and others in the office, is in advance of being labeled as an expert.
A practical way to be useful is becoming really good to know how to clean data well, how to find patterns in the data, how to extract information from tables, how to automate the creation of charts, and more.
It's the very skill to get certain things done that makes you the one transcending the 10% of things that bring 90% of the trouble. Such as messy/unstructured data, routine tasks, etc.
And becoming good at things doesn't come from the ego but from a genuine desire to serve.
Being good at things is a consequence of your desire to serve not to be smart.
Do things right - then, do right things