Monday, August 6, 2012

The Heroes of Java: Çağatay Çivici


Staying strong, the "Heroes of Java" series reaches the 18th edition. This time it is about Çağatay Çivici who is the inventor and lead developer of my favorite JSF component library Primefaces.

Çağatay Çivici
is a member of JavaServer Faces Expert Group, the founder and project lead of popular PrimeFaces Component Suite and PMC member of open source JSF implementation Apache MyFaces. He’s a recognized speaker in international conferences such as JavaOne, SpringOne, JAX, Jazoon, Confess, JSFSummit and many local events such as JUGs. Cagatay is also an author and technical reviewer of couple of books regarding web application development with Java and JSF. As an experienced trainer, he has trained over 300 developers on Java EE technologies mainly JSF, Spring, EJB 3.x and JPA. Cagatay is currently working as a consultant, mentor and instructor for Prime Teknoloji in Turkey.

General Part
Who are you?
I'm Çağatay Çivici, the founder and lead developer of PrimeFaces, expert group member of JSF 2.x Specification and PMC member of Apache MyFaces. I'm the co-founder of Prime Teknoloji, a company specialized in Java EE and Agile Mentoring. I'm a regular speaker in Java Conferences where I really enjoy meeting-reuniting people face to face on my social network all around the world at one place.

Your offical job title at your company?
I like having various titles that I can use for different cases such as co-founder on my office id card, principal consultant when I do consulting and CEO when I want it to sound cool.
My colleagues and PrimeFaces users call me Optimus Prime though.

Do you care about it?
Not really, as you can see from my previous post. I especially do not care about employee title hierarchy in big corporates.
Never spent time to understand those.

Do you speak foreign languages? Which ones?
I'm a native Turkish speaker and I also speak English fluently. I lived in London for 2 years which helped me to learn how to deal with various accents. Nowadays I'm self learning Spanish.

How long is your daily "bootstrap" process? (Coffee, news, email)
When I woke up with an idea, there is no bootstrap, I go straight to my laptop and start coding. For a regular day I start with a coffee with milk followed by tea afternoon.
I'm an NBA fan since my childhood and during season I start the day with watching NBA highlights.
After that I check my emails, do quick replies if applies and organize some to reply later.
I then check PrimeFaces forum, twitter, facebook group to see what community is up to before beginning to work.
To keep my focus, I shut down any kind of notification during working like mail, twitter and anything else that changes the state of my screen automatically.

Twitter
You have a twitter handle? Why?
Main reason is PR for work [@cagataycivici]. Most of my tweets are about PrimeFaces, well, @primefaces also has an official account but I tweet things that can be considered as "under the hood" activity.
I also use "PrimeFaces" search a lot to get the feedback from twitter users about PrimeFaces.

Whom are you following in general?
My friends and my colleagues mostly to see how they are doing. I'm not really a good follower, usually I just tweet things and just have a quick look (not read) at people I follow.

Do you have a personal "policy" for twitter?
We've asked our employees not to tweet about our clients, it is not professional for business.
I also follow the same policy, I believe twitter can have be dangerous if you don't know how to use it effectively. Reverting a bad tweet might not always work once it is out. I really think sometimes alter egos of people do the tweets.

Does your company restricts or encourages you with your twitter usage?
It is free will, almost everyone in our company has a twitter account for personal use.

Work
What's your daily development setup? (OS/IDE/VC/other Tools)
I use macbook pro for development and NetBeans as my IDE. I've been a NetBeans fan for a long time and have started good relations with NetBeans team after they bundled PrimeFaces in NetBeans. I use maven to build things and subversion/git for version control. I only start Windows as a VM for Internet Explorer testing. I also use development tools of browsers like firebug a lot as well.
Regarding servers I have glassfish, tomcat and jetty. For the past years, I lean towards being a front end developer so I don't use heavy duty server side stuff for some time. I can't really remember the last time I've written a code to persist an object to a datastore however I've written javascript-css half an hour ago.

Which is the tool providing most productivity to your work?
NetBeans for sure, it has all the features I want from an IDE. For Java EE development, it is just great and productive. To build things I use maven, I'm still on 2, well it works so why change it :) Firebug is also great as I can do the front end visuals with it and then move it back to PrimeFaces Core.

Your prefered way of interacting with co-workers?
Chat. Our main office is in Istanbul and majority of our team is based there so for meetings and discussions I use IM tools. Sometime emailing works as well.

What's your favorite way of managing your todo's?
For personal todo, I was writing things on a piece of paper for a long time, lately I got an ipad and using a couple of apps on that.
For business, we are using JIRA internally in our company. For PrimeFaces todos, we use google code issue tracker, it is not excellent but does the job, no complaints.

If you could make a wish for a job at your favorite company: What would that be?
My wish already came true already, my favorite company is Prime Teknoloji and I enjoy being self-employed.

Java
You're programming in Java. Why?
It was the first language I've learned in university and there were and still are many java developer jobs all around the world. So my choice is not technical but mainly due to popularity of Java.

What's least fun with Java?
Strongly typed nature, lack of modular programming and class reloading on runtime. Without using tools like jRebel and an effective development environment, working with java could be a pain.

If you could change one thing with Java, what would that be?
I'm a fan of javascript so would like to do things I can do in javascript such has passing any type of object to a method, adding removing properties easily. So basically any feature in Javascript that is not possible in Java.

What's your personal favorite in dynamic languages?
Javascript for sure, at my job, I code more javascript than java. With latest frameworks like jQuery, it is more fun than ever. I never had the chance/time to work with ruby, groovy or another language. Just played with them a bit but it is not enough to decide a favorite without going to real development.

Which programming technique has moved you forwards most and why?
I'd say DRY and KISS. I usually don't care about DRY part initially and focus on KISS part to keep things simple. I think being simple is one of the reasons why PrimeFaces is so popular. After implementing the requirement, I do a couple of refactoring phases to apply DRY.

What was the biggest project you've ever worked on?
When I was a junior developer, I worked for a giant government project. I quit after a year and not sure what happened to the project.

Which was the worst programming mistake you did?
Any bug in PrimeFaces is a big programming mistake for me and my team :)