For the second year running we were invited to the London Mobile Forum organised by Facebook. With around 60 mobile development professionals from many different companies and 10 discussion topics to choose from, it was a great opportunity to get to know the London mobile dev community, share experiences and learn from each other.
The event was a one day affair with two sessions - one in the morning and one in the afternoon. Each session starts with five speakers presenting brief overviews of topics they would like to discuss. After that, each of the attendees chooses which of the five discussions they wish to join. The group discussions take around 45 minutes and are moderated by the person who introduced the topic.
Each session ends with the speakers sharing the outcome of their discussion with the whole audience and leading a Q&A panel which gives the wider group an opportunity to ask questions and share their comments on the topic.
As with last year, Plumbee was given the opportunity to present and lead a discussion on topic of our choice. We chose to talk about “Cross platform development” simply because it is a core of what we do at Plumbee and we are interested in sharing our experiences, and learning from others.
Our session had the participation of eight people from an array of different companies. On the large social network front, we had participants from Facebook, Google, and Skype. From the gambling company world, we had Sportingbet, and from multi platform vendors and mid-sized companies, we had participation from Tom Tom and Red Ant. This great cross section of people allowed us to share and discuss experiences from multiple points of view.
When we started the development of Mirrorball Slots for Mobile the choice of Adobe Air as a cross-platform technology was pretty obvious. We needed a platform compatible with iOS and Android, and Air opened the option to reuse a good amount of Actionscript code from our successful web product.
The other participants in our session mentioned the following reasons for using a cross-platform technology:
- Some chose a technology already familiar to their engineering team because they were working against tight deadlines.
- Some (like us) wanted to use codebases of existing applications.
However, using a cross-platform technology doesn’t always make for smooth sailing:
- For apps (as opposed to games), users expect the usability to be specific to the platform. An Android user will be confused with an app of iOS look and feel and vice-versa.
- Although C++ claims to be cross platform, it’s common to face portability issues.
- HTML5 is just not there yet. There are portability and performance issues, especially in Android.
- If you have enough resources, it may be simpler and more efficient to keep separate codebases, even when the application is very similar in all platforms. For example, since Apple recommends and provides tools for Objective-C, that should be the technology of choice instead of ‘fighting the platform’.
Beyond our cross-platform session, we also attended other discussions on the topics of build tools and automation, the weekly app release cycle, and mobile software testing. All three topics are important to us, as they tackle general software engineering challenges instead of focusing on matters specific to native iOS or Android development. Below are some of the interesting things we learned:
- There are companies out there who don’t do continuous integration and automated testing!
- We run our build services in the cloud, but we found that option is not as popular as we thought. We learned that some companies can’t deploy the build process to the cloud for legal reasons.
- It is official now - SVN is a thing of the past. Git is the way to go! (that is not a big surprise, is it?).
- In the realm of build tools, Gradle is gaining momentum and Maven is still strong. Most people (correctly, in our opinion) view Ant as a problematic solution and its use is declining.
- It is considered a best practice to run all automated tests on the actual device rather than emulator, but the costs and technology limitations sometimes limit this practice.
- Regular, short release cycles (eg. weekly) have multiple advantages such as:
- Forcing good development practices, ensuring focus on smaller chunks of functionality, and getting user feedback more often.
- Getting tests (both automatic and manual) to a level where they create enough confidence to push a given feature to the production environment.
- Preventing crunch periods.
- Long lived feature branches are bad. Keeping such branches open for a long time can be problematic as you try to merge them in later. If you think they are necessary in some circumstances - think again.
- Feature toggles are the way to go! We can enable and disable specific features, so releasing a new feature would require only the changing of a toggle flag. One global can work if product is simple enough, but multiple can work well, particularly if they are integrated with A/B testing
- Some users complain if an app wants to update too often, even if the update is automatic. Seems like you just can’t make everyone happy.
- The Apple app review process can be leveraged as a cool-down period where the released build is reviewed by an internal audience. This allows you to gather feedback before the release. It also works great for Microsoft with thousands and thousands of employees who can give feedback.
- Test Driven Development is not as common in Mobile development as it is in other kinds of products. It’s a common issue with Frontend development since UIs are hard to unit test. The general recommendation is to try to choose architectures with testing in mind.
- Lots of technologies are arising for functional acceptance testing. Tools from Calabash, Appium, and Xamarin Test-Cloud are great examples.
- There’s a concern with screenshot-based tests, and in general with pixel perfection. As an industry, we have yet to find a reliable system to test UI. Not only is there a lack of tooling, but there is also a lack of understanding on the scope of UI testing, and who has the responsibility over these kinds of tests.
For Plumbee, the London Mobile Forum continues to be a fantastic opportunity to catch up with some of the best engineers from the most influential companies in the tech scene. We’ve enjoyed the opportunity to learn about the latest trends, discuss technologies and strategies, and interact with our peers. The range of companies attending was quite broad. Perhaps from Plumbee perspective, it would have been interesting to have more game studios represented.
In any case, the event is definitely one of the most interesting held in London for mobile engineers and we’re already looking forward to next year.
London Mobile Forum 2.0
Place: Shoreditch Works Village Hall, 33 Hoxton Square, N1 6NN, London
Speakers and topics:
- Jenny Yuen (Facebook) – “Building playful interfaces on Android”
- Sarah Dattani (Isobar) – “Emerging Design Patterns (Android)
- Carl Harroch (Novoda) – “Build tools and Automation”
- Savvas Dalkitsis (Shazam) – “Hiring Mobile Talent”
- Miguel Serrano (Plumbee) – “X-platform Development”
- Scott Goodson (Facebook) – “Asynchronous UI on iOS”
- Graham Lee (Big Nerd Ranch) – “Mobile software testing”
- Pedro Morais (Yammer) – “Weekly App Release Cycles”
- Lucas Rocha (Mozilla) – “Interaction between design/engineering teams”
- Thong Nguyen (Bloom.fm) – “Automating SDK generation”
- Miguel Serrano, Jakub Pudelek