Welcome to the Art and Science of Coding!
Why “art” and “science”?
Make no mistake, throughout my 20+ year career in software, most of my time and energy has naturally been related to building my engineering skills. Engineering practices are a topic that I continue to become more and more passionate about over time. Choosing software engineering as a career requires a commitment to continued learning and a life-long growth mindset. There is no holy grail or destination in the journey of a modern-day software engineer, given the variety of technologies and the rate at which they are changing. It should come as no surprise then that many of the topics I want to dive into and discuss on this site are highly technical.
At the same time, operating in any kind of team environment also requires soft skills. During the earlier phases of my career working as a consultant fresh out of college, I developed some soft skills. However, it was in 2015 after joining Pivotal Labs when I realized the opportunity to level-up these skills specifically as it related to team-building. The environment and people at Pivotal Labs were unlike anything I had ever experienced. As an engineering consultant, my primary responsibility was to teach clients extreme programming (XP) practices, values, and principles. This inspired me to deepen my knowledge on this topic.
As a team member, I worked in small balanced teams alongside product managers and designers. This was a refreshing and dynamic new way of working for me. Given this, I’ve realized how vital softer skills are when working in software teams. The most high-powered teams I’ve personally participated in are not consistently composed of experienced practitioners. Instead, they are teams with well-defined values and mature practices. These teams have also exhibited high levels of awareness and emotional intelligence. While software engineering fundamentals remain relatively consistent, software engineering skillsets need to evolve as technology evolves. However, your soft skills can continue to mature and apply regardless of the technical environment.
I am also fascinated by design-related topics and the interplay between software design and software engineering. Based on my experience working at Pivotal Labs, my personal definition of “software design” now includes elements such as user research and behavior in addition to visual design and branding. I’ve found there are a lot of parallels between software design and software engineering that will be entertaining to explore.
Therefore, the “artistic” side of software engineering is a topic that I feel doesn’t get enough coverage in today’s media. This is the creative side of software engineering. For me, this covers everything from code formatting to system design to refactoring to diagramming to pairing dynamics to team building, and everything in-between. These examples are just a few topics that I hope to explore in my writing here!
Regardless of your experience level, I hope to expand your existing technical skills or provide a new perspective for you to consider.
And if you do, I hope you’ll let me know!
All the best,