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 struck out on my own to learn the latest web development tools and try my luck as a freelancer. Since then I've spent the last year and a half getting familiar with the Ruby on Rails ecosystem. The full Rails stack takes an unbelievable amount of time and energy to learn properly, and I'm proud to say that I feel fluent with most of it.
Now 3 years into my Rails career, I've built up some strong preferences and biases:
- The real cost of an app is in understanding, maintaining, and extending it 1-3 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 much more painful.
- 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.
Now 3 years into my Rails career, I'm currently travelling the world with my fiancee, working remotely and training up as a Holacracy practitioner on the side. I've also decided to shift my web development work towards Elixir & Phoenix as my primary stack / 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.