GOTO - Today, Tomorrow and the Future

Expert Talk: Native vs Cross-Platform • Sebastiano Poggi & Carl-Gustaf Harroch

July 01, 2022 Sebastiano Poggi, Carl-Gustaf Harroch & GOTO Season 2 Episode 25
GOTO - Today, Tomorrow and the Future
Expert Talk: Native vs Cross-Platform • Sebastiano Poggi & Carl-Gustaf Harroch
Show Notes Transcript Chapter Markers

This interview was recorded for GOTO Unscripted at CodeNode in London.
gotopia.tech

Read the full transcription of this interview here

Sebastiano Poggi - Team Lead at Jetbrains
Carl-Gustaf Harroch -  Founder/Managing Director at Novoda

DESCRIPTION
Lately mobile developers have had to answer this question the most: Shall we go native or use a cross-platform framework? And if so, which one?
Sebastiano Poggi, team lead at Jetbrains, and Carl-Gustaf Harroch, founder/managing director at Novoda, explore current best practices around modern mobile development highlighting the impact of team collaboration and matching technologies across platforms.

RECOMMENDED BOOKS
Bailey, Biessek & Wills • Flutter for Beginners
Simone Alessandria & Brian Kayfitz • Flutter Cookbook
John Bach • Xamarin: The Ultimate Beginner's Guide
Nader Dabit • React Native in Action
Adam Boduch & Roy Derks • React and React Native
Robert Nagy • Simplifying Application Development with Kotlin Multiplatform Mobile

Twitter
LinkedIn
Facebook

Looking for a unique learning experience?
Attend the next GOTO conference near you! Get your ticket at gotopia.tech

SUBSCRIBE TO OUR YOUTUBE CHANNEL - new videos posted almost daily.

Twitter
Instagram
LinkedIn
Facebook

Looking for a unique learning experience?
Attend the next GOTO conference near you! Get your ticket: gotopia.tech

SUBSCRIBE TO OUR YOUTUBE CHANNEL - new videos posted daily!

00:00:04:16 - 00:00:44:23
Intro
Welcome to the GOTO Podcast. Each episode covers the brightest and boldest ideas from the world's leading experts in software development. Tune in for practical lessons, compelling theories and plenty of inspiration. GOTO gathers the brightest minds in the software community to help developers tackle projects today, plan for tomorrow, and create a better future. Stay up to date with the latest in tech through GOTO's top rated events held online and in-person in cities like Amsterdam, London, Copenhagen and Chicago and by subscribing to the GOTO Conferences YouTube channel where you can find thousands more high quality dev talks.

00:00:45:12 - 00:00:52:05
Intro
Learn more at gotopia.tech.

00:00:52:05 - 00:01:00:15
Carl Harroch
So hello. I'm Carl Harroch. I'm the managing director of a digital product agency called Novoda and I'm here with Seb.

00:01:01:08 - 00:01:10:20
Sebastiano Poggi
Hi, Carl. I am a team lead on packet search at the JetBrains. It's one of the many things you can find in IntelliJ, which is your favorite, I think.

00:01:11:16 - 00:01:30:08
Carl Harroch
Yes. Welcome to GOTO Unscripted. So I think the topic of today and we're going to go with with your your talk, which is around native versus cross-platform. Yes. So tell me said, should I go native or should I go cross-platform?

00:01:31:04 - 00:01:59:17
Sebastiano Poggi
We rehearsed there. It depends. That's the keyword. I like jokes aside, I think there's a lot of factors to take into consideration with when making that choice. There's also a lot of wrong reasons to make that choice. Not just saying there's wrong reasons to choose one or the other. There's even like getting to the point of asking yourself, should I do one or the other?

00:02:00:00 - 00:02:28:03
Sebastiano Poggi
If you already have a product, then there might be reasons where you're asking yourself that because you've you feel like you're in a bad position and you need to to dig yourself out of a hole, maybe. And you're like, okay, well, maybe the next cross-platform framework is going to solve all our problems. And generally, technology cannot fix that kind of problems.

00:02:29:07 - 00:03:13:17
Sebastiano Poggi
But if that's not your situation, if you're in the case where you have a solid or a good product that you want to develop a mobile app for, then the choice between native and cross-platform might depend on a number of factors that are, for example, your own company's needs. So your product needs is the first thing. If you need to use some things that are very much tied to the platform you're on, then probably doing cross-platform, for example, doesn't make that much sense because you will end up spending a lot of time talking directly with the underlying operating system, and you need to do it per platform.

00:03:13:17 - 00:03:37:14
Sebastiano Poggi
So you still need people to do Android and you still need people to do us. You kind of need in general. But the more you have to talk with native stuff, the more native people you need. And you cannot get away with having a team that can juggle both platforms at the same time. You might find someone that is able to do both Android and iOS at a high level, but that's fairly rare.

