Øredev 2014 – Day Three

I’ve finally got round to adding my notes from the final day of Øredev 2014. It’s taken a little longer than I anticipated due to travel and work commitments. You can find the rest of my notes in part one and part two.

Opening Keynote: The most human human

Brian Christian

Brian opened the final day of Øredev with a talk focussed on the Turing test and the different approaches that have been taken over the years in an attempt to beat the test. From the early efforts of using NLP to create a fake physiatrist to more recent efforts such as Cleverbot, computer scientists have tried to create an AI that mimics a human to hold a conversation. We’re getting closer each year, but it’s clear that there’s still a way to go.

The Loebner prize is the annual competition in which teams compete to build the “most human computer” – an AI that can hold a conversation and is determined to be the most human-like. Brian was one of the agents (competing against the AI to fool the judges) and won the “most human human” award in 2009. In the talk, he describes the competition and the traps which computers fall into when trying to imitate humans.

The talk was interesting and underlines that whilst we’re making progress in lots of areas, we’re a long way off OS1 and the artificial intelligence critiqued on day 1.

View the video on Vimeo

Session 1: Integrating skilled testing with agile development

James Bach – Satisfice, Inc

The agile testing quadrants were introduced in the book Agile Testing, and has since been used to describe a model for integrating testers into an agile team. James used his talk to focus on the short comings of the testing quadrants, which he then followed with an explanation of a refactoring to create a new better model.

James’ talk was entertaining, energetic and informative. The changes to the model seemed sensible when he explained them, in particular the focus on testing with or without tools or those practices that support the team and critiquing the project. James argued well that in fact, all testing usually requires some sort of tooling and that it’s all done to support the team.

I would suggest that every developer and tester in an agile team watches this talk and reviews the associated documentation. It makes for interesting reading and should provoke a good discussion.

View the video on Vimeo

Session 2: Enabling Continuous Delivery with Database Practices

Pramod Sadalage – Thoughtworks

A validating talk from Pramod on managing databases in Continuous Delivery environments. Pramod showed how he has used DBDeploy to demonstrate how to rollout database changes, and spent a good deal of time talking through a number of patterns for applying refactoring to database tables.

It was great to see that someone else was advocating the management of databases in the same way that my current team does things.

View the video on Vimeo

Session 3: Project reactor

Jon Brisban – Pivotal

Jon talked about how to use the Reactor library for building reactive applications on the JVM. I found this sessions interesting, as to date, I’ve not dedicated much time to reactive programming and I know I really should!

The demonstration focussed on the use of reactive streams to build an application for processing messages. It also featured the use of a web framework called RatPack which seemed interesting as well. Both something which I’ll be taking a look at in the near future.

View the video on Vimeo

Session 4: Micro-service lessons

Fred George – Outpace Systems

Microservices are a hot topic in the industry at the moment, and because of this I’m having a lot of discussions about them. In this talk, Fred described the current landscape in the area of microservices and used a number of comparisons to highlight some of the lessons he’s learnt.

He evaluated the use of synchronous and asynchronous implementation models, the use of pseudo microservices implemented in clojure, how to manage datastores, and the choices of technologies.

It was enough to whet the appetite in the area of micro-services, and enough for me to want to continue the conversation back in my day job. Fred also mentioned a microservice conference in Berlin, microXchang, taking place in 2015.

View the video on Vimeo

Session 5: The architecture of Stack Overflow

Marco Cecconi – Stack Exchange

Where would the average developer be without Stack Overflow and the Stack Exchange network? In the penultimate session that I attended, Marco described the architecture of the Stack Exchange network and some of the factors that influenced the design.

What struck me was the scale, more specifically the small scale. The whole Stack Exchange network is run from a surprisingly small number of web and database servers, 9 web tier and 4 database tier (although half are hot standby) serving 560 million requests per month.

Combined with this, the team are intensely focussed on speed. They aim to keep the homepage loads down to around 50ms, and revert releases when they break this contract.

To achieve this the developers have made some optimisations to the code as well as making some trade-offs which you might ordinarily consider bad practice. Some examples of this include rewriting the compiler and using a high number of static methods to assist the garbage collection. They also make heavy use of caches at all levels.

A good example of doing what’s right for your application and users rather than what’s best practice.

View the video on Vimeo

Øredev 2014 – Day Two

This is the second in a three part series giving an overview of the sessions I attended at Øredev 2014. Part one of the series can be found here.

