When I first started my career, I thought being a stellar software engineer means writing correct, performant, and elegant code, having deep understanding of programming languages & frameworks & operating systems & networking & databases, etc.
These are foundational to do well in this field, but overtime i learned that this is not the hardest part — it takes time and practice to get better at thinking like a computer — but that’s mostly what it is: learn/practice to think like a computer. It’s a craft, like carpentry.
And I come to realize there are people who are amazing at these things, but still make decisions in their work which are suboptimal. There is no direct correlation with intelligence and being a software engineer.
The harder part, and the less defined part, is the soft skills. How to learn, how to prioritize, how to resolve conflict, how to get help, how to leverage for impact, how to turn ideas into execution, how to think out-of-the-box, etc.
I am passionate about the craftsmanship of software engineering, but more importantly I have become more aware that it’s just a craft. There is much more to it than that when it comes to a fulfilling career (and life).
I think this applies to any field. Knowledge/skill is fundamental — but having the ability to combine knowledge/skills with ideas and purposes, and generating values you are proud of, is what matters the most.
Not to trvialize craftsmanship in any way. What I was trying to express was that (1) excellence in hard skills also takes soft skills to hone (2) avoid using craftsmanship blindly or against your values (biases in AI development is a great example)