00:03:38:21 - 00:04:11:02
Sebastiano Poggi
Another thing that might guide your choice is the fact that maybe you already have some certain capabilities in your company. I know that's a word you like a lot. If you're if your company already has a native team and you're thinking, maybe I want to switch, for example, to, I don't know, flutter or react native or Xamarin or any of the web based frameworks or Kotlin native, whatever you want.

00:04:11:10 - 00:04:44:01
Sebastiano Poggi
It doesn't matter. The point is, if you already have a team and you go to them without telling them, without talking to them, you are probably going to find out that the the people you already have will not want to do work with the cross platform framework. And that might be problematic because it might lead to a lot of people in the team leaving and then you being on a deadline, stranded in a time where you're making a very big investment to maybe rewrite your application.

00:04:44:13 - 00:04:48:09
Sebastiano Poggi
And that also is probably something you should try to avoid.

00:04:49:02 - 00:05:22:20
Carl Harroch
Yes, definitely. I mean, you touch on like organization structure and like like how you organization behave and and also like the bad choice of sort of going with with, let's say, trust, but even asking yourself the question if if the organization is not set up to even pose that question, can you. Do you have any example of of of a organization that there's dysfunction in that area in which which like they come to, like, okay, is this like, I'm not working out why this is not working?

00:05:22:21 - 00:05:29:20
Carl Harroch
Yeah. And then they say, let's, let's figure out this cross function as a trust platform, as a solution. Can you maybe elaborate on some of those dysfunctions?

00:05:30:01 - 00:06:20:06
Sebastiano Poggi
So there are different factors that can lead to mobile product failing. One of them can be a, like I would say, organizationally speaking, a management problem in the sense that you might have the the entirety of your company's technology stack that lives obviously under a CTO and it's considered tech, but for some reason your company might be considering mobile as part of product and for as good as product people can be and probably are, they are not tech people and they don't necessarily understand the what is needed for a mobile product or generally speaking, a text product to to thrive.

00:06:20:18 - 00:06:51:15
Sebastiano Poggi
And on top of that, that can also compound with the fact that there can be tribalism between the people that are working on the tech side of things and the people that are working on the mobile slash product side of things, because then they're not aligned. They don't have necessarily the same priorities. And like the if, for example, the CTO and the CTO come to talk to each other like, Oh, the CPO says, I need to do an app, I need an app because product needs an app.

00:06:52:14 - 00:07:47:09
Sebastiano Poggi
And the city is like, Well, fine, we're going to have the back end people do something for for your mobile team. But then the incentives are not necessarily aligned and the backend team that creates the APIs that the mobile application will end up using, they might not care. They might have other priorities. They might use a technology stack or even just a way of doing things that doesn't work well with the mobile applications because the historically speaking backend development is has been and still is probably closer to web than it is mobile and web compared to mobile is a relatively straightforward thing in the sense that mobile in fact can include a variety of things.

00:07:47:10 - 00:08:18:04
Sebastiano Poggi
That is not just the phone you have in your pocket. Uh, but there's tablets, there's TVs, there's wearables, there's cars. So when it comes to the needs of of the mobile team, they might be different, even just between different form factors because the ways people use a smartwatch are different from the ways people use TV and they're different from the ways people use a car.

00:08:18:04 - 00:08:41:23
Sebastiano Poggi
And even like one thing that happens often is that maybe back then people don't think in terms of offline, which is very important for mobile because mobile while you go into tube and you don't have you don't have coverage, so what do you do? Um, and there's a lot of work that happens on the mobile side to compensate for that.

00:08:41:23 - 00:09:13:09
Sebastiano Poggi
But you might also, as a mobile team, have to work around the fact that the server assumes in one way or another that there are always connected because, well, the web is by definition almost always online. And sure, you can have offline behaviors that are possible on the web as well, but are fairly marginal. And there's not that many cases in which that is relevant because it's you either have the connection and connect to the Internet and surf the web or you don't.

00:09:13:19 - 00:09:47:22
Carl Harroch
So I've seen that actually quite, quite frequently and like the way that I like to think about it, especially when you have a browsing experience, is a very active experience because you open the browser and you have the intention of doing something like checking your bank account or something of that sort. And so it's a kind of active real time experience, including for the backend, because who gets the request and then says in fact the web while on mobile can look at it more passive and event because it can be location based, it can be the set and time of the day.

00:09:47:24 - 00:10:09:05
Carl Harroch
Somebody sends you money, then you send an event and you receive it. And so the API of the way to describe the API or to construct the API is tends to be fairly different if you start from web, if you start from mobile. Have you experienced like like and on your point where you say backend is more aligned to web?

