Saturday, December 31, 2011

Resolutions for 2012

So, after waking up from great 12h sleep, taking a refreshing shower I think it's a good moment to sit down and think about what I want to accomplish in the coming year. I've got a few technologies I would like to learn. My primary goals will be:

  • learn Clojure and write some bigger-than-hello-world app with it. I intended to learn it this year but didn't manage to. I really liked the Haskell course at the univeristy and enjoy using tools such as Google Guava that bring a bit of functional programming into Java. Clojure seems to have an active community and integrates nicely with Java so one day it might get useful in my daily work. And learning a different programming paradigm than OO is supposed to make me a better software developer :) 
  • learn JavaScript. That's one of my dark secrets - I don't know JavaScript at all (except for things that you use with JSF like alert or confirmation dialogs but that doesn't count). I suppose it's a secret I share with many other Java devs who are not doing much of front-end development. Anyway, JS seems to become incredibly popular nowadays so it's high time for me to catch up with the mainstream.
  • Create a kind-of-real-world app using Event Sourcing (and possibly NoSQL). I have been reading /watching about CQRS and ES all the time and feel ashamed I haven't done an app using ES by now. We're now starting to have CQRS and events in our projects at work but there's still a long way to get to ES (suffering from the poison pill architecture that CQRS with events and ORM is). So - off to work. I even have an idea for such app but have to think about it some more.
  • Become proficient with git. I'm using git for my pet projects, code katas etc at home but never got beyond the usage similar to SVN. I read a couple of good tutorials about git and have to get deeply familiar with it, learn how to do feature branching etc. Git seems the future of VCSs so I can't afford to stay far behind.
  • Create a roguelike game. I'm a long time lurker at RGRD but haven't started even a hello-dungeon roguelike project. Enough of theory, time to get some @ running!

That would be it for my primary objectives. Hopefully will get the mission completed during next 12 months.
There's also a couple of other things I would like to do but they are not that high on my todo list:

  • learn Scala. It seems to be a cool, JVM-based language that is gaining much attention right now. Additionally there's Akka that I would like to learn (Alternatively I might try learning Erlang).
  • finally read whole Java Language Specification. I did read excerpts from it but never read all of it. Time to fill in the gaps in my knowledge about Java.
  • go through Spring 3 documentation and see the new and shiny things they've added since 2.5.6. I was following the release notes but don't think I have a good understanding of what has been added/changed.
  • try to do some development for the cloud. Just to start and learn the new possibilities and fallacies.

Some people say you should be creating habits, not the resolutions list . Therefore I publicly admit that I want to develop the following habit this year: doing code katas daily. I tried to do it at some point this year but failed. I'm still doing katas from time to time but not regularly. And as an aspiring software craftsman I need to work on my skills everyday.

Have a happy new year!

    Friday, December 30, 2011

    2011 Summary

    So 2011 is coming to an end and it might deserve a few minutes of consideration, short analysis of what has happened during last twelve months. A few points I can think of right now:

    • in April I went to the wonderful DDD&CQRS class run by Greg Young. Many thanks to my company for sponsoring my trip to Kraków (not that it was expensive - would probably attend even if I had to pay for it myself)! Since then we started changing our architecture. It's still in-progress and there might be a need to fight some resistance from above before we can implement more innovation but I hope it will go well. 
    • as a result I signed in for Twitter. Was skeptical at first but it turned out to be amazing tool for continuous learning  and an almost complete replacement for my RSS reading list. I also found some brilliant folk to follow and what they tweet really affects my everyday work. Thanks tweeple! From my side I think I could tweet more and participate in some discussions (though they often happen when I'm asleep - damn you, Central Europe timezone!)
    • I also started blogging. Unfortunately I didn't write many posts, probably should do it more often, in order to practice my written english if not for anything else. That leaves some place for improvement in 2012.
    • As for my everyday work - I've become a team lead. That's not really something I enjoy but I'm trying not to flee from this responsibility - someone has to do the job. I think I'm slowly getting used to it and it's causing a bit less pain then it initially did. And I get more possibilities to change the way the team I am part of works, to improve it.
    • Oh, almost forgot - I also changed teams. Last team got its size decreased because of BAs inefficiency (not enough work to do for devs). I joined one of the Hospital Information System teams, then switched to the team lead position in another few months later. I wasn't really happy about people around me changing so rapidly but now I'm okay with my new place. 
    Okay, that would be it. Just a short summary of things I could think of. That wasn't a bad year, had many positive changes, some bad ones, but I can't really complain about it. Hopefully 2012 will be even better.

    Wishing everyone that might stumble upon this post a better new year! (especially those in Samoa for whom it's coming sooner than usual)

    Monday, December 12, 2011

    Why my job sucks? (rant)


    It's been a long time since I've written anything here. I'm not a very extravertic guy so I rarely feel a need to write about what I feel/think and most of the time a short tweet is more than enough. However, tonight I feel a big urge to rant about why I think my current job sucks. I wonder whether that means I'm getting burned out? Hopefully not...

    1. I don't have a feeling of progress, of learning, any more. I've been with the company for almost 3.5 years and until recently (half a year maybe?) I felt I was learning a lot every day.  Now I feel like I'm doing the same, repetitive tasks every day, and the first thought I get in the morning is "I wish I could get another hour of sleep" instead of "Yay, time to get some great stuff done".
      Maybe that was because I was working in slow-paced projects in which I had enough slack to allow some innovation? And that's funny because in that project I was complaining about not having enough to do. Now I see it was probably what gave me a chance to try out new things, to spend a lot of time of fixing stuff that had been done wrong etc.
    2. I don't get a chance to come up with complete solutions. That's because we've got an internal framework that's supposed to deliver every bit of technical solution we might need to create our business components. While it might seem that not having to deal with infrastructural stuff is an advantage (and I know some people who just hate such tasks), for me it makes my tasks feel "incomplete". I like to have the right balance between purely technical tasks and modelling my domain model, and now one part has been taken away from me. And I don't want to move to the framework team because (of course that's just the tip of the iceberg) it would just make me work on technical solutions, separated of any business context (and that sucks terribly - I strongly believe that frameworks - at least internal - should be pulled out of existing code, not pulled into it).
    3. I'm a team leader now. And I sincerely don't like it. I have to do some things (reports, keeping an eye on some things, meeeeeeetings) which just feel like a waste of time for me. And that time cannot be spent on doing some useful programming work. I  really enjoy being technical lead, I love architecture design tasks, but really hate to sit down in meetings that often have no outcome that would be in any way important to the team I'm part of.

    Okay, the rant is over now. I could probably carry on but now my frustration is gone, replaced by sleepiness, and now I just want to go to bed and have those 7 hours of sleep before getting up again and thinking... will not repeat myself.

    May tomorrow be better than today and may the stars be right!