Code reuse using Xamarin of 50-85% gets Apps faster to market

Apr 15

Code reuse using Xamarin of 50-85% gets Apps faster to market

In this podcast series we ask experienced Appreneurs for one success story and one fail. In this episode of the Mobile Engagement Podcast:

Today’s podcast might be construed to be “just for developers” but its actually valuable for Product Managers and Marketers as well to hear the benefits of cross-platform development. Its a little geeky but with solid tips!

Its an interview with James Montemagno of Xamarin a great cross platform development company. He covers the potential for reducing code time, maintenance time and importantly bug-fixing effort!

Here is James’ Conference Apps referenced in the interview:

Engagement Score

We score all out interview anecdotes based on 3 axes of: acquisition, UX and retention – I’ve listed the actionable points below in TL;DR but having direct control over UI elements and OS functions in a cross-platform development environment is a winner for the UX axis!

Let us know on our Twitter account how you score it.

Transcript

The TL;DR

James’ story had a few elements that are pretty salient for a Product Manager or Marketer who is trying to get features into their App and evolve the development quickly. Also efficiencies for developers:

  • You can get more done faster (App development that is!)
  • Informational Apps can probably get around 85% code reuse across iOS & Android
  • More intensive Apps that use Geofences and Beacons might get around 50% code reuse. However using a Mobile Engagement platform like StreetHawk effectively simplifies that anyway.
  • If you are an ObjectiveC/Swift Developer, you should take a look at how Xamarin can get you well prepared to start on Android.
  • If you are an Android Developer, you get the same benefits but with the added benefit that Visual Studio is a far less exasperating environment than Eclipse 🙂 (not sure how it compares with Android Studio)
  • Its worth doing an evaluation of technologies like Xamarin against PhoneGap/Cordova/Ionic and see what works better for you. If you are a web-dev then maybe transitioning to C# might be tough but the benefits of stronger development and access to OS specific APIs in a common familar language style might be worth the change

Transcript Detail

DAVID: Gidday! It’s David from Street Hawk. By introduction for this talk, it’s a little bit different today because we’re talking to a platform developer, Xamarin. The background is this, that with Street Hawk, people come to us and say, “Can you do your plug-in for a particular development platform? Naturally we started off with iOS, then we went to Android, and then we went to PhoneGap, and then we went to Titanium.” The reason for that was that’s where the demand was coming from. Last year we had started to get demands for Xamarin.”

We said, “What the hell is Xamarin?” So we dug into it and we went, “Oh, wow, this is really cool!” This gives basically C# developers access to a cross-platform environment, so we got pretty excited about it. We released a component in the Xamarin App Store which brings mobile engagement automation to Xamarin developers. It does really cool things like it would allow you to do deep-linked push so you can actually push right into a specific page in a Xamarin-based app. We really like that sort of stuff.

So, I’m going to get this right now, James – James Montemagno?

JAMES: Yes. You said it in the correct original Italian pronunciation there, yeah. We simplify it a little bit, just Montemagno, just right exactly how it’s spelled. But originally, James Montemagno would be the correct Italian pronunciation.

DAVID: Yeah, I have about 50 words of Italian , so there you go, I’ve got 51 now. [Laughter] So how are you? Are you a developer evangelist at Xamarin or… what’s your official title?

JAMES: Thanks for having me on, first; i really appreciate it. Yeah, I’m up here in beautiful, sunny Seattle, Washington, where I live.

DAVID: Sunny tongue-in-cheek?

JAMES: Today. Yeah, I’m a developer evangelist at Xamarin. All it really means is that I still get to make applications, I still get to build awesome samples and present often and come on awesome podcasts like this and talk about it. But I’m really just helping developers be successful in mobile and anything that they’re doing with Xamarin, from iOS, Android, Mac, the whole gamut and it goes a completely cross-platform. That’s what I do on a daily basis. I write a lot of codes still.