00:10:09:10 - 00:10:29:19
Carl Harroch
I think there's also a technology component there because when you say full stack, you tend to have like okay, the cloud abilities infra and so forth and then JavaScript and then potentially JavaScript, web react and similar and so full stack. It's kind of like not including mobile. Yeah. And then within.

00:10:29:22 - 00:10:52:23
Sebastiano Poggi
Mobile is a frontend, but it's not the frontend for the backend. It's a, it's a frontend that happens because in 2022 there are cases in which you don't need a mobile app, but everyone and their dog has a mobile app these days. So it is kind of like it, it exists is, it's a thing you need to consider.

00:10:54:16 - 00:11:29:09
Sebastiano Poggi
But in terms of when I was mentioning that the backend might not think in terms of the needs of a mobile app, something that a mobile app does that websites never do is being proactive. So a mobile app and I think you will have remember a project that you worked on where there was this newspaper that wanted to get everyone the latest news when they were released and the back end was like, well, here is the whole thing.

00:11:30:15 - 00:12:13:09
Sebastiano Poggi
But then the company couldn't just deliver that too to the mobile device because it wasn't prepared in a way that made sense for the device. So what ended up happening was that there needed to be a middleware backend that got the bunch of things, retranslated them in a way that was mobile friendly and then staggered. Pushing that notification of the new stuff is ready to all the devices, but trying to avoid congestions because then again, obviously if you send a push notification to everyone at the same time, your backend is going to go down because you are well assuming you have a popular service, but in that case it was so like that, that sort

00:12:13:09 - 00:12:28:00
Sebastiano Poggi
of thing is the stuff that if you don't know mobile, if you don't think about mobile as having its own needs is very hard to me is very hard to to consider is very easy to miss. And then you find yourself in the situation where like, oops.

00:12:29:01 - 00:12:51:00
Carl Harroch
I remember yeah, I remember that particularly we started first building, so there was something like 150 API calls to get like one edition and we started doing that first on on mobile too. We are like this kind of like component was like, this is ridiculous. It should really be pushed somewhere else. And then we created this proxy, but it felt like the backend was invented.

00:12:51:06 - 00:13:21:21
Carl Harroch
Then it kind of like was where space is not invented and then we kind of made it invent it again. So we had this kind of layer to make it more mobile friendly. And so in this picture, how can you alleviate that? So like what's what have you seen like from a organizational structure perspective in which mobile is accounted for either beforehand or at the same time or during the like description of the APIs?

00:13:22:03 - 00:13:26:10
Carl Harroch
Or is there technology that you've seen that works better than that in achieving this?

00:13:27:09 - 00:13:56:07
Sebastiano Poggi
In terms of technology, it's hard to say because like everything and I go back to my favorite answer, it depends on what the company is doing. And some teams have had a lot of luck using GraphQL. That worked very well for them because it allows them to be more flexible on the client side and just also reduce the amount of traffic that the application needs to do in order to get the data that it needs.

00:13:57:01 - 00:14:23:22
Sebastiano Poggi
But on the same at the same time, that might just move the complexity to the back end side, which might not be ready to tackle, to tackle that and to work on it in an effective manner. So that's one way. But also you can probably do with just fine with it with the rest API as long as what you're doing.

00:14:23:22 - 00:14:54:24
Sebastiano Poggi
Like if you have I'm thinking about like a store, you have an app that allows you to buy things. You can probably be fine with rest APIs for most of the stuff you do, but maybe other scenarios would work better with with a graphical API and I don't think it's necessarily a technical like again, I don't think the tech you choose, I don't think even by itself will make something work.

00:14:55:02 - 00:15:19:15
Sebastiano Poggi
It might make your life easier to make your life harder. I've worked plenty of times with on on application that we're talking to back ends that were almost hostile to the way mobile works. But then the app still at the end of the day worth it, which is a lot more work to do on the mobile side to compensate for the fact that the back end was doing things in their own way.

00:15:19:15 - 00:15:53:06
Sebastiano Poggi
And I'm sure they had reasons for because for them that made sense. But obviously it made life of the mobile team harder. What I think is very important is to to design these things together and to account for the fact that when when you want to do mobile, mobile will probably have different needs than web. And then you will need to involve someone from the mobile team from the start, from the moment you decide you're going to you're going to do a mobile app regardless of native, regardless of cross-platform or anything else.

00:15:53:18 - 00:16:24:24
Sebastiano Poggi
You you need to talk, you need to put everyone together and decide and design everything and decide what they want to do. But also they're like, there needs to be buy in from everyone. It cannot be like, Oh, we want to do this, so you have to help us. And then like we already have a backlog full of stuff to do because that's going to be you're going to have stuff that is half baked or just you get whatever is there because that's what we can do and we can barely support mobile.

