title

Is Programming Enough? The tales of a software engineer

David OyinboApril 28th 2024

When the topic of software engineering is discussed, it is often around hard skills like programming, design, devops and what not. A key aspect of software engineering — at the risk of offending the hobbyists — is the aspect of making money. Money is (usually) the driving force of a product and it becomes an issue very fast given that most software are business driven.

 

Many companies have drowned not because of the fact that they don’t have experienced engineers but the fact that other aspects like management, communication, and most importantly, flexibility were not adequately developed. As an example, “The Peer”, a Nigerian startup which raised about $2.1 million announced they would be shutting down and returning $350 thousand to investors. One of the reasons they said they are shutting down is because they couldn’t find a good “product-market fit.” In as much as it is hard to make a good product, and the fact that the success rate of businesses even for business owners with experience is about 30% (see here) it becomes more and more glaring that hard skills in software engineering, even though very important, are not enough in the business world.

 

So what matters?

In “The Lean Startup,” Eric Ries emphasizes the importance of communication and incremental growth throughout the book, but a particularly relevant reference can be found in Chapter 3, “Experiment.” Here’s a passage that highlights these principles:

 

“Entrepreneurs are more like artists, who must interpret incomplete and conflicting information, than traditional managers, who largely preside over well-defined problems. Instead of making complex five-year plans, we need to create a framework for learning and experimentation.”

 

This passage explains the necessity of constant communication and feedback loops with customers, as well as the value of incremental growth through iterative experimentation rather than relying on rigid long-term plans.

And this brings us to the first soft skill a software engineer can use to improve himself and increase his relevance — communication

 

1. Communication

As a software engineer, I once encountered a situation where active listening proved invaluable. We were developing a new feature for a product, and a client called in, frustrated and confused about how the new interface worked. Instead of jumping to explain or defend the design, I took a step back and listened patiently. The client vented about how the new layout made it difficult to find specific functionalities they used frequently. As they spoke, I made note of the features they mentioned and the confusions they expressed with the current workflow.

 

Through active listening, I discovered that the core issue wasn’t necessarily the design itself, but a lack of clarity in the user flow. The client’s frustration stemmed from a disconnect between their mental model and the way the new interface presented information.

With this understanding, I could approach the situation collaboratively. I explained the reasoning behind the design choices and then worked with the client to identify potential improvements that addressed their concerns. We explored ways to streamline the workflow and make the necessary features more easily discoverable.

 

By taking the time to listen and understand the client’s perspective, we were able to bridge the gap and find a solution that improved the user experience for everyone. This experience solidified the importance of active listening in the software development process. It allows us to gather valuable user feedback, identify potential issues early on, and ultimately create a product that meets the needs of our users.

 

This experience gave me a new perspective, because the struggle wasn’t only with being open to get criticism on features that we’ve been working on for months but also convincing the team that it was important to adjust our workflows. And this was beneficial to the business as it became a portal through which several improvement was done on the feature.

 

2. Learning to be structured (Time Management)

If you’re one to find complete satisfaction from your work alone, you can skip this section to the next…. If you’re still here I’m guessing you feel like you need some touch of polygamy (not as related to a sexual relation) to keep yourself happy. As an adult, life is definitely not just about work, and it is way too easy to get lost in it. This can cause you not to spend enough time with your wife, your friends or do the dumb things you like to do whether it be going to costume parties or playing an instrument. Life is filled with so many dumb things that makes us happy, but we tend not to be able to walk between the lines. There are generally three kinds of people in this regard — (1) those who work too much; (2) those who work enough and; (3) those who work too little.

 

With the advent of remote working, it is quite easy to jump between these three demographic and it is important to structure your work and other work activities else you might not enjoy life to the fullest. The following are tips to create a structure keep you optimal:

 

1. Let work time be work time. If you work 9 to 5, work between those hours and drop your computer after then (you have to make rooms for exceptions though)

2. Don’t take your work to your personal life. Go on dates with your girlfriend and spend time with the kids.

3. Plan the tasks for the next day the day before.

 

When you have some sort of structure in your personal life, however minor, that is when you can take this to your professional life and make a difference.

 

 

 

3. Collaboration

In as much as there are products one can build alone, large-scale products usually require a team of individuals with their roles clearly stated — even if there would be overlaps. Let me not bore you with long talk, but the simple thing is a larger project/product would need more people and to be relevant, asides from being a good software engineer (skill wise), you cannot run away from the fact that you would need to work with others.

 

Alice, a whiz at code, struggled with user interfaces. Ben, a design guru, couldn’t write a line of code. Together, they created an app that revolutionized the industry.

 

Take this with a grain of salt.

 

 

 

 

 

4. Problem Solving

Software engineering is all about problem solving. A good analogy would be your thought and your speech. Your speech is just an audible articulation of your thoughts. This is the same way coding is a syntactic articulation of a solution you have developed for a problem. You can develop problem solving skills by:

 

a. Practicing with coding challenges
b. Working on open-source projects: Contributing to open-source projects exposes you to real-world codebases and challenges also if I’m being honest. The good thing about working on open-source is that you definitely have to think about how others are using your solutions and you would let a great bunch from how others approach problems also.
c. Break down complex problems: Usually, a big problem is a combination of smaller ones. Knowing how to efficiently break problem into smaller pieces, solving those and artfully joining them together would be a sharp katana under your belt.
d. Learn from mistakes: When we finally stumble on a solution for an unfamiliar problem (eg. a coding problem), it is very common to have gone through several inefficient ones, when you finally get the optimal solution, don’t be scared to delete the whole solution and re-write it.

 

Conclusion

In conclusion, while strong coding skills are a valuable foundation, becoming a well-rounded software engineer requires a broader skillset. This includes soft skills like communication, time management, and collaboration to effectively bridge the gap between technical expertise and real-world needs. By honing these complementary abilities, software engineers can not only create innovative products but also ensure they are user-friendly, solve genuine problems, and contribute to a successful business model. Remember, software engineering is a team effort, and effective communication and collaboration are essential for turning your problem-solving skills into successful products.

 

 

 Selah!!!!

Other Posts

HAVE SOMETHING IN MIND?

WHEN DO WE START,
CONNECT WITH US TODAY

Your strategic partners in software solutions, development, engineering, consultancy, and training.