What languages/skills to master to progress from senior to principal engineer?

2 points by seasonalgrit ↗ HN
(Edit: or, really, how to keep going once you are a senior engineer? particularly in terms of earning potential).

I have been coding for several years, in several languages -- general purpose, mostly data pipelines as well as server infrastructure. Language-wise, I did some C++ early in my career. I've actually been working with functional languages for several years hence, along with a smattering of Java, Python, etc.

I'm of the opinion that functional languages (and also Java) are not enough in and of themselves for me to continue to progress professionally at this point.

I've been thinking about next steps, and I'm considering throwing my energy into one of three directions:

1) C++ -- I've gotten the impression that doing C++ server infrastructure would allow for significant headroom in terms of earning potential (Google, finance), so I've been thinking of taking up C++ again and really becoming competent in it.

2) Machine Learning -- On the other hand, machine learning also seems to be all the rage, and that seems to center around Python, R, Matlab.... as well as stats and linear algebra.

3) Distributed Systems -- or I could dive deeper into distributed systems, which has its own set of concepts and practices to master.

Each of these seem like distinct directions to take. I only have so much time on the evenings and weekends so I want to leverage those chunks of free time well, and focus my energy in a profitable manner.

Opinions?

3 comments

[ 4.3 ms ] story [ 12.1 ms ] thread
In my (naturally limited, anecdotal) experience, "principal" engineer suggests skill with building (or "architecting") large systems, and understanding every facet from estimating effort to design to code to test to documentation, coupled with an ability to delegate chunks of work to other people and to mentor them.

From the technical skills you posit learning, distributed systems seems to me most in line with "principal"-level thinking, though machine learning seems pretty popular and ostensibly lucrative at the moment.

thanks for your thoughts.

the term 'principal' might be a misnomer; i'm really just brainstorming how to keep growing professionally, in particular in terms of earning potential.

If the goal is continued growth and to make yourself more valuable to your employer the key improvement in this step is underatanding the business extremely well and helping the VP and CTO to guide the work of the engineering team in a way that is beneficial to the business as a whole. That seems uninteresting to many but it's these people who turn their employers into successful businesses.