As an engineer, learning about everything that goes into designing a product is a fascinating lesson for me. In the Interface Design Bootcamp at Smashing Conference, Aarron Walter walked through the steps he takes to go from idea to production.
His analogy to describe the process was the game of golf: start with strong, broad strokes, then use smaller strokes to get to the final point. The five steps he outlined, in increasing levels of granularity, were 1) research, 2) flow, 3) interaction, 4) personality and 5) aesthetics.
Figuring out when something has gone wrong with your app or site is extremely difficult. Anomaly detection was a major theme among speakers this year at Monitorama, an open source monitoring conference. You can create trends based on historical data means trends, and those trends can be extrapolated into predictions of traffic patterns. When live traffic deviates from the prediction, you can try to detect if it is a true anomaly or not.
One of the hardest problems in anomaly detection systems is trying to avoid false positives — you don’t want to be woken up at 2 a.m. to fix a problem when nothing is actually broken in the product. This often leads to a phenomenon called “alert fatigue” where the on-call developer ignores noisy notifications, allowing for real events to sneak through undetected.
I recently attended Facebook’s F8 Developer Conference. Here are my 8 takeaways:
Facebook emphasizes getting a simple idea to production as fast as possible; the general sentiment is to build better quality code by default. To enable this, they focus on predictability throughout the code base. It should be easy for an engineer to read through the flow of the code. Simply put, given an input state, the output state should be predictable and reproducible. This philosophy has helped them maintain a manageable code base as they’ve scaled their engineering team. Predictable logic flows through the code, which allows them to spend their time gathering metrics and iterating as fast as possible rather than tracing through complex code interactions and trying to keep it all in their heads at the same time.