Timeless advice for any software engineer!
The one thing to add (related to 1 and 3) is:
*do not focus completely on the technology. learn what's around it also*.
I once worked for a company where 1 week/month the managers would work in 1 department (as regular team members). With the hands-on feedback, they would improve the process/team/business. Needless to say, that company was making profits in the 2008-2009 "dark-age period".The main lesson for me is that software is the business where you learn about & improve other businesses. The value is that you get to understand better the world (business) around you. That way you can avoid building "innovative products" that no one needs.