A few more thoughts re "project mass" and maintenance

21 views
Skip to first unread message

Piotr Janik

unread,
Feb 25, 2016, 11:16:01 PM2/25/16
to cc-dev...@googlegroups.com
Following the discussion from today's retrospective meeting - actually, are our projects really big? Looks like Portal has 82k of Ruby lines. It's big for CC, but probably it's between small and medium-small in the IT world. I feel you may find projects that have millions of lines of code, and are still reasonably maintainable (https://www.quora.com/How-many-lines-of-code-is-Google-Chrome). Also, even if we split Portal into smaller pieces, but keep the same style of coding etc., I don't think I will find it easier or less frustrating long-term. LARA is a good example - it was started as a new project, but I feel its quality degraded pretty fast. It's easier to work with it, as it's smaller, but I wouldn't say it's a totally different from Portal. So, two new things to blame, which aren't mentioned usually, are: ourselves ;) and technology. Maybe the tools we use aren't the best for this team, projects or could be improved?

I can't count how many times I was swearing while working on LARA / Portal, because we don't have any formal interfaces (e.g. try to add a new question type in LARA, you'll spend a few good hours doing global searches, looking for failing code spread out across the whole repository, and well, effectively trying to guess its... interface). Such a simple thing, invented long time ago. Also, dynamic interpretation, no compilation so no static error detection, duck typing, etc., I think all that is powerful, but requires lots of discipline. It's a great language and framework, but I feel it can work well when you are really strict about your code, patterns + use perfect TDD/BDD approach. It's not easy in practice though. And at the same time, it's too easy to add new features. ;) Our projects are mostly driven by new features (as they seem to generate money / developer time, not the projects themselves), so usually there is no time for proper, big refactoring and it might be difficult to change it.

I feel that a language which enforces good patterns could have saved us from some troubles. I'm not saying "hey, let's switch to Java", but who knows, maybe it wouldn't be that bad idea (I'm talking about the backed code, not Java applets that everyone hates). There are probably many modern alternatives which are more fun and less overspoken too - Scala, Clojure, Play, Haskell [probably too extreme] to name a few.

I think React is a great example. If we were just refactoring badly designed JS code into smaller pieces, probably it wouldn't change that much. React seems to work really well, as it simply enforces good patterns. Of course it's way more difficult to change the whole backend framework and language, especially taking into account that Ruby on Rails is probably one of the best available ones and obviously there is no proof it's a culprit. But I would at least think about it before we start next Rails project.

Reply all
Reply to author
Forward
0 new messages