Articles

Exploring the power of LLM Embeddings (10/31/2023) In this wave of excitement over Large Language Models (LLMs), one of the most interesting technologies that emerges from them is the idea of embeddings. Most people interact with LLMs (like ChatGPT or Bing Chat) by providing an input and watching it build astonishing output: Write me a 2-line poem about a carrot whose dream…  
Joint Accountability (10/12/2023) Throughout my career as a software engineering manager, I have built a metaphorical toolbox containing methods and techniques for building strong, compassionate, and productive teams. One of the key tools is assigning engineers joint accountability to projects. For significant features or changes, I ensure that two people are accountable for delivery, quality, communication, and success…  
Solving the hard problem of opinions and feedback (2/27/2023) A software team’s ability to communicate openly and honestly is critical to its productivity and growth. Communication can create a bottleneck if you have not fostered an environment where people feel comfortable sharing. This is an area that I have explored with my teams for a long time. It started when I learned about psychological safety. Building…  
A culture of experimentation (2/19/2023) In metal working there is a process called annealing where cycles of heating and cooling are used to modify the chemical structure of the metal to achieve desired properties. This process was the inspiration for a type of software algorithm called simulated annealing. Simulated annealing is a probabilistic technique for finding a global optimum to…  
Technical Debt and your Sock Drawer (11/22/2022) How do you organize your sock drawer? Are they neatly folded and set in rows? Are they balled up in pairs (potentially destroying the elastic!)? Or are they thrown in with reckless abandon, sometimes preventing the drawer from even closing properly? This is a personal choice, but each represents a trade-off. Spending more time up…  
Engineer Habituation (5/25/2021) Don’t accept the status quo Ever been on a project where the build takes way too long? Or the tests are flakey? Or getting your environment setup is a long, laborious and error prone process? Most engineers have experienced this at some point in their careers. Interestingly, engineers get used to it. Over time, these…  
Finding focus when working from home (5/21/2021) Since becoming a remote-worker (first due to Covid and now working for a remote company) I have struggled with focus during meetings. When working in an office I am very diligent about leaving my laptop at my desk and giving meetings my full focus. However, working from home makes that much harder. As I sit…  
Turning a website into a mobile app using Progressive Web Apps (4/24/2021) Going from website to app … quickly I recently went through the process of turning my website Idiomatically into a mobile app by making it a Progressive Web App (PWA). It was eye-opening to see the current state of the old dream of “write-once, run-everywhere”. Back in the year 2000, I was a Sophomore in high…  
WebProtege on Azure Kubernetes Service (8/24/2020) My team at Microsoft is attempting to model and relate the many logical and physical entities that exist across Azure. This is a large and complicated task and we make use of Ontology specialists to help guide the modeling work. Ontology (n): a set of concepts and categories in a subject area or domain that…  
Idiomatically.net – Idioms across languages (6/14/2020) A site for exploring idioms across languages and locales I am fascinated by idioms, their occasional obscurity and ability to capture to words no longer used in common parlance (like the word pale in beyond the pale). But more importantly, I am intrigued by their power to convey a nuance of meaning that is hard to…  
Building productive, customer focused teams (11/13/2019) Engineers thrive in environments where they can focus and “get in the zone”. Teams often face many distractions and competing priorities that force engineers to shift context and divide their attention. They struggle to balance “heads down” time with “heads up” time. Adding new features requires team members to be heads down and focused. Responding…  
Software and the Principle of Charity (7/10/2019) Software developers are people. People who care, people who want to do their very best to make their products better and their customers happier. I have been fortunate to work on products that are used by millions of people. And almost all the time the changes we make are well received and we get great…  
Psychological Safety (7/2/2019) A key to a strong software team In 2016 the New York Times published an article chronicling Google’s search for factors and behaviors that lead to the highest performing teams. Google pulled in both data scientists and psychologists to scour their internal data and to interview team leads and engineers. The data showed that the best…  
Have you written down your team values? (10/30/2017) I’ve got a question about your team’s shared values, can you sparrow second? “Does your team have a set of shared values? ” After being asked this by a colleague, I thought the answer was definitely yes. But thinking more about the question, I began to question whether these are the team’s values or just my own.…  
Regularly Scheduled Hackathons (9/20/2017) Building a stronger and better product through recurring hackathons Every six weeks my group holds a full day hackathon. This is one day every other sprint where the engineers can put aside the rigors of shipping production software and test new ideas and experiment with creative ways to make our product/service better. This practice has…  
Quarterly Questions (8/23/2017) Taking the pulse of your engineering team I didn’t realize that one of the hardest problems I would face as a manager would be to accurately judge the pulse of my team and its members. I learned quickly that people are harder than code. Code can be unit tested and doesn’t have complex emotions (yet!).…  
Creating a successful software internship (8/4/2017) Ensuring interns get the most out of a summer with the team For two consecutive summers, I interned at Microsoft and remember fondly my excitement working at a large company. Everyone I worked with was smart, kind and eager to help. I had a great time but didn’t learn what life would really be like as…  
Delegating Decisions (6/8/2017) How a simple phrase “What do you think?” can help build a stronger and more independent team When I became an engineering manager at Microsoft three years ago, I anticipated some hurdles. My most prominent worry was the delegation of work; I have worked on challenging problems for years and I imagined it would be…  
Feature Flags: A cure for production-phobia (5/20/2017) Feature flags are an extremely important technique for deploying high quality changes quickly to production. My group at Microsoft has embraced them heavily over the past few years with great success. They allow us to keep almost all of our changes integrated into the same branch. They enable us to control feature roll out and…