00:16:25:05 - 00:16:49:18
Carl Harroch
I've seen, I think like ten, 15 years of us working with different clients. We've seen a lot of that where there is things so a flow and if this is that come in today but like back in the day it was okay yet you have people sitting in the room including sometimes mobile discussing the next big release for like six months or 12 months.

00:16:49:18 - 00:17:10:01
Carl Harroch
And they say, okay, we're going to do this new search API. And then they go off and they create the search API. They come back six months later and then then the mobile team were like, well, we haven't really I know we were part of the conversation, but it was six months ago and actually we need this like this now you put it back in the backlog and there's another six months before you receive.

00:17:10:01 - 00:17:26:07
Carl Harroch
So yeah, it's kind of like attendance of putting things. And he said his backlog was a certain amount of time before releasing, which is way too slow in the pace of current market. So have you seen other setup that works better?

00:17:26:07 - 00:17:57:19
Sebastiano Poggi
I've seen companies succeed with vertical teams where there is no one back team, but there is a slice of vertical slides that goes from back end to all the front end that includes web and mobile. And then they work in a very close relationship in a very tight loop so that there isn't the risk that you just outlined of of saying, oh, actually the spec we discussed six months ago doesn't work.

00:17:58:17 - 00:18:20:14
Sebastiano Poggi
We just realize after implementing some other things that that doesn't that doesn't work for us. Like everything, if you if you commit to something that is medium or long term, it's essential that you keep up with the rest of the parties. And this is not just, oh, yeah, we're done close everything in a sealed envelope and then come back with, Oh, this is what you order.

00:18:20:15 - 00:18:52:08
Sebastiano Poggi
There you go. You and that's something that happens, unfortunately, very often where different teams are disconnected again, even even in the case where they are under the same responsibility chain, they might just have like a cold relationship, let's put it that way. And there might be several reasons for that, and I've seen several ways in which this can happen sometimes.

00:18:52:08 - 00:19:20:07
Sebastiano Poggi
Is ego, sometimes is a lack of understanding from like lack of empathy, even between the different teams where you have this. This tends to happen, especially when there is strict deadlines that the teams have to meet and they're not aligned. So if one team starts to say, Oh yeah, but they're always demanding, but why can't they just use whatever we gave them already?

00:19:20:16 - 00:19:48:20
Sebastiano Poggi
And the other way around as mobile team is like back in team, they don't want to do anything for us, they just care about their own stuff. And then this builds up over time to the point where it's really just like us versus them was very tribal again, which can so it can cause all sorts of problems. And I don't really a silver bullet or recipe for success for that except keep an eye make sure people to look at them.

00:19:49:08 - 00:20:18:04
Carl Harroch
And you think like so at this point on the tribal ness are like like okay you know back in front and have you see or do you believe that maybe that's why some engineer had the engineer CTO think like well look, you know, like back in his writing in JavaScript and like maybe if we say react native with his JavaScript in the front end or dot net in the back end, so that can get in the front end.

00:20:18:04 - 00:20:24:01
Carl Harroch
And so they won't fight each other because they speak the same language. You see some of that thinking going on.

00:20:25:13 - 00:20:57:18
Sebastiano Poggi
I surely see especially this happening after a previous iteration of mobile failed, there were like, Oh yeah, you know, with that we, we had that, we tried that. It didn't work. But look at the back end. They're always on time, they're always shipping, they use JavaScript. Maybe this JavaScript thing works for mobile as well. It's let's use react native and then you go to mobile to your mobile team and you tell them, Oh, you know, from tomorrow you start doing React Native and then the old quit because mobile devs hate JavaScript and.

00:20:58:19 - 00:21:01:05
Carl Harroch
I, I'm sure that all of us know.

00:21:01:17 - 00:21:25:15
Sebastiano Poggi
It's a generalization obviously, but in terms of preferences, I'm sure people that are have been hired to do native dev, they probably prefer to do native dev and these days it's not hard to find a different job if you are tired of what you're doing. So just saying, think about that and get involved. The people talk to them and they might actually be on board with that.

00:21:25:15 - 00:21:44:14
Sebastiano Poggi
But you need to talk to them. If you impose things on people, they're not going to like it most likely. So talking to them and also consider the fact that if you have native teams and you go to them and be like from next month, we do cross-platform, half of them are going to be well, all of them are going to be like, Well, you only need half of them.

00:21:44:14 - 00:21:58:20
Sebastiano Poggi
Most of us then and then what happens next month and I might even board is like, should I look for a new job? And then you you risk again finding yourself without a team to work on that which.

00:21:59:11 - 00:22:17:07
Carl Harroch
Yeah. Okay. So this challenge is there between let's say back in, in front and like back for the mobile like I said, we should go and move to this cross function team and just remove the idea of backend and frontend and just have one big family doing things together.

