Jackson with Jersey was another option, but we decided Spring would be easier to work with in the end, albeit more complicated to set up.Īs a front-end developer, I've never had the occasion to get familier with REST Services or controllers, let alone try to implement them. Having no experience setting up back-end frameworks, I relied on the suggestions of my colleagues in making this decision. I used the Spring MVC framework and the Spring Tool Suite IDE. Java is obviously a well-established language with a substantial community behind it and abundant documentation. What was the biggest drawback (besides lack of familiarity)?įollowing you will find the takeaways from this experiment in programming language transition, as told by each Granny's Addressbook developer.ĭay one: Java Granny Developer: Mark Pettit, JavaScript developer extraordinaire.Would you recommend using this language on a project if so, where/when?.Where did you get your questions answered?.What things did you learn that you will take back to your "day job"?.Now that you're done, would you find it easier to implement Granny again in Java (or whatever language you are most skilled in) or in the new language we assigned you?.What IDE, editor, and so on did you use?.What frameworks and runtimes did you use?.Aside from the overall guidance above (be "quintessential" and "conventional"), nothing was dictated, like "use higher order functions" or "declare your types." Then each developer was asked some basic questions. Then after many moons, they implemented it in their assigned "new" language. Most developers implemented Granny first in Java and Spring, according to our staff dev guide for a comparable experience. A community that functions on this short a timeline in a helpful manner for a n00b will be reasonably helpful to developers on real projects. Our thinking: A company/organization with enough PR energy to help with the article will be helpful to a paying customer as well. (We have enough in-house expertise in Java, JavaScript, and Ruby to do the mentoring ourselves.) We also used community forums, IRC, and mailing lists where possible. We contacted the company or community behind most of the languages and asked whether a mentor could be supplied.
We also relied on the most commonly used free tools, and because we're an open source shop, we used Linux across the board. For Java, our JavaScript guy started out with JAX-RS and the Java EE stack before moving to Spring.
To ensure each version of Granny was "quintessential," we used the frameworks and methods most common for the language in question, though this should be taken with a grain of salt. For Node.js, we put to the test a back-end Java developer who didn't know JavaScript. For example, our UI/JavaScript-savvy Web developer was assigned Java, which he's never really done, living as he does in JavaScript/JQuery/HTML/CSS land.
Still, the code is a good idea of comparative implementations in the various languages, as you'll see.įor each language, we chose a developer who didn't know the language at all. These aren't necessarily "best practices," and with a 24-hour deadline, there are bound to be mistakes. You can find the list of GitHub URLs and basic instructions here. Armed with a pre-prepared PostgreSQL database and AJAX-y HTML, we implemented Granny as a "quintessential application" in Java, Kotlin, Ruby, Scala, Clojure, JavaScript (Node.js), and Go. Here are the results of this attempt to teach our developers seven languages in seven days. So what better way to get a first look at the cost of switching programming languages than to turn Granny loose on a bunch of developers and break them in on a language and tools they've never used before? No security, no search - just something you should be able to bang out inside of a day depending on how carefully you code it. (See " Which freaking PaaS should I use?" and " Will the future be written entirely in JavaScript?" for examples of this.) Granny is also something my firm uses in its staff development program and to vet job applicants. Because of this, I tend to use Granny to evaluate new technologies.