Are You Really an Engineer?
An engineer—someone who has been formally trained in a school of engineering (whether civil, electrical, or otherwise) and has been called before their association of peers and found worthy—has, at the core of their practice, a belief in the scientific process.
Distilled down to its very basics, this means that you construct a hypothesis, perform experiments, observe data, and change your hypothesis when the data point to flaws.
In the world of software development, an ‘engineer’ should have the same mindset. You should try alternative frameworks, styles, tools, and methodologies.
If you have a cherished belief in something and encounter new data or experiences that suggest your belief is wrong or even slightly incompatible with the hypothesis, you should change that belief.
Otherwise, you’re just someone who rabidly believes what the tribe believes, operating with received knowledge. That’s not being an engineer. That’s being a zealot.
However, that’s still better than someone who just uses or believes in something without a genuine opinion or experience but seeks to proselytize that belief as vigorously as a real engineer. That’s not engineering either. That’s being a useful idiot.
Worse, such a person usually doesn’t even realize they are using their lives in service of some commercial interest that couldn’t care less about their efforts, so in the end nothing is gained.
So if you believe Rails is the best framework ever made, try Elixir, try Next, try Laravel.
Still feel the same way? Yes? Great. No? What should change in your mind? What can you bring from those other frameworks you just tried back to your use of Rails?
If you believe GraphQL is the absolute best solution, try to build the same thing using pure REST. What’s different? Which solution really provides the best leverage?
Above all else, be brave enough to face the opposite direction from the crowd and turn your back on the latest trends—if that’s what the data and experience tell you, then it’s never wrong.
That’s engineering.