Development teams today in many cases become THE business. More and more organizations build their business strategy on digital channels – Web, mobile and social. Although developers spend most of their day in their IDE, developing new code and debugging – in many cases, those few development teams are responsible for hundreds of millions in company revenue.
To address business needs, development teams need to move fast and be more agile, they need to be able to secure the business necessary to build the right process – one which includes a set of safety nets. Such teams would like to focus on developing new capabilities, be more innovative and drive the business forward rather than address issues, however, when those occur they may be as important as new functionality and in most cases even more critical for the business.
We’ve been working with many development teams within the last year to map the challenges and discover what we can do in order to help them be more productive – code, focus on new functionalities and solve the issues as early as possible.
Although most developers are aware of the current challenges, it is interesting to see that with modern mobile and web apps, development teams often work in the same way they had in the previous century. There is no real lab solution for the front-end – mobile apps and web.
So, what does a developer lab look like in most cases?
- Emulators – Those are being used in two main areas –
- At the developers’ desks for the early development validation – Today the IDEs (Android Studio & XCode) come with relatively good emulator / simulator solutions that help developers with their initial validation.
- Continuous Integration – There are few organizations that run automation tests or emulator as part of the CI process.
- Developers’ device – Usually most developers have 1 device allocated to them for their development activity. It is usually one of the latest models with the latest OS version.
- Cabinet with devices – Usually each development team will have 10-40 devices located somewhere as a shared resource to use when developers need to validate or solve issues that are replicated on a specific device \ OS version \ screen resolution etc.
What are the challenges with the current solution?
- Emulators provide great solutions for the early stages. They provide good view and help to validate that the functionality and the flow works as developed at a basic level. There are few areas in which this isn’t enough for the early validations:
- User Interface – The UI will look different on emulators – in many cases we do see usability issues in which it is clear that the developer didn’t validate them on a real device, either because the emulators works differently (e.g. a keyboard that overlays the edit field – the user can’t move to the next one and can’t see the text that he entered) or, due to screen resolution, an object may appear differently on real devices.
- Continuous Integration – The Continuous Integration should provide a good indication for the team that it can move to the next tasks – Quality should be fully backed into the CI process and in order for it to be reliable it must simulate the end user experience – this requires real devices and labs that can simulate end user conditions.
- The cabinet is an old-school solution – its easy to start with, however teams find that they constantly need to acquire more and more devices – and still their solutions are limited.
- Doesn’t allow full control of end user conditions (e.g. how can I solve an issue that happens in China or on a specific device?).
- Security – An interesting exercise would be to check what is installed on those devices – Since people tend to take some of those devices they own, and pretty soon you’ll see games and other apps that aren’t secured installed on them.
- Not shareable between multiple-site teams – most teams are distributed geographically – which means that each team must buy their own devices – Now what happens when a new iPhone is being introduced to the market? Wouldn’t it be nice if each team didn’t have to stand in line, waiting till they get their hands on the new device?
The Recommended Modern Solution
The lab aspect is critical for development team efficiency – A common case is how to solve issues that replicate on a specific environment / device – Those are quite common, especially when the app interacts more with the hardware such as OS capability, sensors and camera. In the Android space, for example, it is known that Samsung devices will behave differently from most other Android devices, mainly due to the customization that Samsung are imposing on their devices.
In order to address that need, we developed a new capability – DevTunnel.
DevTunnel allows the developers to connect from their IDE / workstation to devices hosted on our cloud in a way that will be similar to devices that are wired to their workstation via USB cable.
That means that if a developer needs to solve an issue that comes from QA / production they can easily open devices on the Perfecto cloud, connect via DevTunnel and from that moment they can investigate the issue in the same way or on the same tool that they are used to working with – This can save them hours or days in setting up the environment necessary to solve the problem.
Once they solve the problem quickly they can go back to continue working on the new shiny things. Yippee!