from Java ☕ to Ruby 💎
This is a slightly different style of post from our previous blogs. In this post, I (Phil) talk with Ieuan about his journey of coming from a wealth of Java experience to the Ruby stack we tend to use here in the Legal Innovation Lab Wales.
Hi Ieuan, can you give us a little bit of background about yourself.
I’m a software developer with 6 years industry experience working across a range of software types, including project management software, content management systems, and ecommerce. All of these offerings tended to share a common attribute though, as they were all varying shades of web-apps.
Where does your journey with Java development start?
I actually began learning Java as a teen as at the time a brand new game called Minecraft had released an alpha and everyone was talking about how it was built by a single developer which I thought was interesting, and fancied a go at doing the same.
At that point I was using online guides to write very basic Java programs, but once I realised I wasn’t going to be able to build a game without years of experience, I dropped it in favour of building websites poking fun at mates or websites based around video games I liked, as I could at least send those to people on MSN messenger for a laugh.
I picked Java back up as an undergrad student as that was the language of choice for the Comp. Sci. programme at Swansea Uni at the time.
And how long did you end up working as a Java Dev?
What would you say your greatest achievement in Java is?
I architected and built out an entire back-end suite of Java microservices for an organisation, which included rebuilding their existing payment engine which was 1 part of a clunky monolithic Java app. The resultant back-end lead to a vastly improved workflow and we were able to create and push new features for the org on a weekly basis, whereas prior things could take weeks or even months to go live.
This also involved building the back-end registration infrastructure for one of the UK’s largest seasonal charity events that in turn supported over 60,000 registrations with no downtime or issues therein.
What was your knowledge of Rails before you joined the lab?
Very little, I’d certainly heard of the framework and would associate it as a Spring like framework but for Ruby.
What were you first impressions of Rails?
At first I actually thought it would be pretty limiting, as the documentation makes clear that the framework is very opinionated about how things ‘should’ function.
It also seemed quite intimidating, as on initialising a project you’re immediately confronted with almost a dozen directories and sub-directories. Personally, I don’t like having aspects of a software project where I just let a piece exist and never find out why it exists, so this meant I felt compelled to spend the time reading up on what each bit was for.
How are you finding it now you been using it for a few months?
Having used it for a few months and across multiple projects, I really like Rails and I’ve found that a lot of the opinions that the framework has both make sense and help to expediate my development.
I suspect that the culture around Rails as an open source software project is what has created these robust rules. With a proprietary framework like Spring, there’s much less openness about the decision making behind the framework development. If you don’t have to justify your decision making, then the chances are, your documentation/guides will reflect this, and you will start asserting patterns and rulesets for your framework with no real explanation to the developer as to why that has to be the way to do things, and thus why that should be the way they do things.
What do you miss from Java?
I miss using annotations to define routes into your code; in Rails all of your routes are centralised in the routes config which means as the complexity of your app increases so too does this configuration. If these routes were spread out via annotations then it would be possible to lose track of all the entrypoints into your app which is also not a good thing, but then the rails routes command can still give you that collected list of routes so maybe it would be better
I also really like Java’s stream library for piping data from one state to another, with all the transformations required in that pipeline clearly laid out in the code. This behaviour isn’t absent in Ruby but I don’t feel it reads as nicely, though this opinion might change in time.
What do you miss from Rails if you’re working on a Java project?
At present I’ve not had to build a Java project which includes user authentication or DB integration whilst at the lab, but if I did then I would absolutely miss how seamlessly these are done in Rails via Devise and Rails models spec.
What would you choose now if you were to build a new project?
Is there anything else you would like to add?
Thanks for taking the time today Ieuan, and thanks to you for taking the time to read this far, I hope you found this interesting. If you do have any thoughts, feedback or would just like to get in touch please reach out via whichever platform you’re happiest using!