In this interview, James Montemagno talks about mobile's impact on development and testing. He points out some interesting facts and figures about the growth of mobile devices, as well as our current situation when it comes to the evolution of Internet of Things devices.
Josiah Renaudin: Today I'm joined by James Montemagno, a developer evangelist at Xamarin and speaker at our upcoming Mobile Dev + Test conference. James, thank you very much for joining us.
James Montemagno: Thank you so much for having me.
Josiah Renaudin: No problem at all. First, could you tell us just a bit about your experience in the industry?
James Montemagno: Sure. I've been a Dot Net, C# developer for over a decade I would say at this point. Ever since I found C#, the language, I fell in love with it. We also started with Basic and C, C++ and evolved and when I found C#, I was just blown away by the language features, its evolution, and then marrying it with Dot Net and this amazing library of functionality. I was like, this is the language and everything and where I need to be.
In the industry, I've gone through a lot of different areas. I used to do game programming. I did high-end, enterprise-level printer software. I've done web services and then about three years ago, I started a mobile career actually in Seattle. I've been a mobile developer for over three years now, let's say nearly four years. I've shipped over twenty apps between IOS, Android, Windows Phone, and Windows Store.
Josiah Renaudin: I can't help but ask. I'm a freelance journalist as my side job, a game journalist, so I'd like to know … what kind of game development have you done in the past?
James Montemagno: I actually went to a small tech school out in Phoenix, Arizona, called UAT and actually used to work on Xbox 360 downloadable titles for Xbox live Arcade. When I started there, I did my command line, text adventure type stuff and that progressed into wanting to be a game developer, and then I did it. I was like, "yeah, this is pretty awesome," and then I decided that I wanted to write printer software.
What I did mostly was gameplay programming for the space shooters called Shred Nebula—it was a downloadable title—during college and a little bit afterwards. It was great, actually. What ended up happening was interesting. I really enjoyed the game development side of it, but then I really fell in love with tools development. So, I was creating all these tools—these desktop tools for the artists and the game play designers—and that's when I found C#.
I was like, "This is exactly what I want to do is create these great tools, desktop applications." Nowadays, it's moved over to mobile, which is … we have these large legacy projects, which are still very important in the enterprise. But then in mobile, when I held this powerful device in my hand … this is like a supercomputer, and you could get in and out of applications and these are the experiences I want to create.
Josiah Renaudin: Absolutely, and you just mentioned mobile, which is a key focus of the conference as well as your specific discussion. Can you go over a few of the basic facts and figures when it comes to the number of smart phones out in the wild, as well as the number of applications downloaded daily and? And this next part of the question is a little more difficult … how much will that expand over the next decade?
James Montemagno: Those are good questions, and the statistics … actually, when I was doing research over the last few years of just mobile development and coming up for Mobil Dev + Test in general, there are more smartphones. just smart phones, in the world than personal computers nowadays. There's over 1.6 billion smart phones and they're being sold at a rate of 1.8 to 2 million devices a day.
When you think about that, that is nearly five times the amount of babies being born a day. There's one smartphone for about every four people on Earth. That's only smartphones. When you combine mobile devices, so even our legacy phones and then tablets into the mix, there are nearly 8 billion of those devices in the world, which is just astronomical. There are more devices than there are people.
That number is just set to grow, because people are just buying, not only upgrading their phones, but they're also buying more devices so more new form factors. You think of wearable devices, and Google Glass and Android Wear and Apple Watch. These are all smart devices so that just keeps adding to the number of these smart, connected devices.
Then, when I look at my collection of phones I not only have just a phone, I have a tablet, maybe two tablets, and then I have a Surface tablet for my keyboard. I have a Chromebook. There's all these devices. There's so many, and that's not the average consumer, but the average consumer alone at least has one to if not two devices in their possession.
Josiah Renaudin: I was reading your abstract and one thing about The Internet of Things really stuck out when I was looking through it. I had a question: Why would you argue that developers and testers are already behind the curve when it comes to Internet of Things devices?
James Montemagno: What's interesting, when you even look at mobile, I would say we're still a little bit behind the curve, especially when it comes to testing. If you talk to some Dot Net developers or long time developers working on enterprise applications, they know the importance of testing their applications and doing unit testing and testing all their business logic. But you have these real pressures as a mobile developer, which is, you have these users that have extremely short sessions so they expect their applications in under three seconds.
They want it to be extremely responsive, as fast as possible, and then they expect updates. Rapid updates. When you turn on my Android phone I can see Square Cash updated in the morning and then they updated at night. I don't know what they fixed, but something fixed and I got excited about it. We expect these fast turnarounds. If something is wrong, we want it instant because, as a developer, we can now have that channel to actually deliver that to our users, but I think at the same time you have these short sessions but extremely high expectations.
That is just in the mobile space that we're faced with as a challenge, and how do we get there and actually integrate into testing. We're actually a little bit behind the curve, because we're forced into these three demands, and there's more demands than that, of users creating this beautifully crafted mobile applications that are perfect. If we're expected to be releasing nonstop and getting it out, how do we get our test suite up to date and are there tools available for me to do this?
Then, when you throw in Internet of Things, which to be honest could be anything—it could be this connected robot, it could be connected my Hue light bulbs, it could be my Android Wear watch—that throws another curve ball at everybody which is how do I now test these devices and how do I create a great experience?
If you look at a wearable device, it's not just trying to throw your application into the wearable watch. It's actually how do I create and craft a great experience and now this is another code base. How do I test that code base versus testing my main mobile application code base?
It's just these architecture structures that, in the enterprise, we've had architects who've crafted this beautiful story and then mobile came out and we're just like, "We've just got to go, go. Push code. Just push code all the time." Now you've got to take that step back and say how do we deliver these great experiences without having, pushing out an update that breaks the application for everyone because then, all the sudden, we're getting one star reviews and our application is dead in the water.
Josiah Renaudin: You were talking earlier about just the sheer quantity of mobile devices, whether that be phones or tablets, that are out in the market. Do you think enough companies are putting mobile as the first priority when it comes to development and testing, especially if so many people have so many devices in their houses?
James Montemagno: I think that more companies … it's a little bit hard to say. There's about twenty million apps downloaded each and every day, so it's pretty important and the delivery channel is out there for it. I think that some companies have already jumped on. The mobile market is very transformative and it's creating new business structures and business identities.
Take a look at Uber or Lyft. That's an entire segment of market that didn't exist before mobile and couldn't exist before mobile. They're a huge, ginormous company now. I use Uber all the time when I'm in San Francisco and Seattle or just wherever I'm travelling for different conferences. It's transformative in that space, and I think that there's still a lot of companies that are slowly coming up to pace, but I think companies are finally figuring it out.
I don't really like when people say that mobile is the future. That's what you hear all the time in a lot of conferences. Mobile is the future. No, mobile's not the future. The mobile is now, it has been the now. It's time to recognize that you can't say mobile is the future, because the future's whatever is in the future that's not out yet. The future's probably wearables at this point and IOT type of things that we're way behind and we still need to figure out, but mobile is now. When you see companies that are mobile companies that are buying Super Bowl ads that costs millions of dollars, that means it's now.
That's what I like to think, but I think companies … I think they're finally putting a lot of thought behind putting mobile first as a priority, even a lot of new airline companies. You'll see now their in-flight entertainment systems are all mobile. It's just like an iPad or an Android tablet and that's really innovative, I think because when you think of why recreate and reinvent the wheel? Users are going to be used to the idioms of these mobile devices, so let's just carry that through in different aspects of different companies.
I think it's going to transform internals of companies as well. I think that's what's maybe slowly churning at a lot of large enterprise companies. They need to start, like … how do I take this mass amount of paper and paperwork that we have to fill out or they have to fill out every day and how can we just make this super efficient? I think that's really important.
A good example is one of our customers at Xamarin. We do cross-platform mobile development in C# and there's a company called Kimberly Clark, which is a huge enterprise and they deliver tons of different services, but we have a great case study on how they took this, they're placing orders. They'd go into companies and they would place orders for like health and safety equipment. It was all manual. It was printing out a piece of paper, checkbox this, checkbox that.
What they ended up doing is they created a beautiful iPad application all with 3D models with the human body that they could place and they could tap down. “Well, we need some head gear, we need this, we need that,” and you could actually put it in front of their customers and they could understand. They could get a PDF read out and they could see all this and it actually increased their sales dramatically and cut down the time from walking into a customer to when they could actually get those supplies, just because it was a seamless, almost a point of sales system that could be delivered and there was no paperwork. You didn't need it anymore.
That's transforming the internal and customer facing all at the same time to actually reinvigorate a lot of what's going on there. It's an amazing thing to see that it's not only transforming how we act and do things on a daily basis, but also how these companies are reacting as well.
Josiah Renaudin: You've already mentioned the iPhone, iPad, Androids, and Surface. How big of a challenge is device fragmentation for a developer or tester? How much additional work does that really add into the process?
James Montemagno: When you think about the issues that companies have, one when you're writing mobile applications, traditionally you're writing them multiple times. You're writing an iOS application, an X code with Objective C, you're doing it in Java on Android and then if you're doing Windows desktop or phone application, you're over in C# and you're doing this. Then you have to have a web backend. Maybe it's an ASP Dot Net backend, maybe it's not. You're tying up to different mobile services.
That's the first part of not only just device fragmentation, but that's development fragmentation. You have multiple teams working on different things. I'm going to talk about this a little bit at the conference which is a little bit of the approach of cross-platform development. In Xamarin, I've been a Xamarin developer, a C# developer for like I said, nearly a decade. I've been using Xamarin for over four years now to create IOS, Android, and Windows applications all in C#. I thought about, when I was approaching mobile development, how can I share a vast amount of code for rapid application development, and that's where Xamarin came in on it.
I tend to tackle that first, which is how can I leverage and create great testable cross-platform functionality? Because when you enter the market, you're going to have to worry about two things. The first thing you're going to worry about is, will my code run everywhere and how do I maintain that code? How do I add new features to different products and make everyone happy? Then it's going to be about the user-interface.
When you talk about device fragmentation, it's not only just devices, but it's operating systems. Android alone has over 19,000 different devices in the market. It's a lot of devices. Usually, you don't have to worry about it too much, but even if you look at it still to hit only in the United States—this isn't over in any other country, but only in the United States—to hit 75 percent of Android devices, you would have to test on nearly a hundred and eighty different devices.
For iOS, there's now over twenty configurations in multiple versions of iOS, so you not only have this iPad, iPad 2, iPad Mini, iPad Air, iPhone 5, 5S, 6, 6 Plus, it starts to scale out and new users. I was on a flight coming back from San Francisco and I still saw someone with an old iPhone 4, an iPhone 3GS. They're still out in the water so you have to make a decision of how do you want to test those, and how do things scale. How do you actually perform user-interface testing and integrate that all into your continuous integration cycle?
If we want to be better app developers, we need to think beforehand. We call this the shift-left approach, which is how early can I shift testing into my development to be a little bit more driven that way? I can write you unit tests for my business logic, but how do I tackle the user-interface? There's a few different tools out there and we offer one as well which is called Xamarin Test Cloud, which is our test cloud that has thousands of physical devices, iOS and Android, in the cloud that you can run automated user-interface scripts on. You write this scripts in either Ruby or C# so it allows you to actually physically test your applications, written in any language.
It doesn't have to be Xamarin. It could be Objective C, Java, PhoneGap, it doesn't matter. You can write these tests, actually test it on these devices. The real challenge that developers have is picking a development environment and then picking a testing environment. That's a little bit hard because there's so many options out there. Obviously because I work at Xamarin, I think we have amazing products and obviously the best out there.
During the talk at Mobile Dev + Test, I'm really going to focus on the challenges. I've only talked about a few of them here, but there's a lot of other challenges that developers have to face on a day-to-day basis that I want to leave a little bit obviously for the conference that people will come to, but it's really picking what is going to be the best and most efficient because there's a lot of challenges once you start getting into development.
Not only is the device fragmentation different, it's all the different feature sets, too. iOS maybe doesn't have NFC that you can take advantage of, but Android does so how can I create a great experience on all the different devices.
Josiah Renaudin: Going back to something you said earlier, you had mentioned that mobile's not the future. Mobile is now. Mobile is something that we're dealing with right now. Are most development teams at a stage where they can survive in this new mobile world or do they need to evolve?
James Montemagno: I think that when you say development teams, you think of development teams usually this large team working on a huge application. When I wrote mobile apps on all applications, I was the only one. I was the designer, the developer, the integrator, the tester. I did production, delivery, website design. I did everything. Of course, I was at a smaller start up at the time. I was at a twenty-man shop. This was before I joined Xamarin, but those are the development teams.
To be honest, if they want to survive, they do have to evolve and kind of adapt to this new mobile world, which is all these new challenges but then a different way of thinking, which is not trying to shove every single feature into a mobile application, but crafting a great experience that allows a user to get in and out really fast because that's what they want to do.
That's what I know I want to do. The average user checks their smartphone, I'm guilty of it, too. This is probably low for me, but an average person checks their smartphone forty times a day. The statistics really are mind-blowing of how often we're in our phones or on our phones for over three hours a day.
Josiah Renaudin: I actually totally believe that, thinking about it now.
James Montemagno: It's really crazy. Trying to think, can we survive in this new mobile world? Yeah, we have to survive, because that's the future. The number of mobile devices is only going up. It's not going down. I think development teams hopefully should be at a stage now where if not, should be able pretty soon. I think that hopefully they'll be able to recognize and see what has worked well for other teams.
I think additionally, what's important is, as developers, we've been developers for a long, long time, working on applications. We've had the experience. When you go out to hire a developer, they've been making applications for some time. Now, the mobile development is still relatively new or so we say—it's been five, six years now since the iPhone came out originally and the whole app store and writing applications, small little applications. Now when you're going out, more mobile developers are going to have that experience, so I think that will help craft teams as well.
Obviously when you're in your very, very early stage of this new development environment, it's going to be how do you find an expert mobile developer when the iPhone had only been out for a year? It doesn't really exist, but now we're five, six years in and we have more tools and we have the resources to actually try to transform our development team in a way that can definitely evolve as a new thing such as Internet of Things and new devices are coming out and adapting our work flow to tackle those.
Josiah Renaudin: Absolutely. I have one more question for you, James, and I do very much appreciate your time. More than anything, what message do you want your audience to be left with when they walk away from the presentation?
James Montemagno: I want them to think about, how are they testing their applications today? How are they building their applications? And as they walk away from my talk and they see all the challenges and possible solutions that they can tackle for mobile development and testing and why it's so important, I want them to walk away and say, "Is the strategy that I've been doing for the last ten years, is that going to apply to mobile development?"
I guarantee it's probably not, so I want them to walk away with the thought that traditional development is not mobile development. Mobile development is unique, especially when we talk about Internet of Things and these new devices coming out. To really think about how can you survive in a world where you have to iterate faster than you ever have before, but still create a great, beautiful, native experience that you users are going to love?
It's going to be a little bit more thought-provoking but hopefully, throughout the entire talk, you'll find guidance from my personal experience of doing this for the last four years of how you can find a solution.
Josiah Renaudin: All right, great. Well, once again, I really appreciate you stopping by and talking to us today, James, and I'm looking forward to hearing more about mobile development when we see you in San Diego.
James Montemagno: Perfect. Thank you so much again for having me.
James Montemagno, a developer evangelist at Xamarin, has been a .NET developer for more than a decade working in a wide range of industries including game development, printer software, and web services. Previously, James was a professional mobile developer using the Xamarin platform for more than three years, with several published apps on iOS, Android, and Windows. He can be found on Twitter @JamesMontemagno and blogs code regularly on his personal blog.