At Liip, we develop an API that provides product information and other data for Migros, the biggest retailer in Switzerland. Let us explain the core principles and challenges we had and how we solved them (or not yet).
An interesting Django package was recently open-sourced by Swisscom. Manuel Jeckelmann wrote an interesting article about how the process of open-sourcing this worked at Swisscom. In the context of work on a security data warehouse at Swisscom, Liip has also worked on developing this package. I'll briefly describe here what's special about this package and how it can be used.
Contrary to frontend experience, CMS backend experience is rarely adapted to the needs and tasks of its real users: the few people who publish and administrate the site. Standard backend themes often remain untouched after installation. The most common adaptations are the addition of menus and shortcuts, often due to addition of functionalities to the CMS.
We (David Buchmann and Benoit Pointet) spent some time to look into the backend we have for the liip.ch website, built with the Symfony CMF. We ran user testing sessions to collect our website’s editors painpoints, a community survey to collect the pain points of other CMF users, then did a lot of small tweaks both to the public bundles and in liip.ch specific code, and identified and documented improvements that needed more development work.
For a user experience designer, improving a CMS backend experience is like walking a thin and chaotic path, circled by doubt and criticism. Users and contexts? all possible. Luckily, a culture of the backend has established and evolved, which now establishes a rich base of conventions, patterns and best practices. The latest trends are represented in the concepts of the latest Typo3 and Drupal8 backends.
Working on the editor experience for the Symfony CMF has however a different dimension than the latter CMSs: The CMF is a toolbox from which one can build a custom CMS. Each bundle it is composed of potentially adds something to the backend. On the other hand, the CMF being a toolbox, it is not difficult to tweak the behaviour of any backend element to optimally fit for the requirements.
We decided to follow the approach of beginning with surface improvements. On the positive side, we found:
- The basic interaction is good, as the interface is not too cluttered and the navigation by content type leads to quickly find the content to edit.
- Using the document path in the edit URL gives an easy indication of context to the power user.
- We have ckeditor enabled, but allow to switch to the HTML source for power users.
- The interface makes it hard to do fatal mistakes like accidentally deleting a document.
After noting these positive findings, we improved and uniformized the backend:
- For every admin list, we checked what columns the list should have and the ideal order of those lists. A very small and easy step, but with great impact for the user.
- Checked the admin breadcrumb and ensured a useful name is displayed for each type of content.
- Went over the groupings of the admins and made sure they semantically make sense. We moved those that are normally not used directly into an “Advanced” group. This is visible in the right column on the dashboard, and in the top menu dropdowns.
- Customized the design of the top toolbar to make the user feel more at home.
- Added a link to the dashboard and another one to the homepage to allow easier navigation.
The old backend looked like this:
After the cleanup, it looks like this:
Before further investing time into more complicated development, we sent a survey to the CMF community to tell us what they do and what their pain points are. We were positively surprised by the feedbacks we got. The appreciations often hinted at the simplicity of CMF-based backends: Only the needed features are there. This helps to avoid an overloaded user interface. The survey results report is online on the Symfony CMF website.
We then went through the list of issues from the survey and that we noted during the analysis of the liip.ch backend. We identified some more quick fixes that we handled right away. For the rest we created issues on github so that people are aware of them and might work on it. See a summary of those issues at the end of this blogpost.
- Small efforts can have a lot of impact on the usability of the backend.
- It turned out to be very efficient to have a developer and a UX expert pair on this. We did a lot of small changes right there on the fly, had instant feedback and instant improvements with no communications overhead.
- There is some effort needed for further admin UX improvements with Sonata Admin and the Symfony CMF.
On the 10th of December 1815, that is 199 years ago, Augusta Ada Byron, Countess of Lovelace, was born. She is more commonly known just as “Ada Lovelace”. She is often seen as the founder of computer science and as the first programmer in the world.
Her upbringing and the way she got into computer science is quite amazing considering the time she lived in. Her mother supported her and brought her up as a scientist, logician and mathematician. Ada loved everything that had to do with machines from a young age.
Mary Sommerville was Ada’s mentor who introduced her to Charles Babbage. Babbage had made plans for a very complicated machine called the “Analytical Engine”. Those plans aligned very well with Ada's interests and she quickly understood Charles Babbage’s plans. In 1842 she was asked to translate and expand an article written by Luigi Menabrea about the machine because of her extensive knowledge of the subject.
The article she wrote came in at over three times the length of the original and sketched out examples and programs for the machine. The first computer programmer was born. Babbage and everyone else was very impressed by her skill. It is for this skill and her curiosity that Ada Lovelace is the proud name of one of our meeting rooms here at Liip.
There is a lot more to Ada Lovelace, and the Wikipedia article has a lot of good knowledge if you are curious to read more about her: http://en.wikipedia.org/wiki/Ada_Lovelace
What I take out of this story is that Ada had mentors and friends and supportive parents helping her become as strong as she did. If you are looking for a mentor, or would like to help raise the next Ada http://phpmentoring.org is really cool!
Happy birthday Ada Lovelace!
Last week, four Liipers joined a crowd of customer experience practitioners for the LISTEN14 conference at the GDI near Zurich.
Last week I was at FullFrontal 2014 in Brighton, a single day conference for front-end developers. Here is some interesting stuff from the talks:
Last week, I went to Berlin to present the Symfony Content Management Framework to the German PHP crowd. I did a presentation almost exclusively based on code. I showed how to develop an application with the Symfony CMF step by step. But rather than trying to live code, I prepared a series of pull requests that I switched through and showed the interesting code changes. This is a rather unusual format and I lost a few people, but I also got enthusiastic feedback from the audience. The tutorial is also online at github for those that want to have a look at it.
Functional programming techniques in PHP
Andreas and I had the opportunity to give a talk about wearables at the Internet Briefing in Zürich at the beginning of october. After the introduction about wearables in general, smartwatches and a variety of other smart products, we explained what Android Wear is, how the platform works and if you should adapt your app for wearables. The presentation was followed by an interesting discussion between all participants. Questions and answers about business opportunities, personal experiences and current projects were the main topics.
Let me wrap up what we presented and what the discussion concluded among the participants.