Heroes of Java" series continues. Interview 17 came a long way from the tropical island of Curaçao. Bauke took the time to answer my questions and I am happy to have him joining the series!
Who are you?
I am a deaf Java EE web developer who lives on the tropical island of Curaçao. I work currently almost 2 years as a freelancer for the affiliate marketing network zanox-M4N. I am by my nickname "BalusC" also pretty well known in the JSF world thanks to my Java EE / JSF blog at balusc.blogspot.com, my answers at stackoverflow.com and since recently also the JSF utility library OmniFaces.
Your offical job title at your company?
The current contract just generically states "Software developer" along with the detail "Programming in Java EE in the M4N software system". I am mainly the web/UI guy of the M4N development team and I am mostly involved in Java EE "web profile" (read: JSF) and/or HTML/CSS/JS matters which are complex and/or needs to be solved quickly.
Do you care about it?
I don't care about job titles in general.
Do you speak foreign languages? Which ones?
Yes, although "speaking" has a different meaning to me. I am deaf born in the Netherlands and raised with Dutch Sign Language as native tongue. I can read and write Dutch and English pretty fluently (Dutch better than English). I can read and write German and Papiamentu sufficiently. I can read/guess Spanish and Portuguese somewhat as Papiamentu is derived from them. I can speak phonetic languages like Dutch, German and Papiamentu somewhat understandable, but I cannot speak non-phonetic languages like English, at least not understandable enough (I don't hear myself speaking, so it's hard to correct myself, let alone based on how someone else is trying to correct me), so I tend to restrict to reading/writing in those languages.
How long is your daily "bootstrap" process? (Coffee, news, email)
It depends. It can be only 1 minute, but it can also take up to 2 hours. I work at home, so I can after the wakeup easily go straight from bed to the computer and immediately start with my job. I drink at least 2 cups of Nespresso coffee daily, sometimes more, depending on how much I need to code. I am not really a news reader, I mostly learn new things from reading/answering stackoverflow.com questions. Email is mostly just job related. Very sometimes, especially if I need to clean my mind before starting my job for some reason, I maintain the garden first (which is a little 500m2).
You have a twitter handle? Why?
No, because I don't care about it. I however noticed that someone hijacked my nickname "balusc" on Twitter some time ago, but that's definitely not me. I do however have a Facebook profile where I usually only add people who I also really know in real life and I ignore others. I have also a Google+ profile where everyone can put me in a circle, but I use it rarely. I am not exactly socially inclined anyway.
What's your daily development setup? (OS/IDE/VC/other Tools)
Windows 7 x64, Eclipse for Java EE, Mercurial and Git, PostgreSQL and MySQL, Trac and JIRA.
Which is the tool providing most productivity to your work?
JRebel plugin in Eclipse.
Your prefered way of interacting with co-workers?
Chat and/or email. There are basically no other ways as I work alone at home and my colleagues are in the Netherlands and other parts of the world (Germany, India, China, etc).
What's your favorite way of managing your todo's?
Issue tickets (Trac, JIRA, etc).
If you could make a wish for a job at your favorite company: What would that be?
It really doesn't matter as long as I can just telecommute from home and can participate in a team of great software developers and get paid well enough for challenging Java EE / JSF related projects.
You're programming in Java. Why?
Actually, it wasn't my choice, it was IBM's choice. I was initially a REXX developer with some PHP experiences and around 2003 IBM decided to switch to Java in our department, so everyone got courses on that. As of now, I'm very happy to have learnt Java at IBM, it's after all a brilliant software platform, certainly since the open-sourcing.
What's least fun with Java?
I think the learning curve should not be underestimated, certainly not if you were initially familiar with procedural languages like REXX and PHP. The SCJP is a great course, but it doesn't cover "best practices". I was in the beginning almost constantly looking for "best practices" and they are hard to find for Java in general, also for Java EE. You'd definitely need to build some years of solid experience first. My blog was initially also less or more kind of a collection of those "best practices" which I found so that I can spread the knowledge into the world wide web (which was also greatly appreciated, after all).
If you could change one thing with Java, what would that be?
Support for lambda expressions (closures) in Java, but that's already planned for Java 8. No other things comes to mind, Java as language is in general just fine to me, although I sometimes rant at Generics in case of complex polymorphism situations where Generics is also involved.
What's your personal favorite in dynamic languages?
Which programming technique has moved you forwards most and why?
DRY and KISS, because they easily forces you to properly separate the concerns which is pretty important in object oriented programming.
What was the biggest project you've ever worked on?
As to existing projects, that'll be at IBM; the employee database at IBM and the whole J2EE web application on top of it for Human Resources which I partially worked on between 2004 and 2005 was really _huge_. As to new projects, that'll be at Vicksburg; between 2006 and 2008 we spent over 2 years on developing new web sites and web services for RDC (rdc.nl) in J2EE/JSF/JAX-RPC. That was also my first encounter with JSF and I became really quickly a JSF expert in the team and I continued polishing my JSF skills on a daily basis until the day of today.
Which was the worst programming mistake you did?
I honestly can't think of any serious one when it comes to Java, they are usually not that major and don't reach production stage at all. Like as every other starter in Java I have during my early Java ages of course made some conceptual mistakes like as declaring a SimpleDateFormat as a static variable without realizing that it's inherently not threadsafe at all, but I wouldn't consider any of them being "the worst mistake". When it comes to other languages, then it'll definitely be the fact that I have learned about SQL database normalization too late and the hard way. After all, this is blamed to those poor quality PHP tutorials found on the Internet. Fortunately it was "just" a hobby project.