Opening Keynote: Getting comfortable, being uncomfortable

Keavy McMinn – Github

Day 2 started with a Keynote for Keavy McMinn, a self-described maker from Github. Keavy has a passion for fine art and used the keynote to walk the audience through some of the pieces she has created for recent exhibitions. She used this exploration to help explain the importance to her of finding a way to keep making, and the importance of this in her role at Github.

Keavy also described the process for developing software at Github, and the way which written communication in particular is used. Being a mostly remote team, being able to express your ideas clearly and concisely in writing is key to the way Github works.

View the video on Vimeo

Session 1: Beyond responsive design – UI for the modern web application

Peter Smith – One and Three Consulting

In this session, Peter demonstrated some of the key components which he feels contribute to the development of a successful multi-screen web application. I think he’s right to point out that a good web app needs to be more than responsive if it’s going to compete with native mobile applications. Responsive techniques will make sure that your site renders correctly, but it might not be enough to improve the usability of the site.

To do this, Peter re-imagined the conference website as a mobile web application, borrowing navigational techniques such as the hamburger, property sheets and tabbed content to build a more compelling application.

Although the final site was very flashy, I’d question how gracefully something like this would degrade, in particular in areas with poor network connectivity.

View the video on Vimeo

Session 2: Build a better bootstrap

Tim G. Thomas – Frog

Tim used this session to outline some of his opinions with CSS frameworks, using bootstrap as an example. He paid a lot of attention to layout issues which are solved for the most part using grids in bootstrap and showed how you could achieve the same thing without the use of a framework.

He then explained some concepts around behaviours in bootstrap and how you could achieve a similar thing using other frameworks.

I’m not really sure if Tim managed to show a “better bootstrap” but did show that for production applications you should be looking to roll your own framework using specific technologies for specific tasks, rather than taking something out of the box.

One of the key takeaways for me (and repeated in another session) was the need to create a site documenting your framework, and more importantly build it using your framework.

View the video on Vimeo

Session 3: Automation abstractions – Page objects and beyond

Alan Richardson – Compendium Developments

Alan Richardson is a software tester and used this session to demonstrate how different types of abstractions can lead to better structured test code. He focussed predominantly on the development of WebDriver based tests, but went further than describing the use of Page Objects as an abstraction layer.

Alan described how he used abstractions based on the domain, users or other higher level concepts to structure his tests, using the SOLID principles to influence the design of the tests he writes. One clear recommendation from Alan is to create different abstractions for structural (page objects) and functional objects (interactions). Using this model, it’s likely that you’ll be able to reuse your structural abstractions in your functional ones.

What was good about this session is that it was obviously based on a lot of experience writing tests for different teams. Alan was able to show what he’s found to work, and therefore what might work for other teams.

View the video on Vimeo

Session 4: ORMs – You’re doing it wrong

Jimmy Bogard – Headspring

For me, this was an interesting session looking at what’s bad with ORM’s and what we should or shouldn’t be using them for. Even though the examples were shown using .Net the patterns, or more accurately antipatterns presented are applicable irrespective of the implementation.

The main antipatterns highlighted were either in the area of mapping or querying. In reference to querying, problems usually occur in the use of objects generated from database tables, mappings and navigations and the use of joins. In reference to querying, ORM implementations typically have issues due to lazy-loading and do this through a DSL. In most cases this DSL is just different enough from SQL to be confusing.

View the video on Vimeo

Session 5: Teaching our CSS to play nice

Jen Myers

In this session Jen shared her experience of working on teams to show us how to write, document and build CSS. I see too frequently that CSS isn’t written with the same care and attention as other code that’s written and that eventually leads to maintenance issues.

Jen broke down her talk into 3 areas. First, she focussed on some key questions to ask at the start of a project. What’s the scope? Should we use a framework? Should we use a pre-processor? How should we organise the CSS?

Once you’ve covered off these points, you can move onto the micro-choices which make up the style-guide. How do you order properties? Do we use shorthand? There were also a number of recommendations around structuring CSS.

And finally, the importance of documenting the style guide and choices is important, and once again a suggested way of doing this is to create a living style guide.

View the video on Vimeo

Closing keynote: About passion and collaboration

Nile Rodgers – CHIC

A different kind of keynote. In two hours, Nile answered questions about his career, passions and the collaborations he has had over the last 40 years or so in the music industry. His stories were great, and his passion for making music was clear. He did, however, like to drop in a name and the stage was littered with the names of pop stars from the last 40 years.

