My main tips:
1) Read a lot about what is out there. Reading viewpoints helps prioritize what you want to learn next. Talk to opinionated, passionate people and understand why they hold strong views.
2) Experiment with things well outside your comfort zone. Eg., a language that you may never get deep into, but can give you a new perspective.
3) Figure out what NOT to learn. There are so many new things and the rate is increasing. I feel I cannot afford to spend a long time learning the wrong things. So for example I focus on python instead of python+c#, postgres instead of postgres+mysql, linux instead of linux+osx. Spreading me less thin. But to do this you have to know why you choose X over Y, the reading and experimenting infom you for this.
4) Learning "technologies" is not enough imo, you need to couple that with theory to produce really powerful systems. Machine Learning, Crypto, Controls, Discrete, whatever you are interested in. You can learn this alone, but sometimes a course or two is the best way to beef up your theory.
5) I've come to think about digital systems having an "anatomy" similar to the human body. Different components are like various organs. Building complete, balanced systems requires understanding all the various types of organs. Assume you have blind spots, and seek to discover and master the organs (types of components) that are least familiar to you. You do this by inspecting other systems and seeing how they are composed and how that differs from how you compose your systems.
Very interesting to see what others say about this.
1) Read a lot about what is out there. Reading viewpoints helps prioritize what you want to learn next. Talk to opinionated, passionate people and understand why they hold strong views.
2) Experiment with things well outside your comfort zone. Eg., a language that you may never get deep into, but can give you a new perspective.
3) Figure out what NOT to learn. There are so many new things and the rate is increasing. I feel I cannot afford to spend a long time learning the wrong things. So for example I focus on python instead of python+c#, postgres instead of postgres+mysql, linux instead of linux+osx. Spreading me less thin. But to do this you have to know why you choose X over Y, the reading and experimenting infom you for this.
4) Learning "technologies" is not enough imo, you need to couple that with theory to produce really powerful systems. Machine Learning, Crypto, Controls, Discrete, whatever you are interested in. You can learn this alone, but sometimes a course or two is the best way to beef up your theory.
5) I've come to think about digital systems having an "anatomy" similar to the human body. Different components are like various organs. Building complete, balanced systems requires understanding all the various types of organs. Assume you have blind spots, and seek to discover and master the organs (types of components) that are least familiar to you. You do this by inspecting other systems and seeing how they are composed and how that differs from how you compose your systems.
Very interesting to see what others say about this.