Agile Zone is brought to you in partnership with:

Ayende Rahien is working for Hibernating Rhinos LTD, a Israeli based company producing developer productivity tools for OLTP applications such as NHibernate Profiler (, Linq to SQL Profiler(, Entity Framework Profiler ( and more. Ayende is a DZone MVB and is not an employee of DZone and has posted 485 posts at DZone. You can read more from them at their website. View Full User Profile

So, what have YOU been learning lately?

  • submit to reddit

One of the worst things that can happen to you professionally is stagnation. You know what you are doing, you know how it works, and you can coast along very easily. Unfortunately, there is the old adage, "it isn’t what we know, but what we don’t know that is going to hurt us. It is what we don’t know that we don’t know that is going to bite us in the end."

One of the reasons that I have routinely been going out and searching for difficult code bases to read has been to avoid that. I know that I don’t know a lot, I just don’t know what I don’t know. So I go into an unfamiliar code base and try to figure out how things work over there.

I have been doing that for quite some time now. And I am not talking about looking at some sample project a poor schlump put out to show how you can do CQRS with 17 projects to create a ToDo app. I am talking about production code, and usually in areas or languages that I am not familiar with.

A short list of the stuff that I have been going over:

  • CouchDB (to learn Erlang, actually, but that got me to do DB stuff)
  • LevelDB
  • LMDB
  • NServiceBus
  • Mass Transit
  • SignalR
  • Hibernate
  • Hibernate Search

Those are code bases that do interesting things that I wanted to learn from. Indeed, I have learned from each of them.

Some people can learn by reading academic papers, I find that I learn best from having a vague idea about what is going on, then diving into the implementation details and seeing how it all fits together.

But the entire post so far was a preface to the question I wanted to ask. If you are reading this post, I am pretty sure that you are a professional developer. Doctors, lawyers and engineers (to name a few) have to recertify every so often, to make sure that they are current. But I have seen all too many developers stagnate to the point where they are very effective in their chosen field (building web apps with jQuery Mobile on ASP.Net WebForms 3.5) and nearly useless otherwise.

So, how are you keeping your skills sharp and your knowledge current? What have you been learning lately? It can be a course, or a book or a side project or just reading code. But, in my opinion, it cannot be something passive. If you were going to answer: “I read your blog” as the answer to that question, that is not sufficient, flatterer. Although, you might want to go a bit further and consider that imitation is the sincerest form of flattery, so go ahead and do something.

Published at DZone with permission of Ayende Rahien, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Ondřej Smola replied on Wed, 2013/09/25 - 1:05am

Hi Ayende,

when i am looking for something new to learn i first try to describe what technologies i am using and how they comunnicate/fit together (i am mainly Java ,FP(Scala,Groovy), JS guy) to find a hole in my knowledge. Inside the hole i go depth first search to find  what lowest thing i need to understand to be able to start going up. Last time i did that i hit JVM JIT compiler ASM output :). So last three weeks i study JVM internals (JIT,GC and some advanced low level stuff) together with microprocessor architecture ( i have enrolled in mooc course that looks very promising Coursera Computer Architecture ).

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.