00:22:17:07 - 00:22:18:18
Sebastiano Poggi
But that doesn't work for everyone.

00:22:18:21 - 00:22:57:10
Carl Harroch
Does it work for whether even when you think it's going to work, it doesn't really work. I mean, like but I've seen is intention being good especially in kind of the scale of some type like try to behave in a certain way and so like microservices and and they create the structure with all the capabilities in this cross-functional team and you just start with good spirit, but over time you then have, I don't know, the storefront team or the profile team and then suddenly you start having and then the mobile team, which is weird because you're like one which is a product directed at kind of like business intention that is described in the teams.

00:22:57:10 - 00:23:02:19
Carl Harroch
Yeah. And then mobile, which is kind of a platform and then on the side a bit like a.

00:23:03:03 - 00:23:05:05
Sebastiano Poggi
Black dog getting the crumbs from every.

00:23:05:10 - 00:23:24:18
Carl Harroch
We know where to put them. And if we have like one engine, their needs is a bit strange and, but that's better than, than what you describe, which is like fighting and yeah. But let's maybe take it down a notch. What if we, if we remove the back end and just focus on the front end between, say, iOS and Android?

00:23:24:18 - 00:23:56:13
Carl Harroch
I mean, putting aside Web for now, even between those two platform, this seems to be a bit of a yeah. Is it enough differences to validate native development? Like, is that like the experience that a person, a developer experience also from the consumer experience is quite similar. Yeah. So why why are the team or have you seen to need the question is like have you seen teams working together between the two platform?

00:23:56:22 - 00:23:57:20
Carl Harroch
What's your experience.

00:23:57:20 - 00:24:28:11
Sebastiano Poggi
There? I have seen teams working together in harmony between Android and iOS. Sometime. That was because common enemy the back end, but it's not a healthy way to do that. But I've also seen teams working together in sort of a friendly competition where, you know, one of the teams get a head on on the backlog and then the other team is like, oh, it's not possible.

00:24:28:11 - 00:24:56:22
Sebastiano Poggi
They kind of do better than we do. And then they catch up and maybe they pass them so you can and at the end of the day, you should be able to to work in a constructive manner between the Android and iOS teams. And I think that's especially important to have these people work together, like force them to have reasons to work together on stuff that goes from defining the tickets and plan the issues together.

00:24:57:24 - 00:25:15:21
Sebastiano Poggi
I mean, there is it's inevitable that some things are going to be easier on Android and some things are going to be easier on iOS. So they're they might not always be aligned, but in a longer cycle than than a sprint, you probably want to make sure that they're focused on the same things and have the same goals.

00:25:16:08 - 00:25:42:08
Sebastiano Poggi
Um, this can be complicated when you consider products that tend to come to, to bring in revenue and then their performance is gorged on the revenue that each platform brings in because depending on the business model, are you a steam, they can do half of the work that Android team does and bring in three times as much revenue because iOS users tend to be bigger spenders.

00:25:42:21 - 00:26:06:11
Sebastiano Poggi
So if you are if you have a subscription model, for example, then it might be easier for us to acquire and retain users paid users than it is on, on, on Android. So when you decide the success metrics for, for the different platforms, you need to understand that the, the audience might be different and it's not always the case.

00:26:06:11 - 00:26:41:19
Sebastiano Poggi
Obviously, everything that's always there is it's a generalization and there are probably examples of cases where it's the other way around. But if, if you're only metric is how much revenue a team is bringing in, the Android team is most likely going to always be behind unless you have a very wide base of users and then what you are monetizing this is something we tend to see a lot in the in the mobile market where a company that maybe has a subscription model on iOS tends to do more.

00:26:42:00 - 00:26:49:19
Sebastiano Poggi
The freemium thing on Android because that's that's how the audience that they're targeting on Android works.

00:26:50:13 - 00:26:53:19
Carl Harroch
So be like kind of understand your target audience because yeah.

00:26:54:01 - 00:27:31:15
Sebastiano Poggi
Understand the, the target audience. But going back to the, to the original, original question about making did the mobile team works to get the mobile teams work together? That's possible. And I've worked with brilliant salespeople in the past as I in my previous life as an Android developer. And I think it really comes down to the point where as an engineer on either platform, you go past being a fanboy of the platform and understand that everyone is doing their best with what they have.

00:27:32:04 - 00:27:41:06
Sebastiano Poggi
And yeah, there is there is no best. Like it's something that when you, when you get to some very old, when you're young.

00:27:41:22 - 00:27:42:24
Carl Harroch
You're younger than me.

