I grew up on a farmhouse in rural Vermont. It’s a beautiful place. I’m more at home near forests and hills than in a city.
After high school I spent a gap year in rural Nicaragua, teaching English and computer classes to the local children. During my stay I learned some hard lessons on cross-cultural communication, poverty, waste, and NGO politics. I resolved to find a life path that allows me to help society organize its resources and knowledge more effectively.
Influenced by metatheoretical frameworks like Integral Theory, I’ve come to believe that improving our educational system, and improving our society’s understanding of developmental psychology, are the biggest leverage points for sustainably addressing the myriad crises of the 21st century.
After college I worked with with Lectica, Inc., a nonprofit startup working to build humane, open-ended, formative standardized assessments that are a joy for students to take and that support growth & learning (“virtuous cycles”) in students, teachers, administrators, and developmental researchers. Due to my knack for technology, I quickly fell into the IT role, learned various web development skills, and managed the development of their first interfaces for creating, refining, administering, coding, and analyzing results of Lectical assessments.
After four years with Lectica, I set out as a freelancer to get experience with a broader range of projects and master the Ruby on Rails ecosystem. The full Rails stack is pretty daunting to learn thoroughly, and I’m proud to say that I feel fluent with most of it.
After 6 years as a web developer, I’ve built up some strong preferences and biases:
- The real cost of an app is in understanding, maintaining, and extending it years from now — not in the planning or development steps. So it’s worth writing your code to be as readable as possible, even at the cost of slower progress and more verbose code.
- Excellent naming is key to readability. Well-named functions and variables are the best way to ensure easy troubleshooting and maintenance going forward.
- Emphasize simple, highly readable code over cleverness and “magic”. Rails’ motto of “convention over configuration” too often endorses the latter, and it makes troubleshooting and maintenance a pain.
- A good test suite is concise, easy to write, and easy to read. I’ve stopped using Rspec, for example, because its elegant syntax involves too much “magic”, making it awkward both to write, and to understand how the code works behind the scenes.
I’ve recently switched to Elixir & Phoenix as my primary web app framework. While I’m sure that Rails will stay popular for decades to come, I think Phoenix is a better foundation for my future projects.