There’s a critical tool from the field of User-Centered Design that can change how we fundamentally design and build ML systems.

Diagram showing human avatars in the loop of Systems, Models, Metrics and Funnels
Diagram showing human avatars in the loop of Systems, Models, Metrics and Funnels
How do we keep users at the forefront of our ML systems?

ML model development is hard and is full of challenges — not only is it difficult building data pipelines that can furnish a large data set that’s properly formatted, preprocessed, scaled, and trained on, there’s problems of balance, bias, out-of-training performance, and overall model performance.

All this work can cause us to miss the forest for the trees.

The deeper, more fundamental questions we should be asking

Developing the right model architecture and data pipeline, though flashy and news-article-worthy, is only one part of the process. …

Wejoinin has been a passion project of Hsiu-Fan and myself for over 10 years now, and this month we celebrate its 10th birthday! From back in the days when we launched it as a passion project as UC Berkeley students, we’ve always seen it as a tool to solve the problems that we were facing getting people coordinated and organized for events.

Image for post
Image for post
We’re 10 years old!

The fun thing about this story is that we’ve grown the product while working on it completely as a side project. …

Applying Domain-Driven Design techniques to keep your systems clean and sane

Image for post
Image for post

I want to discuss a topic near to my heart, a topic I believe to be the crux of effective software design. No, it’s not a new functional language, it’s not a fancy new framework, it’s not a how-to guide to do micro-services, nor a quantum leap in the field of machine learning.

It’s much simpler. It’s about names.

Names define us. They give life to abstract ideas and concepts and yet also stand in for real, physical objects. They’re language concepts, but more than that, they’re units of meaning. …

Image for post
Image for post

In Part 1 and Part 2 of this series, we introduced the engineering team at SuperStartupCorp. They had built a reputation for delivering quality software, fostering a culture of trust, and developing healthy learning practices. Read up on the first two parts, then join us to discover the final secrets to their success.

7. They play well with the product team

Effective teams have healthy dialogue, mutual trust, and co-ownership of the product development process with product owners and designers.

Having a problem-solving attitude with product owners

Ryan, a former product manager with Carbon Five, appreciates it when developers respond to product owner questions with helpful alternatives instead of stonewalling. He says:

Some developers can come across as curmudgeons to [their non-technical counterparts], seeming to say “no” when what they may actually mean is “what you’re asking is super hard and seems like it isn’t worth it.” …

In Part 1 of this series, we introduced a high-performing engineering team at SuperStartupCorp that had automated repetitive tasks, codified its engineering practices, and adopted a learning mindset, resulting in happy engineers and happy stakeholders. Read on to learn more traits and practices that make this team so successful, and how they keep their bus factor high.

Image for post
Image for post
The Bus Factor. It’s real, folks.

4. They spread knowledge around

SuperStartupCorp engineers were well-rounded engineers, each familiar with multiple aspects of the codebase. The team was familiar with the “bus factor,” the slightly morbid term for the number of stray buses that could take out members of their team — and perhaps their company. …

Behold the engineering team at SuperStartupCorp: their steady delivery of features, humble reception of feedback and crafting of well-architected software systems earn them praise up and down the company. The team greatly enjoys working together, and consistently leaves the office feeling accomplished, empowered, and happy.

Image for post
Image for post
High performing teams codify practices that build their culture.

How is this team able to consistently deliver features for the business, while maintaining morale in a changing sea of fluctuating product requirements, leadership changes, and unplanned site emergencies? It wasn’t always this way.

Read on to learn the first three steps to this team’s journey towards engineering happiness…

1. They automate the easy things

SuperStartupCorp engineers liked to argue. In fact, their developers would often fight for hours on end over syntax, line lengths, casing styles, and indentation widths. Finally, enough was enough. The team decided to agree on a code style and stick with it, and enforce style automatically via a syntax checking service. …

Transform Your Engineering Organization to Attract New Talent

Image for post
Image for post
Hiring begins with culture.

It’s a common scenario for tech companies: Your hiring pipeline is dry and you can’t seem to attract new talent. You notice companies touting long lists of superficial benefits. Instead of improving your internal team, you find yourself worrying about getting a pro-grade ping pong table for the break room.

You don’t need helicopter rides or Massage Mondays to bring people into the fold. Instead, focus your energy on making lasting changes to your company’s DNA. It won’t be easy, but the results will keep your existing team happy, which translates to positive conversation about your organization. …


Andrew Hao

Engineering @lyft, @carbonfive alumni, co-founder @Wejoinin. Trail runner and coffee lover.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store