00:27:42:24 - 00:28:13:13
Sebastiano Poggi
So yeah. So when you start your career, especially in mobile, there's a lot of of people that are like, oh, you know, Android is the best or iOS is the best. And you get to a point where you realize that that's not true. Like there's different people will like different things and, and iOS will work better for other, for, for people that are probably not you, but their point of view is just as good as yours.

00:28:13:13 - 00:28:27:24
Sebastiano Poggi
And not like making it so that nobody's Nike Nokia the others for your for you're using for being in a different camp. Let's say is is very important.

00:28:27:24 - 00:28:50:00
Carl Harroch
And when they remember someone that they're like, who's been with us for you and the older person yet like they say was like, listen to the old man every time I wanted to make a point similar kind of like you can go and discuss your complexity and like the latest technologies is you can sometimes simplicity or proven ways of doing something is better.

00:28:51:09 - 00:29:17:10
Carl Harroch
But like I just like from a curiosity perspective they have like so you mentioned you shouldn't measure revenue as a product driven. Do you have a do you have like a way to measure that harmony? I mean, like if you want to if you're a, I don't know, like a head of Mobile, a CTO looking at your mobile team, anyone, you know, whether we want to have better collaboration, then what should you measure?

00:29:17:13 - 00:29:20:06
Carl Harroch
How how would you how would you go about doing that.

00:29:20:21 - 00:29:22:22
Sebastiano Poggi
I heard are tournaments are really good for that.

00:29:23:23 - 00:29:25:10
Intro
Yeah.

00:29:25:10 - 00:29:26:14
Carl Harroch
Because in the competition.

00:29:27:03 - 00:30:00:02
Sebastiano Poggi
Yeah. But it's a friendly competition you know jokes aside. Well not joke it's actually that's true. It's like making things that people enjoy doing together helps, but uh, fostering collaboration between the two teams. I think over time when it was in the way that we tried things like on some projects, having Android people doing code reviews of iOS stuff, especially once Katrina and Swift were adopted in both teams.

00:30:00:02 - 00:30:05:06
Sebastiano Poggi
So the languages are close and we can understand each other better. That's definitely something.

00:30:05:23 - 00:30:30:10
Carl Harroch
I remember that there were like cutting and swift. This is like 80% the same syntax, you know. And so I find it fascinating when you hit code bases that are written in Swift and in Kotlin and even the models have different names like I tend to one to and the other one is cause you just like that does not make sense in terms of of obviously conversation had not happened.

00:30:30:10 - 00:30:32:00
Carl Harroch
And so they've done it differently and different.

00:30:32:05 - 00:30:56:10
Sebastiano Poggi
But we I can remember at least one of the projects where we were doing the cross review. One of the things that we were explicitly looking for was this kind of discrepancies where I mean, trying to be aligned in the things that the two teams are doing, allow people that are doing the code reviews across platforms to say, Oh, we already done that and we call that that way.

00:30:57:01 - 00:31:20:20
Sebastiano Poggi
So maybe the like the structure of the code might be different, but the name, unless you're using a completely different pattern in different devices, which might make sense, but the name of the data models is the obvious thing where you need a shared language between the teams and also that helps when it comes to talking with the back end.

00:31:20:20 - 00:31:49:11
Sebastiano Poggi
If you can have a shared language with them as well, that also helps. But also product management and project management, especially when you write issues and stories and your your brainstorming, the the personas and the scenarios that you want to cover. Having a shared language is very important because otherwise you're not like, oh, for us as the car and all to say, oh yeah, for us auto is one thing and car is another.

00:31:49:11 - 00:32:08:16
Sebastiano Poggi
And there are slightly different things. And one is the serialized version and the other one is the one we get from The Wire. Like that sort of thing is, is important to to care for like explicitly consider one once you start working on things, if the other platform has already done that to make sure that you're on the same page.

00:32:08:16 - 00:32:26:18
Sebastiano Poggi
And maybe it doesn't mean that the first platform that gets there is the one that is right. It means that once the other platform catches up, if they're not aligned, then it's a good time to have a discussion and consider whether either solution is better or if they're equivalent, which is also absolutely fine.

00:32:27:15 - 00:32:48:06
Carl Harroch
So it is like you mentioned as part of your description, they said cross-platform. I feel like a cross-platform thinking with that what you mentioned there that that the merging or like would they kind of like look at each other pull request. So you think that this type of like development is cross-platform development because you look at, you know, you're you're going across a different platform as a developer.

00:32:48:06 - 00:33:17:14
Sebastiano Poggi
I mean, cross-platform is is a is a term that means many things depending on how you look at it. When we're talking about cross-platform frameworks, specifically in terms of tech, we're looking at a single team that can target both platforms Android and iOS and especially distinctive, I think, is the fact that they can target both platforms using a single language and mostly the same build tools.

