{"id":9357,"date":"2016-03-16T14:52:50","date_gmt":"2016-03-16T13:52:50","guid":{"rendered":"http:\/\/www.itwriting.com\/blog\/?p=9357"},"modified":"2016-03-16T14:52:50","modified_gmt":"2016-03-16T13:52:50","slug":"reflections-on-qcon-london-2016","status":"publish","type":"post","link":"https:\/\/www.itwriting.com\/blog\/9357-reflections-on-qcon-london-2016.html","title":{"rendered":"Reflections on QCon London 2016 &#8211; part one"},"content":{"rendered":"<p>I attended <a href=\"https:\/\/qconlondon.com\/\" target=\"_blank\">QCon<\/a> in London last week. This is a software development conference focused on large-scale projects and with a tradition oriented towards Agile methodology. It is always one of the best events I get to attend, partly because it is vendor-neutral (it is organised by <a href=\"http:\/\/www.infoq.com\/\" target=\"_blank\">InfoQ<\/a>), and partly because of the way it is structured. The schedule is divided into tracks, such as \u201cBack to Java\u201d or \u201cArchitecting for failure\u201d, each of which has a track leader, and the track leader gets to choose who speaks on their track. This means you get a more diverse range of speakers than is typical; you also tend to hear from practitioners or academics rather than product managers or evangelists.<\/p>\n<p><a href=\"http:\/\/www.itwriting.com\/blog\/wp-content\/uploads\/2016\/03\/image1.png\"><img loading=\"lazy\" decoding=\"async\" title=\"image\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" border=\"0\" alt=\"image\" src=\"http:\/\/www.itwriting.com\/blog\/wp-content\/uploads\/2016\/03\/image_thumb1.png\" width=\"404\" height=\"409\" \/><\/a><\/p>\n<p>The 2016 event was well up to standard from my perspective \u2013 though bear in mind that with 6 tracks on each day I only got to attend a small fraction of the sessions.<\/p>\n<p>This post is just to mention a few highlights, starting with the opening keynote from Adrian Colyer, who specialised in finding interesting IT-related research papers and writing them up on his <a href=\"http:\/\/blog.acolyer.org\/\" target=\"_blank\">blog<\/a>. He seems to enjoy being contrarian and noted, for example, that you might be doing too much software testing \u2013 drawing I guess on <a href=\"http:\/\/blog.acolyer.org\/2015\/06\/25\/the-art-of-testing-less-without-sacrificing-quality\/\" target=\"_blank\">this post<\/a> about the art of testing less without sacrificing quality. The takeaway for me is that it is always worth analysing what you do and trying to avoid the point where the cost exceeds the benefit.<\/p>\n<p>Next up was Gavin Stevenson on \u201clove failure\u201d \u2013 I <a href=\"http:\/\/www.theregister.co.uk\/2016\/03\/08\/software_dev_tips_from_qcon\/\" target=\"_blank\">wrote this up<\/a> on the Reg \u2013 there is a perhaps obvious point here that until you break something, you don\u2019t know its limitations.<\/p>\n<p>On Monday evening we got a light-hearted (virtual) look at Babbage\u2019s Analytical Engine (1837) which was never built but was interesting as a mechanical computer, and Ada Lovelace\u2019s attempts to write code for it, thanks to John Graham-Cumming and illustrator <a href=\"http:\/\/sydneypadua.com\/\" target=\"_blank\">Sydney Padua<\/a> (author of The Thrilling Adventures of Lovelace and Babbage). <\/p>\n<p><a href=\"http:\/\/www.itwriting.com\/blog\/wp-content\/uploads\/2016\/03\/image2.png\"><img loading=\"lazy\" decoding=\"async\" title=\"image\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" border=\"0\" alt=\"image\" src=\"http:\/\/www.itwriting.com\/blog\/wp-content\/uploads\/2016\/03\/image_thumb2.png\" width=\"404\" height=\"241\" \/><\/a><\/p>\n<p>Tuesday and the BBC\u2019s Stephen Godwin spoke on Microservices powering BBC iPlayer. This was a compelling talk for several reasons. The BBC is hooked on AWS (Amazon Web Services) apparently and stores 21TB daily into S3 (Simple Storage Service). This includes safety copies. iPlayer was rebuilt in 2013, Godwin told us, and the team of 25 developers achieves 34 live deployments per week on average; clearly the DevOps stuff is working here. Godwin advocates genuinely \u201cmicro\u201d services. \u201cHow big should a microservice be? For us, about 600 Java statements,\u201d he said.<\/p>\n<p>Martin Thompson spoke on the characteristics of a good software engineer, though oddly the statement that has stayed with me is that an ORM (Object-Relational Mapping) \u201cis the wrong abstraction for a database\u201d, something that chimes with me even though I get the value of ORMs like Microsoft\u2019s Entity Framework for rapid development where database performance is non-critical. <\/p>\n<p>Then came another highlight: Google\u2019s Micah Lemonik on Architecting Google Docs. This talk sadly was not recorded; a touch of paranoia from Google? This was fascinating both from a historical perspective \u2013 Lemonik was involved in a small company called 2Web technologies which developed an Excel-like engine in 2003-4, and joined Google (which acquired 2Web) in 2005 to work on Google Sheets. The big story here was the how Google Sheets became collaborative, so more than one person could work on a spreadsheet simultaneously. \u201cGoogle didn\u2019t like it initially,\u201d said Lemonik. \u201cThey thought it was too weird.\u201d The team persisted though, thinking about the editing process as \u201cmessages being transferred between collaborators\u201d rather than as file updates; and it worked.<\/p>\n<p>You can actually use today\u2019s version in your own projects, with Google\u2019s <a href=\"https:\/\/developers.google.com\/google-apps\/realtime\/overview\" target=\"_blank\">Realtime API<\/a>, provided that you are happy to have your stuff on Google Drive.<\/p>\n<p>I particularly enjoyed Lemonik\u2019s question to the audience. Two people are working on a sheet, and one types \u201c6\u201d into a cell. Then the same person overtypes this with \u201c7\u201d. Then the collaborator overtypes the same cell with \u201c8\u201d. Next, the first person presses Ctrl-z for undo. What should be the result?<\/p>\n<p>The audience split neatly into \u201c6\u201d, \u201c7\u201d, and just a few \u201c8\u201d (the rationale for \u201c8\u201d is that undo should only undo your own changes and not touch those made by others).<\/p>\n<p>Google, incidentally, settled on \u201c6\u201d, maintaining a separate undo stack for each user. But there is no right answer.<\/p>\n<p>Lemonik also discussed the problem of consistency when there are large numbers of contributors. A hard problem. \u201cThere have to be bounds to the system in order for it to perform well,\u201d he said. \u201cThe biggest takeaway for me in building the system is that you just can\u2019t have it all. All of engineering is this trade-off.\u201d<\/p>\n<p><a href=\"http:\/\/www.itwriting.com\/blog\/wp-content\/uploads\/2016\/03\/image3.png\"><img loading=\"lazy\" decoding=\"async\" title=\"image\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px\" border=\"0\" alt=\"image\" src=\"http:\/\/www.itwriting.com\/blog\/wp-content\/uploads\/2016\/03\/image_thumb3.png\" width=\"404\" height=\"359\" \/><\/a><\/p>\n<p>I have more to say about QCon so look out for part two shortly.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I attended QCon in London last week. This is a software development conference focused on large-scale projects and with a tradition oriented towards Agile methodology. It is always one of the best events I get to attend, partly because it is vendor-neutral (it is organised by InfoQ), and partly because of the way it is &hellip; <a href=\"https:\/\/www.itwriting.com\/blog\/9357-reflections-on-qcon-london-2016.html\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Reflections on QCon London 2016 &#8211; part one<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26,67],"tags":[422,747],"class_list":["post-9357","post","type-post","status-publish","format-standard","hentry","category-development","category-professional","tag-google","tag-qcon"],"_links":{"self":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/posts\/9357","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/comments?post=9357"}],"version-history":[{"count":0,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/posts\/9357\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/media?parent=9357"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/categories?post=9357"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.itwriting.com\/blog\/wp-json\/wp\/v2\/tags?post=9357"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}