Jens Schauder: Domain-Driven Design with Relational Databases Using Spring Data JDBC

Interesting video about the real-world challenges when using an ORM (object-relational mapper) like Hibernate or JPA in general.

You should also check out the following articles mentioned in the talk:

Steve Jobs President & CEO, NeXT Computer Corp and Apple. MIT Sloan Distinguished Speaker Series

This is a truly remarkable video. I sometimes wish, and I am not a fanboy, that Steve Jobs would have moved into academia at some point and preserved much more of his experience and knowledge.

It is fascinating to hear Steve talk about strategy, corporate culture, marketing, and many other subjects. The video is from early 1992 and in my opinion many points are still bleeding edge today.

Using Headphones for Learning

Just a quick note about one small way I have found to improve my learning when I watch YouTube videos. A while ago I realized that it was easier for me to follow complex content when wearing my old Sennheiser HD 600 headphones. They are not cheap, but relative to other models still quite affordable. And they are famous for their super-clear and neutral sound. Allegedly, this also makes them a preferred means for professional sound mixing. I had bought mine back in 2003 for listening to classical music.

Interestingly, though, the main use at the moment is for watching YouTube videos. There is a bunch of great content out about all aspects of software engineering, which is my topic of interest. When it comes to listening via headphones, my theory is that the super clear voices, relative to e.g. to the speakers of my laptop, free up a little bit of mental capacity. And this would then create the impression of grasping content more easily.

Compiling Git on CentOS 6

I recently had the need to compile Git on a CentOS 6 system, because the available version (v1.7.1) did not support the ls-remote command used  by the Jenkins Git plugin. The various posts I found via Google were missing a crucial prerequisite, hence this short post.

  • Uninstall old Git with
    yum remove git
  • Install required packages (for me!) with
    sudo yum install libcurl-devel zlib-devel asciidoc openssl-devel xmlto
    
  • Download source code from https://www.kernel.org/pub/software/scm/git
  • Extract source with
    gzip -dc <FILE> | tar -xvf -
  • Compilation and installation
    make configure
    ./configure --prefix=/usr
    make all
    sudo make install install-doc install-html

And that should be it.

Allowing People to Contribute

If you ask organizations what they try to achieve, you will receive responses that all look different. They will typically reference the official purpose of the organization (NGO, car manufacturer, consulting, etc.) and then say what more or less specific goal is to be achieved. But in their essence, what they all strive for is a high performance organization.

To get there an awful lot of things is done: Systems and policies will be put in place, the results analyzed relative to what was expected, and then things will be adjusted because the outcome did not live up to expectations. I am convinced that the core reason for this is simply that the diversity of staff has not been taken into account.

I cannot offer a solution that claims to solve this issue. In fact I am fairly convinced that would again be falling into the trap of ignoring differences – in that case between organizations rather than individuals. But I have come up with an experimental approach that will work for some organizations:

Ask people what they think they can contribute outside their regular function.

You will be surprised to see what your staff has to offer in terms of capabilities and, more importantly, dedication. What you can effectively do with such an activity, is break barriers that a conventional organization puts around creativity. I see many of the traditional organization concepts out there as mechanistic, coming from the era of Taylorism and scientific management. That does not necessarily mean that all of it is unsuitable. But we should certainly apply scrutiny as to whether something is still the right tool for today.

The approach is somewhat similar to an individual curriculum in school. You recognize that people are different, and build upon that. What you achieve, overall, is better performance of the organization. It happens on multiple levels:

  • You foster people’s creativity: See it as a competitive advantage caused by a disruptive model
  • Fewer people will leave the organization: They realize that their current environment is something not to be found in many other places
  • You quickly see who is in for the money (i.e. for themselves only)
  • Boundaries (often called silos) become more open
  • Many people have knowledge and ideas outside their official capacity. That can be harvested to bring fresh wind into other departments without the need to hire external consultants. Those cause demotivation because the team is effectively told that they are not trusted. Also, internal folks need much less ramp-up because they know the organization. (Yes, sometimes you will still need external folks.)

Is this something like a think tank? Yes and no. A think tank, at least in classical terms, is again a typical organization and the concept has been around for a long time. And while part of its job is to provide out-of-the-box thinking, it usually performs that from within a conventional organization.

This approach is not for all people. In fact a large portion of your staff is probably more or less ok with how things are now. The rules give them certainty and boundaries, in which they can operate safely. That is fine and there is a lot of important tasks where this is in fact the only option you have. (Think of accounting and how much of it is regulated by law.)

But as soon as we need to create a competitive advantage, creativity is the only thing that allows an organization to get ahead of others and also stay there. The people needed for this are, for the most part, not motivated by money. They will still ask for a competitive salary, but that is a side factor only. What they demand, though, is an environment of like-minded people and freedom to achieve what they were hired for.

It would be foolish trying to introduce this broadly into an organization that has so far been lead in a more or less conventional way. But you can take the concept of incubators and apply it not on the product level but to organizational development. Reach out to the entire company and ask for teams to apply for a test run. They should develop the details how they want to “run the show” on their own. Some guidance is of course ok, but this will effectively be their first test.

This is the core idea, and likely a lot more detail needs to be figured out before applying this broadly. But I tend to think that it does not help to do this in advance, let alone in a one-size-fits-all way. Each organization (and probably even team) should start their own journey. And letting people figure this out by themselves can only boost creativity and motivation.