When I started development—you know, I’ve been a .NET developer for over a decade now at this point—everything was like really command lines are Winforms-based, so it’s just kind of driving and dropping controls. That was the world we lived in; there were no smartphones at the time at all. I wanted to create something that was very interactive, so I wanted to create video games. I was always a gamer all my life, so I said, “I’m going to go do this. I’m going to become a game programmer and go into that industry.” I went off to school and did that. I had a Target One platform. I was working on Xbox 360 games, and that was great. I’m holding up “air quotes” because it was a great experience. [Laughter] It was kind of not great; I didn’t really love it. I have a lot of good friends in the game industry but it wasn’t really my jazz. I really found that I loved desktop development and I think that’s kind of where a lot of developers are sold. If they found desktop, whether it’s WinForms or WPF, they fell in love with it, and I loved it. I took my passion that lived in games, in making tools for making those games and I brought it to printer software. I thought that would be a good transition.

DAVID: Yeah. I can just totally see you getting passionate about printer software.

JAMES: It is, you know. I did it for four years for a very large printer company. I won’t mention any names; you can find my LinkedIn page, I’m sure. But, yeah, I loved writing this. There’s enterprise, there’s a legacy .NET 101 application that we scaled up to three-fivers. It was pretty crazy, but working for such a large company, I learnt a lot of best practices, really structuring good code, even if it’s for one application. Our applications are very large, so several solutions with several projects, and the build time was hours on it on our integration server. So you really had to learn like how do you structure databases, how you’re structuring your code and your user interfaces.

Obviously that carries over today into mobile still that point. So when you’re working on multiple projects, you stop to worry about how can I structure my code, how can I maximise the code reach across everything, so if you’re doing things in MVC or MVVM architectural pattern, it actually lends itself really nicely to these mobile platforms. I think that’s where some people struggle.

When I started, I did games, did printer software and I said, “This is it.” I went to the final PC up here in Redmond that’s where I kind of fell in love with Seattle actually—and had these Windows phone. They gave everyone Windows phones. You know, I was like, oh, I’m a C#, I’m a .NET developer; this is the first time I really felt empowered. I had such a powerful device in my hand, like I had access to the world. I can create really immersed interactive experiences with everything I already knew.

So I said, “This is what I’m going to do. You know, this is all I want to do in life. I want to create these great experiences on mobile.” So I moved my entire life. I said, “Printer software four years, stamp of approval on LinkedIn, I’m good. Let’s do something else.”

So I decided to join a startup in Seattle and they hired me based on, one, Windows phone application I built, and they said, “All right, James, you’re going to be our mobile developer.” I didn’t know what that meant but I said, “That’s what I want to do, so let’s do it.”

DAVID: “I am a good guy.”

JAMES: The guy. There were six developers. It was a hardware company really, did DVR hardware and they were really trying to move over into the mobile scene, because four years ago when I started this, mobile really wasn’t interactive at all with television, especially not DVRs at the time like it is today. So they said, “All right, James, we’re going to CES (show) —which is our huge consumer electronics show—we’re going in two months with brand new hardware and we’re going to need a brand new iOS, Android, Windows phone and Windows Store application to demo there.”

DAVID: Right, wow.

JAMES: This was the first day on the job. That’s what my boss told me.

DAVID: What year was this?

JAMES: This was four years ago, so 2011.

DAVID: Okay, all right.

JAMES: I said, “Okay.” I mean, I was ambitious. I couldn’t just say no. I moved my entire life up here; they moved me up there, you know.

DAVID: “Of course, I can do it.” [Laughs]

JAMES: “Of course, I can do it. There’s got to be a way to do it.” But I didn’t know anything about Java. Android was so really young. This was in the pre-Gingerbread days; Gingerbread just came out. I knew nothing about Objective-C or iOS at all. You know, I just made one Windows app in C#. Of course, I knew C#; I knew my backend. Java, I said, “Oh, that’s not too difficult; they just lower case some things.” I’m like, “Java, we’re okay now. In Java world, lower case and we’re on our way.” I’ve used eClips in the past; I didn’t want to leave that life at the time.

DAVID: Understandable.

JAMES: I was a visual studio guy. So I remember that the early days, when we talked about cross platform and the struggles that they will go through, there’s all these tools out there. My boss said, “We need these beautiful native applications.” I’m like, “I don’t even know what this means, native here, native that. I see all this ‘native’ on every single website.” So I spent about a week trying to understand what it meant to be a mobile developer on all these platforms, because I was the only one, I was going to build all four of these applications—design, develop, integrate, deploy, task, support—for this entire company. That was my job, and that’s kind of the world we live in with very small development teams.

