paint-brush
Balancing Technical Excellence & Client Satisfaction: A Software Engineer's Perspectiveby@antagonist
107 reads

Balancing Technical Excellence & Client Satisfaction: A Software Engineer's Perspective

by Aremu AdebisiApril 3rd, 2024
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

Inna Olenina, a seasoned software engineer, shares insights on building lasting client relationships, managing teams effectively, and refining user-friendly products across diverse domains, emphasizing communication, problem-solving, and teamwork.
featured image - Balancing Technical Excellence & Client Satisfaction: A Software Engineer's Perspective
Aremu Adebisi HackerNoon profile picture

Inna Olenina discusses how to foster long-term relationships with major clients, establish effective communication within the development team, and create products that are as user-friendly as possible.


Principal Software Engineer, Inna Olenina, has been crafting software solutions for global market leaders for over two decades. She has collaborated with Motorola, Nokia, Samsung, and Sony, developing products that range from key functions of high-tech medical equipment to operating systems and antivirus software. As a leading engineer, she has also mentored professionals, helping them grasp the design of programs and the subtleties of algorithms.


For the past seven years, Inna has been instrumental in the creation and development of AI-enabled retail apps. These apps, used by tens of thousands of users from over 70 countries, assist brands in understanding how their products are positioned on store shelves, analyzing data, and adapting their sales strategy. Given Olenina’s extensive experience, deep expertise, and successful track record, she was entrusted not only with ensuring the technical flawlessness of products but also with customer communications. Inna assumed management responsibilities, supporting customers worldwide in the process of using the applications and consulting on the implementation of new features.


Inna Olenina shared insights on how to effectively address customer problems, build long-term relationships with them, and bring technological products to perfection, all while fostering a positive atmosphere within the team.

Q: Inna, you've worked on a diverse range of projects, spanning from medicine to retail. Did you find it challenging to adapt, or do your competencies seamlessly apply across all domains?

A: Understanding programming principles has been invaluable in my journey. If you're proficient in C++, transitioning to Java becomes relatively straightforward. However, I did need to readjust. As a mobile and embedded systems engineer, I constantly delve into the intricacies of new devices and operating systems.  While Android app development differs significantly from industrial healthcare software projects, I embraced the learning curve.


For instance, my collaboration with Stereotaxis—a company specializing in non-surgical arrhythmia treatment using remote magnetic navigation—required me to comprehend basic anatomy.  Writing programs to control such equipment and process the 3D images displayed on doctors' computers during procedures demanded this foundational knowledge.


Similarly, when developing retail applications, I delved deep into understanding our customers' business specifics. I identified crucial data points, optimized functions for users, and meticulously minimized the risk of introducing erroneous indicators.

Q: How did you transition from development to management?

A: For a significant period, I served as the lead developer for retail applications in the CIS. In 2018, as one of the key employees, I was presented with the opportunity to relocate to the US and assume a managerial role. This marked a new phase in my career development in addition to the complex and innovative technical work, I took on responsibilities for product quality control and user consultation.


I interact with customers from all over the world not just in the US, but also in Canada, Latin America, Europe, and even China and India. Customers reach out to me when they encounter any issues with their apps. My primary responsibility is to analyze the situation and identify solutions.

Q: What challenges do clients most often encounter?

A: Problems can be categorized into user and technical issues. User problems refer to difficulties experienced by specific users. These can arise due to misconfigured device settings, application configuration errors, device incompatibility with our products, or a lack of understanding of the functionality leading to errors in the data collection process. Sometimes, it’s as simple as a lack of network connectivity.


Technical errors are more complex; they can occur, for instance, after a new release and necessitate revisions from the team. In such cases, I need to relay information to the development team responsible for a particular functionality, persuade them of the need for changes, and agree on deadlines.


It’s crucial to remember that you can’t just update the program and immediately, without testing, release this version to the customer. Sometimes, solving one problem can give rise to another. Therefore, setting the right expectations for the customer is also important for me.

Q: How exactly do you understand what the customer's problem is?

A: Over the course of my work, I've developed a clear algorithm of actions. The first step is to request logs from applications and devices, meticulously analyzing the data. Often, at this stage, I can already provide the client with clear recommendations. However, if there aren't sufficient logs, I engage the users in a collaborative process. We replay the users’ actions within the app online, discussing the situation in detail to uncover the root of the problem.


