It's fairly easy to add updates to your code to solve an issue. It's easy to get a directive from a director or project leader or even a request from a teammate and simply execute it.
The challenge comes in looking at problems from a standpoint of future proofing. No code is perfectly future proof, of course, but it's worth consideration.
Recently I was asked to add some tracking functionality to one of our form submissions. In and of itself, it wouldn't take too long, but I started to wonder.
What if we needed to do the same to future forms? Would I always have to dive back into the code in the future?
The cost of making this sort of functionality so specific just for the sake of speed today could very well cost additional time in the future.
Instead, I'm spending time now looking into making this sort of functionality apply to all of our forms, or at least provide the opportunity for it to do so. It might be taking me longer now, but having this capability will be truly helpful in the long term.
Measure the nature of your work and determine if a short term solution is truly worth it. If you can spend more time on it now to save you more time later, that may be worth your time investment alone.
Soft skills are as critical as technical skills for a software engineer. No one works in isolation. Each person has to deal with teammates, colleagues, managers, etc. Therefore team interpersonal skills are essential too. Soft skills include things like good communication, honesty, teamwork, integrity, organization, empathy, etc.