During a No Fluff Conference that I attended a few years ago, I had the fortune to sit in on Neal Ford's talk on Building a Technology Radar. At the time I found the idea intriguing, and thought it would be advantageous to leverage this for personal tech evaluation, but for whatever reason I was never able to get the ball rolling.
Now, looking back at the past year (or two), I'm finding myself a bit frustrated by my lack of focus on new technologes. I was able to dig into some stuff - I managed to dive into AngularJS a bit, for instance - but I still feel like I could have done better and should have had a more focused approach to the whole thing. So I figure what better way to handle the situation than to try and throw up my own radar of sorts here and use this site as a way for evaluating technologies that I think are worth paying attention too.
I'm not going to go all-out (not yet, anyway) and build a full-blown technology radar like Neal suggests, but I'm hoping that just listing some of the tech I'm interested in here will help me get the process rolling and get me more focused on evaluating some new tech.
With any luck, I'll be able to follow up this post with more information and evaluation of the various items I list here. And I hope to revist this list in a year (or maybe sooner) to see where things are and how good/bad I may have been at tackling some of the items listed.
Languages/Frameworks
JavaScript UI frameworks are likely going to see a lot of rapid evolution this year and we're probably going to see a lot of cool ideas come to the fore as well. I think we're going to see a lot of awesome stuff on the JavaScript framework front in 2015.
AngularJS
Like I mentioned above, I was able to dive into AngularJS last year thanks to an opportunity that arose in my workplace which allowed me to take AngularJS for a spin. While I don't feel like I was able to leverage the framework as well as I could have I found it an interesting system to work with and I'm listing it hear as something to revisit or explore further.
I'm curious how poor UI performance is addressed going forward, as this is something I encounted in my own development effort (I think there was a bit of lack-of-experience on my part affecting performance as well). It seems like the Angular devs are already well on the way to addressing a lot of rough spots in the framework, so I'll be interested to see how things shake out.
That being said, I think Angular is going to continue to be one of the bigger players in this space, so I'm planning to focus on it more this year.
React and Flux
I'm grouping these two together since, while they are in fact separate frameworks they seem like they are really intended to work together.
I think these frameworks, much like AngularJS, are trying to solve the UI state-management problem that every JavaScript-heavy UI inevitably gets tangled up in. React doesn't seem too terribly different from some of the things that AngularJS accomplishes, but it's different enough that I think it warrants a peek at some point this year. Given that it's been developed by Facebook, I expect that it's well focused on high performance - something that not everyone tends to do well on the JavaScript side (especially the current version of AngularJS).
Polymer
I am very intrigued by this project. My brief foray into using this system last year makes me think that it - and Web Components in general - could potentially render systems like Angular and React obsolete, or at the very least drastically simplify UI development in ways that haven't been possible in the past.
This project is still in the super-early-alpha stage and has a looooong way to go, but I am definitely planning to keep an eye on it.
Go
As far as back-end technologies go, I've had a desire to expand my expertise out of the Java ecosystem for quite some time now (most of my work these days is Groovy/Grails), and the Go programming language seems like it's been gaining more and more traction with each passing day.
I've been intrigured by Go for a while now and I feel like it's something important to at least play around with in some capacity given it's slow-and-steady rise in popularity. The laguage and the ecosystem that's growing around it seems to be a paradigm-shifting approach to modern web development, and I'm always curious about languages/systems that turn things on their head or just take a radically different approach to the whole thing.
Clojure
Clojure has been around for quite a while now, and I've been wanting to give it a spin for just about it's entire existence. Clojure has piqued my interest in much the same way as Go, and it has continued to grow it's ecosystem and tooling and seems like a very solid language to build real-world systems with.
While it doesn't totally get me away from Java-land (it's a JVM-based language), being a Lisp-like language it has always held strong on my radar over the years. I took the time to learn Lisp many years before Clojure ever existed and I have always been eager to see what a Lisp (or something similar) might be capable of in a modern development project.
Platforms
NodeJS
I've done some prototyping using NodeJS, Express and MongoDB and while that was certainly an enjoyable experience, I'd like to push things even further and actually build a production-level system using it.
I know the NodeJS community has encountered a bit of schism as of late, but I don't think that's going to have major impact on Node's mindshare going forward. If anything it might actually help the ecosystem even more.
Docker
I'll be honest: I've had a hell of a time wrapping my brain around Docker. It's not that I don't necessarily understand the system, but rather a case of the problems that it appears to be solving aren't currently issues I have to contend with in my day-to-day work.
I have no doubt that it's a useful system, but I'm just not sure how useful it would be to me right now. I'm still keeping this on the radar as something to explore if the opportunity avails itself, but probably won't actively pursue...yet.
Tools
emacs
Yes, I'm putting emacs on my list of tools to explore.
I was a pretty active user of emacs years ago, but it fell by the wayside when I got more into the Java ecosystem - there are tools for leveraging emacs as a Java IDE, but they pale in comparison to the tools available in Eclipse and IntelliJ (and IntelliJ is especially good for doing Groovy/Grails development).
As I start exploring other languages/systems like Go and NodeJS, I expect that I would be better positioned to revist a robust editor like emacs, so I'm hoping I can get myself back into the emacs world for development...because despite all the awesome stuff in modern IDEs I still kind of miss emacs.
Techniques
Material Design
I think what Google has been trying to do with their Material Design initiative has a lot of merit, and I think it's something worth digging into and trying to use on a project. Fortunately some of the technologies I'm looking at exploring - AngularJS and Polymer, specifically - have some built-in support for Material Design already, so building a UI that leverages Google's guidelines shouldn't be too difficult.
I feel like I need to beef up my design chops a bit in general anyway - developers as a whole should have a better understanding of design these days - as we're moving into an era where UI/UX design is starting to be a big factor in the success or failure of a product.
JavaScript Unit Testing
This is just a general catch-all for my desire to beef up my understanding and capabilities when it comes ot unit testing JavaScript code - soemthing that I desperately need to improve upon if I'm going to leverage any of the newer frameworks I'm looking at.
Well, it's a lot of stuff to mess with in a year, and I'm sure there will be some other things that pop up during the year that I might want to have on my radar, but right now this is what I'm looking at tackling.
I hope to follow up this post with some more in-depth discussions of the technologies that I do get a change to play with.
Stay tuned.