4 Comments

How Many Sprints Does it Take to Change a Lightbulb?

I haven’t touched a light switch in weeks. Over the past few months, I’ve been rolling out a smart light network throughout my house. To successfully complete the project, I followed a simple Agile process that we use all the time at Atomic to help clients navigate large software projects with lots of stakeholders. If you’re thinking about starting a software project, or you just want to play around with home automation, here’s what you’ll want to do.

🥚 Try the Simplest Possible Version of Your Idea

Ideas are fragile things before they take physical form. It’s easy to debate endlessly about the pros and cons of one idea or another. Give the idea a tangible form, though, and everything changes. Abstract conversations like, “If we build this idea and add a hojillion users, it might be more expensive than some other ideas,” give way to more concrete comparisons like, “Each additional user costs us $0.036 per month. Do we make enough on paying customers to cover the cost of two million more users?”

For this reason, we advise clients to build tangible prototypes of their ideas as soon as possible. They don’t have to work well or operate at Web Scale™️. They just need to prove, at a basic level, that the idea kinda works.

For my lighting build, after considering several prototype options, I settled on the Philips Hue White Smart Light Bulb Starter Kit. At the time, the kit retailed for around $70 and included two networked, dimmable LED bulbs and one Philips Hue Hub. I knew that Hue was unlikely to be a viable solution for my whole house, but it fulfilled all of my requirements for a smart-lighting prototype:

  1. Easy to try
  2. Easy to back out
  3. Inexpensive

One trip to Home Depot (brick and mortar is great when you’re impatient) and 15 minutes of setup later, I had dimmable, networked lamps in my master bedroom.

🍳 Get Feedback from Stakeholders

With the prototype in place, ask everyone what they think. For most companies working with a custom software consultancy, “everyone” means a handful of people who will use the software on a daily basis, and another handful of people who will maintain it.

For my build, “everyone” meant my wife Ashley, myself, our dog Roxy, and a houseguest. I couldn’t think of a non-awkward way to invite someone over to test a lighting prototype, so I played the role of houseguest myself. Most of Roxy’s feedback was inferred from head tilts and tail wags.

Initial feedback on the smart-lighting build was mixed. The new ability to dim bedroom lamps in the evening was nice, but the bulbs themselves were ugly. Ugly bulbs were fine when hidden behind a lampshade, but significantly worse than alternatives when placed in more visible fixtures.

Scheduling the lights to turn on gradually at 6:00 a.m. was well received during the week. But when, early on Saturday morning, the bedroom lamps glared to full brightness, waking both the humans and the dog with a start, the scheduling feature was immediately disabled with extreme prejudice.

Launching an app to turn off the lights when half asleep was universally derided as super-annoying and significantly more work than rolling over to engage ye olde manual lamp switch. Our pretend houseguest was incensed at the need to install an app to navigate the guest room successfully.

The score so far:
👨🏽‍💻 Me: 👎
👩🏽‍💼 Ashley: 👎
🧟‍♂️ Houseguest: 👎
🐶 Roxy: 👎
Back to the drawing board.

🐣 Build a Slightly More Ambitious Version of Your Idea

Once you’ve tested your prototype, collect your feedback and reformulate your next prototype. Take into account the positive and negative feedback from your stakeholders, and build a prototype that creeps toward something you could actually release as a product.

For this stage, you’ll need to more carefully consider the pros and cons of each vendor or library that you might work with. You’ll want to compare the real cost of each option, including initial spend, fixed costs over time, marginal cost per user, cost of expansion, etc.

Most of the companies we work with are weighing technology stacks, third-party vendors, and deployment targets, choosing between pure web apps, progressive web apps, cross-platform mobile experiences, and fully native mobile experiences. A good consultant will help you navigate the tradeoffs associated with each option.

For my lighting build, I considered four providers seriously:

  • Philips Hue
  • Lutron Caseta
  • Insteon
  • Mixed providers

