Here are the 5 pillars to be a better Software Engineer:
Master the basics
Know your basics. You can learn any language or framework afterward.
Learn to communicate by writing
Even if you love a sync way of communication like phone calls. You will still spend 90% of your time communicating with writing.
Learn how to communicate your ideas and arguments via writing. Use Twitter, a blog, or a diary to practice. Practice, practice, practice. There’s no other way and there is no shortcut.
Be interested in the product
Your interest shouldn’t stop at code. Learn more about the product you’re working on. The design process, the marketing process, etc. Have a broader knowledge of the product. This will help you take into account other areas when writing code.
For example, you know the product will have another feature in the future and you may architecture the code in a way to add it easily. With no knowledge of the product, you don’t have a long term vision. And you’ll end up with some spaghetti architecture and code.
Learn about business
Every product follows the market. Even if you have the best product ever built, and you can’t find a market for it, it will die.
Learn about offer and demand, competition, and business in general. Knowing these basic principles will make you less anxious when priorities are shifting, things are moving quickly or when you are abandoning that awesome idea no longer wanted by the market.
Know how the business side of a product works. It’s always worth it.
Be a manager of one
A manager of one is someone who can work with little to no guidance. Dividing the work, prioritizing, and working toward a goal. You don’t need someone to tell you what to do. You can take an idea and turn it into a product.
The best way to learn this is by being a maker. Build small products/projects. Own them from end-to-end. Publish them publicly. They will help you be a manager of one, but also build your portfolio.