In my work, meticulous documentation plays a pivotal role. Every step agreements, product changes, and code modifications are meticulously recorded in our IT system.  This practice aligns with the Scrum project management methodology, emphasizing iterative development and close interaction with the customer.


Having this comprehensive documentation benefits the entire team managers, developers, and testers alike. It allows us to verify the product against the client's requirements. So, when someone encounters a technical issue after an update release, I can delve into the code, identify the highlighted lines with recent changes, and pinpoint any errors.

Q: Could you provide examples of challenging problems that you've been able to resolve?

A: For instance, there was a day when I discovered that large volumes of data were corrupted during transmission from several dozen mobile devices to the server. I promptly crafted an optimal script to restore them and forward them for further processing.


Another example - after interacting with users, I identified a flaw in the application interface that complicated the entry and verification of information on one of the screens. I took the initiative to enhance the product and developed a prototype that met the customer's needs. On another occasion, I encountered a performance issue when querying a database from the server and proposed an innovative solution - alter the data type and modify the scenario in which it is requested.


In all instances, both time and money were saved for the clients and my company.

Q: You have to interact with people from completely different countries all the time. How do you do it?

A: This is indeed a challenging task because mentalities and communication styles vary significantly across different regions. What is considered normal in the West may be entirely incomprehensible to clients from the East, and vice versa. To succeed in this endeavor, I've dedicated time to studying cultural differences and the subtle nuances of communication.


Over the years, I've honed my ability to find a common language with clients who come from vastly different backgrounds. As a result, I've received many expressions of gratitude from them.

Q: Can you provide some tips on how to communicate with customers?

A: Firstly, it’s crucial to have not only a deep understanding of your own product but also of the customer’s business and its needs. This knowledge will assist you in quickly identifying the problem and asking the right clarifying questions. Secondly, it’s important to convey the main ideas to the customer as clearly as possible, without burdening them with technical details that are unlikely to interest them. . Thirdly, managing the customer’s expectations properly is key - if you realize that it takes a day to update a product, you should not promise that it will be ready in a couple of hours.


And, of course, remember that you and the client are not on opposite sides of the barricades - you are one team of professionals. It’s necessary to include the customer in the process and provide them with feedback. Honest and open communication, calmness, and a problem-solving attitude will help you establish a long-term and strong relationship.

Q: Is it ever the case that a customer comes in with a request to improve a product rather than solve a problem?

A: Yes, indeed, and it happens quite frequently. Clients observe their competitors in the market, and if they notice an effective solution, they often request for it to be replicated. I would say that there are two primary requests in the market today.  Firstly, users desire an interface that is as simple as possible, free from unnecessary elements, and enables them to perform tasks efficiently. The fewer actions required to achieve a goal, the better. As a result, customers have repeatedly requested for processes to be simplified and automated.

Q: What do you do if someone approaches you with such a request?

A: When customers approach me with proposals, I consult with them to understand their goals, needs, and desired functionalities. I then evaluate whether such a project can be implemented. This involves understanding the system requirements, estimating the cost of the project, determining the development timeline, and assessing the potential impact. If it’s beneficial to make changes, I liaise with the development team.


Together, we explore opportunities to bring the customer’s idea to life, propose different options, and find common ground in case of disagreements. Among other tasks, I prepare architectural design recommendations for my colleagues, test the implementation, and then validate the effectiveness of the products when interacting with customers.

Q: It appears that you frequently interact with the development team. Could you share how to foster constructive relationships within the team?

A: The fundamental principle is that the team should operate as a cohesive unit. Early in my career, I experienced working in a team where members did not listen or understand each other: frontend developers were at odds with backend developers, each blaming the other for their mistakes. This is not an ideal situation.


It's crucial that every team member comprehends not only their role and responsibilities but also their colleagues' areas of responsibility and the interconnections between processes. Furthermore, open, transparent communication and a friendly team atmosphere are essential. Team members should feel comfortable asking questions or making suggestions whenever something is unclear. Such initiatives should be encouraged.


Of course, regular meetings are necessary to synchronize on projects. This way, all team members stay informed about the progress and understand the action plan for the immediate future.