One of my first CS classes at ITESO was taught by Carlos Nafarrate. It was my first interaction with a well-known engineer. He was a distinguished member of the iEEE and just exuded professionalism. One of the things he taught us was to keep a tight agenda and to constantly take notes. To keep a journal and to reflect on the work that we had done and to always keep improving our craft. Back then, I did not understand that he was giving us powerful advice on how to achieve mastery.
Becoming a great engineer requires constant iteration, reflection, curiosity, and a deep sense of care for what you do.
Experimentation & gathering data
Great engineers are comfortable with experimentation and data. A culture of experimentation enables an organization to try new things. Software engineers today have access to a lot of data. The key is learning how to take that data and use it in a way to solve problems; problems that can guide business outcomes.
But living in the numbers will only get you so far. Reflection is just as important. Engineers need to constantly make decisions on the correctness of their implementations. Achieving a solution that is “correct” requires constant reflection and achieving the right balance of simplicity and maintainability.
Collaboration
Influential engineers know how to motivate others. They are collaborative in their approach and open to new ideas. They know that the best ideas come from iterative work. I cannot stress the importance of collaboration enough, especially in an organization like Wizeline—built on distributed teams and a global economy.