How to Create a Great User Experience in Any Application – Part 2

In part one of this article, I began by discussing how important the user experience is in any application. I believe it’s the number one feature! I discussed the best college class I took about software engineering called “System Design and Analysis”. Then I gave two real-world examples of how this class helped me with a project for a local cinema and Mitchell International’s first public web-based API. But, I saved the best story for this article. I will also end with suggestions on how you too can learn this valuable skill.

Proflowers

In 1999, I joined the inaugural development team of Proflowers.com. This pioneering company was the first to offer direct shipping of fresh flowers from the grower to the customer, resulting in an impressive two-week lifespan for their blooms. At the time, Proflowers was the second most popular website for flower orders, right behind FTD. Eventually, FTD acquired Proflowers. Now, I’d like to share how I utilized the skills I gained from taking that System & Design course.

Initially, Proflowers would send a PDF via fax to each grower, containing the necessary shipping label, gift card, and receipt for every order. However, the major grower located in California had four fax machines situated where the flowers were packed, waiting for pick-up by FedEx. Unfortunately, each machine had a limit on how many faxes it could print per hour, and the high humidity in the area often resulted in failed printing, requiring Proflowers to resend the PDF. This issue became a hindrance to Proflowers’ sales growth. During their peak week of the year, leading up to Mother’s Day, they had to physically print the orders at their office and send them via FedEx to the grower.

To address this issue, the CTO and I devised a plan to install a computer and high-speed Hewlett-Packard printers, which we provided, at each grower. These printers could process thousands of orders per hour, and at the largest grower, we installed two of them. Throughout the day, our servers would securely transfer the orders to the growers via FTP. The implementation of this solution was a resounding success, enabling Proflowers to sell millions of dollars worth of flowers each day for the first time. Here’s how it worked.

Before writing any code, the CTO and I traveled to the largest grower in northern California. Prior to the trip, I expressed to the CTO that I wanted to be present when the growers opened in the morning, around 5 am. Upon meeting the manager at the grower, I requested to witness their entire process, from flower growth to order completion. The manager obliged, and I had the opportunity to observe their operations in detail.

Initially, he led me to the greenhouses, which were the largest I had ever seen and explained the flower-growing process. Next, he demonstrated how the flowers were cut and transported for processing. He showed me a machine that captured a picture of each flower and automatically grouped similar-sized flowers. Following that, he presented the area where the flowers, vases, or any other item the customer ordered were assembled and placed in FedEx boxes. Lastly, he escorted me to a spacious refrigerated room where the boxes were stored until FedEx semi-trucks arrived for pick-up every afternoon.

For each order, a receipt is generated, which the grower retains for record-keeping purposes. The manager took me to the office and showed me where they stored the receipts. Following this, I spent some time chatting with him about the challenges they faced with the current fax-based system. While in the area where the flowers were packaged, I took the opportunity to inquire about the order fulfillment process from a few of the workers. I engaged in conversation with anyone I could.

I repeated this process at another grower in California as well! I would like to emphasize that I did not ask them what they wanted to see in the application I was developing at any stage of the process. My role was to comprehend their process or “workflow” and determine the best approach to address any inefficiencies. Furthermore, my boss did not instruct me to conduct any of the activities I previously described. I did so voluntarily due to my learnings from the course.

Upon returning to work, I began designing and coding the application. I collaborated with another developer who assisted me in developing the section of the application that retrieves orders through FTP from our backend servers. After one month of diligent work, we implemented the initial version of the application at several California-based growers, just in time for Thanksgiving, which was the next major holiday. To ensure that everything went smoothly and to address any user concerns, I traveled with my boss and his wife (who served as a trainer) to the first two growers.

During the second installation, something happened that I will never forget, and it is still one of my favorite moments from this project. But first, let me go back a bit. Before the first installation, I had a few days with not much to do, so I wondered if there was anything else I could add to the application to make it easier for the users before the installation. I thought back to my visit to the growers before I wrote the app and remembered that all the workers who packed the orders were immigrants. I had a feeling that the person in charge of printing the orders might not know English very well or might not have ever used a computer before.

