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 on 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
Way back in 1999, I became part of the first official development team for
Proflowers.com. I’m pretty sure that they were the first online company to ship fresh flowers directly from the grower to you. The flowers last so much longer, up to two weeks! At the time, Proflowers was the #2 website for ordering flowers. Right behind
FTD who later purchased Proflowers. Anyway, let me describe how I used what I learned in that class at Proflowers.
In the beginning, Proflowers would
FAX each grower a PDF that contained the shipping label, gift card, and receipt for each order. The biggest grower (in California) had four of these machines that they kept where the flowers were packed in the shipping box. The issue was that each machine had a limitation of how many faxes they could print per hour. Also, since they were kept in an area with a lot of moisture in the air, the printing would often fail, and they would have to call Proflowers to resend the PDF. This prevented Proflowers from growing their sales. During their biggest week of the year (preceding Mother’s Day), they would have to print the orders at the company and then
FEDEX them to the grower.
The CTO and I set out to fix this issue. What we decided to do was to install a computer at each grower along with high-speed Hewlett-Packard printers (that Proflowers provided), that could print thousands of orders an hour. At the biggest grower, we put in two of these printers. All day long, our servers would
FTP the orders to the growers. The project was a complete success and allowed, for the first time, Proflowers to sell millions of dollars of flowers a day! Here is why.
Before I wrote a single line of code, the CTO and I flew to the biggest grower in northern California. Before the trip, I told him that I want to be at the growers when they opened in the morning (around 5 am). When I arrived, we meet the manager at the grower. I told him, that I want to see their process from where the flowers were grown to what happens when the order is completed. So, he did that.
He first took me to the greenhouses, the largest that I have ever seen, and explained to me the process on how the flowers are grown. Then he showed me how the flowers are cut and taken to where they are processed. He showed me the machine that would take a picture of each flower and automatically bunch similar sized flowers together.
Then he showed me where the flowers, vase, or anything else the customer ordered is placed into FEDEX boxes. Then he showed me the huge refrigerated room where the boxes are stored until the FEDEX semi-trucks come to pick them up.
Each order has a receipt that the grower keeps for their records. The manager took me into the office and showed where they file them. After all that, I sat for a while and chatted with the manager about the issues they are having with the current system that faxes the orders. When I was in the area where the flowers are boxed, I asked a few of the workers exactly what they do with each order. I talked to everyone I could!
I did this at another grower in California too! I’d like to point out, not at any point in this process did I ask them what they wanted to see in the application I was going to write.
That is
my job to figure out once I understand their process or what I call “workflow”. Also, my boss didn’t tell me to do any of what I just described. I did it because of the class I took that I described in
part one of this article.
So once back at work, I designed, then started coding the application. One other developer helped me with the part of the application that retrieved the orders via FTP from our back end servers. One month later, we installed the first version of the application at a few of the growers in California, right before the next big holiday, which was Thanksgiving. I traveled to these growers with my boss and his wife (who was the trainer) just in case they had any issues, or the users had questions.
At the second install, something happened that I will never forget and is still one of my favorite moments for this project. But first, let me go back a bit. Before the first install, I had a few days that I didn’t have much to do. I thought if there is anything else I can add to the application before the install. I thought back to when I visited the growers before I wrote the app. I thought to myself, that all the workers who packed the orders were immigrants and 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 came up with was that every major feature of the application I tied to an F key on the keyboard. At the second install, when my boss’s wife tried to train the operator (via an interpreter) and showed her what to click on in the user interface to do her job. As soon as I saw the operator, try to grab the mouse, I felt it was the first time she ever touched one! I put my arms up in the air and I said STOP a few times. I then told the interpreter about the F keys and explained what each one did. As soon as she told the operator, her eyes lit up and she smiled!
At that point, I felt that I succeeded in building a great application. That one moment was the best one in the entire project and one of my favorites in my career. Sure, Proflowers got to start making millions of dollars per day and sure I got to keep my job. But when I see a user’s eyes light up like that, nothing is greater. This is why I build applications, to make someone’s workflow better at their job or in their life! I also followed up with the other users and I only heard praises. Not one complaint or problem at all.
After we installed the first version at the growers, the only issue that we felt was that it was taking too long to FTP the orders to the growers. We were worried that not all the orders would arrive in time during the week of Mother’s Day. I did some digging and I found out that the bottleneck was the FEDEX server. Since we shipped everything through FEDEX, they placed a server in our server farm that would generate the images with address, barcodes, etc. that I used for the order label. We couldn’t fix their server performance, so I figured out a better solution.
I called a contact we had at FEDEX and I got a hold of their label specification. I also had them give me the font they use for their barcodes. Instead of requesting the image from the FEDEX server, I just retrieved the tracking number. Then, with using a third-party component for Visual Basic (before .NET), I printed out the label with their specs a lot faster than their server could! With this speed improvement, the growers could print over 1,200 orders per hour per printer!
This system worked out so well, that after I left Proflowers, they 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 thought was funny since I helped them start making so much money per day. The company that made the third-party component even wrote up a white paper on how I used their product for this project.
Programmers Aren’t Created Equally
I realize that not all software engineers want to talk to the users since it might invoke fear, insecurity, and more. Not all software engineers are like me and beg CEO’s to let them talk to or spend a day with actual users. When I told you the story about the API I wrote at Mitchell International, I only saw the product I worked on, once in the real-world. But, in my experience, the more they are involved, right the beginning, produces better outcomes. Waiting until the end to get users involved will produce bad user experiences.
My best suggestion on how to overcome the fear of talking to users is to start speaking publicly at your local user group or conference! When I forced myself to do this over 26 years ago, speaking was one of the biggest fears I’ve ever had. But, as I talk about
in this video, speaking has dramatically improved my programming career and allows me to travel the world.
How To Get User Experience Design, Experience
Are you new to software engineering or have bosses that won’t let you talk to the users, as I have many, many times? Do it on your own! Way back in the 90’s I did it by releasing my applications where one of them was reviewed by
PC Magazine! I have always suggested to software engineers the way to get experience is to find a non-profit or NGO that needs custom software built.
I’m sure there are a lot that needs help. Especially now that many of them are running out of funds dealing with the world-wide COVID-19 pandemic. I suggest finding one locally so you can talk to the users in person. Better yet, spend a day with them!
Summary
Let’s face it, programming languages and frameworks will come and go. But most core programming concepts do not, such as Object-Oriented Programming (developed in 1955), patterns, architecture, and many more! You should be spending more time learning these things than the latest new thing that came out of Microsoft, Google, Apple, or a conference you just attended. These types of books you should always purchase and keep near you, I do!
I don’t recommend many books, but my favorite author on this subject is
Alan Cooper. After I saw him speak for the first time back in the 1990s, I was forever changed. Follow Alan and get his book
About Face now! This book also had a huge effect on me, and I still can’t walk up to a building or ride an elevator without hearing Alan’s voice in my head. Get the book and you will know why. I was lucky enough to have dinner with Alan once and felt 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.