I’m trying to determine if a language I’m investigating (Groovy) is better for developing enterprise applications than our current language (Java). Specifically I’m trying to figure out if it will save significant time in coding, re-factoring and maintenance.
But, I’m not actually asking that question here as it’s waaaaay too broad, I’m just setting up my actual question:
What’s the best approach to gathering metrics to compare the productivity of two languages? I mean, it’s easy to look at example code that says “see, this is easier to write in Groovy than Java” or “this functionality is missing in the tools available for Groovy, but exists with Java tools.” But it’s much harder to figure out how that translates into time gained/lost in the real world.
I’ve been combing Google, but I’m honestly not even sure what I’m looking for. I know the question is still a tad broad, but if anyone has some answers I would appreciate it…
3
Write a small, but non-trivial application in the candidate language, and make a qualitative evaluation of the learning curve, ease of development, relative friction of the tool chain, and developer productivity.
I’d set up an experiment:
- Find a bunch of interns with strictly Microsoft experience. Train them on your Java tools and the language then give them a small project.
- Find some more interns (same number) also with strictly Microsoft experience. Train them on the Groovy tools and language then give them the same small project.
You want as many interns as possible but equal numbers on both teams. ‘Strictly Microsoft experience’ is so everyone is starting from roughly the same background (no head starts in Java or Groovy).
Try to pick “average” interns – not superstars that will skew the results or people you already know you won’t try to hire when they graduate. If you have enough of them you can hopefully average out their skill and experience levels.
All of the interns get a great learning experience, and you get the benefit of seeing how they tackle the projects and how steep the learning curve is. The internship experience can be an excellent way to find great new hires, and what better test than to give them an unfamiliar language and a solvable but nontrivial problem?
There should be an item #3 in the list above as a control, but I’m not sure what it is.
5