|Muddy Buddy Project
For the month of December, some of our developers have been participating in this year’s Advent of Code. Seeing the high level of engagement and excitement with this style of practice, we wanted to create a similar obstacle course where team members who aren't assigned to billable work have a place to experiment with common problems and scenarios that they might see with a client project.
But first, we have to actually build the course! Our goal is to set up a computer that houses this obstacle course for developers to spend some time experimenting with, and then reset for the next pair of developers to try. By making training part of the process, we allow for our developers to learn by doing, failing, and experimenting with, rather than combing a wiki, reading a book, or attending a lecture.
We are often asked to help teams who have a product that is 90%, 95%, or 99% done, but still does not work. They are under pressure to meet a delivery date, there are some persistent “random” bugs, and a couple of performance issues.
In many of these cases, we find that by performing a set of rigorous, boring, tedious, experiments we can isolate the performance problems. Too often, teams attempt to fix performance problems using one miracle guess after another, making the problem worse and more difficult to diagnose. When the performance problem is associated with a database, one key experiment is to build a new set of tables, and to write some simple hand-coded SQL to validate expected performance.
The short story is that a great number of these database performance problems are one of the tools being used to make programming easier, for example the ORM tool is using a loop making hundreds of thousands of SQL calls to load records instead of a single SQL request.
When programmers do not use their fundamental skills, those skills can atrophy. And with today’s modern technology stacks there is seldom a need to hand write SQL. However, in order to debug, and perform necessary experimentation, programmers are well served to be comfortable with basic SQL skills, and a willingness to quickly hand-code experiments to validate the performance of a library or framework.
Context behind the project name:
Muddy Buddy comes from the name of the Tough Mudder obstacle course where participants work together without the pressure of competition. The competition describes itself as a community built on teamwork and overcoming obstacles, where stepping outside your comfort zone is the reward.