This week I attended CRAFT 2014 software craftsmanship conference that was held in Budapest. In this blog post, I will describe conference experience and takeaways from the software tester perspective.

Conference preparation

I went on this conference with RubyOnRails guru developer, Vlado. He recommended Airbnb for accommodation reservation, and within 20 minutes I reserved an apartment in walking distance from conference venue. We arrived by car. Vlado notified me about conference “stars”: Chad Fowler,  Douglas Crockford and Michael Feathers.

Day 1

During breakfast I greeted Gojko Adzic and, as usual, my brain was in “fifth gear” during the conversation. I always find out about new valuable books, this time it was “What customers want?“. I pinged Gojko about latest development in his startup Mindmup, and it is always a pleasure to see his “live coding session” about his latest git push. As always, there is new Gojko short wisdom clause: “Programming is magic, you create something from nothing.”.

I also acquainted Nebojsa, Rails developer that works for Semafore, startup from Serbia.
As we were waiting keynote, I looked stuff in my bag and I found out that we got pencil but no notebook, and we got mysterious blue object (in picture above). We all thought that must be some test of our craftsmanship but in the end it were just sponsored earphones. My testing method was observation. I noticed some strange movable elements in the object (something similar just before moment when Alien was going to pop up from John Hurts chest), I flipped object in my hands and I drop it on the floor several times. Nothing happened. Than I noticed that object has two parts, soild white plastic and rubber blue one. I removed blue rubber and I found out that white part is compartment for earphones and the wire. I had to test them and there was no any damage.

I took keynote session “Programming, only better”notes on Google sheet for Nexus 7 game. Talk provided guidelines how to program better. Famous Dijkstra was mentioned, in context of formal reasoning during the programming. Dijkstra was against debugging and testing (with test, you can not prove absence of bug, only its existence) and claimed that every program must be proved using formal reasoning. Other concepts (e.g. mutable objects are bad) could be found in archive of Google testing blog.

Quick browsing preview of O’Reilly boot (40% discount!) and Vlado solved my notebook problem with free O’Reilly notebook.

First talk was “Lessons from Facebook’s codebase”. Facebook codebase enhancement is going into direction to help developers not to make obvious mistakes in code (e.g. xss security issues), to get data only relevant for the query context, to help them to check their new feature or code refactor,… If you have very enlightenment question: “Why not just switch to Ruby or other super language” ask your self: “Could you do it with your simple (compared to Facebook) code base?” What is bothering me as a tester is a hunch that Facebook is probably not using services of context driven software testers. After the talk, I approached to Ben (please notice that this is NOT twitter link), and he happily answered all my questions (big like because I thought that this is against first Facebook rule).

I checked what is new for testers in Vagrant world, and because I like mathematics, I listened about browser encryption (I like Keybase concept and I hope that someone did risk analysis for that product).

“Agility and the essence of software architecture” is aligned with my experience with creating software architectures (also with Architecture war stories).  Talk takeaway, do your architecture in your code. Do not use any intermediate tool. Simple as that.

  “The journey to mastery” explained how to become a master and how to create another master. “Testing the hard stuff and staying sane” provided an example how concurrency testing should also be done: as early as possible, as simple as possible using some tool. Talk was about in house developed tool and I recommend open source Grinder (Java world).

Between Douglas and Michael, we choose Michael, because Douglas is coming to The Geek Gathering. Michael opening was “Do you know who is Gerald Weinberg?”. That question and question for organizations “Could you please show me your code?” confirmed his credibility. G. Weinberg is famous for his definition of quality: “Quality is value to some persons.”

Day 2

Chad Fowler keynote also tried to answer question “What is software quality?”.
In “The art of building tools” I found about JetBrains MPS tool. As a software tester I was very suspicious about “Find the abstractions level for your tests”, but I have no any objections on that talk. It clearly talked only about level of test abstractions and there was no impression at any point that this method is the only testing method.

“Building on solid foundations” was the strangest one for me. Here are the reasons: it is development talk, two UK speakers for which I have problems understanding because of the accent, I did not get any concept described in the talk (except previously known SOLID).

“Delivering continuos delivery continuously” provided live deploy of Australian Guardian site.
In next talk I learned about WebRTC protocol. Talk about RAFT was interesting for me because I am familiar with concept how clusters work. It presents consensus algorithm that is much simpler than PAXOS

Final talk was about Twitter distribution system problems and their practical solutions. I learned about Zoo Keeper.

In between first and second day we acquainted Sofia, software developer from Israel who works on product that provides features of remote monitoring for Java Virtual Machine (JVM). I am aware of JVM challenges, so it was very interesting to discuss with her info provided by JVM heap and thread dump.

Conference satisfactory survey

I am very satisfied with conference organization and my takeaways. Proof is this blog post. My grade is 4/5. Only minus is real time schedule change that happened on first day.

Post conference

I was hit with lot of information. I did my notes and this blog post, without them my takeaways would be slim (by my fault). I bought three books:

  • Shipping greatness (I do not agree with proposed testing method)
  • The passionate programmer (signed)
  • A theory of fun for game design (there is still a child in me)

We had a problem with paying our parking. Money was not problem, picture depicts the problem (true, I am very bad at taking photos with my IPhone). As tester Ben Simo says: “Testers are sometimes bug magnets.”
Little testing lessons. We executed two scenario tests that failed:

  • User is not able to dismiss windows OS error message and put back machine in state “Ready for payment”
  • User is not able to put paper money in machine.