Posts

Showing posts from 2017

Big Mountain Data & Dev Conference

On 10-11 November 2017, I had the opportunity to speak at Big Mountain Data & Dev Conference (aka Utah Code Camp) in Salt Lake City, Utah. I gave 3 talks across the 2 days.

Code Review - 10 November 2017
According to a 2016 survey by Smart Bear Software code reviews are the #1 way to improve code quality. Come to this session to learn the benefits of reviewing code, as well as different tools and techniques for conducting code reviews.

Professional Software Craftsmanship - 11 November 2017
As our profession grows and matures, it becomes more and more important for us to develop a sense of what it means to be a software professional. Analogies to existing professions are easily drawn. Precision and analytical problem solving are essential. So are we engineers? Creativity and willingness to try things we’ve never done are core to success. So are we artists? We are a new breed of professional that draws on but is unique from what has come before.

An Architecture for Autonomy - 11 November…

OpenWest

On 13 July 2017, I had the opportunity to speak at OpenWest in Salt Lake City, Utah on An Architecture for Autonomy.

An Architecture for Autonomy
In the 5 years that I have worked as an architect at Pluralsight, we have grown from one team of 4 engineers to over a dozen teams totaling more than 100 smart, professional software craftsmen. During this time, we have also acquired more than half a dozen companies and disassembled a single monolith 40+ bounded contexts with hundreds of independent microservices. Come to this talk to learn how we integrated .NET, PHP, Python, NodeJS, Ruby, Elixer, Scala and soon Go into a single, functional product offering. Come to this talk to learn how we have embraced team autonomy to create an architecture that allowed us to deliver more than 60 new user experiences over the last year.

Info about the conference can be found here.
An updated version of the slides for An Architecture for Autonomy can be found here.

Desert Code Camp 2017.1

On 14 October 2017, I had the opportunity to speak at the Desert Code Camp in Phoenix, Arizona. I gave the following two talks:

An Architecture for Autonomy
In the 5 years that I have worked as an architect at Pluralsight, we have grown from one team of 4 engineers to over a dozen teams totaling more than 100 smart, professional software craftsmen. During this time, we have also acquired more than half a dozen companies and disassembled a single monolith 40+ bounded contexts with hundreds of independent microservices. Come to this talk to learn how we integrated .NET, PHP, Python, NodeJS, Ruby, Elixer, Scala and soon Go into a single, functional product offering. Come to this talk to learn how we have embraced team autonomy to create an architecture that allowed us to deliver more than 60 new user experiences over the last year.

What is Lean?
When we talk about any tool, technique or practice that we like, we can fall into the trap of thinking that “Everything good is X” and “X is every…

FL PyCon

On 7 October 2017, I had the opportunity to give the morning keynote at the inaugural Florida PyCon in Orlando. I choose to speak about Professional Software Craftsmanship.

Professional Software Craftsmanship
As our profession grows and matures, it becomes more and more important for us to develop a sense of what it means to be a software professional. Analogies to existing professions are easily drawn. Precision and analytical problem solving are essential. So are we engineers? Creativity and willingness to try things we’ve never done are core to success. So are we artists? We are a new breed of professional that draws on but is unique from what has come before.

Info about the conference can be found here.
Slides for the talk can be found here.

System Architecture: Messaging Business Events

Originally published on April 14, 2017 at https://www.pluralsight.com/tech-blog/system-architecture--messaging-business-events

When we started on our journey towards bounded contexts, we wanted to maintain the small-team, focused, feel that we had enjoyed with as a single team supporting a monolith. One strategy we adopted was to limit our dependencies between the teams and, by extension, the different bounded contexts. We did not want to introduce temporal runtime coupling between components developed by different teams because that would reduce the autonomy of these teams and limit our ability to develop the products that we wanted to develop in the ways we wanted to develop them.

For example, imagine one team is developing an API and they have a goal of a 50 millisecond response time for 98% of requests. If they have to take a runtime dependency on another team that has 20 millisecond response time for 90% of requests but a 200 millisecond average response time for the remaining re…

System Architecture: Bounded Contexts

Originally posted on Dec 2, 2016 at https://www.pluralsight.com/tech-blog/system-architecture-bounded-contexts


Microservices architectures are currently highly fashionable. The question of how small a microservice can be is asked regularly. Is micro even small enough? Can we build pico-services? At Pluralsight, we have chosen to go a different direction. We are focusing on team size.

In order to maximize throughput, how big should a team be? One pair of developers? Ten pairs of developers? For the time being, we have settled on two to three pairs of developers with a Product Manager, a UX Specialist and a DevOps Engineer. Given this team structure, we ask ourselves how big of a chunk of our system can that group truly own?

We expect a team to own the discovery, design, development, delivery, and production support of their part of the overall system. This means that we have to divide the system carefully. If the creation of a new feature requires coordination across multiple teams, th…