Few weeks ago, on June 9th-11th, I attended 33rd Degree Conference 2014 – a big Java event held in Kraków. It was my first programming conference ever, and I was stunned how awesome it was. I had a great time, met some nice people, had plenty interesting conversations and listened to many inspiring talks. I’d like to share my thoughts on 33rd Degree’s keynotes, which, as it turned out, weren’t strictly about Java or any other concrete programming language, but they concentrated on a developer – how he should work, what he should pursue, and how should he cooperate with business and management – all this as a way of achieving satisfaction and fulfillment.
Think for yourself
First keynote encouraged all developers to take responsibility, to do something that matters for clients. Yes, Marry Poppendieck, creator of lean software development1, told us, programmers, to take matters into our own hands. Ideally, there should be no (unnecessary) management between client and developer but if there’s one, the company should allow programmers to have consumers feedback accessible.
In the example Marry gave from her experience, the company which successfully adopted lean thinking (and development) techniques, reduced time spent on design defining meetings from 20% to 5% time spent on the project, leaving much more space for actual development and much more space for developers to do what they think is best for clients. This is quite similar to what Agile says, and for example Scrum does.
Developers should create right thing to develop, so adding a value to the product and then being able to access feedback from clients (to constantly improve software). Only that kind of attitude allows programmers to achieve satisfaction from work and what is called “the flow”, a psychology term introduced by Mihaly Csikszentmihalyi (who is obviously Hungarian). From Wikipedia) (emphasis mine):
Flow is the mental state of operation in which a person performing an activity is fully immersed in a feeling of energized focus, full involvement, and enjoyment in the process of the activity. In essence, flow is characterized by complete absorption in what one does. (…) Flow is completely focused motivation.
Flow, according to Mary, is each programmers goal, a nirvana everybody should should seek and chase.
Since flow appeared in almost every keynote on 33rd Degree, I think it’s quite important for each programmer to understand what this diagram means – more skilled developer needs new challenges, or else he won’t be satisfied.
As final advice Marry told us to remember about sharpening the saw – an ability to improve programming skills by doing something which isn’t programming. Jeff Atwood mentions reading programming blogs, HN, proggit; I’d add to that list writing on StackOverflow, following other devs on Twitter, and (starting from 33rd Degree) attending to conferences.
Managers are from Mars, Developers are from Venus
Ted Neward gave second keynote in which he described a really tough relationship between two groups of people from IT industry. This keynote didn’t actually have linear plot and a single conclusion, but rather consisted few interesting (and funny) stories, which I think were supposed to provoke a listener to think about software industry.
In the beginning of his presentation (and after assuring that no managers are present in the room) Ted added a disclaimer: there were many stereotypes in his talk, many personal claims which audience may or may not agree with, because these were his own observations.
So where’s the problem?
Developers struggle with managers who are like from another planet, because these two kinds of people just think and behave differently:
- Managers don’t really understand these strange people who are doing something which doesn’t really exist! Timelines, excel spreadsheets, meetings – those are real, can be measured and shown to higher management, but bunch of text put into a machine isn’t real.
- Managers manage people, developers manage machines. Hint: This is not the same.
- Managers don’t have to be (too) creative, developers do.
- Managers have time constraints and hourly schedule (which you can measure and arrange), developers have flow and satisfaction.
Ted compared flow to sleep – you can’t force yourself to sleep, you can only setup appropriate conditions for it. And meetings with management, phone calls, etc. don’t help in that.
The keynote was also a (small) rant on role of project managers role in modern software development. Well, it wasn’t a rant per se, but rather small history lesson about “scientific management” and its creator, Frederick Taylor. Long story short: The entire industry is broken because “scientific management” was a lie. Taylor authored “The Principles of Scientific Management” which consisted a basis for what is nowadays taught on Harvard, but his research was actually mostly made up! His “science” wasn’t really science, since it couldn’t be validated, but nonetheless his ideas spread around the world and still are by many considered as valid.
Power to the Programmers
Second day begun with Tom Gilb’s talking about… much the same as Marry or Ted the previous day, only that Tom was concentrating on other aspects. Numbers, measures, tests were essential. That, combined with very dense slides made this session very weary, but also very striking.
Basically Tom showed scientific way of agile programming, proven to be right, because he presented many real case studies from his experience. The major idea was to delegate power to devs, so that they can analyze their own defects and fix their own process. These are few points I managed to write down:
- automate and test as much as you can,
- small, concrete targets (“quality requirements”),
- be agile (“design is an iterative process”),
- measure and validate everything.
Conclusions (taken directly from slides) match what we heard from day 1 keynotes:
- Devs are better at managing their own work environment, than their managers are.
- ‘Directors’ [i.e managers and architects] should NOT design the work environment.
- Devs should ‘evolve the environment’:
- through practical deep personal insights,
- and take responsibility for their own work situation.
The talk is definitely worth watching when published, because then one would be able to listen and stop to read whole slide, and think about Tom’s ideas and experiences, which seem quite accurate.
Crazy and Focused
Next keynote was very different from previous one – Daniel Steinberg’s slides were raw, contained one word or maximum one sentence on each page, there were no numbers, several images and videos, yet this keynote was by many called the best on whole conference.
In his inspirational speech, Daniel encouraged every listener to think out of the box, and see users not as crowd, but as a single person.
Yes, developers should change lives, but since changing whole world is impossible, we should change at least one life – it should be our target. As an example, Daniel showed one of Apple’s ads – it was not about product itself, but rather what the product gives to the world. It adds a value to a user, the user. The Apple ad, Think different, in which Steve Jobs himself presented many modern visionaries, people who changed the world, like Albert Einstein, John Lennon or Dalai Lama. Each of them was “crazy”, crazy enough to think they can change the world.
We can succeed only if we focus on an individual, try to have closer relationship with client and pay attention to details. Daniel’s talk wasn’t just about slogans, it was his life manifesto, his personal experience, which made whole keynote very genuine and honest.
The Joy of Functional Programming
This was a proper entertaining and interesting keynote – Venkat Subramaniam had great contact with audience, did some live pair programming, and conveniently introduced lambdas to broad audience! It was also most “tightly coupled to Java” session among all keynotes, but still I think it should be interesting to every programmer.
Venkat presented a story of “mainstream”: how beliefs like Earth being flat and center of the Universe once were mainstream, but Copernicus and Galileo revolutions changed people’s perception of the world. In 20th century men landed on the Moon and nobody is claims that knowledge which in Medieval was mainstream is now valid.
In 2014 Java world was introduced to functional programming – lambdas and streams API were introduced in Java 8. So now imperative, object oriented programming is what average Java considers “mainstream”, but is it ultimate, one and only way of writing Java code? No, Venkat shows that functional programming in Java not only is possible, but superior to current standards. Declarative, functional code is both more readable and efficient comparing to classic imperative code. To do the transition, programmer must change way of thinking – once he does, he’ll feel benefits.
Venkat explained “scary” functional programming concepts in very plain and clear was. For example it’s his explaination of lazy evaluation, which feets in tweet:
If you weren’t on this keynote, you should watch it when it’s published, because all of that was told with help of audience member, Maria, who was asked by Venkat to volunteer and do the keynote with him.
The keynote turned out to be fantastic and I really look forward to see more Venkat’s talks.
I did a longer break before last session and skipped Eclipse keynote entirely, but stayed for the very last part of 2014 33rd Degree. Not only I didn’t regret waiting for last keynote, but I found it very motivating and stimulating (similarly to Daniel Steinberg’s one from the day 2). What’s more, Denise Jacobs presentation was an excellent closure to whole conference: it had subtitle “Allow Creativity to Flow”, mentioning flow there wasn’t a coincidence – it’s the same flow from day 1 keynotes, so clearly flow was conference MVP.
In the beginning Denise did a comparison:
So programming feels like magic. But it’s not. It’s magical, but not magic, because developers use creativity for everyday work. In real life we are distracted by management, bureaucracy, time constraints, hard working conditions, etc. So how achieve flow? There are many ways, Denise mentioned several practical examples:
- rest or lay down, have a daydream,
- get shower and relax,
- get physical,
- don’t write TODO lists, write TODON’T lists,
- say NO to distraction (i.e. wear headphones).
But what about title? Why should we get unblocked, what exactly blocks us? Well, there could be any experience which stops us from being creative, some memory from childhood or situation from work, anything. If we realize that and rejects all these blocks and fears, we’ll succeed and we’ll be fulfilled and happy doing what we do.
Very often we have flawed and false picture of ourselves, but obviously “You can’t compare your insides to other people outsides” – our “inner critic” does comparisons wrong. What we can do is to move forward, unblock ourselves and be creative, then the joy will come.
Now I can see why conference budget is important for companies which want to have great coders – meeting other enthusiasts, Open Source communities’ members, “charging batteries” with motivating creativity talks – all this gave me something I was missing and I hadn’t even knew.
I was sitting in hallway alone, just twenty minutes after the conference ended (I live just 15 minutes by bike from the place where 33rd Degree was held) I realized that there are many thing in my life I can change and make better. So with this post it begins. I hope you enjoyed reading. If you attended 33rd Degree, I hope that it was a good remainder about what you experienced. If you weren’t there in 2014, I’d like you to wait for recordings and see what possibly interested you.
Initially I wanted to write about all talks I attended, but as you see I’m quite verbose and it’ll be far to long post if I mentioned them. Maybe one day…
One more mention – special thanks for Spatrez for bringing real coffee to 33rd Degree and kudos to barista who even in third day, after thousands of coffees, did proper, tasty lattes and cappucinos.
It seems I consumed almost 1% of coffees served there :)