Technical skill alone is not going to advance your career as a programmer. In the last two years I've received questions asking what I felt would be the golden ticket to career advancement. The question is usually peppered with specific examples, things such as "do I need to learn language X?" or "perhaps I should focus more on data structures, algorithms, or even infrastructural knowledge?".
Yes, we, as programmers, need to keep afloat of many differing technical skills. Yes, it is daunting and unclear what will best advance a career, especially if what you are currently doing as a professional is already murky. "Full Stack" is a rather bogus term that seems to sugar coat the ideas of "roundedness" and "balance" in a programmer's skill set. The ability to parachute into unknown territory and still manage to become a local is a remarkable skill, but it is not found entirely by refining computer related expertise for if you do you become a one-dimensional programmer.
The seed of this line of thought was inspired by Patrick McKenzie's article Don't Call Yourself A Programmer, And Other Career Advice which is well worth a read, but I am going to expand on the topic with a few areas I don't think Patrick explores that I've felt have aided me.
Do you understand the ins-and-outs of business? I promise you it's not as intense as learning the ins-and-outs of error-correcting codes, the minutiae of details regarding LSM- or B-trees, or the specifics of the fast-fourier-transform algorithm. Knowing the mechanics of business helps you better weigh options when working directly on whatever it is you are programming to be sold. A great book for this is The Personal MBA.
Do you understand other people? You may not care to manage people but reading about leadership and management will endow you with newfound abilities to better work with peers and managers alike. Learning more about management and leadership also allows you to see what kinds of management styles are out there and whether or not you should be content with how you are being managed. My favorite leadership book of last year was Turn The Ship Around! albeit not the only fantastic book on leadership and management I've read in the last few years. Bonus points if you pick up a few top-tier parenting books. I find they often teach me a lot about how to better interact with other people in addition to my own children. The first I ever read that stuck with me was How To Talk So Kids Will Listen, And How To Listen So Kids Will Talk.
Do you get how to write prose in your native tongue? Writing is ingrained in what we do as programmers, but we need to be honest that we are still employees that have to write emails, send messages on chat platforms, prop up documentation, and so forth, all in a language not fit for a computer. Learning how to write well drastically improves your ability to communicate effectively with a time tested asynchronous format. Probably one of the best "practical" books with concise tips is 100 Ways to Improve Your Writing.
If tasked with giving a talk could you whip up slides and enthrall an audience in the allotted time without fuss? We practice public speaking each time we open our mouths to another human being yet many of us don't consider that "public speaking". Enhancing your ability to communicate with spoken word and body language drastically improves your capacity to convince others of a course of action, improve relations with your peers, and rally management to give you a promotion. One of my favorite and no-nonsense books on the subject is Demystifying Public Speaking.
Could you, left to your own devices, dream up a number of non-computer related topics you'd want to explore? If the things you are reading only fit into the categories noted above, it might be worth purposefully pursuing ideas that are external to your field. Everything you explore need not be non-fiction, either! Here's a sample of topics from my own current explorations:
- A new form of matter
- A biography on the bassist Flea
- How English has evolved in the age of the Internet
- How trees communicate with one-another
The more you gaze into the abyss, the less you are actually in an abyss; if you are in "box-mode" all the time with your chosen field, the light on your candle from within the cave will eventually grow darker and darker as it starves of oxygen, but use the same candle to look in different places for light switches and you'll start forming pools of light to help you better see the world around you. Exploring different topics is how we discover disparate ideas and connecting disparate ideas in unique and useful ways is is how we innovate. Stop being a one-dimensional programmer and get out of your box from time to time.