So I went out and I searched all these different cross-platform tools. Of course, I just investigated: What if I go learn Objective-C in Java really quick? Like that will be just a weekend project, Objective C; that sounds great, you know. I saw all these other web technologies out there as well, and they were all spouting “native” this and that. I did a lot of “proof-of-concepts” concepts really quick. I did like the little tiny spikes to try to see what every single framework offered. It was so funny because I walked into my co-worker Orson’s office about a week and I said, “Awesome. I’m kind of worried because I don’t know there’s all these different frameworks, all of these cost a different money.” I’m like, “I didn’t even know JavaScript, I didn’t really know HTML or anything like that.” And he goes, “Have you heard of the mono project?” I shook my head yes, but inside I really had no idea what he was talking about. But he was part of the company, so I’m like I’m just agreeing with everything he says. He goes, “I think they have a product, monos, they’re Linux usually but I think they have a product for iPhone and Android.”

So I went and investigated and that’s when I found Xamarin for the very first time. I remember browsing through the website for the first time, because I said, “You know what? I need to share a code, I want to use visual studio and I want native applications.” I remember browsing through the Xamarin website and there’s visual studio, there’s C#, like all the features I know and love, and 100% native on iOS and Android, and then sharing code with Windows applications as well. So that was kind of my moment in my professional career. After downloading the tools, doing some proof-of-concepts, like I remember building my first, you know, everyone does their “hello world” button click updates. I remember just starting, like architect some code, pulling in some databases in SQL and all this little stuff that I learned from four years of printer software applying now to core concepts on these mobile devices. I’m like my mind was blown. I was like “This is it. I know exactly where I want to be and the tools I want to use.” And then I just started coding. I mean, two months, you have no time, you can’t think; you just go, go, go, go, go.

I remember my boss coming in Las Vegas to CES and we had all the devices on the tables and the new hardware and we’re doing press release interviews for people that do hands-on. I remember him looking at me and was just kind of telling me, “You really did a great job.” Then when press came in, I was the one that had to demo everything to press, like in gadget and these different press outlets. It was kind of like, oh, it’s that moment in your life where you’re like “I’ve done something brilliant.”

DAVID: That people are actually interested in.

JAMES: Yeah, people are. I made that and they’re excited about it. Four years of printer software, no one gets really excited for printer software. I mean, if you’re really into printer software, they’ll really get into you. But it was the first time when I said, “Wow, I want this now.” I remember the quote from the guys, “When can I get this?” And that kind of blew my mind. And why I love Xamarin, and I continue to develop when I joined the company, so I did that for two years and I built tons of applications for that company out here, and then I joined Xamarin.

DAVID: Well, just before you moved on to Xamarin, you looked at that stage; you had a look at things like HTML and Javascript. I guess you’re saying, you looked at PhoneGap at that stage. I remember when I first looked at those things, there wasn’t much around in terms of frameworks, like you say, ionic and things like that now. Was that like a really key thing that the user interface elements were there for you in the Xamarin platform, whereas you’d have to kind of like home-brew everything at that stage if you went JS?

JAMES: Yeah. So I think that was kind of one of my main problems. A lot of my friends in college had moved on and they were all web developers already, so I asked them for their inputs and styling and how they were doing. Some of them had used PhoneGap in the past and gave me their insights on it. I was an Android user at the time. Looking at the app and developing some of these applications, and just employing a simple ‘hello, world” application with funds, it was really immediate to me that the boot time, how fast things needed to load, and the look and feel. Just a simple button, some labels, some text and then adding some styling around it, I didn’t have to do any extra work.

That’s what I really liked about Xamarin, when I found it for the first time, was that if I needed to go see how something needed to be implemented, they had great documentation, or I could just read the Android or iOS documentation. It all still applied; granted it was in Java or Objective-C, but when you’re talking about the user interface layer, almost all of that is just designing an XML base in Android or just a storyboard or NIB file they used to be in iOS. So, that was really cool because I could take advantage immediately of all these great APIs, like animations and any of the core actual APIs of the platforms that had me excited about it.

