Java Camp 8 - Krakow - Why/What/How We Learn?

During Java Camp 8 (see www.java.pl/?p=216 - in Polish!) we had a 1h discussion about why we (Java developers) learn, what we learn, and how we learn. This blog post provides some notes (however, I do not claim them to be representative for the discussion - there are merely things that I remembered).

But what is Java Camp? In short Java Camp is a very nice Java meeting held quarterly by Polish JUG. We meet in Cracow, at AGH, and have few presentations, some discussions and free pizza thanks to our generous sponsors! (this time it was j-labs and GeeCON)

Ok, so we had this nice event called Java Camp (8th edition - see www.java.pl/?p=216), and the last session was a discussion about "learning". I had a pleasure to host the discussion.

The discussion was divided into three parts:

  • why we learn - what motivates us?
  • how we choose things to learn out of never-ending and always-growing list of technologies, tools, techniques
  • how we learn - by reading books, tutorials, prototyping or ...?

Why?

  • We need a good reason to learn a new language. It is a big time investment. And also once you learn it, there is no easy way of actually using it in your team (will your team members also learn it?)
  • Sometimes we are driven by fear - e.g. when browsing job offers and learning that they all require Java 6, Hibernate and Spring (and we do not know them).
  • We want to be cool and impress others.
  • We simply enjoy it!

What?

  • We should not forget that it is not only technical skills (in the strict sense - frameworks, tools, languages) but also soft skills that we should learn (e.g. presentation skills, software engineering, software production process etc.)
  • Trying to follow the buzz (e.g. posts on DZone) but also listen to what our colleagues say.
  • We are happy to learn things which solve few of our problems at the same time (e.g. we need it for work, but also it is something we already wanted to learn ourselves).
  • We were not able to give a reasonable answer (a heuristic) to how we pick subjects to learn.

How?

  • Learning from others is definitely number one! Be it by direct interactions (pair programming, mentoring) or via web (e.g. StackOverflow)
  • When discussing various approaches to learning (reading books vs. prototyping) we came to a (rather obvious) conclusion, that the right proportion of theory and practice depends on your initial knowledge.
  • Teaching others is probably the best, but also a very demanding, way of learning. To explains something to your colleague you first need to understand it really well! There is also a social aspect of this - when you proclaim that you will held a session about technology XYZ in your company, than you will surely learn it (you wouldn't like to disappoint your teammates, would you?)

And what next?

Ok, so we have learned something, now what? The road does not end here. We spent some time discussing what happens next, i.e. the issues related to introduction of this new knowledge to your team. The conclusion was something like this:

  • It is quite simple to introduce a new framework to your project (your teammates will get on quickly).
  • It is much worse in case of a new language - it can also complicate things in your team. There were some interesting examples given:
    • Java production code vs. Groovy tests
    • coding in functional style in Java after someone learned a functional language (and the rest of the team is like "WTF?!")

There are of course many subjects that we were not able to cover, like for example whether our companies gives us opportunity/time/trainings to learn, or do we have to or prefer to do it on our own. Next time maybe. :)

Moderator notes

It was my first time to moderate such discussion so this was an interesting experience for me. Unfortunately, I had no opportunity (yet) to get feedback from the audience, so I can only share my own subjective feelings (all sessions were later than planned, and I simply HAD to go back home). Here they are:

  • I was prepared, I had a few slides which shown what should be discussed. I'm glad I had them - they helped to structure our discussion and let us progress.
  • I was dead tired that day, and I spent all my energy for the first 20 minutes - later on I felt I'm not doing a good job (there were some parts of the discussion which I should have stopped much earlier)
  • I had no idea how to make other people ("other" meaning those who only listened) participate more actively in discussion. Next time I will probably point my finger to some group of people and ask them to share their thoughts. I hope I don't scare them to death. :)
  • I was a moderator but I also participated in the discussion. Hm, not sure if that is fine. Maybe I should rather shut up next time and only do my moderator's job? Or wear a "moderator's hat" when I'm acting as one, and take it off when I simply participate in the discussion?

To be continued

Java Camp meetings will be continued, there are some people willing to share their experience, and there are many who wants to participate (and discuss!), so it is very probable that such discussions will be regularly held at Java Camp meeting.

Please comment using