00:33:18:02 - 00:33:42:17
Sebastiano Poggi
There are exceptions, of course, because at the end of the day you need to deliver an epic on Android and an IPA on iPhone. So the last mile, let's say, of the building process is still handled by the Native Tools, but the majority of the chain above might be handled by the same, will generally be handled by the same build chain on for both platforms and just diverge at the last minute when it comes to packaging the final application.

00:33:43:02 - 00:34:22:02
Sebastiano Poggi
So that's one way of saying cross-platform, but then again, when you're talking about mobile, it's very rare that you want to target on the iOS or Android that there are niche things for which it only makes sense to target iPhone or Android. And there are some product categories that historically have only targeted or mostly targeted iOS. So creative software and things like that, where historically speaking, Android has been behind both in terms of the ability to handle media, but also I'm thinking about music creation.

00:34:22:02 - 00:34:58:22
Sebastiano Poggi
For example, historically speaking, Android until a few years back, had the serious latency problems that made it essentially impossible to create virtual instruments because the lag between your touch on the screen or your your input and the moment where the input was processed and the output came out was way too long and it was not a problem when I was so those sort of things can mean that, sure, your product doesn't need or cannot have an Android or iOS app, but generally speaking, if you do mobile, you probably want to target the widest audience possible.

00:34:58:22 - 00:35:00:24
Sebastiano Poggi
And that means both Android and iOS.

00:35:01:10 - 00:35:34:17
Carl Harroch
And so you you obviously describe base, I mean, especially software as a music production and similar like instruments which I think you would go down the route of doing it natively. If not, yeah, yeah, yeah. Don't do that. They're going to compete at the side. Have you seen an example, let's say, in which the like the use of cross-platform was like a roaring success, not just say, okay, it was good, but like this was actually transformational to the business.

00:35:34:17 - 00:36:01:12
Sebastiano Poggi
I definitely have seen products succeed with cross-platform in the sense that you don't have to think that cross-platform is like doing cross-platform is not necessarily a hindrance to your success. And in fact, there are cases where doing a cross-platform app is perfectly fine because you don't need anything more than what the cross-platform framework gives you out of the box.

00:36:01:21 - 00:36:31:02
Sebastiano Poggi
The problem with cross-platform frameworks can arise when you when you need to get out of the the I'm not going to call it walled garden because it's not, but outside of the comfort zone of the stock you use, say for example, you use flutter and all your code is written in dart and maybe or like you probably had to create a team to write Flutter because it's rare that a company already has DART teams before starting to do flutter.

00:36:31:02 - 00:36:56:00
Sebastiano Poggi
But you do, you do the investment, but then you need to interact with, say, a third party library, classic example, an analytics library that you must use because your business depends on it, but they don't ship you flutter library, they only ship you the native version. So you need to write the wrapper around the native stuff in native.

00:36:56:00 - 00:37:40:16
Sebastiano Poggi
So in Kotlin and or in Swift respectively, Android and iOS and then write the code that bridges the native wrapper you've done with the dart code that uses it using the channels that flutter provides you. And that's where like the more of those things you have, the, the less benefit you get from using a cross-platform framework if you don't need those or if you, if you need those, but there is already a cross-platform library for that, then you can have a good product coming out.

00:37:40:16 - 00:38:20:14
Sebastiano Poggi
And one thing I can think of, for example, I think last year Philips Hue rewrote their app. There used to be two native apps. They rewrote it entirely in Flutter, and they've invested a lot in creating a Flutter library that handles Bluetooth low energy so that they can talk to their devices directly from Flutter. So obviously in their case they had to write the native bindings for Bluetooth on Android and on a USB, but then everyone else now can use Bluetooth low energy fairly easily on Flutter because of the investment that Phillips USB put into that already in and the published it as open source.

00:38:21:12 - 00:38:35:12
Carl Harroch
And so that's a good point. So like the kind of like the community around those cross-platform tools are important is that is there one in particular that you excited about is the one that you feel is is kind of taking over from the other ones?

00:38:36:15 - 00:39:05:02
Sebastiano Poggi
I was looking for, for the talk that I gave the other day at numbers and the trends I find are very interesting. So I looked at data on statista dot com where they were asking mobile developers, which cross-platform frameworks have you used for the past three years? And you can see that all of the cross-platform frameworks are going down in usage, particularly the web ones.

00:39:05:02 - 00:39:38:09
Sebastiano Poggi
They're going down very quickly, like Cordova used to know, used to be called phone gap was. Yeah, that's like the first generation of cross-platform frameworks, which was essentially put a webview in your application and now you have an app is like not really, but the only framework, cross-platform framework that has seen growing usage is flutter. Even React native is losing a bit of mindshare and maybe market share as well.

