How I learned to embrace the unknown and manage a team without direct experience

Posted Leave a commentPosted in Management, Software Development, Technology

When I began managing teams, I started with the team I developed software on. This meant that I knew the domain well, and was intimately familiar with the actual software and systems. Later, I moved to a team where I had limited experience with the actual code, but it still supported my old team and used a similar stack, so I was able to adapt quickly and understand it well. Recently, I jumped to a […]

No longer open for business – Why it’s time for the open office to die

Posted Leave a commentPosted in Management, Software Development, Technology

Since I graduated from college in 2007, actually even before that during my internships, I had only ever worked in an open office with varying styles of cubes. But in moving to Amazon NYC, I switched to an office with actual rooms. My team isn’t jammed into a row of trading style benches. It’s spread out across three team rooms with actual walls, windows, and doors. And having this has completely changed how I work. […]

The day I gave up on Continuous Deployments

Posted Leave a commentPosted in Management, Software Development, Technology

I’m a huge proponent of Continuous Integration and Deployments. I believe that the fast feedback cycle these processes enable is hugely beneficial to a software development team, and allows teams to get beneficial features out to customers faster. However, it is far from a silver bullet, and there are many steps teams need to take before they can be successful in leveraging Continuous Deployments. This is the story of how I learned this lesson the […]

Move fast and break things or slow as you go?

Posted Leave a commentPosted in Management, Software Development, Technology

Should a new team focus on moving as fast as possible to get features out to their customers or start with the best practices and processes they know they’ll eventually need? Is it better to move fast and learn from users through a short feedback loop? If so, is a team doomed to suffer poor architectural decisions and accumulate massive tech debt until eventually someone decides to stop features and blow up the system? While […]

Why I chose a HP Windows laptop over a MacBook Pro

Posted Leave a commentPosted in Software Development, Technology

When I started my new job at Amazon, I had the option to switch laptops. I’d been using a MacBook Pro for the last 5 or 6 years, and decided it was time to go back to Windows. My first day, a brand new HP Elitebook awaited me, and though it’s only been a week, I’m quite happy with the decision. Though I miss some parts of the Mac, I’ve already found a ton of […]

The end of a chapter, but not the end. I’m moving over to Amazon

Posted Leave a commentPosted in Software Development, Technology

After nearly 7.5 years at Audible, I am moving over to Amazon NYC at the end of January. I’ll be joining the Supply Chain Optimization Technology group, leading a team using some pretty sophisticated Learning Machines – think Machine Learning, Deep Learning and more, as well as building on the latest Amazon technology. I’m super excited for it, but leaving Audible after the better part of a decade is incredibly bittersweet. I’m desperately going to […]

Where we’re going, we don’t need servers. Why Serverless is taking over the world

Posted Leave a commentPosted in Software Development, Technology

Serverless applications are quickly growing in popularity, taking over huge portions of new app development for tiny startups and massive enterprise organizations as well. If the buzz and excitement over new announcements and education on best practices for serverless at AWS reInvent this year is any indication, they will only grow in popularity as time progresses. With no management of servers to worry about, the infrastructure management that cloud providers take care of with serverless […]

Reliability at Scale – How to build graceful degradation into applications at massive scale

Posted Leave a commentPosted in Software Development, Travel

Everyone thinks their system is reliable until suddenly it isn’t. With a service oriented or microservice based architecture, it can be easy to overlook a single point of failure that can cause a massive cascading failure, quickie harming users and losing their trust. Ensuring that a single failure is handled gracefully is of paramount importance in a large scale distributed system, but that’s much easier said than done. I’ve worked for multiple companies building large […]

How to get ready for AWS Re:Invent

Posted Leave a commentPosted in Las Vegas, Software Development, Technology

With less than a month left until this year’s re:Invent, I wanted to share what I’ve learned about getting ready and making the most of it. This will be my third AWS re:Invent, and the first time I’m speaking. This year’s re:Invent is bigger than ever, and it could already be an overwhelming experience. With a full five days of workshops, sessions, talks, and events to explore, it’s best to prepare ahead of time.  These […]

Management isn’t just people engineering

Posted Leave a commentPosted in Management, Software Development, Technology

I recently read a blog post from, as is often the source of somewhat polarizing ideas in software engineering, and engineer on medium who argued that management was simply “human engineering”, after several years as both a software engineer and a manager, I can see some similarities, but certainly can’t agree. There’s so much more than just fine tuning processes and treating people and relationships than systems in management and I find this idea far […]