3 Lessons for Engineers Communicating With Customers

A firm handshake between business partners

Before working with Dojo Five, I had worked with teammates from different backgrounds, but never met or talked with customers. There’s more to it than status updates. Your customers may appreciate deep technical expertise, but they are happiest when they can trust and enjoy the process of working with you. A project management tool shows the tasks you’re working on and their status but often doesn’t cover the system-level design choices, requirements, or constraints. It takes extra effort and care to ensure they are communicated thoroughly and clearly when you don’t sit together in the same building every day. These three communication lessons are the direct result of what I’ve learned from helping customers create their devices.

Lesson #1: Document Decisions For All to See

Recently, I had some trouble communicating fixes and changes I made in the clients’ code. I had communicated changes through email and instant messaging with the technical reviewers. But that was not visible to the rest of the team. So to them, the changes seemed random or confusing. This problem was magnified when technical details and explanations were exchanged via e-mail, phone call, or instant messaging. Messages are easily lost and not easily shared with everyone that may need to understand the work that has been done.

The key is to use tools to communicate that will last throughout the project as well as after your service has concluded. One way to do this is through pull requests and service tickets. I have found that using link features provided by repository hosts like Github and team management services like Jira are very effective at communicating progress, successes, and failures. Using tickets and code reviews in pull requests to communicate provides more the full story for your client’s entire team to review. Everyone, present and future, will have full, searchable access to the living history of the work that can give context for why decisions were made that cannot be commented in the code.

Lesson #2: Understand Your Limits and Expectations

I recently had a task to reduce the RAM usage of my customer’s entire system. I was not as familiar with the codebase as they were, but they had asked me to clean it up. Going in, I did what any embedded engineer would do and looked through the map file to find any obvious sources of wasted RAM. I found nothing. I checked for any dynamic allocation of memory on the heap. I found some things, but not enough for me to be proud to call this task complete. I kept looking and looking for anything, and I was not sure what to do when I couldn’t find anything.

Ultimately, I gathered up a list of all the significant RAM usage, and reasons for why I could not touch these particular large allocations. I presented this to the customer, and they came back with feedback that confirmed most of my observations. I had been worried about not being able to meet expectations when the request may not have been possible. Despite my feeling of failure to cut their RAM usage as much as I thought they expected, it was important to communicate what I found and explain my observations about their system. I have also learned that it is beneficial to communicate my progress while working on a larger task. It gives the client an opportunity to correct me if I am wrong about a conclusion, or to confirm my thoughts, letting me be more confident in my performance on the task. In situations like that, it is important to be both honest and confident when communicating with the customer. Lacking either can give them a reason to call your work into question. In the RAM reduction task, I was honest that I wasn’t sure I could reduce it to the level they were looking for — but I was also able to confidently list out the reasons why certain pieces couldn’t be made smaller after looking at the code.

Lesson #3: Be Friendly

When working with other people, completing tasks is of utmost importance. But if you are not pleasant or easy to work with, the customer may be inclined to find someone else to get tasks completed with a friendlier experience. An example of going above and beyond for a customer could be pointing out something that doesn’t deal with a feature you’re implementing but could improve the end product. Being able to not only finish your work but find other ways to make the project better can be a huge value-add for the customer, something that builds a long-lasting relationship.

And if you are looking for even more on embedded ops, we host a weekly Lunch and Learn on a variety of topics from embedded on cellular, deep learning with robots, and more! Check out our current list of events and sign up for your seats – always no cost!

Discover why Dojo Five EmbedOps is the embedded enterprise choice for build tool and test management.

Sign up to receive a free account to the EmbedOps platform and start building with confidence..

  • Connect a repo
  • Use Dev Containers with your Continuous Integration (CI) provider
  • Analyze memory usage
  • Integrate and visualize static analysis results
  • Perform Hardware-in-the-Loop (HIL) tests
  • Install the Command Line Interface for a developer-friendly experience

Subscribe to our Monthly Newsletter

Subscribe to our monthly newsletter for development insights delivered straight to your inbox.

Interested in learning more?

Best-in-class embedded firmware content, resources and best practices

Laptop with some code on screen

I want to write my first embedded program. Where do I start?

The boom in the Internet of Things (IoT) commercial devices and hobbyist platforms like the Raspberry Pi and Arduino have created a lot of options, offering inexpensive platforms with easy to use development tools for creating embedded projects. You have a lot of options to choose from. An embedded development platform is typically a microcontroller chip mounted on a circuit board designed to show off its features. There are typically two types out there: there are inexpensive versions, sometimes called

Read More »
Medical device monitoring vitals

IEC-62304 Medical Device Software – Software Life Cycle Processes Primer – Part 1

IEC-62304 Software Lifecycle requires a lot of self-reflection to scrutinize and document your development processes. There is an endless pursuit of perfection when it comes to heavily regulated industries. How can you guarantee something will have zero defects? That’s a pretty hefty task. The regulatory approach for the medical device industry is process control. The concept essentially states that if you document how every step must be completed, and provide checks to show every step has been completed properly, you

Read More »
Operating room filled with medical devices

IEC-62304 Medical Device Software – Software Life Cycle Processes Primer – Part II

Part I provides some background to IEC-62304. Part II provides a slightly more in-depth look at some of the specifics. The IEC 62304 Medical Device Software – Software Lifecycle Processes looks into your development processes for creating and maintaining your software. The standard is available for purchase here. So what activities does the standard look at? Here are some of the major topics. For any given topic, there will be a lot more specifics. This will look at a few

Read More »