It’s not sexy work, but there are hundreds of companies out there with old gridlocked Rails apps. Developed by people who have moved on, or by intact teams who haven’t put a priority on paying down technical debt. These are companies doing good business but struggling to innovate.
You’ll often hear groans and moans in developer circles about the prospect of working on established projects. But, the fact of the matter is, these projects can be very rewarding. I actually heard Mike Guterl say out loud “give me brown field any day”. That’s why we love Mike, it’s an indication that he’s a developer with a lot of real experience. But why does he say that?
Chances are if a project has lived on to be brown field, then its value has already been proven and defined. Developers gain an inherent focus and drive on projects where the value is apparent. Developers looking to hone their skills can’t do much better than learning how to work within, understand, and re-shape an existing codebase. In the course of a development career this kind of work is more often the rule than the exception, and knowing how to approach it is a valuable skill.
We use a tool called Code Climate to “grade” the quality and flexibility of the code we write. Working a Code Climate GPA from a “0.8” to a “2.01” to a “3.98” is a progression of small victories. I think most developer’s secret love is refactoring. Maybe that’s a geek post for another day.
It’s exciting to see your clients start to get excited. The outset of this type of engagement can be a little tense as we try to understand how each other work, and forward progress isn’t always easily apparent. In the meantime, we go to work with a jackhammer. At some point we get over the hump, the dam cracks open, and then it’s gushing. Sweet, cold, thirst-quenching features. It’s awesome to be able to provide that.
Software projects never suffer due to technology limitations. Managing and guiding the process is the hard part. It’s our job to be knowledgeable about how to do that successfully, and to pass that knowledge on to everybody we work with. It’s the difference between giving a fish, and teaching to fish. Teaching is rewarding and learning is valuable.
Working on a gridlocked application never fails to present its own set of unique problems and challenges from both a code and project standpoint. Interesting problems and challenges are what good developers are all about. Overcoming these challenges can require a bit of faith for the product owner, but when the value of the application is proven, the payoff in happiness and momentum is a huge win for everyone involved.
See our case study, it was the motivation for this article.