

My 2012 in Review
source link: https://blog.jakubholy.net/2013/01/04/my-2012-in-review/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

My 2012 in Review
With year 2012 over it is perhaps time to look back and see what interesting has happend, what I have done, written, learned, what articles I have enjoyed most etc.
This has been my second year in Norway and I am still very much enjoying it, there is a very active developer community organizing great conferences such as JavaZone (followed by an amazing trip to the nature a.k.a. SurvivalZone) and Smidig (Agile) where I have also presented, Scala-focused flatMap, many meetups etc.
Events & side jobs
Thanks to my company I had the opportunity to do some real consulting work, namely helping with a technical audit of an R&D department and co-organizing a TDD and refactoring workshop for the customer, and I have learned a lot from both of these.The most exciting event was a week long educational stay with Ken Beck that has resulted in the most popular blog post ever of my company and myself, Programming Like Kent Beck. Another exciting event was the workshop BDD - Specification by Example by Gojko Adzic, simply the best workshop/course I have ever attended, with plenty of valuable content about how to build the right software. I also very much enjoyed preparing and presenting an introductory workshop into Clojure with my friends and collegues Lars and Ivar.
I have worked the whole year with a partner company that aims at creating innovative internet solutions such as on-line entertainment and communication services. I have learned a lot about the cloud, the Amazon Web Services platform, Puppet and DevOps, Vagrant, big data scale warehousing using Hadoop and Hive, NoSQL databases such as MongoDB, REST, and running distributed services. I have wasted too much time trying to get Zabbix to monitor what I want (despite of its shortcomings and lack of friendliness towards troubleshooting, it is sadly still one of the best monitoring tools, I have been told). I have done too little pair-programming and I have spent too much time in Java, bash, and Zabbix instead of learning more about modern web UI development and using more productive languages such as Clojure, Groovy, and Scala (though I have managed to sneak two of them in).
The work is great. I miss only three things - pair programming, Clojure, and opportunities to learn from smart and skilled people. Regarding the last point, I have smart and skilled co-workers - only the opportunities to learn from them are way too limited (partly due to the first point, lack of pairing).
Learning
I have started to focus on functional programming in general and Clojure and partially Scala in particular. I believe there is a lot we can learn from this paradigm and higher-order functions and immutability have really nice benefits. I hope to continue exploring when these laguages might be a better choice then Java in 2013 with my collegues in the Iterate Functional Programming Group.Some books I have read and appreciated:
Blogging
I have thought a lot about testing, maintainable test, code quality, legacy code and software development and evolution and my opinions are slowly crystalizing, partly here under the opinions tag.
I have published 57 blog posts, multiple of them about topics such as CleanCode, craftsmanship, Testing, DevOps and ops, puppet, clojure, bigdata, book, design.
My blog posts of this year that I personally appreciate most are these:
Another blog post that I really like and that I haven't written but have motivated it, is Iterate's Books Our Developers Should Read presenting the 4 books we believe are crucial for all our developers/consultants.
Great articles
Some of the best articles I have read and talks I have seen in 2013, in the reverse chronological order:- Getting Real About Distributed System Reliability by Jay Kreps, the author of the Voldemort DB
- On Being A Senior Engineer – valuable insights into what makes an engineer “senior”
- Jon Pither: Clojure at a Bank – Moving from Java - the justification (productivity, dynamism, FP a better match for the domain) and process behind moving from Java to Clojure with a monolithic 1M LOC Spring/Hibernate app.
- Tom Gilb's excellent JavaZone talk Managing Agile Processes, with a Stakeholder Value point of view: 10 Revised Agile Principles, claiming that development should always start from understanding the business need and delivering business value each iteration, all of that backed by metrics - all of that backed by many years of successful projects done this wat
- M.Fowler: ORM Hate – Why ORM is actually a good solution – a very valuable article where Fowler opposes the popular trend of criticising Object-Relational Mappers such as Hibernate.
- Gojko Adzic: Redefining software quality – an obligatory read that introduces a holistic view of SW quality and the quality pyramid
- Bret Victor: Inventing on Principle (55 min, see at least the first 5 min) – very inspiring! Victor firmly believes that “creators need an immediate connection to what they create” and demonstrates how this can be achieved
- The Game of Distributed Systems Programming. Which Level Are You?
- Shapes Don’t Draw – thought-provoking criticism of inappropriate use of OOP, which leads to bad and inflexible code
- Jay Fields’ Thoughts: Compatible Opinions on Software – about teams and opinion conflicts – there are some areas where no opinion is really right yet people may have very strong feeling about them.
Tools
I have begun to use screen (via the wrapper byobu) for long-running sessions on servers, switched to IntelliJ 12 for Java development, begun to re-learn Emacs for the sake of Clojure. I have also adopted Cluster SSH for multi-server ops tasks, started to experiment with the fish shell (with addons) instead of bash or the growingly popular zshRecommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK