Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

What are best practices for managing and maintaining large Rails app?

share|improve this question
    
Anything specific you are thinking of when you say 'large'? Do you mean lots of source files? A complex database schema? 100 people working on it simultaneously? Anything else? –  dafmetal Dec 29 '10 at 14:08
    
Lots of source, 10+ live servers, complex db schema and 5 ppl on it=) –  Alexey Anufriyev Dec 29 '10 at 14:29
add comment

2 Answers 2

up vote 2 down vote accepted

The big need is test. Add a really big test suite to be sure avoiding some regression.

When you can try to extract some part in gem too.

share|improve this answer
add comment

Note these are my recommendation based on experience.
They certainly include personal preferences and opinions gained through experience.

  • Tests for any code put into production.

  • Make sure your source control is git over svn and others.

  • A good issue / request / bug tracking system. I recommend Pivotal Tracker over others like Trello.

  • Encourage and support tdd and bdd. Make it a priority to educate and share this information.

  • Communication Style. At all levels, listen first. Also explain, show examples and give details as to why things are done a certain way. Be prepared to be challenged, be friendly when it happens and be prepared to change when it makes sense

  • Team Communication. Often overlooked. Make sure that people can speak their mind, can be honest and are respected. Let them know when top just focus on getting code out and when to pay more attention to the big picture. Yes ideally both all the time but in reality that pendulum swings based on other factors (time, money, etc.).

  • Product Manager Communication. Maintain a tight and free-flowing communication with the project manager. Make sure they understand the business and drive it forward with technology as appropriate. Communicate to them why other items are being done and how they will help them.

  • Management Communication. You need to talk a lot with the senior management in order to get the resources and buy-in to do the other items on this list. Items that don't seem to make sense to them need to be patiently shown.

  • Address technical debt. Consider "1 week in 6" for code fixes - refactoring, improving, cleaning up code. It takes a lot of maturity to say "no features this week, it's code cleanup time", but it's incredibly valuable for the business and also a great moral boost for good programmers.

  • Keep the technology up-to-date. Build into your calculations the need to constantly upgrade the components. Consider it "oil changes" - you don't "have" to do them. But you know the long-term consequences of not doing them. I know this from killing a car engine with 78,000 miles on it...

share|improve this answer
    
Git is certainly popular amongst Ruby developers, but what makes use of Git rather than other DVCS (or even centralized VCS) a best practice? Surely this is an issue of developer preference rather a maintainability best practice. –  Lèse majesté Mar 4 '12 at 17:51
    
So your argument for Git being best practice basically boils down to, it's popular and I see lots of good programmers use it? I don't think you fully grasp what a best practice is. A best practice is a rule that consistently demonstrates superior results and one simply can't hope to succeed without embracing. There are plenty of excellent and successful developers and teams that use Mercurial, Bitkeeper and other less popular DVCSes. Heck, there are people who achieve great results using centralized VCS including old schoolers who use CVS. Don't confuse trends with best practices. –  Lèse majesté Mar 5 '12 at 0:20
    
I admit, I'm not the most agreeable person, but so far none of your arguments for why using Git and Git only is a best practice are very persuasive. Even your "everyone uses it, so there's no re-learning" argument has nothing to do with best practice. Put this way: if I have a team that is used to using Mercurial and has been for years, would that argument still hold? If not, then I don't see how that can be a best practice. But this discussion has gotten too long for the comments section, so I guess we'll just agree to disagree. –  Lèse majesté Mar 5 '12 at 14:23
    
cleaned up comments. –  junky Apr 18 '12 at 2:53
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.