My name is Benjamin Cane and I am a Distinguished Engineer at American Express.
Personal Excellence is the philosophy of developing oneself to reach your full potential. You can apply this philosophy to both personal and professional worlds.
Like a Carpenter, Musician, or Architect (buildings), Software Engineering is a Craft. We, as Engineers, are
The pursuit of Personal Excellence as Software Engineers is the pursuit of becoming experts in our field.
Craftspeople must be familiar with the tools of their trade. Becoming an expert means more than just familiarity but also precise use of those tools.
For software engineers, our tools are Frameworks, Libraries, and Platform Services.
Techniques are a key part of a craft; techniques differentiate between a quality product and a mass-produced one. As a craftsperson, we should constantly be focused on improving and learning how to apply the techniques of our craft.
In software engineering, Design Patterns, Algorithms, and Standards are our techniques.
There is the concept of apprenticeship in many crafts where an experienced expert will teach and mentor an upcoming apprentice. While schools often can teach a trade, the mentor and mentee relationship offer more than just knowledge. But rather a transfer of experience.
In software engineering, this is seen as mentoring, which can happen both organically as part of a team structure or through personal relationships.
There are many specialties within Software Engineering, Machine Learning, Distributed Systems, Web/"Full Stack," etc.
Find a specialty that interests you, and focus on learning as much as you can about that specialty.
While it's key to specialize in a subject or two, it is just as important to be aware of the other specialties.
Having a little experience in other specialties can give you a better perspective on your own specialty.
Like any skill, Software Engineering (coding, design, etc.) can degrade over time. It's important to keep your skills sharp by using them daily.
If you find yourself over-indexed on one skill i.e., Coding or Design, do these things*:
* These can be worked into your 9-5 job and do not have to be "extra" or "at-home."
As you specialize in software engineering, you need to be aware of and in tune with the future of that specialty. Technology is ever-changing; what is new today is tomorrow's legacy.
Use social media, blogs, conferences, meetups, or foundations like CNCF.io to date on new technologies.
As you practice your skills and work to hone them. It is important to incorporate the new and upcoming technologies you learn about.
Make them part of your side-projects, contribute to interesting open-source projects in your space. Experiment with what's next so that way you have the advantage when tomorrow's technology is today.
It's important to have a couple of mentors that you can learn from. Different people have different perspectives. It is best to pick mentors invested in helping you and give you a different perspective than what you have today.
Just as important as it is to be mentored, it is important to mentor others. Not only can you provide a unique perspective and experience to another. To teach something, you must know it well enough to explain it. This often pushes you to understand your own experiences better.
LinkedIn: Benjamin Cane
Distinguished Engineer - American Express