So then going over to the POCs that I was doing on these web frameworks, I ran immediately into issues that I said, “Well, if I’m not good at CSS and I’m not good at HTML in general, there’s no way that I could ever actually stylise these applications to make them look like Android or iOS.” It’s really weird because you use a framework and you want it to create at least a native-looking application without any extra work. So if I laid down a button in Xamarin Android and a button in Xamarin iOS, it’s a button, it’s a native button, but I bet you do other work to stylise and do all this other work. You know, I didn’t have the luxury to deliver all three of these apps, all the apps at the same time, to the market.

The reason for the cross-platform was we’re a small company and everybody had different phones and everyone who used our product, our actual hardware that it was talking to, it was an application that could do remote DVR management and recording. So imagine going on your phone right now, like if you go to work and you pull up your schedules, look at everything, browse the guide and hit record, doing universal search, the whole thing. It’s a not like a lightweight application and it’s really advanced, like a grid guide on an actual device is not a simple thing. I rewrote a grid guide so many times, trust me.

But to be “performant”, I think, was really important too is taking advantage of just doing, taking advantage of the performance is really important to us because our hardware was really great. So I think that what’s good is that I could just learn, I mean, I knew all my .NET. I knew .NET, I knew how to make a SQL database, I knew how to make REST-ful service calls, I knew how to architect my code; I was just learning bits and pieces of the UI layer to put on top.

DAVID: Yeah, because you were coming from the C# background, you felt super comfortable in that, and I guess the PhoneGaps in the world are ultimately trying to serve a different developer audience which is people who are familiar with HTML and JS initially. They’re coming from that space so they’re naturally going to self-select that technology from there.

JAMES: Yeah. And I think what was really different is when I started to say, “Well, how can I get down to the native APIs? How do use the native APIs? The obviously exist on the platform and with some of the web frameworks, there are plug-in architectures that you can go and you can actually write to Java code or the Objective-C code and get down to it and abstract some things away. Then I said with Android, the API is just there, like it’s just available to me. It doesn’t look like the Java or the Objective-C API, that’s the same names but it’s all in C# syntax, so it felt natural to me to use these iOS and Android APIs.

DAVID: Right.

JAMES: And I think what’s interesting about that is I didn’t really know tons about testing on mobile at the time, four years ago, like I do today, and I will say that in that first application I wrote I was sharing 70% of my code. That was the first cross platform I’ve ever done; I didn’t know what I was doing, like I would just throwing code at it. I think what was really unique about that experience is that I learnt a lot and I re-architected a lot of code afterwards, but as I had to add new features—I was the only developer, you know—I could add the features once and then just build out a user interface here and there, or fix a bug and it just automatically scaled on all the different platforms. As a small company at the time and it had grown since then, you know, it’s really important to people to have that flexibility, just to have one guy writing all the code, one girl writing all the code, and it’ll just “going-to-town” on it. And then as you scale as applications grow and you grow your team size and then you don’t have to learn three different code base, you don’t have to have three different teams; you just have one core team really focused on the usability and the scalability of the product. I think that was really important to me.

DAVID: Nowadays you get to see a lot of different developers. What’s kind of like the best practice benchmark you want to go for in terms of shared code? Is that still around the 70% mark or is it really different? Like if it’s a product catalogue application, you might be able to get to 90%, but if it’s a really graphical video oriented type of App you are back down at 50%. What are you seeing?

JAMES: I think what we normally see is anywhere between 50 to 70%, and it really varies on the application. A great example of this is our evolved conference applications. For instance, I built our evolved conference application, I mean, two of them: the main conference application that you could browse, you know, speakers in sessions and plan things. It was all the same data, didn’t really tie too heavily. There were some custom controls and some animations that went on. But then I also built a Scavenger Hunt application that was all iBeacon-based. So I really tied in some different animation layouts and then obviously the iBeacon & bar code scanning on each specific platform. So that was a bit more platform-specific code that I was writing, so it’s tied more deeply into the platforms, compared to just displaying what’s the data and here’s the session data, this is where you need to go, here’s the map. So on the Scavenger Hunt application, I shared about, I think, 50% of code, where on the conference application, we’re using Xamarin forms as well for the UI layer but a lot of customisation done around that, I was still using about 85% shared code.

DAVID: Right. That’s really cool.

