Рет қаралды 125
Software Engineering | Legacy App | Ruby on Rails
In Office Hours Episode 6, SmartLogic Developers Anna Dorigo and Bilal Hankins join Elixir Wizards Sundi Myint and Dan Ivovich to discuss their experiences maintaining a decade-old Ruby on Rails codebase.
They delve into the critical importance of deeply understanding the codebase, keeping dependencies current, and adapting to the original application's evolving priorities and design choices.
The conversation spans a range of topics, including accessibility, testing, monitoring, and the challenges of deploying database migrations in production environments. The guests share effective strategies for sustaining and enhancing older codebases, such as employing automated tools, performing code audits, and adhering to clean coding principles.
00:11 Introductions and guest background info
02:51 What is 'legacy code'? / challenges of mature app maintenance
03:23 Adapting legacy applications for modern demands
08:55 Balancing dependency upgrades without breakage
11:16 How to educate clients on system maintenance
13:17 Considerations for scheduling maintenance windows
14:30 Deploying database migrations at scale
16:45 Simulating large datasets for development
18:56 How testing guides legacy codebase updates
21:00 Adapting test suites for shifting priorities
22:16 Ripple effect of feature changes in legacy apps
24:03 Automation for security monitoring
26:17 Design and architecture solutions
27:42 Leveraging code reviews and feedback
29:52 Git-blame -- uncovering historical context
33:10 Legacy code and code audits as learning material
35:00 Clean code: leave it better than you found it
Key topics discussed in this episode:
Grasping the legacy codebase and its historical context
Overcoming accessibility issues in older applications
Safe dependency management and upgrades
The effects of application scaling on database performance
The critical role of comprehensive test suites in legacy systems
Using tools like Sentry for error tracking and performance monitoring
The benefits of automated security and dependency scans
Juggling client needs with budget constraints
Local simulation techniques for large datasets
The value of iterative code reviews and maintaining clean code
Utilizing git history for contextual understanding
Onboarding strategies for legacy projects
Removing obsolete code and avoiding "magic numbers"
Importance of descriptive naming for better code clarity
Leveraging a rich repository of example code for learning and reference
Proactive code audits to anticipate issues
Managing pull request sizes for smoother reviews
Communicating effectively about upgrades and potential impacts
Strategies for handling large databases efficiently
Ensuring thorough test coverage
Keeping open lines of communication with clients regarding ongoing maintenance
Links mentioned:
COBOL programming language developer.ibm.com/languages/c...
Ruby on Rails rubyonrails.org/
ARIA Rules (Accessible Rich Internet Applications) www.w3.org/TR/using-aria/
Shawn Vo on Elixir as a Competitive Advantage smartlogic.io/podcast/elixir-...
Bundler Audit Ruby Gem rubygems.org/gems/bundler-audit/
Sentry application monitoring and error tracking software sentry.io/
Dependabot Github automated dependency updates
Mix hex.audit hexdocs.pm/hex/Mx.Tasks.Hex.A...
Git Blame git-scm.com/docs/git-blame
Cow hoof trimming videos - The Hoof GP on KZbin (TW graphic imagery)