The solution I devised was to assign each major feature of the application to a specific Function Key on the keyboard. During the second installation, my boss’s wife was providing training to the operator, who needed an interpreter. While demonstrating how to use the user interface, I noticed that the operator was attempting to use the mouse, and it was evident that it was her first time doing so. Reacting quickly, I raised my arms and exclaimed “STOP” several times to get their attention. I then explained the F key shortcuts to the interpreter and the operator, and the operator’s face immediately lit up with a smile once she understood how to use them.

At that moment, I knew that I had succeeded in building a truly great application. It was the best moment of the entire project and one of my favorites in my career. While it was great that ProFlowers could now start making millions of dollars per day and that I got to keep my job, seeing the operator’s eyes light up like that was truly priceless. This is why I build applications – to make someone’s workflow better at their job or in their life! I followed up with the other users as well, and I was happy to hear only praises. Not a single complaint or problem at all.

After installing the first version at the growers, we noticed that it was taking too long to FTP the orders. We were concerned that not all orders would arrive in time for Mother’s Day week. Upon investigation, I discovered that the bottleneck was the FedEx server. Since we used FedEx to ship everything, they had placed a server in our server farm to generate the images with addresses, barcodes, and other relevant information that I used for the order label. Unfortunately, I couldn’t improve the performance of their server, so I had to come up with a better solution.

I contacted a FedEx contact and obtained their label specifications and barcode font, instead of relying on the FedEx server for generating label images. Then, using a third-party component for Visual Basic (before .NET), I printed the labels according to their specs much faster than their server could. This improvement in speed allowed the growers to print over 1,200 orders per hour per printer!

This system worked out so well that ProFlowers applied for and received a US Patent in 2008. They sent me a copy of the original patent, along with a $25 check, which I found amusing considering the significant financial gains they made due to the success of the project. In addition, the company that produced the third-party component wrote a white paper detailing how I utilized their product for this project.

Programmers Aren’t Created Equally

I understand that not all software engineers may feel comfortable interacting with users, as it can sometimes lead to feelings of fear or insecurity because I have those same feelings. However, as someone who personally values user input, I believe that involving users early in the development process leads to better outcomes. When I shared my story about the API at Mitchell International, I realized that seeing the product in the real world helped me identify and solve potential issues early on. Conversely, waiting until the end of the development process to incorporate user feedback often leads to poor user experiences.

To overcome the fear of interacting with users, I would suggest starting by speaking at local user groups, and conferences or just showing something new you have learned to your fellow teammates. I understand that public speaking can be daunting, as I was once afraid to take the stage. However, conquering that fear has greatly improved my programming career and even allowed me to travel the world to help other software engineers in their journey. Ultimately, the more we engage with users, the better we can understand their needs and develop products that truly serve them.

How To Get User Experience Design, Experience

Are you new to software engineering or do you have bosses who prevent you from communicating with users? If so, consider taking matters into your own hands! In the 90s, I gained experience by releasing my own applications, one of which was even reviewed by PC Magazine. I always advise software engineers to seek out non-profit or NGO organizations that require custom software development. There are surely many such organizations in need of assistance. I recommend finding one in your area so that you can communicate with users in person and gain experience that you can use in future positions. Better yet, spend a day with them!

Summary

Let’s face it: programming languages and frameworks will come and go, but core programming concepts, such as Object-Oriented Programming (which was developed in 1955), patterns, and architecture, will endure. You should devote more time to learning these concepts than to chasing the latest fad from Microsoft, Google, Apple, or the latest conference. You should keep books on these topics nearby at all times.

I don’t often recommend books, but my favorite author on this subject is Alan Cooper. After seeing him speak for the first time in the 1990s, I was forever changed. Follow Alan and get his book, About Face, now! This book had a tremendous impact on me, and I still can’t enter a building or ride an elevator without hearing Alan’s voice in my head. Get the book and you’ll see why. I was fortunate enough to have dinner with Alan once and felt like I was meeting one of my heroes!

I hope this article helps you on your journey to creating the best experience for your users. If it does, I hope you will share your story by commenting below.


Discover more from dotNetTips.com

Subscribe to get the latest posts sent to your email.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.