00:39:39:03 - 00:40:09:24
Sebastiano Poggi
Um, and I think like it seems to me my personal perception is that the flutter community is the community that is closest to native development. And in fact, a lot of people that do flutter tend to come from Android background, maybe because it's Google, you know, Google here, Google there is kind of like a natural path, but obviously there's also people that know to do us there as well, maybe as a second language or a second platform.

00:40:10:19 - 00:40:51:00
Sebastiano Poggi
And I don't see it as much in, in other frameworks when when you talk about React Native, that tends to be people that use React on the web that are like arm could also and then the community around react native then tends to be a bit more web centric than mobile centric compared to the flutter one. Even though you can target web with Flutter as well, Xamarin tends to be extremely enterprise centric and as such doesn't seem to have a community as much beyond some StackOverflow presence.

00:40:51:00 - 00:40:59:01
Sebastiano Poggi
I don't really know much in terms of a community for or for Xamarin. Like probably you have to market, so. Yeah, consultancy.

00:40:59:01 - 00:41:19:20
Carl Harroch
Consultancy. Thank you. So, so is anything looking to the future as anything that excites you? I mean, being cross-platform or just generally in the mobile tech space, is there is it something that you look at it like this is something you should look out for if you're interested in this subject?

00:41:19:23 - 00:41:50:14
Sebastiano Poggi
So the big trend in Mobile Native for the past year or two has been declarative. You and I think that's very interesting not just in terms of the the way that it's a model that is very powerful and seems to work very well. But that's beside the point. What I'm what interests me is that, curiously enough, this is a model that didn't originate on mobile native.

00:41:50:22 - 00:42:31:07
Sebastiano Poggi
This is something that people doing React Native and doing Flutter have been doing for a long time. And now that has kind of permeated into Jetpack and pulls on Android and SwiftKey on iOS, which curiously were launched pretty much at the same time, probably without knowing that the other was doing the same thing at the same time. And I think that is a very strong signal and happenstance if you want, that there is a big shift in the way user interfaces in mobile are handled and the model proved successful with Flutter and with React Native and is now proving successful on the native side as well.

00:42:31:20 - 00:43:00:02
Sebastiano Poggi
And I think is very interesting because I'm at heart, I'm a person that likes colored things showing up on the screen. So to me, that's that's a very big thing and I'm extremely excited about that. Also, I'm a huge Scotland fan, not because I work at Japanese, but because I really like the language and I really like the language before joining the company as well and having a way to to do UI in my favorite language.

00:43:00:21 - 00:43:45:22
Sebastiano Poggi
So I really like Flutter as well, which is fairly similar, but I like Dart less than I like Kotlin. So for me, having the ability to use the very powerful declarative paradigm in the language that I prefer the most is is extremely interesting. And I also one maybe side effect of this is that I can see over time the discussions on the Android side, native side and the US native side when it comes to UI, come closer because now we are not doing things in slightly different ways, but we are essentially doing the same thing and that maybe in the future will allow us to actually think of native cross-platform, if you will.

00:43:46:14 - 00:44:08:24
Sebastiano Poggi
We're sure the language you write, writing and the exact API call you do is different, but the logic is pretty much the same, and that maybe can help move things at the same pace on both sides without having to use cross-platform frameworks or maybe this will eventually convince everyone that you know what we get from Flutter or React native is good enough, so we just do that.

00:44:10:16 - 00:44:27:23
Carl Harroch
You think like I mean, this is probably blasphemy, but then you see like, would there be a world in which either, you know, Apple, adopt Kotlin or Google adapt Swift?

00:44:28:19 - 00:45:12:09
Sebastiano Poggi
I honestly don't know. I, I would be surprised personally to see that, but because I mean, I would be less surprised to see Google making openings towards Swift because they already released libraries for us that are written in Swift. I would be very surprised if you see Apple do anything that is not Apple. So I don't know honestly if that will happen, but I hope at least as as users of those technologies, we will get to have a more similar mindset and funnily enough, the same mindset that we can also carry to cross-platform if we need to.

00:45:12:09 - 00:45:19:14
Carl Harroch
Faith Well, thank you very much. I think this has been for 35 minutes. Thank you so much. Said for for for going through my questions.

00:45:19:14 - 00:45:21:07
Sebastiano Poggi
And thank you for sharing always.

00:45:21:15 - 00:45:24:03
Carl Harroch
Your intellect with us. Thank you.

00:45:24:19 - 00:45:40:23
Outro
Thanks for listening to this episode of the GOTO Podcast. Head over to gotopia.tech to discover lots more content. The brightest minds in software development.


Intro
Native vs cross-platform
How organizational dysfunction impacts app platform choices
Does full-stack include mobile?
Matching technologies across mobile and web
Team collaboration across platforms
Measuring cross-platform success
What is cross-platform development?
Hot trends in mobile development
Outro