Nile talked about how CHIC’s biggest record came about, a story showing that by not getting the thing you wanted, you might actually end up with something better.

View the Video on Vimeo

Øredev 2014 – Day One

I attended Øredev 2014 to present a talk with Ben Kelly on the relationship between testers and developers at eBay. The details of the talk we gave can be seen here.

Whilst at the conference, I took the opportunity to attend a number of other sessions. Øredev is a conference with a wide range of talks covering topics such as agile development, Java, .Net, testing, user experience and front-end development. As such, the sessions I attended were varied, although I did attend a fair number targetted at front-end development.

What follows is the first part of a three part series highlighting each of the sessions and talks that I attended.

Opening Keynote – Deconstructing Her

Chris Noessel – Cooper

Chris runs the sci-fi interfaces blog where he critiques the technological interfaces that are used in cinema and television, pointing out problems and suggesting improvements.

In the Keynote, Chris dissected the OS1 operating system from the film “Her”. The talk was insightful, and whilst the critique of the technology was interesting, what I found particularly interesting was the ethics that would be involved in producing and marketing such an advanced Artificial Intelligence. If the AI is really advanced as we’re led to believe, then is this a future form of Slavery?

View the video on Vimeo

Session 1: Web Components – Drunk on the Panacea

Angelina Fabbro – Mozilla

In this session, Angelina looked at one of the newest web technologies which support modern front-end development, web components. She focussed her talk on 4 areas, templates, html imports, the shadow dom and custom elements. For each part, Angelina gave some basic examples of how they could be used and then described some of the problems with the implementation.

Should we be diving into the use of web-components? I’m not so sure after this talk. I can see instances where some of the features might be useful, and libraries like Polymer (link) are a way of getting consistency in implementation but I think it’s still a way off yet.

View the video on Vimeo

Session 2: Yes, browsers can do that – Don’t be shy to use it

Christian Heilmann – Mozilla

One of the my main takeaways from this session was the need to simplify what we’re doing. Christian explained the way that over the years we’ve added more and more abstractions on top of native browser implementations, and now we’re paying the price as we’re adding tooling even more code to deal with the abstractions. If we think about our development another way, and look to the native browser implementations first then we might be able to build better products.

In this talk Christian focussed on a number of key technologies which are working well across most browsers (if you think of IE9 up).

View the video on Vimeo

Session 3: Twins – FP and OOP

Richard Warbuton

Arnold Schwarzenegger, Danny DeVito and Java 8. What’s not to love?

Focussing on the SOLID principles, Richard showed how we don’t need to forget or abandon all of our tenants of good object oriented software design when we dive into functional programming. Good practices are good practices, and this talk demonstrated that when understood properly, we can see variations of the same practice applied in many different contexts.

I think my favourite part of the talk came at the end, when Richard equated the world of software development to the career of Arnie. I can certainly say that myself, and probably most of the audience for that fact, have never seen the correlation between the two before.

View the video on Vimeo

Closing Keynote: Deliberate advice from an accidental career

Dan North

Dan North closed the first day of Øredev with a variation of his “Deliberate Advice” talk. He examined snapshots in time through the interactions with people, and described how these things had helped shape his career to date.

It’s the first time that I’ve seen Dan speak, and I found him to be engaging and inspirational in the way he tells his story. There’s not really much more I can add to this, so I’ll let the video speak for itself.

View the video on Vimeo

Waiter, there’s test in my dev! – Øredev 2014

This week I completed my first talk at a major developer conference, Øredev in Malmö. I found it both nerve-racking and exciting in the lead up to the talk, but once I got started I soon settled in and concentrated on the content.

I was extremely fortunate to be able to do this talk with Ben Kelly, an experienced tester and fellow development team lead. His experience of doing these kind of talks was invaluable.

So, onto the talk. Ben and I have worked together for the past year and in that time we’ve done some things to try and build a healthy relationship between developers and testers. Our talk covers this relationship, starting out with the conflicts that some teams encounter before moving onto the way we set up teams, and through to the practices we do day-to-day.

Finally, we give developers and testers a few small things which they can take away to help bring there own testers and developers together.

So, here it is. My first real conference talk. Feel free to critique, offer advice and suggestions.

Also, let’s continue the conversation – how do your testers and developers work together? What works and what doesn’t?