The programmers brain-gremlins

I tend to come across this decease mostly in the java environment, but I believe it to be a more general problem, occurring in our industry.

The symptoms look a bit like this:

“I started writing that piece of code we need, but I have to satisfy this rules of the Foo-Tool we are using.”, says Karl Coder as he meets his college Brian Brainy around the coffee-machine.

“Well, but at least you are getting some benefit from using the tool, right?” replies Brian, who joined the team only recently and isn’t yet that familiar with the setting. He recognizes the look on Karl’s face and immediately adds: “I mean, why else would you use it, right?”

Karl sighs. “I don’t know. I cannot really say why we use it. It’s clearly the new hot thing, since all the other companies are using it, but I don’t quite see why. I’m shure it’s good for something, but at the moment I have so much pain with it.”

“Well, ok. So we just get rid off it; problem solved.” says Brian who is a bit of a lighthearted guy and smiles. “What’s the big deal?”

Brian can see Karl’s eyes grow bigger in terror. “No, we cannot do that. It is a good tool; every other company uses it. I am simply not intelligent enough, to comprehend it’s full value.
Continue reading

C++ and the Tale of the build cycle

Somehow, I can’t shake the feeling, that C++ developers just aren’t lazy enough.

Every other modern language, I have programmed in recently, has a pretty healthy supporting environment around it. The best example here is Java, which makes it very easy, to Unit-Test, do rapid deployment and continuous integration, using such powerful tools as Maven, JUnit or Hudson (which for idiotic political reasons is now called Jenkins).

The C++ world however looks rather dull in comparison. If you leave out all the tools, that are just eye-candy of specific IDEs (because those could not be used on a build server) you are left with just a handful of build tools from the dark ages of programming.

  • Most C++ Projects out there, still use make or AutoMake, which work but do so only, if you are willing to invest a truckload of time in your build cycle.
  • Most of the rest uses CMake, which seems to be a bit more dynamic and sophisticated then AutoMake, but still needs serious commitment and requires you to craft every single build cycle for every singe application you write anew.

Continue reading