JAMES: When I talk to developers, I like to say cross platform is amazing. It’s the core of our business; it’s cross platform running C# anywhere. But to be honest, if I had to start over again, if I was just an Android developer and I was weighing between going some web route, some Java route or Xamarin route—obviously I’m a C# guy so I’m biased on that—I still think Xamarin is the best platform for just creating Android applications or iOS-specific applications. So even if I didn’t create multiple applications, not everyone, not all of our customers do. Some of them are just writing iOS applications, or some are only doing Android, or maybe two platforms and not all three. The ability to say “Well, I’m structuring this code and I have the ability to easily move to another platform if I want to” is amazing but I’m having amazing time right here using my C#, all the libraries I know and love. I think that’s also what’s unique about the platform that sometimes people forget, that it’s not always about 100% rating on all the platforms but having the ability and the flexibility to do that when you’re ready, when your company is ready to move on all those platforms. I think that’s really important.

DAVID: Right. So what does the community look like today? Is it typically agencies or is it typically environments? Let’s say a bank for example, they might have been writing in C# before. There’s a natural progression there. Are you seeing a lot of indie developers picking it up?

JAMES: I think so. You know, the customers and developers I get to talk to on a daily basis, it’s all different industries. From financial to medical to game shops to just your solo developer students, I mean, it’s all over the spectrum. I think you have tons of large .NET, C# shops that are ready to move from their desktop over to mobile and they need to mobilise, or you’re looking at maybe an airline or something like that that’s ready to mobilise all these paper over into digital scape in that aspect. These are the companies that are ready to make those moves. If they’re C# .NET and they have great libraries that are already existing, it’s an easy choice just to move right over.

I also talk to a lot of Java and Objective-C and Swift developers too. I go to different user groups. I think what’s interesting there is if you are kind of learning Swift today and you want to go to Android, C# is a really great natural progression. Same thing with Java, and when I talk to a lot of Java Android developers, they are looking to move over to iOS at some point in the future and say, “We know C# is a fantastic language, our tooling is fantastic, and you choose visual studio.” If you know Java, you’re pretty close to C-sharp. We do a lot of niceties there too. I also see some customers that might be maintaining older applications in Java or Objective-C and then trying to move more towards a C# cross-platform world.

So it’s really kind of all over the place, I think, a lot of indies coming in, which I think are fantastic. I love all of our developers, you know, no matter what they’re thinking.

DAVID: I would just want to give them a big hug. [Laughs]

JAMES: I do, I do; I really do.

DAVID: The thing with Street Hawk is we’ve kind of gone backwards and forwards in regards to who is our customer. We really rested on the sense that our customer is really the product manager or the marketer or the person who really owns the life cycle of the user. Do you find that your relationship with your customers ends with the developer, or do you believe they cross into the product managers and the marketers as well?

JAMES: A lot of people say, “Well, mobile’s next, mobile’s upcoming, you got to get ready for mobile.” No, no, no. Mobile’s been here. It’s not a new concept, you know. Your company might be moving to mobile at this point. I think there’s a lot of stakeholders, a lot of PMs, architects too. I think four years ago, five years ago, mobile was new, newer on the scene. You just had this huge rush to build an application. You weren’t really thinking about architecting code; you were just pushing out code. But things have changed, because now a lot of the large enterprises are moving over and seeing that they have to be mobilising these applications or their employees, their users, this is where they’re at on a day-to-day basis if they want to engage with them. So now it’s not only just “how does the mobile application share code” but “how does this integrate into my entire organisation”.

So it’s not even just one team of developers in these larger enterprises. It doesn’t have to be a huge enterprise too. I mean, it could be a 20-man shop, 30-man shop. How does it integrate with my backend? How does it integrate with the push notification servers? How does it share code between all the mobile platforms? What about testing? How does it deploy? How am I ensuring great quality in all these different devices that are out there? This brings in now not only development, software testing, product management and architecture, and then obviously anyone else, the big, big decision makers inside the organisation.

