Empathizing with your users

  • Comes from the idea that the best way to build fast and reliable websites for slower machines and networks is to purposely have developers use old machines for their job
    • I'll admit this is something that I like in theory, but have never tried
  • The core of this idea is that when developers test on the best hardware, we suffer of the best-case-scenario-bias
    • I think of this as how we tend to solve the most salient problems we experience as developers
    • If we are always testing with the best hardware, we never see the problems that might crop up on less good hardware
  • This is also similar to testing the happy path, a problem in which we test the situations in which our code works, but fail to consider the many edge cases in which it might not work
  • Today I got bit by a bug of another sort, similar sort
    • I was testing removing permissions from my current user to a shared repository of data
      • When I removed my permissions to the data, I should no longer be able to see it
      • I was stuck for a while because even after removing the permissions, I could still access the data
        • I tested this through the UI and the bug was present
        • I wrote up a unit test to see this bug in action, which was very easy using Behavior Driven Development, and was surprised that my tests behaved as expected, effectively revoking the permission
        • What was different in the UI? It turns out that I tested everything as a super user, and for ease of development, we've given super users access to all data in our staging environment
        • By not testing with the same permissions regular uses will have, I was completely blind to the point that I was chasing a bug that did not exist

Where have I mentioned this?