The eighth part in my Java interview series: "The Heroes of Java".
Who are you?
My name is Eberhard Wolff. I'm from Berlin, Germany. I am occupied with a broad range of technical things like architecture consulting, training, performance optimizations and a good share of coding. I am an author of several books and articles and speaker with focus on Java, Spring and the Cloud.
Your offical job title at your company?
Architecture and Technology Manager.
Do you care about it?
It is important for business cards and customer relations. Otherwise I do not really care too much about it, I had quite a few titles in my career.
Do you speak foreign languages? Which ones?
German is my mother tongue and I speak English. I learned Latin, too, but that is not a language you speak and I guess it is quite rusty now.
How long is your daily "bootstrap" process? (Coffee, news, email)
Usually I have an initial look at emails and general news like Twitter during breakfast at home. If weather allows and if I am not on a business trip I cycle to work. That takes about 45 minutes. This time is quite useful: I use it to clear my mind and think about the day. That way I am booted up once I arrive at work.
You have a twitter handle? Why?
Yes, I do have - @ewolff. I use it to see what other people are doing and thinking. Of course I also use it to share my ideas with the public. In a world where organizational and geographic boundaries are less and less important Twitter is a great tool. It does not take a lot of time to read and write postings and keeps you up to date.
Whom are you following in general?
Friends, tech guys and a few companies or organizations.
Do you have a personal "policy" for twitter?
I only publish things that I would also tell a random guy on the street - because at the end of the day that is what you do. This usually works fine and I stick to that policy.
Does your company restricts or encourages you with your twitter ussage?
My company encourages me because it is also a part of the social media strategy.
What's your daily development setup? (OS/IDE/VC/other Tools)
My machine is a MacBook pro 13" with 8GB and 250GB SSD running Mac OS X 10.7. I like its compact size, the speed of the SSD and that the OS seldom gets in the way. Also I like the numerous UNIX tools available. On top of that I am running SpringSource Tool Suite as an IDE which is based on Eclipse. I use git as well as Subversion, depending on the project.
Which is the tool providing most productivity to your work?
Google. It is information at your fingertips. If you know how to use it, it will provide an answer to any question you might have. I wouldn't know how I could get anything useful done without it.
Your prefered way of interacting with co-workers?
adesso is a distributed organization. So I spend quite a lot of time on the phone, with email, chat and other collaborative tools. Face-to-face communication is also quite important so I am on the road from time to time to meet co-workers.
What's your favorite way of managing your todo's?
Pretty old schooled: I have a paper notebook with me in which I write my todo's in and cross them out once they are done. Also I mark emails that I need to work on. That is pretty much all - travel light!
If you could make a wish for a job at your favorite company: What would that be?
My dream was to be at Steve Job's company NeXT which got acquired by Apple later on. They built quite powerful workstation computers at that time. I was always fascinated by their technology and the design of their systems. It is ironic that their license agreement with Sun never really took off - instead Sun started to invest heavily in the Java technology.
You're programming in Java. Why?
Java is still the prevalent language for enterprise systems. Also I believe that the platform - the JDK, the servers and so on - is the most advanced out there and a great asset. So even if you move on to Scala or Groovy you will still be able to use this. So in my humble opinion it is not so much about the language than the platform and I think the future for the platform is bright.
What's least fun with Java?
On the coding side Java is sometimes too verbose. However, the drawbacks of the language were obvious early on and only lately they are discussed in a broader public. The Java community is great - but sometime it seems too fragmented to me. Instead of trying to learn from other platforms and improving Java and the Java platform overall we are too often concerned with the different Java sects.
If you could change one thing with Java, what would that be?
I think Java should be more liberal with regards to byte code compatibility. Support for dynamic languages on the JVM was late. With the rise of functional programming new requirements for the JVM will emerge. To make the platform viable in the long run, these requirements need to be elaborated. I am afraid that due to the close relationship between the language Java and the JVM this might not happen and would entirely set back the platform . .NET's strategy to adapt to other languages as well seems more promising to me.
What's your personal favorite in dynamic languages?
I think Groovy is a pretty good choice because it is very close to Java. Therefore it is easy to learn and it also easily integrates in the Java platform - which is very valuable. Apart from dynamic languages, I think functional programming is interesting. To see where things are headed Erlang is interesting to look at.
Which programming technique has moved you forwards most and why?
Unit tests and automated tests. They allowed me to ensure that at least basic functionalities work without problems and therefore increased my trust in the code I am writing. I find it odd that more than 10 years after the original paper - which as was called "Test Infected – Programmers Love Writing Tests" - JUnit is still not used in every project and if it is, it is often not used correctly i.e. there are no asserts, there is log output instead for manual instead of automated tests etc.
What was the biggest project you've ever worked on?
I have worked on quite a few big business applications that were done by larger teams. I learned a lot about how these projects work during my time there - in particular about non-technical aspects like organization and the like.
Which was the worst programming mistake you did?
I guess it is common to look at code that you have created not too long ago and ask yourself how you could possible been so stupid. So I guess my worst mistake is still ahead of me - and as far as I know no lives was really hurt by any of the mistakes I have made so far, so maybe it is not that bad after all.