I think I have luck, or 6th sense, or whatever, on technical areas. I used to learn something new just for fun, but later on this “something” helped me a lot on some serious projects.
The most recent sample is Cassandra, I started playing with it since last Sep or Oct, it was just because I heard of this “NoSQL” idea and it was trying to solve the problem I’ve been working on for so long (BTW, I used to use LDAP). Then among all those NoSQL solutions, in couple of weeks I locked myself on Cassandra.
Then my team switched from old project to the new one (start from Nov last year), and I got involved starting from this Jan (was doing transition prior to that). I heard about lot of different description about the project, but have no idea until Feb (yes, a month after I join the new project). Then, I found that knowledge I learn from Cassandra helped me really a lot, things like consistent hashing, dynamic deployment (adding/removing nodes, etc), and things like Avro (I don’t know how much Cassandra is using it, but it was the first time I heard of it).
Actually there was another team was trying to use Cassandra for their new project, but executive (I’m not sure which level, maybe SVP or EVP) forced them moved to in-house solution, which is what we are working on, I don’t the story behind that, but you can definitely get the idea of how similar these two are.
Anyway, I think it’s time to try something new as I need to prepare for my next project, it used to take 6 months or so.
P.S. previous samples (for all those I can share with public):
- I started playing with HTTP/Socket, 8 months later I got a job from a web company. I was trying to let multiple clients using single mainframe connection (the whole office of ~15 people got only one connection as it was expensive and difficult to setup), it became a bridge based on TCP (TCP was still fancy at that time in my industry), then found that I can actually use it to serve queries over the web so I setup a Web server for that (over IIS I remember), etc.
- I started playing with Linux on my home machine, about 9 months later company officially announce that we are moving to RHEL. In the first 3 months of migration, I got huge number of pings from developers (FreeBSD experts) from different team over the IM, asking me this or that kind of question, and the most popular question is “how can I find out if this package got installed on my box?” and the answer is “rpm -qa | grep -i package-name” :-W …
- I started playing with MySQL (actually for a friend’s web site), 5 months later I became a heavy MySQL user/admin (I beat Oracle guys at that time, yeah)
- I started playing Windows SDK to do some desktop development, 3 months later one of my friends asked me to build a music player – that was a crazy project, I finished the first version in Delphi, my friend told me she can only find C++ developers, so I deliver a C++ Builder version, then she mentioned actually those developers know VC++ only (so there are lots of “C++” under Windows >:) ), so the final version was actually VC++ Express
- and other 2~3 cases that I don’t think I can share as there are some internal terms which could be corporate trade secret …
Sure there are some other negative cases, the most significant is Ada – I spent quite some time on GNAT, etc, did pretty much development, but so far I’m not seeing any possibility to utilize it in any projects.