How to Stay Incorruptible Amidst Controversial Software Engineering Opinions

Mehmet Yildiz
Engineering Leadership Insights
5 min readJan 20, 2023

Special thanks to George R. NICA for his insightful review.

Have you ever been unsure about how to navigate controversial software engineering opinions? You may have come across headlines like ‘OOP sucks!’, ‘Is testing still necessary?’, ‘X tool is evil’, or ‘Is Agile dead?’. I can’t even remember how many times I had to relearn what I thought was right because I was confused on social media. Of course, there were many times when I actually thought that what I learned first was correct. Even my sentences above sound confusing, don’t they?

Photo by Brendan Church on Unsplash

It is common for software engineers to be very opinionated about their tools, patterns, and philosophies. In the field of software engineering, there are often multiple approaches to solving a problem, and different engineers may have strong preferences for their way. This can lead to debate and disagreement within teams and within the wider software engineering community.

So what is it that will show the truth like a lighthouse on such controversial and necessary issues to be understood correctly? How can I protect myself from getting caught up in populist debates and make the right decisions on big and important issues? Here’s what I’ve learned from my own ups and downs:

Invest in soft skills:

If you are a software engineer, most of your time is spent learning things and solving problems. This intense activity can potentially prevent you from investing in your soft skills. Sometimes, we may subconsciously believe that strong technical skills are all-powerful and view soft skills as less important or easy to acquire.

If you feel that way, I don’t have a magic solution to change your mind, but I can assure you that neglecting soft skills will ultimately be detrimental in the long run. It may take time to fully understand this concept, but it’s important to start reading about topics such as leadership, communication, and teamwork. If possible, consider working with a coach who can provide an outside perspective.

Develop self-awareness:

You may be familiar with the wise words of Socrates: “Know Thyself.” This phrase is often interpreted as the importance of understanding and being aware of one’s own thoughts, feelings, and motivations. Even today, according to the authors of “How To Become a Better Leader,” self-awareness is considered the most important trait for leaders to cultivate.

This simple but profound principle plays a crucial role in seeking out accurate information and methods. Although we may be discussing technical and external issues, we often react to external information based on the emotions and thoughts it elicits within us. By improving self-awareness, we can make healthier decisions.

Remain centered:

Controversial issues in software engineering can sometimes be in contentious and sarcastic language. (Think about the negative comments about PHP for a second 😄) Who of us would like to appear old-fashioned and resistant to change? The desire to maintain a positive image and the following the most popular idea can be tremendously misleading when investing in engineering projects. Despite all the discussions going around, learning the concept of centeredness and improving yourself in order not to lose your way will both allow you to learn from outside information and not be misled.

Use the tools, do not be used by the tools:

Nowadays, every product is marketed with its own culture. Instead of saying “I developed X tool, please use it,” you’ll see statements like “Our innovative X tool is 32 times faster than its competitors.” The second statement is much more compelling, isn’t it? It’s essential for companies to use cultural elements to sell their products — otherwise, no product would be interesting. We often come across great products through effective advertising, but it’s our responsibility to remain rational and skeptical about this appeal.

You can see engineers arguing about which tool is better than the other on social media or in companies. In such cases, it will be beneficial to learn new emerging technologies but to think carefully and make a collective decision before starting to use them immediately.

Think twice before downplaying well-established old concepts:

It’s quite possible that you’ll come across content that sees well-established things like quality, agile, and testing as unnecessary or outdated. It should not be forgotten that quality and testing have a history of more than a century. Neither quality nor testing is a matter only in the software industry, and the practices that have reached today cannot be easily criticized by being a very good programmer. In fact, we can easily say that writing very good code does not gain experience in matters such as quality, product, or processes. Such topics can only be properly understood with the resources of their respective fields.

We need to challenge even the most established systems and processes, but we can never underestimate their importance.

Clickbaits can damage your strategy:

One of the strategies in social media is to use clickbait to spark the reader’s interest. A clickbait headline is typically an unusual statement that questions your understanding of something. Although this is an opportunity for us to test what we think we know best, it can sometimes cause us to turn wrong.

I have also changed my mind many times thanks to the appeal of clickbait headlines, but I have also experienced that some phrases are very misleading.

Move beyond development — be a solid engineer:

As programmers, our main task is to create a product. We use various tools to accomplish this task, but sometimes these tools can become more important than the product itself. When this happens, we may find ourselves working for the tools rather than the product. This can lead to a focus on short-term goals at the expense of long-term consequences.

The difference between a developer and an engineer can be compared to the difference between bricklaying and civil engineering. Civil engineering requires careful planning and feasibility studies before turning projects into reality. Bricklaying, on the other hand, is more focused on building things on top of each other. Both are important and necessary.

The same applies to software engineering. Simply developing code is not enough. A solid engineer must have a good understanding of system engineering, must align their work with the product strategy, and must ensure that the code is of high quality.

In conclusion, navigating controversial software engineering opinions can be challenging. By investing in soft skills, developing self-awareness, remaining centered, and evaluating tools objectively, you can become a better engineer, stay objective and make the right decisions for your projects.

These are what I have learned throughout my career. Now it’s your turn to share yours. How do you manage to constantly learn new technologies and realize your projects with the right decisions? Most importantly, how do you stay incorruptible? Please share in the comments section.

--

--