Derrick Ko

Keeping it Simple

Keeping it Simple

by Derrick Ko

In this video titled "Keeping it Simple," Derrick Ko discusses the importance of simplicity in engineering, particularly in user-centric design. He emphasizes that while engineers often enjoy over-engineering solutions, the primary focus should be maintaining simplicity for the end user. The key points covered include:

  • Over-Engineering vs. Simplicity: Engineers typically tend to over-engineer solutions for the sake of innovation and creativity, but this can lead to user frustration.
  • User Signup Experience: Derrick uses the example of a signup experience to illustrate the balance between engineering complexity and user simplicity. A common issue arises when users mistype their email addresses, leading to account access problems.
  • Balancing User Needs: He discusses that adding an email confirmation field may optimize for the 10% of users who make typos but could inconvenience the remaining 90%.
  • Proposed Solutions: Derrick proposes a more nuanced solution by prompting users to double-check their email entries without being condescending, thus maintaining a better user experience.
  • Data Analysis: After analyzing data from email bounces, he reveals that most errors were located in the domain part of the email address, suggesting that users are accustomed to typing their handles correctly.
  • Client-Side Autocorrect: He introduced a solution inspired by Google’s approach, which implements a client-side autocorrection feature for common domain typos, developed quickly and showing a 50% improvement in email bounce rates after implementation.
  • Open Source Contribution: Derrick mentions that this solution, called MJS, has been open-sourced and adopted by various companies such as Dropbox and Uber, contributing to ongoing community improvement.
  • Final Insights: In conclusion, he reiterates that keeping engineering solutions simple can lead to significant positive impacts on user behavior, advocating for engineers to prioritize user experience over unnecessary complexity.

The overarching takeaway from Derrick's talk is that simplicity, both in user experience and engineering processes, results in a better outcome for both users and engineers. He encourages open dialogue and participation in improving this ongoing project as well as welcoming attendees to his future discussions on application development.

00:00:06.480 Hey everyone, I'm Derrick. First, just ignore the Ignite sign here; I just gave an Ignite talk a couple of months ago in San Francisco. We're going to discuss the concept of keeping it simple. As engineers, we tend to over-engineer things, primarily because it's fun. However, we must also consider the users. It's about finding the right balance between simplicity in engineering and simplicity for our users, and when we achieve this balance, the results can be quite positive.
00:00:15.759 Let's look at this in the context of a signup experience. A normal signup form is fairly effective because it allows the user to avoid repeating themselves, especially concerning their email address. However, if a user makes a typo in their email address, it results in a very frustrating experience. Essentially, you can lose a user because they fall into a black hole. This issue is particularly prevalent if you are using email confirmations.
00:00:30.599 On one end of the spectrum, we can solve this by simply adding another field to confirm the email address. However, the problem with this approach is that we end up optimizing for the 10% of users who actually make a typo, while not helping the remaining 90%. This isn't an ideal situation. Another approach could be to create a fantastic solution through predictive analysis, like checking MX records; however, that requires significant effort for only marginal returns. We hypothesized that we could add a prompt below the email form whenever a user types in an email. This way, the user might take a moment to double-check for any mistakes they might have made. However, this method can feel repetitive and, in some cases, condescending to the majority of users.
00:01:21.119 We analyzed the data from our email bounces and discovered that most errors were occurring in the domain part of the email addresses. This is likely because most people are used to typing their handles elsewhere and might be entering them from different accounts, which often don’t present typo problems. There are many common typos that users make, and you might be surprised at how frequent and severe these mistakes can be. To address this, we implemented a simple suggestion method, similar to what Google does, completely on the client side in JavaScript. Once the user types an error, we can suggest corrections. The initial version of this feature was developed in about an hour, and after a week of data collection, we noted a 50% improvement in our email bounce rates. This indicates that even small nudges can significantly improve user behavior.
00:02:38.240 Furthermore, there were no existing solutions to handle this issue, so I open-sourced the project called MJS, which autocorrects any misspelled domains against a preset list of domains that you provide. It's available on GitHub, and at last count, it had over 2,300 watches. We're on the lookout for contributors and maintainers, so please come talk to me if you're interested. It has been widely adopted by several notable companies, including Dropbox and Uber. Some of our latest contributions to the project include a keyboard distance-based string similarity algorithm. This algorithm attempts to correct entries based on how close the incorrectly typed keys are to each other.
00:03:59.960 In conclusion, maintaining simplicity can have a huge impact. As engineers, we should refrain from over-engineering and focus on keeping it simple for our users as well as for our engineering processes. Thank you for your attention. Additionally, I'm speaking tomorrow on creating rich applications using Rails, Backbone, and CoffeeScript, so feel free to join me then. If you see me around, don't hesitate to stop me and chat.