I’m a mostly Java[EE] developer since 2005, a SCEA holder, and occasionally a project manager, working currently with Iterate AS (en) in Oslo, Norway. For a couple of years I had also the pleasure to work with IBM Austria and IBA CZ. I’m highly interested in code quality, developer productivity (and tools like Maven and AOP/AspectJ), testing, performance, and web frameworks. I’m also very fond of the lean thinking and agile principles, especially feedback-based development, focus on creating true value ASAP, and respect for people.
I’ve worked on large and long-term international projects as well as small local ones and both on new and maintenance projects in various positions. I enjoy working with people, sharing knowledge, being creative and exploring new stuff. I don’t like tedious, repetitive work (though it really is sometimes necessary) and am thus a big fan of automation and tools that can take it over. Having maintained a lot of old code, I really appreciate high-quality, well-written code and good and automated unit tests.
Lately I also gained interest in functional programming, which I’m exploring.
You can learn more at my LinkedIn profile.
Bio & personal
I was born in 1980. For the second time I was born on November 17, 1989, when the communist regime of Czechoslovakia begun to collapse. For the third time I was born in august 2005, when a thin branch, invisible in the total darkness, saved me from a fast and fatal fall. I studied software engineering at the Czech Technical University and humanities at the Charles University. I also spent two enriching terms at the Linköpings University in Sweden. After the studies I ended up in the company IBA CZ, which turned out to be a warm and friendly place, full of great – nice and smart – people, with challenging tasks and a lot of flexibility. In 2011 I’ve moved to Norway to broaden my views by living in another country and culture. I’m married and live currently in Oslo, Norway (my home town is Prague in the Czech Republic).
In my free time I like to hike, practice yoga, read fantasy, and play pen&paper Role-Playing Games. I like books by Andrzej Sapkowski, admire Mahatma Gandhi. I’m vegetarian because I couldn’t have found any moral justification for killing other beings.
The world around us
The motto of our police is “Help and protect”. I believe that this is actually the mission of every human, to help and protect others and especially the weaker ones, including not only other humans, but all living beings and the nature itself. Unfortunately too often is this maxim superseded by an attitude that could be summarized as “Take money and run”. If there were more altruism and compassion than egoism and limitless desires accompanied by wretchlessness, the world would be a much better place. I’m glad there are some people who care, such as R. Stallman, those in Amnesty International and Greenpeace, or a boy in the neighborhood helping an old lady.
Thoughts on development
My early experiences in commercial development brought me on the quest for productive development of a software of high inner and outer quality. By productive development I mean that most time is spent bringing real value to the customer and not writing plumbing code, doing mindless and repetitive “monkey coding” or fighting with the environment and tools. Inner quality means good documentation and high-quality, maintainable code. Outer quality covers especially (an acceptable) performance, but also the often neglected usability and doing what the customer actually needs.
I learned that however technical our profession is, the essential skill necessary for success in IT is a non-technical one – communication. This is best illustrated by the following picture from blogcmmi.com, which I like a lot (though it omits the equal importance of intra-team and personal communication):
My professional interests
- Build great, self-motivated, self-organizing teams of happy people
- Empower people to find solutions
- Autonomy, mastery, purpose (<- Drive)
Build the right thing
- Find out what the client really needs and if she really needs it – see Impact Mapping
- Create the maximal business value possible at minimal costs, stop when enough reached
- Empirical process control, feedback, agility
- MVP, Specification by example, Evo, the 80:20 rule (80% value gained from 20% of the SW, > 50% never/so rarely used that not worth having)
Build it right
- Clean code, software craftmanship => maintainable, evolvable software
- TDD, simplicity, “build the quality in,” continuous deployment, …
- Performance, security etc.
My open source projects
Having received so much from the open source community (Linux, Firefox, OpenOffice and counless others), I feel obligated to give something back. Most of own my latest projects live at my GitHub account.
(“Hot” projects marked with *.)
J(2)EE Holy Utils, a diverse collection of small projects
The J(2)EE Holy Utils include the projects listed below:
- ClassLoaderViewer.jsp – utility JSP for finding out where a class is loaded from, whether one class can see another one or a particular resource and from where is it loaded
- GroovyConsole servlet – a JSP page and two jars constituting a console for executing Groovy (Java-like scripting) commands on an application server – great if you need to explore the live environment or experiment with enterprise applications and their libraries that you can’t get working stand-alone
- DbUnit Express - a layer over DbUnit that extremely simplifies creation of tests agains an embedded Derby database by using convention over configuration and adjusting the default settings (create a .ddl, a .xml with data, extend the base class or create & init an instance and run) and provides few additional utilities (getDataSource, RowComparator). Supports Maven. As a testing fan, I use it on nearly any project.
- * perfstats-lib – a light-weight, minimalistic, low-overhead library for collecting and publishing performance statistics in production systems
- static-jsfexpression-validator - build-time validation of EL expressions in JSF pages, check the (older) JSF EL validator introduction
Old (less active) projects
MiniPauker, mobile learning application
MiniPauker is a J2ME flashcard learning application for mobile phones, a little brother of the desktop application Pauker. It’s great for example for learning and repeating vocabulary. The primary features for me are that it can draw the “cards” to repeat in a random order and that it presents you primarily with the cards you have troubles remembering. It was originally developed by Markus Brosch, I took it over in 2009.