After weighing the initial cost (advantage Hue), total overall cost (advantage Insteon), ease of interoperability (advantage Lutron), and failure modes (advantage Insteon), the best next step for me was an Insteon Hub, one Insteon SwitchLinc In-Wall Dimmer Switch attached to a pendant light in our dining room, and an Echo Dot to control it.

Insteon’s system had the best failure modes around. When a storm knocks out our internet, we still have perfectly serviceable dimmers. Lighting schedules (for exterior lights only 😴) continue to operate without internet connectivity. Critically, when the power grid comes back online after an outage, the switches return to the state where you left them. Some of the other providers have a bad habit of turning everything on at full brightness when returning from a power outage.

During the initial build, bring your stakeholders in to help with early decisions. When the decision came down to Lutron vs. Insteon, I proposed both options to my set of stakeholders (🐶 abstained, but 👩🏽‍💼 and 🧟‍♂️ had opinions). This feedback cycle exposed a previously hidden constraint: Light switches shouldn’t look like something out of Star Trek.

As the techno-optimist in my house, I hadn’t spent enough time considering the diff between normal switches and my proposed solution. Bringing in 👩🏽‍💼 (and even 🧟‍♂️ to some extent) during the provider selection phase highlighted a question that comes up often when building custom software: “How different is this going to be from what I already know?”

In some situations, a break from the past is valuable and provides long-term benefits for users at the cost of short-term discomfort. In other situations, though, the break carries no inherent benefit.

In my case, choosing Lutron would have meant switching from a traditional paddle-style switch to a cluster-of-buttons style switch. Not a huge diff, but also not one that carried any inherent benefit. Insteon’s offering provided the same functionality in a package that looked almost exactly like a traditional paddle switch.

Identifying which situation fits your project will either help minimize unnecessary discomfort for end users or give you a solid reason that you can share and talk about as a group.

🍗 Get More Feedback from Stakeholders

After your project is up and running in a more production-like setting, step back and get more feedback from your stakeholders. For my build, after installing the second smart light in our network, adding voice control with the Echo, and switching providers, I heard the following:

  • 👩🏽‍💼 I don’t find myself ever talking to the lights
  • 👨🏽‍💻 ZOMG technology is amazing! 😻
  • 🧟‍♂️ So…it’s a light switch? Like, on and off. Mmmkay. Why is this cool again?
  • 🐶 Play time?

Listening for unexpected feedback is super-important at this phase. People are settling into a production-ish system. Now is the best time to check in with them to get their unrestrained feedback on what they find annoying. Later on, as your project gets closer to full-on production, delivery pressure will begin to outweigh fixing annoyances and adding creature comforts in your prioritization sessions.

For me, this phase of feedback uncovered an annoying buzzing noise. Certain combinations of LED bulb and LED bulb dimmer switch produce an audible buzz in normal operation. Depending on the ambient noise levels in your home and your proximity to the bulb in normal use, this may or may not be a factor for you. It’s not an issue for all of the bulbs in our house, but for the lights on our bedside tables, it nearly ended the project.

Fortunately, after experimenting with a few different bulbs, we found one with a buzz that was inaudible most of the time. We now have slightly higher-end Cree LEDs in the bedside lamps.

The score so far:
👨🏽‍💻: 😻
👩🏽‍💼: 🤷‍♀️
🧟‍♂️: 🤷‍♂️
🐶: 👍

🐥 Scale Up Your Solution

Now comes the fun part, scaling! Take your production-ish solution from the last step, combine it with more feedback from stakeholders, and start building. For this part, there are a few new things to consider: ongoing maintenance and expansion costs, switching snafus, and emergent wins.

For many clients, this is where picking the right vendor, library, or tech stack pays huge dividends. Choosing a system that makes scaling easy, like Heroku or AWS, can help you rapidly ramp up to handle new users when you need to. Choosing a tech stack that gets better as it grows like an (almost) pure static functional system can help the technical team stay focused on features and avoid costly rework.

For my build, this phase meant rolling out switches to additional rooms in the house, one at a time, until the entire building was covered. Instead of eating the entire cost upfront, I opted to roll out the lighting network gradually, adding a new room every month or so. This smoothed out the financial impact a bit and gave stakeholders time to get used to the new options gradually.

Because I knew that I would be buying a bunch of these switches over time, I set up price alerts on camelcamelcamel, a service that monitors the price of any product available on Amazon. Those alerts helped me stock up when switches were available for $35 instead of $50, further dropping the cost of the final install.

As I added more rooms to the network, I discovered two unexpected challenges: naming and grouping.

Think for a moment about the light switches in your home. If you had a houseguest 🧟‍♂️, how would you verbally direct them to turn on the lights in your living room? You might say something like, “It’s the middle switch over there” while pointing to a wall panel.

With a smart light network, any addressable light needs to have a unique name. For some rooms, this was easy. Telling Alexa, “Turn on the kitchen lights” does exactly what you’d expect. But for others, it gets a bit ridiculous. What do you call that one light at the intersection of two hallways by the garage door? In my house, that’s now “garage hall light,” a phrase that takes so long to say out loud in my over-enunciated talking-to-a-machine voice that Alexa control is almost not worth it.

The second emergent problem was finding desirable light groupings. All smart home platforms let you establish groups and scenes, collections of arbitrary lights (and other accessories) that can be controlled together. The most common one, and the coolest demo in my house, is “movie time.” When I say, “Alexa, turn on movie time,” anywhere in my house, the living room lights dim to a set level, and every other light in the house (including that one lamp in the living room that is in exactly the right position to cause a glare) turns off.

As I added more scenes and groups to the network, I had to start answering questions like, “Should the barn lights be turned off when we’re watching a movie?” Most of the time, if it’s just 👩🏽‍💼👨🏽‍💻🐶 at home, probably. But what happens when one of us wants to watch something on Netflix while the other is doing chores in the evening? We could add a “movie time while 👩🏽‍💼 is feeding the horses” scene, but the odds of any of us remembering to use that magical phrase are…not great.

I started seeing my lighting as a collection of named use cases. I use at least five of them every day. “Good morning” turns on all the upstairs lights and starts playing some pop music in the kitchen. “Going to work” stops the music, turns everything off, and says, “Toodles!” out loud (because why not? 😄). “Get ready for bed” turns off the basement and barn lights, turns on the bedroom lights, sets the upstairs to just-bright-enough-to-walk-through-without-tripping, and turns on the deck light so I can take 🐶 outside. “Bedtime” sets the bedroom lamps to 50% brightness (I replaced the Hue bulbs with these nifty in-wall dimmer outlets from Insteon) and turns everything else off. Finally, “Goodnight” turns everything off.

Another unexpected benefit of the smart lighting system was the ability to, without rewiring, combine multiple fixtures into a single conceptual fixture. My kitchen, for whatever reason, has a separate control for the light over the sink. In the year that I’ve lived in the house, not once have I wanted to turn on the other lights in the kitchen, but not the sink light. So, armed with a flow chart from Insteon, I set up the sink light switch and the other kitchen light switch as a connected pair. Now tapping either switch controls all the lights in the room.

🐥🐥🐥 Get Even More Feedback from Stakeholders

With a production system in place, pause to ask your stakeholders how they’re feeling about the new product. If you’ve been working with them all along, you should hear lots of praise. In my case, the biggest pieces of feedback I got for the completed lighting network were:

  • Can we set up “movie time” so that it also turns on the TV?
  • Can we schedule the exterior garage lights to turn on at sunset?

For the final build in my house, the score was:
👨🏽‍💻: 👍
👩🏽‍💼: 👍
🧟‍♂️: 👍
🐶: 👍