Upon graduating from college, I made a huge life decision to take on a new job in a new city at GE Healthcare. The role was a two-year rotational leadership program that allowed program members to change teams within the IT organization every six months. Our projects were technical and leadership based, which allowed us to gain experience both while learning from all of the great people on the various teams within the different segments of the IT organization. On top of the opportunity to learn such breadth in a short amount of time, we were frequently asked to present to leadership, and also, meet regularly with our Chief Information Officers. The trials and tribulations we grew through during those two years enabled us to learn our lessons and incorporate the expertise of the strong leaders we worked for into our circle of competence. As I’ve transitioned from leadership program to my current Software Engineer role, the need for both technical and soft skills has become apparent. Based on this leadership background, I’ve identified four soft skills that I believe effective developers embody: focus, optimism, communication, and integrity.
Focus
The technological age has fundamentally changed the way we communicate and work. We’re constantly messaged, e-mailed, and updated in a torrential whirlwind of notifications and interruptions. Our productivity suffers. Thoughtful and intentional software development requires time and deep work because our brain must work through the cost and benefits of different development decisions. To write maintainable, readable, and performant code takes time and brainpower, both of which are limited as a resource. Blocking off time and ignoring the world has become an underrated skill. Software Engineers must find balance and courage to do both for periods each day. For example, I use the Pomodoro approach to handle work sessions. The idea is to focus on with no distractions for twenty-five minutes followed by a five-minute break – you complete four rounds in a row, then take a long break of fifteen minutes (or more if you prefer). By doing this, I’m able to turn off Slack notifications, quit out of Outlook, and get things done! By doing so, you will be more productive and effective, benefitting the business as you can write stronger code, and release more impactful features for the users. A win-win situation :)
Optimism
Have you ever been part of a perfect project–one that hits every single deadline, has no requirement changes, and lives bug-free through each QA round? I never have. Perfection as a goal is wonderfully motivating, yet rarely achieved. Designs change at the last minute and we’re forced to scrap the original architecture of the design to implement it differently. Products are sometimes delayed due to contextual factors that aren’t in our control. Our team user tests before designing, yet users still use features unexpectedly. Even at 99.99% availability – production goes down and we scramble to solve the issue immediately. We take a deep breath and we thrive anyway. Optimism in the face of change keeps team morale high and reconstructs issues into challenges that we take on. It’s motivating and captivating as you work through difficult changes that lead to better results for the users. People respect positive and adaptive attitudes throughout those tough moments and then learn from them – a true gift as we grow in our careers. The best part? Your attitude and optimism are in your control. Control it wisely.
Communication
Between giving updates to the team during standup or commenting on RFCs, communicating intention with detail and context to convey your messages properly can be difficult as Software Engineers. Furthermore, we are consistently collaborating on design and architecture with our teammates and discussing product features or roadmaps with cross-functional team members – leading to potential disagreements. To summarize, communication skills are a vital tool in the toolbox for effective software engineers. There are a few rules to follow when communicating that can help drive a higher impact on the business and stronger relationships within the team.
Be respectful to others and be part of upholding that standard within the organization Be open-minded in disagreements, if someone disagrees, find out why and use facts to determine the best results Focus on results instead of being right or wrong Answer what, when, where, why, and who when communicating to give the correct context for others Keep your ego in check Avoid complaints without potential solutions
Although we communicate every single day, like any other skill set, we must practice to become better!
Integrity
Do the right thing when no one is watching – this is the essence of living with integrity. Developers can have access to private information (personal private information or company IP) to build the technologies asked by their leadership. The criticality of behaving with high standards of honesty and trustworthiness becomes indispensable when you do. Users that you have never met are trusting you to uphold their data securely – our company is trusting us to uphold the highest standards, such as password encryption. We must live up to that trust. Following team coding standards and team processes, even during production fires, can be difficult in the face of pressure and stress. Integrity calls upon us to follow them still! The multitudes of situations that require integrity are endless, yet part of our everyday principles we must live up to. Just remember the mantra:
Concluding thoughts
Reflecting on the opportunities to grow my leadership in a safe environment at GE brings about the feelings of gratitude. I’m very thankful that I was able to take on new challenges with the guidance of those who were much better than I was at solving them. It helped me understand the true power of those who were immaculate in working with people, and how developers can incorporate those same skills into their skillset – all it takes is a little courage and practice.