TL;DR building great software requires software craftsmanship skills, over the years I have learned that successful software companies have something in common on top of that : software engineers with great soft skills. This article describes soft skills that I believe are important for software engineers.
At Teads, we work in the competitive landscape of online advertising where rapid and solid technological innovation is a keystone of our growth.
Here is some context:
- Our mission at Teads is to foster a sustainable advertising and media ecosystem by funding quality journalism and respectfully connecting brands to consumers.
- We are competing for advertising budgets against big companies like Google, Facebook and Twitter and also lots of startups.
The advertising ecosystem is changing in major ways every year:
- Legally with privacy regulations such as GDPR in Europe, CCPA in the US and soon LGPD in brazil
- Technologically with Apple (IOS and Safari) and Google enforcing more strict privacy technologies.
- We deal with a lot of data with a low latency. We run millions of transactions per second in our exchange backend, ingest more than 100 billions of events per day, run 50 machine learning models in production making 5 millions of predictions per second. We also build SaaS web applications to connect our advertisers to our publishers.
Given our challenges and scale, software craftsmanship skills are important. They are the fondations of the engineering organization. It establishes trusts within the engineering team. Everyone knows how to do their job however I have learned that hard skills shouldn’t be the only criterion.
I believe that soft skills of our engineers are a key component of our growth.
Teads culture is built on innovation. It means working on projects that often require everyone to go above and beyond their comfort zone. Everyone in the company has the technical skills to do their job well, add to that some soft skills and the magic happens.
Here is the list of the most important soft skills for software engineers:
All engineers at Teads contribute to our growth and are responsible to drive the success of their projects. From intern to senior engineers, the ability to drive ideas, projects, user stories, and tasks to completion with great quality regardless of the technical challenges and roadblocks is key. Having a strong drive is a pillar of organic organizational growth.
Because the work we have to do is sometimes quite big, it is fundamental for our engineers to approach projects with pragmatism. We believe that building great software is a marathon, not a sprint. As a result, we do not want to jump on the latest shiny technology or the latest architecture without real technical and business needs. When we have to do it, we go with the most pragmatic and incremental way to do it. We avoid big bang approaches and favor incremental frequent changes with frequent releases to production.
We respect, listen and learn from each other. We sometimes make impactful technical decisions that not everyone agrees with. The ability for engineers to “Disagree and commit” is essential in order for the team to move forward as a group efficiently. This skill often comes with maturity and is very important for group cohesion. We focus on the positive things and build on top of it.
Giving a clear context at the beginning of a written document, a presentation, a meeting or a discussion is important to save everyone’s time. It is also particularly useful for writing pull request comments, naming a variable, an API, or writing documentation.
It helps engineers to understand coworkers, teammates, users, customers, or managers. It helps to improve the culture, the organization, the team well-being, to understand contraints from other engineers, requirements, business needs or how to communicate informations to others. It applies to web application development as well as programming API. Keeping a “beginner's mind” in all development and communication will help engineers build intuitive and simple software.
Out of comfort zone
Software engineers are most comfortable developing with programming language and framework they are experts on. The ability to contribute to code outside of the expertise domain or to talk to teammates on subjects they are not necessarily expert on when needed is important.
That’s why at Teads, we pay a lot of attention to both technical skills and soft skills during the interview. We have learned to improve our evaluation of soft skills over time. We also invest in training our software engineers to improve their soft skills.
Teads is hiring a lot right now, so if you want to join us in Paris, Bucharest, or the sunny Montpellier, please let us know!