Sustainable Development: A Path for Apps and Developers
September 20, 2023
Ryan Findley, Principal
Philadelphia, PA
In the world of app development, sustainability means creating software that not only solves today's challenges but is also designed to adapt and evolve, efficiently facing future needs. Whether you’re a developer or a project manager, consider this your friendly guide to building software that lasts—without wearing out your team in the process.
1. Ensuring Long-Term Sustainability of Apps:
Creating a lasting application isn’t just about great code; it’s about building something that can adapt and grow over time. Learn how to make your apps stand the test of time, thriving as they evolve to meet new challenges and technologies.
- [ ] Consider the long-term vision for the app
- [ ] Implement modular and scalable code
- [ ] Plan for regular maintenance and updates
- [ ] Remember: A good architecture is one that lets you defer as many decisions as possible
2. Streamlined Developer Onboarding Process:
A smooth onboarding process is the gift that keeps on giving. By creating a welcoming and easy-to-follow introduction for new team members, you set the stage for productive collaboration and sustained team health.
- [ ] Document code and architecture decisions
- [ ] Create a comprehensive onboarding guide
- [ ] Regularly update onboarding materials based on feedback from those who use them (documentation can get out of sync with the current realities of the system)
3. Effective Use of Automated Tests:
Testing shouldn’t be a chore—it’s your trusty sidekick in maintaining a robust and bug-free application. Explore how automating your tests can be a lifesaver, ensuring your software remains in top shape as it grows.
- [ ] Write tests as you design and develop features
- [ ] Run automated tests before merging code changes
- [ ] Regularly update and extend test coverage
- [ ] A well-maintained test suite can serve as trustworthy documentation and code samples for future developers (or future you!)
4. Maintaining a High Signal-to-Noise Ratio in Code:
Clean, clear code is like a breath of fresh air. Learn how to keep your codebase tidy and efficient, making it easier for any developer (including future you) to understand, update, and improve.
- [ ] Don’t Repeat Yourself (“DRY”)
- [ ] Unless the two things just happen to resemble one another right now
- [ ] For example: a house and a car may both have a “open_door” method and nothing else when you’re early in the development process. This does not mean they are the same thing and should share code.
- [ ] Regularly refactor and update code
- [ ] Follow a consistent coding style. We recommend StandardRB for Ruby projects because it defines some useful standards without being overly prescriptive.
5. Utilizing Rails (and Frameworks) for Sustainability:
Frameworks aren't just about convenience; they’re a foundational element of sustainable development. Discover how Rails, with its conventions and extensive libraries, can be your steadfast ally in building enduring and maintainable applications.
- [ ] Leverage the “convention over configuration” principle
- [ ] Make use of established libraries (Gems) when possible
- [ ] Regularly keep libraries and dependencies up to date. Sometimes this will mean updating your code to reflect the current state of evolving best-practices.
6. Selecting the Right Framework for Your Project:
Choosing a framework is a big decision, and it’s not just about today’s needs. Dive into the factors that will help you pick a framework that aligns with your long-term vision and will continue to be a reliable choice as your project evolves.
- [ ] Assess your team's familiarity and comfort with potential frameworks (and the languages they’re written in!)
- [ ] Evaluate the long-term support and community around the framework: Has this framework been around long enough for you to believe it will survive to the end of this project?
- [ ] Consider the project’s requirements and scalability: are the strengths and weaknesses of your framework choice aligned with the goals and opportunities of your project?
7. Preparing for the Lifecycle of an Application:
Your application has a life beyond its launch date. Plan for the future with strategies that will allow your app to gracefully adapt and change as necessary without constant, exhausting rework.
- [ ] Establish a roadmap for future features and improvements, to the extent possible. “Agile” doesn’t have to mean flying blind if you have a vision for the future.
- [ ] Set aside time for regular code reviews and refactoring.
- [ ] Consider using static analysis tools like CodeClimate or RubyCritic to identify hot spots.
- [ ] Plan for contingencies and potential pivots: What’s your “bus factor”?
8. Ensuring Security in Your Application:
Security isn’t a one-time task; it’s an ongoing commitment to safeguarding your users’ data and trust. Learn how to build and maintain strong, up-to-date security practices that will protect your app for the long haul.
- [ ] Regularly update and patch dependencies
- [ ] Implement rigorous access controls and authentication
- [ ] Conduct periodic security audits
- [ ] Use static analysis tools like Code Climate and RubyCritic
- [ ] If storing personal information, consider asking for a budget for annual penetration testing (pr “pen-testing”)
9. Investing in the Developer Community and Training:
Cultivating a healthy developer ecosystem isn't just about hiring—it’s about nurturing talent and fostering a culture of continuous learning. Explore how engaging with the broader community can make your team stronger and more resilient.
- [ ] Encourage team members to attend conferences and workshops
- [ ] Allocate time for in-house knowledge-sharing sessions
- [ ] Support developers in contributing to open-source projects
10. Making Informed Technology Choices:
Picking technologies is more than just following trends—it’s about making decisions that will benefit your project in the long run. Find out how to select technologies that complement your vision and won’t leave you stranded down the line.
- [ ] Conduct thorough research before adopting new technologies
- [ ] Weigh the pros and cons of potential technologies in light of long-term needs
- [ ] Be mindful of the potential learning curve for new team members
Whether you choose Ruby on Rails as your framework or explore other options, here’s to sustainable, happy coding and fruitful projects that stand the test of time!
In a world that’s constantly on the move, we often find ourselves caught in the relentless cycle of accumulating tasks, creating invisible queues in various aspects of our lives. A cluttered kitchen sink full of dishes is a perfect embodiment of this problem. It not just occupies space but robs you of the ability to use the sink freely for other needs. Let's venture into the transformative concept of a 'zero queue', a philosophy that promises not only to save time but to unlock unforeseen opportunities and values.
Are you a seasoned Ruby on Rails developer struggling to land your dream job? Or worse, any job at all? Applying to cold jobs across many industries is a nightmare right now. Maybe you’ve fired off rounds of applications each day, with only a few resulting in an interview that ultimately leads to nowhere. Or, you’ve spent hours applying to jobs that you’re qualified for, but you never even hear back.
Ruby on Rails is a sustainable choice for both app development and developers. This open-source web application framework is renowned for its simplicity and flexibility, enabling the swift creation of robust applications.
As AI continues to evolve, so too does the concern that we'll be effortlessly swindled out of our personal and financial information by cyber tricksters armed with voice cloning technology.