Chaos with Care
In this talk, we will discuss how to introduce and grow chaos engineering in your organization. This includes how to effectively communicate this approach with leadership and related teams, strategies on how to start small and expand into more risk adverse environments, and valuable lessons learned on making it effective within your systems. Approaches will include specific examples of how teams have applied chaos engineering at Cerner Corporation, a healthcare technology company. From this talk, you will be equipped with ideas on how to safely grow your chaos engineering practice within your organization.
When I began my career in software engineering, I was fueled by the joy of programming and working through unique problems knowing that an answer would be discoverable through my trusty debugger and perseverance. As my career grew in the field, I began to learn more of the challenging constraints with large systems, human organizations, and complexity that seemed untamable. Through additional exposure to these larger problems that no longer could be tackled through the use of my beloved debugger, I began to see how it required different care and feeding at both the personal and team level to overcome these challenges. By investing in these areas, it would invigorate our creative process and deliver ideas that would contradict our traditional thinking.
In this talk, we will explore approaches that I have found to be effective in improving your creative thinking process, bringing diverse ideas into teams, and building a culture of routine learning from different perspectives. From these approaches, we will look at ways to effectively pitch ideas to introduce change in your systems and in your teams, which can breathe life into the possibilities of different solutions to previous difficult challenges. We will also briefly cover things to combat routine costs to the team, which can give more focus on how to tackle the larger problems versus being distracted by the continuous noise that can drain your joy of programming.
After this talk, you will have a series of approaches that you can begin applying immediately to yourself and your team to invigorate your problem-solving approaches. Through my experience, these also bring additional benefits of improved morale and optimism by witnessing new ways to effectively change something. All attendees of this talk will receive a limited edition DevCon 2020 guide on these approaches, which will include rare, never before seen, illustrations by the speaker.
Building Confidence in Healthcare Systems Through Chaos Engineering
This talk presented at QCon San Francisco 2019.
- Get the 8.5 x 11" PDF hand-out
- QCon SF 2019 Recap: Blog post that summarized my experience at the conference and all of my notes.
This guide includes a second page, to convert the guide into a paper airplane.
Decisions: The Pursuit of Options
One of the most powerful things we can do is make a decision. With the ever growing landscape of technology choices, we are faced with making a decision on a frequent basis. While decision making is not something we view as a core activity of engineering, it is the one thing we are doing at all levels of our architectures. This type of activity not only deserves our focus, but should also be considered as part of our craft that we pursue with improvement.
This talk is a sequel to The Hitchhiker’s Guide to Meetings, where we will pursue the craft of decision making. One of the most valuable products from meeting are decisions. In this talk, we walk through the important process of identifying what problem we are trying to solve and how we can make decisions that allow us to change. This will include common approaches of pattern matching of problems and understanding the boundary of both problem and solutions spaces. Furthermore, how we can learn from cognitive science on how our established pattern matching can limit our ability to see newer solutions. Finally, we will share an effective documentation approach of capturing the context around a decision, so the “why” is not lost in the choice, empowering you to always being capable to make a different decision as things change.
All attendees of this talk will receive a limited edition DevCon 2019 guide on decision making, which will include rare and never before seen illustrations by the speaker. The guidance included can be immediately applied, and can help improve the skills of all decision makers.
The Hitchhiker’s Guide to Meetings
Meetings, the human ritual of synchronous communication. They are considered the cornerstone activity of keeping teams aligned on their mission. As engineers, we encounter meetings routinely in order to facilitate team work in software development. While meetings are a core ritual to team work, we many times find meetings drain our efficiency of software development. As a result, we perceive meetings as a negative exercise, only hindering us from our larger goals of software creation.
In this talk, we will discuss how you can optimize the event of meetings. A brief overview will be shared on the common traps that meetings can impose on our lives. Characteristics and the mathematical properties of meetings will be discussed to provide guidance on how to better organize for these events. Styles of communication and the importance of listening for both verbal and non-verbal cues will also be examined. Lastly, tools and tactics will be shared on how to reduce the total cost of meetings by minimizing the amount of time spent.
After this talk, you will have practical approaches which can improve your participation and planning for meetings. As a result, you will feel empowered to control how meetings are operated, which will enhance your overall quality of life.
The Power of Pranks
The most valuable asset in an organization is the people. Without people, you don’t have an organization (excluding robots). In the world of software development, many forces get applied to the people within your team which harm or degrade their quality of life. Fixed deadlines, the presence of Murphy’s Law in production environments, compilers which don’t understand your intentions, or just dealing with humans that don’t understand your code is working as designed. Face it, software development is tough and the only way you can survive it is by sticking together. The power of camaraderie within a team, is a force that can combat many of these ever-changing external forces that can damage your team. To build camaraderie, one must invest time and effort within the team.
This talk discusses how infusing humor within your team through the application of pranks can build camaraderie. An empirical study of pranks at Cerner Corporation, which has spanned more than eleven years, will be shared. In this study, you will get to hear some of the greatest pranks that have been witnessed and documented at this company. Pranks applied from entry-level engineers to some of the highest levels of leadership in our engineering organizations will be shown. From this talk, you find out the benefits of humor through the application of pranks which can give you stories and friendships that outlast any software solution you build.
Diagnose Your Lethargic JVM
If you are building Java Virtual Machine based services, a core measurement of your success is performance. The act of measuring and analyzing how your code is performing becomes an essential activity in all phases of your development. This skill becomes even more critical once you are required to troubleshoot and evaluate your service in a unique production environment. Understanding what operations are consuming most of our CPU time, as well as, what areas of your code are wasting resources will greatly improve your ability to diagnose a sluggish JVM.
In this talk, we will explore the key tools for monitoring and measuring the JVM. An overview will be provided on core concepts involving thread state and memory management operations. Examples will then be provided on what free tooling exists to crack open your JVM and profile your code to identify the slow or defective areas. This will briefly cover how you can achieve this locally, but will focus on monitoring a remote JVM (typical for production scenarios). Finally, we will briefly cover how you can further map what system level operations are being invoked from the JVM to understand what limitations it may be facing. The examples provided will be tailored to the Oracle HotSpot JVM in a Linux environment.