“If you want to change the future, become a software engineer”. Such a headline is not unusual these days. Some articles speak of software engineering as a “dream job”, that software engineers are better off than sports stars. Given the odds of making it as a professional athlete and the lifespan of most professional sports careers, becoming a software engineer provides better odds of success in most cases. So, what are the must-have engineering soft skills that successful software engineers need?
Just like becoming a professional athlete requires more than pure athletic talent, the profession of software engineering needs specific soft skills, besides what most people think of as “coding”. While coding boot-camps and online courses help familiarize students with methods to develop software, the professional software engineer has to develop their own soft skills to become effective. Producing useful code and building useful things with that code requires a mindset as well as a skillset, just as a professional athlete much have the discipline, team orientation and creativity to use their skills wisely. Here are the top three engineering soft skills that can make or break your professional software engineering career.
Engineering soft skill #1: Creativity
Since software engineers rarely start a project with a blank sheet of paper, they are often not considered “creative”. This does a disservice to the word. Creativity, as a must-have soft skill for engineers, is characterized by imagination, then turning those thoughts into things. Software engineers inherently build on what exists, they try to improve things incrementally, but along the way they inject original thinking into everything they do.
It’s easy to think of “brainstorming” as a creative process. It feels good to throw ideas onto the table and to imagine things in new ways. However, the engineer must be creative within constraints of time, technology and resources. The accomplished professional will probe ideas with questions like “what made that idea bubble up?” or “what are we trying to accomplish with this?” The better an engineer understands the purpose behind the project, the better they can be creative in ways to make the project a thriving success.
Engineering Soft Skill #2: Teamwork
Teamwork is another essential engineering soft skill, since most critical or ambitious software engineering projects are assigned to a team, not an individual. Startups and innovation projects require agile teamwork to determine priorities and ensure coordinated efforts across a wide variety of skills and roles. The agile process provides ample opportunities for feedback across teams and to ensure that everyone is on the same page. Engineers who communicate effectively, who think critically, make their teams better. In many cases, these teams and even team members speak different languages and have vastly different perspectives. A database engineer might be thinking in terms of scaling data tables using relational data model while maintaining data integrity and a programmer might be thinking of accessing that information through object model specific APIs and still trying to keep his/her application very nimble. How they work together has a direct impact on an overall system, particularly under varying server loads.
Engineering Soft Skill #3: Patience
Patience is a must-have soft skills for any successful software engineer. A professional disposition requires a great work ethic and a sense of patience. Everyone has their priorities. Dependencies are sometimes hidden across teams and systems. Those who are not patient, who cannot approach their teammates with respect and appreciation, cannot succeed. The next time you read a breathless account of technical breakthroughs, of organizations who churn out improvements in their systems like clockwork, consider how much work goes into each accomplishment. At the core of these organizations is a culture of learning, where everyone is willing to look at things with fresh eyes in order to address issues as they surface. Ultimately, being receptive to new information and willing to adapt to changing circumstances might be the hallmark of the successful software engineer.