Benjamin Cane PRO
Distinguished Engineer @ American Express building payments systems. Author: https://amzn.to/3kuCFpz, Thoughts, & Opinions are my own.
Hello, 👋
I am Benjamin Cane, 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 Craftsman Craftspeople.
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 a software engineer, you need to be aware of and in tune with the future of your specialty.
Technology is ever-changing; what is new today is tomorrow's legacy.
Use social media, blogs, conferences, meetups, or foundations (Linux Foundation, Cloud Native Computing Foundation, etc.) to keep up with new technologies.
As you learn about new tools and techniques, it is essential to use those new skills.
Experiment with what's next so that 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
Blog: BenCane.com
Distinguished Engineer - American Express
By Benjamin Cane
As Engineers we are always developing software and systems, but how do we develop ourselves? How do we improve and get better at what we do.
Distinguished Engineer @ American Express building payments systems. Author: https://amzn.to/3kuCFpz, Thoughts, & Opinions are my own.