What I Learned at RailsConf 2018 about being a Good Software Developer
This year at RailsConf I learned about being a good software developer, but not in the way you might think. The conference, held on a snowy April weekend in Pittsburgh, PA, offered a plethora of technical workshops, talks, and the opportunity to network with talented software developers from across the world. While I did leave with a few new tools, techniques and a larger professional network, that’s not what I mean when I say that RailsConf taught me about being a good software developer. RailsConf showed me that being a good software developer is much more than being able to implement cutting edge features.
The conference began with a keynote (which I summarize more fully here) from the creator of the Rails framework, David Heinemeier Hansson (DHH), which challenged participants to think of progress in software development in terms of conceptual compression. This means taking difficult concepts and abstracting them in such a way as to make their implementation much more effortless thereby making space for new advances in what is possible. Conceptual compression is deeply embedded in software, computation, and technology in and of itself.
DHH was not arguing for conceptual compression for its own sake. Rather, its purpose is to lower the barriers to entry into the field of software development. He pointed to the rise of code schools, of which I am a product, that can train people to be productive contributors in a matter of months. He also described how increasingly specialized tools breed alienation from labor because they tend to separate the worker from the final product. So from the start RailsConf was framed by the inventor of Rails in terms of getting more people into software development in a manner that fosters a deeper connection with their work and better solutions for the world.
Incidentally, I found myself sitting directly behind DHH in a session later that day. After the talk I introduced myself and I was impressed by how approachable he was and how he seemed genuinely interested in my journey into the Rails community.
The theme of looking beyond the immediate needs of feature implementation and seeing the bigger picture of the role of software and its creators in society was ever-present in the talks that I enjoyed throughout the week. For example, Loren Crawford’s talk “Down the Rabbit Hole: An Adventure in Legacy Code,” offered a humble and honest take on working on inherited code. Rather than bashing technical debt, Crawford focused on improving a codebase through rigorous test driven development and a ‘leave it better than you found it’ ethos. She outlined a framework that starts with writing tests to capture current behavior. Next refactor existing code while preserving functionality. Next add a new tests for new functionality. And lastly implement the new desired behavior.
Day two’s keynote by Rails core team member Eileen M. Uchitelle was “The Future of Rails 6: Scalable by Default”. While she went into staggering technical detail on how she and the core team are working on making Rails scalable by building out test parallelization and out of the box multi-database support, that was not her point. Rather her talk was a call to action about how the entire community has a responsibility to compress concepts and push them upstream. The community’s cutting edge innovations should be features in the next version of Rails so that no one has to reinvent the wheel.
The next three talks I went to were on the theme of running a software company. The founders of Test Double, Todd Kaufman and Justin Searls, shared the insights they have learned over the last half dozen years running a remote software studio. There talk took a question and answer format where they covered everything from how they got started to their biggest mistakes.
Next, Michael Herold gave a talk called “What’s in a price? How to price your products and services.” Herold took tough economic concepts and made them feel approachable with great visuals, organization, and delivery. He described a system for collecting data from potential customers about perceived value and then using economic models to hone in on a non adversarial pricing scheme.
The third talk in the series was given by Thijs Cadier from AppSignal titled “Reporting Live from the Ramp of Death” Cadier used accounting principles written out in Ruby code to show why running a SaaS business can be so challenging. In the end the prescription was to weather the storm and ultimately focus your energy on making your customers really, really happy. In all of these cases, the speakers’ goals were not to sell product or hawk services. Rather their interest was to share the lessons they’ve learned in their own business ventures.
Sara Mei’s impromptu keynote on day three of the conference further cemented the theme of what it means to be a good software developer. She said our code base is where we live as developers, so our goal must be to make it livable. She used physical buildings and architecture as a powerful metaphor for software. Our fellow developers are our roommates in our shared living space and we should all take turns doing the dishes and cleaning up after ourselves. While it is easy to just pile one more book on the stack of books and magazines on the coffee table, strive for improvement over conformity and find a better place for all that clutter.
The last talk I went to was given by Claudio Baccigalupo, titled “Inside Active Storage: a code review of Rails’ new framework.” He expertly dove into the new cloud storage solution built into Rails. He showed how to use Active Storage, then he described the main classes that make up the framework, and lastly he explained how each of these classes works by diving into the source code. His point, however, was only partly about teaching Active Storage. The bigger message was Rails source code is approachable, understandable, and we should all try to improve it when we can. This was underscored when he asked Rails contributors in the room to raise their hands and asked for a round of applause from the audience.
I also left with a feeling of deep pride in the contribution and reputation the Turing School has in the Rails community. There were a total of four different talks given by Turing alum, not to mention Jeff Casimir's planning contributions to the conference.
- Let's Get SASSy - Ilana Corson
- The Intelligence of Instinct - Emily Freeman
- Stop Testing, Start Storytelling - Mike Schutte
All of these developers (except Jeff) entered the field within the last few years. But, already they are sharing their knowledge and experience with the community at large and making an impact.
Being a good software developer is about more than the ability to implement features. It is about sharing knowledge and making that knowledge easier for other developers to use. It is about assuming the best, as in the case of working with legacy code, and looking for areas where we can improve through open source contributions. It is about being open, honest, and humble. It is about treating clients and customers with respect. Software development is about building liveable spaces. And being a good software developer today matters more than ever because as they say, software is eating the world.