So you are now seeing mobile. I’m not seeing that in every company but I see more and more this global picture is how are we putting it all together and how can that be fundamental? I think Xamarin has a really unique insight into it, which is that we’re more than just the Xamarin platform; we’re also your way of testing your mobile applications with Xamarin UI test and test cloud, which is automated UI testing for all of those applications, to ensure that as your releasing and adding new features, you’re not breaking existing things in your application. And also Crashlytics and analytics as well as Xamarin insights for all of your mobile applications, you’re seeing what’s good for your users when a crash is happening. And then of course, learning as well – my goal is to make sure that no matter what, you know, I’m here for developers. If they have a question, ping me at 2 in the morning, like I’m here to answer you; to be honest with you, like I’m always around. It’s what I love doing.

We did that with Xamarin University which is our online live interactive training, where you can become a Xamarin-certified developer. It’s a really unique platform. I take the classes and I’ve never really seen quite anything like that, besides going to school, where you can sit down, you pick out your schedule and you get to go to these classes and interact and ask questions and raise hands, all in a virtual space around your time, which is really unique. So if you have questions or you’re learning all these new topics, because mobile now is not just a mobile phone, you know, it’s TVs, it’s watches.

DAVID: Totally.

JAMES: I’m programming a Netduino robot all in C# and they’re connecting you to mobile devices. It’s a presentation I’m giving next week. It’s this whole world of connected code. It’s really cool.

DAVID: Yeah. And that’s only going to get bigger and bigger. I think people who are still thinking that they need to do web first is really a delusion that’s going to run out very, very soon. I think you implied that too when you said like an airline company that’s rolling out applications internally are automating a lot of paper, but they’re doing it for mobile rather than doing it for a web-first type approach.

JAMES: Exactly. You know, my sister’s a nurse and I’ve seen more and more in the medical industry, they have these laptop cards. You know, they’re rolling on these laptop cards and they always have to be connected or they have to plug something in or, you know, it’s these big, old, clunky laptops. I’m like, “This is the health profession. They got to move faster.” And now it’s not laptops; it’s a connected iPad on a dock with a keyboard that’s always connected with cellular or Wi-Fi or somewhere on the network and it’s just plugged into a power supply. They can now take it, de-launch it, and it’s very lightweight. It’s not getting in their way. They’re flipping through records and they have access to all this information immediately.

DAVID: Yeah.

JAMES: I think it’s really cool. It’s shifting not just how we are on a day-to-day basis, walking around or driving around, but it’s impacting all these other professions and making life better. I think we’re just even at the beginning of that, especially with all the new health kit and all these other new medical stuff that Apple and Google are really getting into. I think it’s just very exciting.

DAVID: Yeah. In fact, three or four episodes of these podcasts, I did talk with a guy called Roger Killen in the UK. They did iPods, iPhones and iPads in the health system, and now the health system is actually taking the data that’s coming out of their stuff as best practice because they’ve been able to reduce infection rates quite radically. So that’s a really interesting example of how technology does really improve the efficiencies of the whole process and save lives along the way.

JAMES: This is really something, as a developer, I don’t think like I could ask for the opportunity like this anymore, an opportunity that actually impact lives, change lives. I mean, it’s a golden opportunity I think developers have been, you know, always what we want to do is we want to help, we want to solve problems. That’s why I became a developer; I want to solve problems. There’s lots out there and now we have the tools more now than ever to actually solve them.

DAVID: Yeah. I think most people don’t realise that this revolution is far bigger than the creation of the desktop revolution. You know, MS-dot was really interesting but this is a profound change to people’s lives.

JAMES: Absolutely.

DAVID: All right. So the format of the podcast is we talk about an “aha” moment in terms of wins and fails. I think you’ve spoken there about wins to do with the benefits that you get in terms of code sharing and the speed to market that people can do and stuff. Is there a fail that you want to share with us somewhere along your way?

JAMES: I would say my largest fail that I have ever had—and this is as a developer—in general, we all go through cycles of late nights of coding, probably not doing the correct or much unit testing as we should be doing.

DAVID: Really?

JAMES: And, you know, not enough to limit testing. When you’re one developer doing all of these, as I was when I started my mobile career at this small startup, there wasn’t actually a lot of leeway for failure, you couldn’t fail, because I’m the one developer, there’s the one person to point a finger at. So were shipping our application and updating and rolling out and getting immediate feedback from users. We did a beta cycle and things like this to really get feedback. I remember rolling out an update for iOS, where I was refactoring a lot of code and I was changing a lot of the user settings, and I was changing things around and was adding new settings or moving settings. I remember that I tested fresh “installs”, so this is like my normal testing. I go and I deploy, I deploy on test, I had my package, I’m going to deploy to the App Store, I’m going to upload it, I’m going to test it all locally first before I do that.

