Last days of December are the best opportunity to summarize the passing year and make plans / adjustments for the next one. As last few days were kind of chill-out time for myself, I’ve made such a recap as well. The result is thrilling - it seems that I’m a hopeless junkie and learning new stuff is my heroin. I have to have an opportunity to learn and self-develop or otherwise I feel caged and limited.

I’ve browsed my archives to find out that during last 12 months:

  • I’ve read about 1.5 books per week (about half of those were tech books)
  • I’ve watched over 20 hours of Pluralsight videos per month (average)
  • there was no single day without reading some whitepapers / tutorials / blog posts regarding technology
  • each time, the first thing after starting the computer is opening an IDE ;)

In 2013:

  1. I’ve spent uncountable hours on learning / trying various JavaScript libraries / frameworks (Ember.js, Twitter Flight, Breeze.js, Backbone.js) and mastering some of them (Angular.js, Grunt.js).
  2. I’ve made a big leap out of .NET towards JVM world - I’ve started to learn Scala (still far from truly mastering it) and I got smashed flat by Clojure (aka “the spawn of deepest hell abyss” ;D).
  3. Puppet, Chef and Vagrant unleashed me from the clutches of evil … I mean Windows - I’ve tried numerous OSS solutions available for Linux only to find out that they are more mature and feature-rich than their Windows equivalents.
  4. I’ve found out that NoSQL alternatives (RavenDB, Cassandra) for standard RDBMSes are viable and ready to rumble: there are scenarios where there make much more sense than ol’ good MS SQL Server.
  5. I’ve learned extremely much about Continuous Delivery and its enablers - that technology is very rarely an obstacle in making your coded automatically testable (vide JavaScript SPA), that "the developer’s agility" is what really constraints continuous delivery and that a sole crusader won’t change the reality - he can mess with it in a short-range time-frame, but such a adjustment won’t be permanent.
  6. I was striving to at least touch everything in .NET I haven’t touched (at all or “enough”) until now - claim-based security, NServiceBus, OWIN, Nancy, ServiceStack).
  7. I’ve discovered a tiny (but powerful!) box named Raspberry PI and found out how to make it useful (even if these were just the basics and there’s still a lot to discover).

I’ve managed to touch all of that with my own hands (“reading up” != “learning”):

  1. By now, I may speak JavaScript better than polish ;>.
  2. I may have cried while debugging Scala, but shush :]
  3. I was running Hadoop, Cassandra, RabbitMQ, Storm, Nagios and some other clusters on my own, local virtual clusters.
  4. I was doing TDD in every programming language I’ve used.
  5. I’ve sharpened my swearing skills to the edges of insanity while learning Ruby (mind the Chef recipes).

In the meantime I was trying to make myself a better both leader & co-worker by applying IRL what I’ve learned from David Anderson, Gojko Adzic, Eric Evans. Obviously, all the failures in doing so are on me. these guys did great job on their side.

Did I manage to apply all that knowledge in commercial projects?

Of course I didn’t. I think that maybe I’ve applied 10%. What is more, I realize that most likely I won’t EVER apply majority of this stuff and I’m not going to force anything to change that - I’ll always go for solution that:

  • is not only sufficient enough to fulfill the requirements (both functional and non-functional), but …
  • … is cost-efficient
  • … is maintainable (in terms of further dev and daily ops)
  • … team is comfortable with
  • … seems to be aligned with the road-map of organization / team / client

Isn’t it a waste then? If only there’s a slight chance that this particular library / framework will have its use in future, it’s not a waste. Architect is a guy who’s supposed to have a palette of viable solutions immediately once he’s presented with the scenario.

That’s why I don’t regret a single minute spent on Akka, ZeroMQ, Rx, Flume, Sinon.js, Elasticsearch, PhoneGap, SpecFlow, KendoUI, etc.

What’s next?

This was an awesome year and I’ve learned a lot, but … I have appetite for SO MUCH MORE! My plans for the forthcoming year cover (among others):

  1. applying Apache Mahout (http://mahout.apache.org/) on HDFS
  2. learning Dart (https://www.dartlang.org/) in depth
  3. finding out what’s the fuss about Erlang (http://www.erlang.org/) and R (http://www.r-project.org/)
  4. trying Spark (http://spark.incubator.apache.org/)
  5. learn more about Apache Kafka (https://kafka.apache.org/) and how does it differ from a typical MOM
  6. work a lot on my DevOps skills & tooling, including continuous deployment, task automation and systems monitoring
  7. Scala, Scala, Scala and even more Scala on the top :)

Addendum

Learning is so much more efficient when it’s not an individual experience, but a joined team effort. That’s why I’m so happy with being a part of such a great team - it’s not a coincidence that our cooperation goes so well, there’s a real chemistry going on and that really helps in self-motivating to learn and self-develop. Thank you guys, thank you very much!

Share this post