Sunday, February 23, 2014

Still Primarily Using Java at Work (but Scala is finally begining to catch on at work)...

I celebrated my third year of learning Scala and FP (Functional Programming) in January. Looking back, I am VERY happy with both how much Scala and FP skill I have acquired. Much more importantly, though, is how dramatically it has improved my Java skills in completely unanticipated ways. I now have three small projects built in Scala (none in production yet, but all three are used in production support).

Honestly, Scala has ended up being a bit more convoluted trying to get something simple like Scalatra up and offering a simple REST service. The steps required to get to a base project working state in Eclipse are just too involved for me to honestly suggest/prod to my Java software engineering peers to resolve. As such, I am still reluctant to actually get a full on Scala server built up in my IT production environment. There's no problem for me to do it. It's just that I would be the only one with the skills to maintain it. And that's a problem since I now work +12 projects and have to be able to jump into any one of them at a moment's notice.

That said, where I have used Scala, it has been heaven compared to Java. I have a data feed loader which is a very typical ETL (Extract/Transform/Load) problem. And Scala has been just awesome in assisting with finding and updating just the delta between the data feed inputs and the resulting read only DB. I also have a weekly report I must run which details activities that are failing against a production system. The failures are reported as emails which collect in Outlook. It was less than 3 hours work to write a quick command line app which takes the emails at text and turns them into a tab delimited output stream that drops nicely into Excel. The last one is a Java code generator for a home-grown caching system. I've essentially reproduced most of the value of Scala case classes for use in Java. And that is proving to be invaluable as the core system this is initially being implemented against has +40 caches. That's a HUGE amount of Java boilerplate I will no longer have to manually maintain.

In summary, Scala and FP have elevated my productivity as an IT Architect Software Engineer substantially. And by substantially, I mean over 100% with no exaggeration. It's so fulfilling to be able to convert business problems to business value so much faster and flexibly than I was able to do with Java just three years ago.

No comments:

Post a Comment