Last week I attended a new software development conference – 33degree which took place in wonderful Krakow – home city of the organizer – Grzegorz Duda.
Executive summary:
Awesome conference. The best in Poland I've ever been to.
Here is why:
Speakers
Great names, great presentations (I am not talking here about the slides), energetic, well prepared, but spontaneous. Neal Ford, Ted Neward, awesome Venkat Subramaniam, Simon Ritter, Michael Nygard, Nathanial Schutta and many more – hall of fame.
Keynotes
Most of the talks were great. Great thing about keynotes was that half of them were at the end of the conference – on Friday afternoon. Contrary to Devoxx, where Friday is usually a wasted day and everyone thinks how to reach home, 33degree.org was culminating to the very end. Everyone who left the conference before 6:30 PM is a loser.
The level of abstraction
Probably one of the biggest positive astonishments for me. I was afraid that the conference will be yet another place where most of sessions will treat about some APIs, libraries, fancy tools – things which come and go and in a year or two few will remember about it. However Grzesiek did an awesome thing – a lot of sessions were more universal. They were about fundamental things like the brain, common sense, self-development, hygiene, values, methodologies – things which are useful for years (if not entire life).
Venue
Best Western Premium Krakow hotel, where the conference took place was the exact place needed. Configurable rooms of the appropriate size, a lot of comfortable space (sofas) to rest and talk, good hallway were the sponsor's booths and the bookstore were located. There is one problem with this place – I suspect that next year 33degree, due to its awesomeness, will attract far more attendees (than about 400 this year) and the venue may be too small...
Bookstore
A lot of great books with 40% discount. Damn, they were cheaper than on Amazon :)
The sessions which I attended:
Deception and Estimation by Linda Rising – quite good talk, but a little bit too slow. Several good observations about human nature and why people underestimate tasks.
Comparing JVM Web Frameworks by Matt Raible – an interesting comparison about currently available web frameworks. Not all, but the most popular ones. The author gathered a lot of statistics about the activity, job trends and usage of each framework. Spring MVC, Rails and GWT lead. Conclusions: there is no best framework – it depends on what you need. However don't use dinosaurs like Struts 1.
Hacking Your Brain for Fun and Profit by Nathaniel Schutta – definitely one of the best talks at the conference. A lof ot universal wisdom about our brain, our nature, our biology.
A CEOs hearing this talk would probably introduce mandatory naps :). Main points: every person have different biological rhythm. Try to accept it. Some are most productive in the day, some in the morning, some in the night. Having even a short afternoon nap (25 minutes) can improve your effectiveness by 1/3. People who exercise have significantly better performance and their brains work better.
Ideas: how about introducing walking meets or even a walking working place (think about a threadmill under your table fixed and the standing position).
Advice: Avoid meetings at around 3 PM. That's the worst time for most of the people.
Nathaniel wrapped up his talk with great points about distractions, information overlead and the need of focusing. Your attention (this your time) is your most precious resource. Don't waste it. Be selective. Don't try to know everything and be everything (selective ignorance). Be shallow horizontally, but select a subject which you are passionate about it and be deep about it. All interruptions kill you. Respect this fact when you interrupt your colleagues.
Get 'em before they get you by Hamlet D'Arcy. Good talk by a passionate guy. The problem was that I probably knew too well IntelliJ (IntelliJ rocks!) and I didn't learn there anything new but an awesome @Language annotation supported by IntelliJ which allows you to write you code snippets (auto completion, syntax highlighting work) in other languages in your Java file.
The official schedule of the first day was wrapped up with beer served by ZeroTurnaround. Big thanks folks!
State of Scala by Venkat Subramaniam – live coding demos were really convincing. Scala is great, but I am afraid it may suffer from C++ syndrome – the language too powerful complicated for an average mortal to master. Stream as lazy collections and views look awesome. Venkat made a great job showing just the peak of the iceberg of the whole power of Scala.
Fractal TDD: Using tests to drive system design by Steve Freeman was the only session which disappointed me at this conference. Slow, boring with unclear goal. I left it after 30 minutes, so perhaps I missed something important and I my evaluation is to harsh.
I moved to Dan Allen's talk about Arquillian and it was the right decision. That tool/library really intrigued me. Putting your tests (writing like unit tests but with the power of being integration or system-level tests) easily inside any container – that looks great. I am going to give it a try. Also JBoss ShinkWrap looks like an awesome tool to make your tests really isolated.
HTML 5 Fact and Fiction by Nathaniel Schutta was another flawless session by this speaker. Entertaining, interesting, energetic. HTML 5 is coming, it has already come. Mobile devices need it and embraced it. When desktop web browsers will fully pick it up, the Internet world we know will change. And Adobe should be afraid of this change as there is no place for it's Flash there...
Advice: use modernizr.com and feature detection (instead of user agent sniffing) to selectively support HTML5 features until they are ubiquitous.
Programming Clojure by Venkat Subramaniam – more live coding demos – this time in Clojure. I felt good again immersed into Lisp world, which I haven't used since my university time. A great introduction to this language. Again Venkat was awesome – the best part of this presentation.
Agile UI by Nathaniel Shutta – the 3rd great performance by Nathaniel. Not sure if he or Venkat was top speaker at the conference. But never mind, both were truly awesome. World class. Devoxx or JavaOne do not have better speakers. Main points taken: focus groups suck wrt designing UI/UX. Don't trust what customers say they do. Observe what they really do with the software. UI is the system for the end user. The back-end/middleware does not count. Customers deserve better Uis.
3rd day started from Karl Rehmer's talk about How Debuggers Work. I was late a little bit, so I cannot honestly rate the entire talk. However I left a little bit unsatiated. The part about Java debugger was to shallow. I hoped to learn more about it – especial some practical hints, whereas the author admitted that he did not have the practical experience with Java.
Simon Ritter again did not disappoint. He made an excellent talk even from such theoretically boring subject like The Future of the Java Platform – about incoming and ever-promised Java 7 and 8. They are finally coming. Java 7 this year. Java 8 at the end of 2011. Having eaten lunch with Simon I even know the exact dates :) It's good that finally Oracle improves the language. Most of the changes around project Coin are good. However I feel disappointed how Closeable will work when you decide to add your own finally block. We will see in practice though how they are used. With Java 6 being EOLed early next year, I hope that Java 7 features will be picked up quickly.
Simon convincingly explained the general strategy about Java as a language and why it will never have some features which are being added to other sexy languages like Groovy or Scala. Java is to be a simple, comprehensible and clear language for masses. Where reading is more important than writing, thus being succinct is not an important asset (but often a drawback – like in Perl)
The last session before lunch and ending keynotes was Matthew McCullough introduction to Hadoop. Good, informative session. Matthew honestly explained what Hadoop is good for and what it's not. Technologies like Hadoop is definitely something and experienced software developer should be aware of and be ready to apply it when the need arises.
The conference was wrapped up with 3 awesome keynotes keeping you breathless till the very end.
Firstly, Neal Ford in his Abstraction Distractions analyzed why all abstractions leak and what we should do with it (i.e. accept it and move elsewhere if it hurts us too badly). He explained how and why composable and onionskin APIs are a great way to handle abstractions.
Abstractions, when internalized, are very difficult to fight with (e.g. think about floppy icon used for saving file/document – when most of the people have not used floppies for years now).
Neal explained also why so many people hate Maven whereas some of people still love it. The abstraction introduced by Maven is great for a lot of people (especially initially), until they needs get very sophisticated and the abstraction starts leaking tremendously. Then you start fiercely to hate it. And then you should move to another solution which provides a good abstraction for your current needs.
The same goes for Hibernate and a lot of other technologies trying to abstract away some concepts.
Very good and deep talk.
Michael Nygard with a more scientific approach talked about architecting for scale. Amdahl's Law extended by including the time/cost needed to reconcile the state of the parallel tasks may actually lead to decreasing the overall performance when adding more computing nodes. Michael explained what kind of approach typical medium and high-scale systems (millions+ transactions per second) need to use to cope with the scale. He also explained the tradeoff between Consistency, Availability and Partition-Tolerance in high-scale systems, where usually the consistency is something which is the most reasonable to sacrifice. Summing up: there is no best architecture. Everything depends on the context.
Probably the most entertaining and energetic talk was delivered by Venkat Subramaniam in his session about Polyglot Programmer. For Venkat being a polyglot is mostly about extending the perspective and the toolbox of a developer while working even on another language (boring like Java). You should learn not another similar language to the one you already know (e.g. C# when you know Java), but hurt yourself with mastering completely different language (with a different paradigm) like Closure or Scala. Only then you really extend your capabilities and the perception. Venkat made a great point about why everyone thinks that unit testing is vital, but so few daily practice it (or TDD). It's like exercising. We suck at things which require discipline and which do not have immediate consequences.
Venkat, you rock!
The conference was closed by Ted's Neward show about Rethinking Enterprise. There a lot of fun there and mockery wrt meritocracy. Main point: do not follow best practices. Best practices are switching off your brain. A best practice is meaningless without the context and every project is different and has a different context. You have to think. Otherwise you suck! It's stupid to quarrel that one technology rocks and the other sucks. Everything has its place and depends on the situation. We are paid to think and to apply our judgment after understanding the problem and not by merely following good practices (which should become a “vomit word”.
Personally I gave a talk about using agile values and practices in a non-software project – like a house building. I also hosted a BoF about agile contracts. Both sessions attracted around 40 – 50 people. Drop me a comment if you like it and how I could improve it.
A few things which could be improved (there is always some space for improvement):
Adding sessions shorter than 1 hour – some sessions could easily fit into 45 minutes or less. I find 45 minutes more challenging for the speaker and yet more existing and dense for most of the sessions. Perhaps more variety in the schedule (also including 5 - 15 min lightning talks) could farther improve the essence of the conference.
Having more non-Polish attendees would make Polish less ubiquitous during the break. I heard from non-Polish attendees that it was somewhat intimidating. And this conference definitely deserves to be seen as an international event – great and affordable for people from Germany, Austria, Czech, Slovakia, Russia, Ukraine and many more. Krakow has awesome net of direct connections (operated by low cost airlines) with a lot of cities (including London) so it's a great destination for most people from Europe. I hope that we will all market this conference next year outside Polish borders too.
Award/prize drawing was quite messy. Usually absent people are excluded if they are drafted. Here they were not. It definitely would help to maintain the focus till the very end of the conference.
The name and logo: 33degree.org has a name not related to Java or software development. Actually I turned out that it's a highest level of mastery for masons. Personally I'd rather leave masons where they are. I really think that it's easier to convince a boss to send you to a conference whose name relates to software concepts. The logo also sucked a little bit – offending (in terms of religion) to some people
Some logistics quirks – like no timetable at the door to each conference room, not printed rooms for last day in the brochure
Unconference hours competing with keynotes. Keynotes were too good. I love unconferences but it was really difficult to attend them when keynotes were taking place.
To sum up:
33degree is a place you have to be next year. I have already heard that awesome speakers are coming next year too. Will we have in Poland a conference which may successfully compete with Devoxx. I hope!
Standing ovation for Grzegorz Duda, all the awesome speakers and all the crowd which made this conference happen!