I've been working in the tech world for the better part of 30 years. I've worked as a "sysadmin", a "programmer" (don't call them software engineers), a smart card and crypto engineer, OS driver writer, and now as a security architect. Most of that time was spent working on the back of the backend, taking care of the dirty work of keeping things going.

Over the years several people have asked me what are the key things you would want to learn and be proficient at in order to do this job. Well, here's the answer.

Please don't take this too seriously, but understand the overall focus. Young "engineers" today tend not to care, or at least not care enough about the foundations, fundamentals, and the basics of how things work. They just want to "write beautiful things". OK then...

These are the key competencies you should have:

As you can see there is a lot here, but this list is not all inclusive. There is more, much more. Start here. It'll build a solid foundation. If you focus on the fundamentals, you will be able to learn better later, and switch work within the tech world as you find yourself attracted to other parts of it.

Happy new year.