Being what can be termed a ‘non-traditional’ programmer/’software-creating person’, (my university degree was non-STEM, which I chose for all the wrong reasons) my search for mastery in programming and adjunct fields (entrepreneurship, marketing) has led me to study and work with various languages. Each time the change came about because of external forcing functions. I entered the workforce in August 2000 as a programmer writing C++ on Windows, directly into the bursting of the great dot com bubble, and continued working and sharpening my skills for three years as I witnessed teams around me getting axed until it got to the day my manager called me into his office to show me two notices of termination – mine and his own. My desperate scrabble for any income to pay for my mortgage and newborn baby led to me to the Information Systems department of a non-tech company wherein I did anything asked of me, including Visual Basic (6.0!), and then learning and moving on into C# and VB.Net, and diving into SQL and Python on the side for my own enrichment. Oh, and those count the ‘niche’ stuff, like the custom scripting language used for automating the antiquated CRM the company used. I didn’t create the language but learned it very well, even expanding its abilities with C# dlls that could be called like COM objects.
In leaning all these languages I’ve noticed that the learning curve is bimodal: When I start out the curve is quick, and I begin using it right away. Then I slow down, bumping into situations that seem complicated. I then call a halt on new development and start learning very seriously, reading technical books and writing down stuff by hand until things click.
I think that what this shows is that one has to keep plugging, not to be satisfied with a local maximum but to keep aspiring, either to get better at what you are already doing (mastery) or to expand into new fields. The idea is that no matter what, you are always working your 7, 8 or 9 hours a day. Your day job isn’t challenging? Download some book PDFs of new programming languages or marketing or whatever and start studying.