Java-Developers-Days-2014-from-my-point-of-view-part-II

The one thing I really regret about Java Developers Days is that we didn’t travel an evening before and because of the horrible mist in Cracow we were late and lost half of the first day. Conference was well organized with a lot of great speakers talking about very interesting topics, so it was a pity to miss any of it.

We made it right in time for last talks before lunch break and I chose to listen to ‘Strategiczna Refaktoryzacja’ (eng. ‘Strategic Refactoring’) by Michał Bartyzel and Mariusz Sieraczkiewicz. It was a really good overview of what can we do about legacy code. Most important is the distinction between two types of refactoring: daily and strategic.

First one can be done by one person, should take no more than couple of minutes per day and should be used on day-to-day tasks to keep system from getting worse. Strategic refactoring is more serious, requires more people, proper planning, many hours of consulting and on top of all – making sure that it makes sense before you start!

Speakers went through methods helpful in refactoring like Anticorruption Layer and Bubble Context and summed up with a few tips on stopping degradation of new code before fixing the existing one.

Second presentation I attended was ‘Pragmatic Pair Programming’ in which Krzysztof Szabelski compared Pair Programming to cooperation between two cerebral hemispheres. One is responsible for logical thoughts and the second one for more abstract thinking. They complement each other, just like specific, informal roles in Pair Programming do.

The Driver – person with a keyboard – is the one who processes the code using logical thinking. The Navigator focuses on what has to be done and guides the Driver to stay on track. Also both of them are constantly watching over high level of code quality, so the Code Review is not necessary for lines written together.

Krzysztof made an interesting distinction of three types of Pair Programming suitable for different tasks: Classic PP – two experienced developer solving complex problems, Mentoring PP – effective way of teaching new programmers, and Pair Sitting – getting quick help for blockers.

The sad part of Pair Programming is lack of conclusive studies that could prove its effectiveness, which makes it harder to convince developers to use it. The only way to be sure that Pair Programming is profitable for the team is to try it out and see the results yourself.

Next talk ‘Wykorzystanie podejścia Domain-Driven Design w systemach legacy’ (eng. ‘Using Domain-Driven Design in Legacy Systems’) was again related to Legacy Systems and refactoring but with a bit different approach.

Piotr Wyczesany showed us what is the most serious problem with developers – they’re much more interested in technologies they will use in a new project than in what actually has to be implemented. As Eric Evans once said „Not all the system will be well designed” so it’s essential to focus on most valuable, from business point of view, parts and keep them as clean as possible and that approach will bring profit.

For hours at the airport wasn’t only a waste of time – we had an opportunity to meet other developers and, as it turned out later, also speakers that were going to JDD.

This way we met Jakub Marchwicki who gave a presentation ‘JEE’ish development without a hassle’ in which he was convincing us that Spring and Hibernate shouldn’t be always an answer for every web related system and most of the times there’s a tool or library that is smaller, more accurate and still does everything that we need.

On a simple web application example he showed us few of them (Dropwizard, Jetty+Sql2o, Jetty+RESTeasy+MyBatis, Spark+jOOQ and Webbit+jDBI) in action and talked about theirs pros and cons.

Speakers of the last session had very difficult task – it was after 6pm and they had to keep us focused for another 45min. And Grzegorz Duda did a great job with his presentation titled ‘Fearless Developer Road to Driving Technical Change’ about different approaches we have to use to convince different people to our ideas.

He also stated, that once our change makes it through we have to show others any measurement that displays our progress – doesn’t matter what we measure as long as it gives a positive result – which will help us to implement more changes in the future.

After the first day I was full of energy and very enthusiastic about next presentations. Unfortunately I was a bit misfortunate in choosing talks that morning. During first one, ‘Scala, approachable functional programming’, Trond Bjerkestrand got a little confused with Emacs and although he has prepared interesting code examples amd great talk, he didn’t get a chance to show us much before the time was up.

The next one was supposed to be ‘Myśl obiektowo, pisz funkcyjnie’ (eng. ‘Think objects, write functions’) but Bartłomiej Kuczyński didn’t arrive on time and his presentation was replaced with a soft skill presentation about drawbacks of multitasking.

I wasn’t discouraged with that and went to see Thomas Sundberg in his presentation ‘Behaviour Driven Development, BDD, with Cucumber for Java’. It was a great live-coding session where Thomas showed us how Business Requirements can be converted almost without any coding into automated tests in Java using Cucumber tool. All materials from Thomas’ talk will be available on his website thomassundberg.wordpress.com shortly.

The next presentation ‘Game of throneware, or how not to get killed, when a developer becomes a manager’ by Jakub Nabrdalik was in my opinion the best one of all conference. Jakub is an excellent speaker, he told us all about his experiences as a manager so far and referenced everything with Game of Thrones plot and characters.

He discussed each aspect of Team Leader’s responsibilities, recommended a book that is written by developers for developers about management and gave us crucial advice on how to be fair and smart leader: don’t be unfair and stupid – it’s that simple! Just be honest and transparent with your team and remember that if you get yourself killed (meaning fired or removed from the position) you won’t be able to help anyone so stay alive at all costs.

For my last activity on JDD I chose to take part in ‘Archi-kata’ (kata – kind of a formal exercise repeated regularly to achieve mastery in something) which was kind of a workshop session and it was conducted by Tomek Borek.

Participants’ goal was to work in groups and design an e-voting system that could replace traditional way of carrying referendums in Poland. After seeing lots of code for past 2 days and focusing on applications details it was nice to change my point of view and look on the system from bigger perspective.

At the end of the session we had to present our solution and answer all questions from the audience and Tomek, who was pretending to be our client. Each design was then rated by other participants (we scored second result) and that was it for my JDD adventure.

I totally agree with Olek, that organization of JDD 2014 conference was perfect and I feel really lucky I could be a part of it. I’ve met a lot of extraordinary people, learned more than I thought is possible in two days and got absolutely fascinated by Pair Programming (which I’m going to promote all the time in every project I will be working in).