And knowing what problems should NOT be solved (by tech). Not everything needs a tech solution. There may be many reasons for something not needing a tech solution. The only way you’ll get to learn if a problem needs a tech solution is the use soft skills to talk to not-tech people (often “the business”). Note the not-tech people might think they need tech, or new tech, so you’ll have to figure out by talking to them what the correct thing to do is.
I don’t know how many $$$ I’ve saved companies (as a developer or architect) by challenging them on _if_ they really need
shiny new tech thing to solve their problems. Can it be done manually/using existing tools within acceptable time/effort? Can we simply accept not solving the problem? Can we wait with solving the problem?
The thing is, it’s always a tradeoff. If you choose to go do a tech solution to a problem, you are spending resources (people’s time, people’s energy, budget, enduser goodwill, your own focus and bandwidth, etc). And if you are spending resources solving a problem using tech, that did not need to be solved using tech, that means you have less resources to work on other problems that really do need tech solutions.
In general for the “mindset” part of your question I would say learn to figure out the tradeoffs in every decision you make yourself or decision you provide an opinion for. Everything is a tradeoff; doing A means not doing B. You always need to know what tradeoffs are for anything you do.
Edit: Also, always build the simplest possible solution that does not prevent you from improving on it later.