I remember that in this release, everything worked fine. If you’re a brand new user, you went to the store and downloaded the application for the first time. But I remember walking in—our app had been deployed successfully to the App Store—and not that day but about 24-48 hours later, I started getting all these notifications in my inbox. Some of them were pretty mean.

DAVID: crashing?…..[Laughter]

JAMES: But it was this crash, this crash, and it was on load of the application. Like you couldn’t get into the application; it just crashed on startup. What I did is I wrote some bad code. When I removed some settings, I didn’t realise that I must have been accessing it from somewhere else or doing something, and that’s kind of six to eight years ago now. But whatever I did, it just threw in all exemption, didn’t catch it and it just crashed my entire application, because I didn’t test the upgrade scenario. What happened is best setting already existed on the platform and a new install was totally fine.

Through that process, I learnt the rush review process that Apple has. I was able to actually figure out how do I properly test upgrade scenarios, how do I test ensuring this? I remember almost doing it again on Windows phone like three months later. But I’ve put this process in order now of here’s how I test before every single release, not only this process but I’m going to test this many version back and see where my users are at, using analytics and user statistics that I was gaining from the applications.

But I remember walking into my boss’ office and telling him, I said, “Jeremy, I just broke everybody’s app.” [Laughter] He’s like “What do you mean?” I said, “I broke them all, like nothing works.” I mean, I almost broke down; I remember that. But he’s like, “Can you fix it?” That was his thing, like “can you fix it?” I’m like, “I already did.” So he said, “What’s the problem?” I said, “I don’t know. I was going to take a day.” He’s like, “I guess I will have to wait a day.” I mean, you know, it’s nice to be able to work for a company that there was understanding like that, but the biggest thing is “Can you fix it?” Yeah, I can fix it.

DAVID: Yeah. Most entrepreneurs just get used to fighting fights every day and figuring out how to move forward. Having the resilience is the key thing in startups.

JAMES: I remember I’ve seen that also from time to time. You know, application development is moving so rapidly that you really have to put your testing in order. I’m so glad that I learnt this, three and a half years ago now at this point. But that was my biggest failure. I haven’t let it happen since then. I go through a very rigorous alpha testing before releasing and doing upgrades scenario testing, and it’s been a lifesaver, trust me.

DAVID: Yeah. It hurt enough to be remembered.

JAMES: Yeah, I so remember it. Every time I go publish an app, I remember that moment.

DAVID: Yeah, I think a lot of things that happen with startups, for example, is that you can read a lot of stuff on the web and listen to podcasts and stuff like that, but until you actually internalise that experience yourself, it’s sometimes unavoidable you’re going to make that mistake anyway.

JAMES: Absolutely. I mean, it’s just software; it happens. You can always try to do your due diligence. It’s not an excuse. Just use it as a learning tool.

DAVID: Right. So what’s next for Xamarin? Is there anything new you got coming in the pipeline that you want to let people know about?

JAMES: Well, we have some very exciting advancements in multi layers, especially Xamarin forms. The Xamarin forms are cross-platform UI layer, which sits on top of all that shared codes. You share more code. It’s really great for like forms over data type applications, and CRUD operations; it’s not for every application to use and take advantage of all the fanciest widgets and animations and things like that. We have good guides on it. We just released some really great support for a lot of new native features, like pull the refresh, and it’s all XAML-based, so XAML behaviours and triggers, and really some more IntelliSense features. We’re really enhancing to try to make the development experience even better.

DAVID: Oh, very good.

JAMES: And there’s tons of other stuff. We just announced some great things for students that they can get visual studio, now support included for free. So Xamarin’s free for students. That’s really exciting to me to really see the next generation of developers coming up using C# and the tools to put out great apps. That’s the future.

DAVID: All right, that’s great. Well, thank you, James. I really appreciate your time.

JAMES: Absolutely. Thank you so much for having me.

DAVID: Thank you, mate. Take care.

JAMES: Thanks. Cheers.

DAVID: Cheers.

  Get our Referral Program Guide