Notes 1. Android studio gradle headaches. 2. Documentation sometimes contains crap. 3. RecyclerViewAdapter vs simple SwiftUI Kotlin multiplatform is promising.
@@ravinderyadav5605 no, the problem with Gradle is that it could potentially be incompatible with other solutions and you have to experiment with other versions, and you have to migrate versions without even knowing if that is going to work, you can spend more than 80 hour's to solve a very complicated one
@@Rajmanov Have you ever used pod in large project? Grable is a lot more reliable, while pod is dependent on ruby which meshed up and just failed on some macbook but not the other
@@Rajmanov All build systems have become terrible complex when going into details. I find xcode the best (i wrote a script updating the xcode project automatically). MSBuild or CMake for our cross platform business logic can be just as bad.
This is absolutely correct, I am android developer from last 4 years and i never touched the iOS before, However when i learned iOS it took month for me to reach out on same level of android where i am today. I know 4 years of Android develoment helped to boost my training in iOS. Still i started loving in iOS more than android just because of easiness what i found.
@@DiegoNovati1 Lol I'm doing it the android way github.com/mitchtabian/KMM-Playground/blob/test/iosApp/iosApp/presentation/ui/recipe_list/RecipeListViewModel.swift
This old timer remembers when API 3 (v.1.5 | Cupcake ) came out in '09 and brought with it the amazing feature of animated screen transitions. Just a month now until that is 12 years ago... how time flies.
First of all, good content in the video. You are comparing swiftui with recyclerview in android, i think it should be storyboard and recyclerview. I have tried building ios apps with storyboard and it is not any better than recyclerview. Compose UI vs SwiftUI would be a better comparison. At work, senior developers do not even use storyboards, they write code to created views and all. For beginners, everything is difficult and beginners should understand it. With more practice and understanding the architecture of the platform, it will get easier. Another thing that i have noticed in ios is that the same code would run fine in ios 13 but would not work in ios 14 and i have found such issues in android very less but it doesn't mean one platform is superior than other, they both have their sets of problems. Excited that JetBrains have developed kotlin multiplatform so that android and ios devs can work together.
I generally recommend that anyone that is new to development and has access to a Mac, they start with iOS development. It's just simpler in almost every aspect. Thanks for the video Mitch!
I tried to learn android dev. for so long and always got frustrated by the amount of time/effort to build simple ui. Now I am investing in iOS and everything seems easier and smoother than it was with android.
i have been watching your tutorials in android development and they are awesome i agree with the fact that android development has a lot of moving parts compared to ios thats why i recently switched to react-native for cross platform development it is much easier and the best part is it is still native apps that come out of the process.its also a the best of both worlds and you can get apps up an running fast too.
I have been doing dev for ios and Android apps for years and I think ios development is easy but apple can improve a lot with xcode which is not all at par with android studio
Also both are improving significantly since 2018. IOS SwiftUI and Android Jetpack Compose are amazing godsends. It was trash before both those were introduced.
Engamenttttt my friend youre the best i love your vision on everything i proud to pay for your work broo! Greetings from colombia expecting to learn everything about kmm!!
Last time I tried developing on iOS it was using Objective C, and I didn't care for it too much. The way messaging was handled seemed strange. I haven't touched Swift yet, but this video gives me hope. Nice video!
I agree 100%, however, there's one issue I faced with iOS development as an Android developer, it was extremely complicated to go out of the box and design custom layouts, I worked at a company that required both designs to be almost equal, and it was a nightmare on iOS
It's easier now since SwiftUI is based on resuable views combined together, so you can easily create custom sub-views to add into the main view. The best thing SwiftUI got rid of is constraints. Those were so damn hard to make pitch perfect.
1. Android studio gives random & vague errors 2. Multiple library, which are incompatible with each other 3. Bad documentation, which is improving 4. Complex implementation for most used things 5. Less dependency
Coding experience in xCode with Swift UI is dramatically super smooth and swift as compared to Android Studio. While with JetPack's Compose, coding in Studio is going to speed up to a great extent.
I have always learned the language alone before learning a framework. I like to sprinkle my language learning with unit testing.. just to get a feeliing.. Then framework gets a lot easier to work with since you are passed the first barrier.. I cannot learn a framework and language at the same time.
that's exactly what I'm going through right now. It's extremely annoying when after fresh install of AS, instead of developing you have to tinker how to make it work, what's worst even their own code samples don't work as intended. Documentation is outdated, confusing and unhelpful. Constant deprecation and implementation of halfbaked ideas. Changes that make no sense like implementation of viewbinding, databinding when jetpack compose suppose to retire them all. Each release brakes something and forces you to remove something right after installation ??? does that make any sense? One day you learn something and it's gone the next. Hard to keep up with that insanity. One might think that with all the resources at their disposal they should make a coherent and well documented product by now. So anyway, it seems like apple is doing way better work when it comes to software.
There are some weird quirks for SwiftUI. For example you can't have more than 10 direct children views in a view otherwise Xcode throws a weird, poorly described error. You have to refactor them out. Also AsyncImage (just released for iOS15) does not cache so each time you do a network request for it. There are 3rd party libraries that did this but first party is not perfect. I'm not saying it's quirkier than Android but it has some to be aware of.
Although I share the same opinion as you (I have 3 years of Android Dev experience and 4 months of iOS experience), you can't really compare SwiftUI with XML UIs in Android. And SwiftUI is fairly recent, and a lot of projects are still in UIKit, and some older projects are in Objective-C. Apart from that, Apple generally releases APIs after having put in some thoughts into them. Everything is in standard framework.
I have seen the opposite in my previous employment. iOS was waaayyyy more restricted of what and how you can do things. Android was much better to match requirements (design and functional)
Here in America, most companies design for iOS first and Android is forced to follow suit. I spend half of my time arguing w/ design on why it's dumb to implement iOS UI/UX on Android.
@@404errorfilenotfound oh yeah, that brings back memories. We had a client which didn't bother making Android specific designs at all. That was fun times trying to match it for Android
wait until you get to coredata and multithreading stuff. I've done both and both fields are complicated in different ways. Both ecosystems are evolving really fast and some new tools are really hard to get used to. Also in Objective-C era ios apps had lower level code comparing to android's java at the time. Now with swift and kotlin it's pretty much on the same level, but swift has more unconventional features that are hard to wrap your head around at first. I'd say android and ios are pretty equal now dev-wise.
Can you guide me from where I should start learning iOS ? Being Android developer, I'm really excited to learn iOS to do parity but I am not sure from where I should start?
i would still call myself a beginner on android but getting to this point took so much grit from me. on the flipside, deploying to Google Play has WAY less barriers than deploying to App Store and deploying apps i think is part of the fun
From my experience with android, to understand all features you really have to take with you some java experience in order to be able to move fast, understand framewok fast(how it works especially in jetpack) without experience in programming I do not recommand to start working for large projects
15:01.. You can't do that starts till 15:40, hell yeah that covers my 60-70 percent of work which I need to do platform specific. wow so Kotlin is amazing to fool you for multiplatform, I might move back to Xamarin back again, why need to get in to Kotlin ??? Till date the most perfect but least talked about cross=platform I've seen so far is NativeScript.. We built a enterprise level product for an Insurance domain and were able to use almost 90% of the code without anything changed. I know NativeScript sucks when UI comes in forefront, however its less pain in the end. we got almost 2 months to test the app and covered the UI enhancement while fixing the issues man.
I don't really agree with RecyclerView, the adapter boilerplate is similar in UIKit. Since you use SwiftUI it would be only fair to compare that to Jetpack Compose, and lazy listviews are comparable there. AFAIK Jetpack compose is more stable and production ready than SwiftUI is. But I agree iOS in general is easier by a mile, my main reasons why iOS development is easier than Android: - Amount of components: On Android you have a lot of them: Application, Activity, Fragments, Services, BroadCastReceivers. On iOS it's basically Application And ViewController. - Component Lifecycle: On Android the Lifecycle is so much more complicated, because the are multiple scenarios where a component will get killed or restarted and it's necessary to restore/recover from that. On iOS your ViewController will never get disposed because of memory pressure. - Direct control over the ViewController constructor. On Android Activities/Fragments will get created for you, you can only pass data using limited bundles or over a shared viewmodel, you do not have control over the constructor. On iOS you can pass whatever you need to a ViewController over a constructor or setter and call it a day, the ViewController will never get killed or re-created so there is no need for serialization here. - Limited options: yes iOS has a lot less options when it comes to a lot of system-related things, like notifications are very limited compared to what you can do on Android, same goes for running in the background or picture-in-picture and and and. - Only need to consider the 2 iOS versions: unthinkable in the Android world, but for iOS it's fine to just target the latest 2 iOS versions, since adoption rate of new versions is fast, the 2 latest iOS versions cover most of the ground already. - No Fragmentation: there is a limited amount of devices that need to get tested. On Android you have a lot of different manufacturers and yes it does matter, in production you'll run into bugs left and right that are very specific to a manufacturer or even just one single model. Multiply that with the 6 API versions you should support and you get a exploding number of devices to test with.
I do agree, I have 6y of experience in Android and 1y of IOS, at first I thought that IOS was harder, now I can appreciate the positives of each one. It took me less time to learn IOS, not sure if this was because I already had experience in Kotlin but within a month I was able to build an app without needing to search for a Stackoverflow post. 5:29 dam Asynctask I don't know the last time I used that, also, remember the time where we had to build Databases without Room? I sure do, I can't say I miss those days.
probably it is been made easier in swiftUI than android studio and java (or Kotlin) because u dont have to much differences in the os between different devices unlike the android. it is open source and there is way to many devices with so much differences. that need to be considered.
Loved this video. Really believe KMM is the future, and yeah I feel like Apple makes life easier for devs lol (I would just hope for them to collab with Jetbrains for a decent IDE instead of XCode)
I wanted to switch to iOS but shit they still don’t have something similar to coroutines and you can have all of these guards and callbacks laying around.
Swift UI is declarative like Jetpack Compose, so if you compare, compare those 2. Recycler view is like Table View from storyboard or xib file. I spend hours to discover I have to drag and drop variable from UI designer to code part of UIController to just display the list. Both parts are very similar. Regarding dependencies XCode has many different popular 3rd party managers for that like cocoapods or carthahe. And of course there is dependency mismatch which can thrown many confusing errors, like linter errors for example. Don't let me even start on provisioning profiles and certificates. First time it took me whole week to just upload an app to the store. Both systems have pros and cons, really neither better or easier.
Recyclerview seems complex because you can tweak and turn things to make it work the way you want to and the sky is the limit. Love android development.
Libraries like ktor for the network client and kotlin serialization for parsing will come in handy, since both of these libraries support multiplatform out of the box 📦
Your experience with iOS is based on SwiftUI. UIKit is way more complex than any UI framework out there. There are so many ways to do layout with UIKit, which is confusing and overwhelming for a beginner. You can implement UI with code, xibs, storyboards, etc... all of them have a big learning curve, especially coding UIKit with code, you are 10x slower compared with SwiftUI. The recycler view has probably the same complexity or less than a Collection View... it is the same exact problems. What about memory? On android you have GC, easy... on iOS you need to be very careful not to create memory leaks with Ref Cycles or closures... It is not really fair to compare swift UI experience with your Legacy Android experience. You need to have legacy iOS Experience to be able to say that iOS is easier than android 🤦♂️ Btw, I've done KMM at scale. It is not easy, unless your team has time for researching and talking with the guys from JetBrains, you will lose a lot of time. The productivity and tools are not mature enough, you have to come up with custom scripts to improve the developer experience, and not to mention the random crashes Kotlin/Native produces on iOS, especially after Kotlin/native updates. The problem is although the code you write for business logic is "almost" the same (you still need to do platform-specific code), they run in different environments. The android code will run on the JVM, on iOS it is Kotlin/Native which is not stable yet, even the memory model is being totally refactored right now... So, for sure KMM is not only roses and sunshine. If you think it will save you time, it won't, the advantage is that your business logic will be the same, so it is good for consistency. Right now that is the only big pro of KMM.
KMP looks quite interesting, but from what I have understood, if your app relies heavily on multithreaded coroutines (so most modern apps), the KMP MultiThread project isn’t quite ready for prime-time. Also, having written apps on both platforms, I find the code editing & refactoring much easier and flexible on IntelliJ IDE’s like Android Studio. Plus, working with older apps with XCode can sometimes leave you blocked for days from nebulous xcode errors. Of course, if you are starting a brand new app targeting iOS 14, things likely go smoothly. So both platforms really have their ups and downs, but I do agree that iOS is likely easier if you are targeting high IOS versions.
I thought the same but when I had to do iOS maintenance to an app it was quite difficult, there was some obj c bagagge and it trickled down to the swift apis, then ios12 incompatibility bugs were hard to workaround and the sdk not being open source was a bummer.
I think the Android documentation is much better. Much of the iOS documentation is in objective c still. Apple also don't have any guidelines for architecture or anything like the weekly now in android show or their tutorials, all they have are talks at wwdc. They also don't have anything as good as leak canary as far as I know, plus you can get retain cycles. But the architecture for iOS I agree is better than Android, since you can do certain things with far less code. You don't have to create services and configure as much, and things like bluetooth are much easier.
@@shariqshaikh5715 How you are going to support the enterprise android apps in flutter? and thousands of apps that are already build in native android or IOS platform and no one can change their entire code base into flutter or react native
Cross platform app development platforms suit well for small to medium sized projects. In large projects with huge code base KMM is the right solution.
First problem mitch mentions about android I was facing at the moment, 🤦♂️. Am having a problem with my gradle, "could not find method dependencyResolutionManagement() in settings.gradle, yet it's there. Somebody help
Even the old non SwiftUI way is much cleaner in iOS with TableViews and what not. There is simply a big list of things iOS devs dont have to think about things just work for the most part. XCode can be a beast though and publishing is crazy complicated.
At a quick first glance, it looks quite a bit easier! (Android engineer but with my first Macbook on my current project thought to give it a shot) Swift is pretty clean code too, I like the C-style syntax and it looks like a declarative Kotlin / Compose style. Not changing any time soon :)...just love Android way too much but iOS development is pretty slick.
i think you can say "faster" in build time, "simpler" in making uis. actually i also think it's easier than android however if you go deeply, i think everything is difficult and hard to compare which is easier because there is no finish line
Hi Mitch, I am from the JavaScript world, and I did a little bit of Swift today learning Swift and Swift UIKIT and boy Swift is nothing like JavaScript. For example, using CSS with your JavaScript is completely different from Swift. Adding padding with the Swift UI is weird? For example, to add padding you put. .padding() and in JavaScript with CSS you can get really detailed like padding: 0.10; OR padding: 10px 20px; Swift is really different! Also, Swift there is no console.log or document.write it is print("HELLO WORLD") with Swift like python. I think the only similarities I had seen between Swift, and JavaScript was the var when defining a variable. I will continue to learn Swift, but do you feel that there is a huge difference between JavaScript and Swift? I am still fairly new to programming, almost 1 year in using curly bracket languages like JavaScript and PHP and now I jump into Swift, and it is very different. Are there any benefits to learning Swift? Would you say Swift is easier to learn in comparison to JavaScript?
Learning Android Studio now with Kotlin. Spent a couple of months learning Django for the back end creating basic CRUD apps. Next I plan to create an API with Django. Afterwards create an Android application which would make a request to Django. But at this very moment I am learning deeply the Kotlin programming language with IntelliJ and later I will focus on this thing called XML. Thanks Mitch for the videos.
I've found that iOS development is easy, but there is some trade offs. The gradle can be a pain in the butt. Every time I have to checkout iOS's repository I've had to run cocoa pods on a command line. They also have those weird settings on the profile that if are incorrect you'll be running around in circles. Maps have also been a bit of a pain to work as well.
I came to Android from an Angular/.Net background and the first thing to hit me was how shitty the dependency injection is and how tedious it is to add project dependencies. They really could have learned something from their Angular team
as a beginner i screw up on things like a lot of way to implement 1 single thing so not able to understand the standard and also issue with dependencies it makes me fustrate
Do you think KMP is possible without using KMM plugin at all? I haven't tried out KMP yet, but I have seen people talk about not using KMM plugin for KMP, since it restricts you to using mac os.
Notes
1. Android studio gradle headaches.
2. Documentation sometimes contains crap.
3. RecyclerViewAdapter vs simple SwiftUI
Kotlin multiplatform is promising.
Android documentation is way better plus they have codelabs too...
As someone who has done both platforms, this is spot on
Thanks mate for all your tutorials, you helped me a lot
Always thank you for awesome tutorials!
Have to wholeheartedly disagree having spent years on both
Bit of a conflict of interest with that name 😂
Gradle errors were hands down one of the most frustrating things when I first started Android dev... And they still are lmao
I think pods are most frustrating, while gradle errors are easy to solve.
@@ravinderyadav5605 no, the problem with Gradle is that it could potentially be incompatible with other solutions and you have to experiment with other versions, and you have to migrate versions without even knowing if that is going to work, you can spend more than 80 hour's to solve a very complicated one
I thought I was the only one
Now I don’t feel so dumb
@@Rajmanov Have you ever used pod in large project? Grable is a lot more reliable, while pod is dependent on ruby which meshed up and just failed on some macbook but not the other
@@Rajmanov All build systems have become terrible complex when going into details. I find xcode the best (i wrote a script updating the xcode project automatically). MSBuild or CMake for our cross platform business logic can be just as bad.
This is absolutely correct, I am android developer from last 4 years and i never touched the iOS before, However when i learned iOS it took month for me to reach out on same level of android where i am today.
I know 4 years of Android develoment helped to boost my training in iOS. Still i started loving in iOS more than android just because of easiness what i found.
I've been doing it for a week and I'm feeling pretty good. Probably a month I would be pretty competent. Same as you
@@codingwithmitch don’t forget that iOS is an echo system, and to know how to use it takes lot of time (and sometime is not so simple).
@@DiegoNovati1 Lol I'm doing it the android way
github.com/mitchtabian/KMM-Playground/blob/test/iosApp/iosApp/presentation/ui/recipe_list/RecipeListViewModel.swift
Any old timers here remember Android development on Eclipse? That was what truly separated the men from the boys.
Actually I remember eclipse because I used it when I was in school lol
@@codingwithmitch it seems I’m getting old lol
This old timer remembers when API 3 (v.1.5 | Cupcake ) came out in '09 and brought with it the amazing feature of animated screen transitions. Just a month now until that is 12 years ago... how time flies.
@@Mrdresden you are a dinosaur
First of all, good content in the video.
You are comparing swiftui with recyclerview in android, i think it should be storyboard and recyclerview. I have tried building ios apps with storyboard and it is not any better than recyclerview. Compose UI vs SwiftUI would be a better comparison. At work, senior developers do not even use storyboards, they write code to created views and all.
For beginners, everything is difficult and beginners should understand it. With more practice and understanding the architecture of the platform, it will get easier.
Another thing that i have noticed in ios is that the same code would run fine in ios 13 but would not work in ios 14 and i have found such issues in android very less but it doesn't mean one platform is superior than other, they both have their sets of problems.
Excited that JetBrains have developed kotlin multiplatform so that android and ios devs can work together.
I'm an Android App Dev and i almost send my resignation letter to learn iOS dev🤣. Stay safe always Mitch and keep it up.
I generally recommend that anyone that is new to development and has access to a Mac, they start with iOS development. It's just simpler in almost every aspect.
Thanks for the video Mitch!
Too bad I don't have money for Macs or iPhones. 😬
@@vaelinalsorna1649 Try VirtualBox in Windows OS,Sir.
This comment coming from Bangladesh
@@abdullahalmasum5542 I bought a mac. This reply is coming from Canda
and the pay is high comparing Android development
I generally recommend the opposite. There just much more learning material available for android
I tried to learn android dev. for so long and always got frustrated by the amount of time/effort to build simple ui. Now I am investing in iOS and everything seems easier and smoother than it was with android.
Did you skipped UIKit and go with SwiftUI?
@@bitwisedevs469 No, I started with UIKit. I felt like I would miss basic stuff by jumping directly into SwiftUI.
@@jonathansilva3364 nice, same I will spent months with UIKit first then jump with SwiftUI. Then Compose with Android when it gets matured.
i have been watching your tutorials in android development and they are awesome i agree with the fact that android development has a lot of moving parts compared to ios thats why i recently switched to react-native for cross platform development it is much easier and the best part is it is still native apps that come out of the process.its also a the best of both worlds and you can get apps up an running fast too.
Kotlin and Swift are twins. I love both the languages.
I am a senior android developer and been working with android for almost a decade now. I am about to learn iOS in a couple of weeks and lets see
Please share your view after a weeks
plz share right now
Share your experience please.
Went back to Android development. Xcode is just so hard to use coming from IntelliJ
Super refreshing to hear this bc it’s been my experience and I thought I was just dumb
same xd
it's true i love you, gradle issue frustrated my life, especially when you are a self learner.
self learning is a big waste of time
I have been doing dev for ios and Android apps for years and I think ios development is easy but apple can improve a lot with xcode which is not all at par with android studio
Hilarious. Not so.
Ya got me at “Android develmer” lol. I’d probably make the same mistake with words. I agree though a simple recycler view can be a pain tbh.
Also both are improving significantly since 2018. IOS SwiftUI and Android Jetpack Compose are amazing godsends. It was trash before both those were introduced.
There is no swipe for refresh in jetpack compose... Also no visual feedback with user overscrolls in a lazy column... This still really baffles me
I am sure they will be adding this soon
Engamenttttt my friend youre the best i love your vision on everything i proud to pay for your work broo! Greetings from colombia expecting to learn everything about kmm!!
yes, iOS is definitely much easier, I'm doing both.
Last time I tried developing on iOS it was using Objective C, and I didn't care for it too much. The way messaging was handled seemed strange. I haven't touched Swift yet, but this video gives me hope. Nice video!
A comprehensive KMM and KMP tutorial in the future would be awesome along with some iOS stuff
Yep that's coming for sure
I agree 100%, however, there's one issue I faced with iOS development as an Android developer, it was extremely complicated to go out of the box and design custom layouts, I worked at a company that required both designs to be almost equal, and it was a nightmare on iOS
It's easier now since SwiftUI is based on resuable views combined together, so you can easily create custom sub-views to add into the main view. The best thing SwiftUI got rid of is constraints. Those were so damn hard to make pitch perfect.
1. Android studio gives random & vague errors
2. Multiple library, which are incompatible with each other
3. Bad documentation, which is improving
4. Complex implementation for most used things
5. Less dependency
Coding experience in xCode with Swift UI is dramatically super smooth and swift as compared to Android Studio. While with JetPack's Compose, coding in Studio is going to speed up to a great extent.
I have always learned the language alone before learning a framework. I like to sprinkle my language learning with unit testing.. just to get a feeliing.. Then framework gets a lot easier to work with since you are passed the first barrier.. I cannot learn a framework and language at the same time.
that's exactly what I'm going through right now.
It's extremely annoying when after fresh install of AS, instead of developing you have to tinker how to make it work, what's worst even their own code samples don't work as intended. Documentation is outdated, confusing and unhelpful. Constant deprecation and implementation of halfbaked ideas. Changes that make no sense like implementation of viewbinding, databinding when jetpack compose suppose to retire them all. Each release brakes something and forces you to remove something right after installation ??? does that make any sense? One day you learn something and it's gone the next. Hard to keep up with that insanity. One might think that with all the resources at their disposal they should make a coherent and well documented product by now.
So anyway, it seems like apple is doing way better work when it comes to software.
your perspective about KMM is awesome
There are some weird quirks for SwiftUI. For example you can't have more than 10 direct children views in a view otherwise Xcode throws a weird, poorly described error. You have to refactor them out. Also AsyncImage (just released for iOS15) does not cache so each time you do a network request for it. There are 3rd party libraries that did this but first party is not perfect. I'm not saying it's quirkier than Android but it has some to be aware of.
Glad to hear things are looking promising.
Is this still the case in July 2023? A lot has changed since 2 years ago.
screen in the top left, look at where it says program and click on where it says “aggressive te” and change it to “analog app 1 te”
I still can't wrap my head around how Kotlin runs natively on iOS.
Get your hands dirty
It compiles to ObjectiveC frameworks
Thank you for sharing your videos. I will definitely consider your Clean architecture course when I get to it.
Subscribed for KMP.
It will be great to see D-KMP(SwiftUI + Jetpack compose) as well.
Although I share the same opinion as you (I have 3 years of Android Dev experience and 4 months of iOS experience), you can't really compare SwiftUI with XML UIs in Android. And SwiftUI is fairly recent, and a lot of projects are still in UIKit, and some older projects are in Objective-C. Apart from that, Apple generally releases APIs after having put in some thoughts into them. Everything is in standard framework.
yaya I know I said multiple times I am comparing SwiftUI with "old android" which is not accurate
I have seen the opposite in my previous employment. iOS was waaayyyy more restricted of what and how you can do things. Android was much better to match requirements (design and functional)
Here in America, most companies design for iOS first and Android is forced to follow suit. I spend half of my time arguing w/ design on why it's dumb to implement iOS UI/UX on Android.
@@404errorfilenotfound oh yeah, that brings back memories. We had a client which didn't bother making Android specific designs at all. That was fun times trying to match it for Android
@@404errorfilenotfound it's same in Europe, from my experience :)
@@404errorfilenotfound this thing is everywhere.
They even told me to mimic iOS popups 🤦🤦
wait until you get to coredata and multithreading stuff. I've done both and both fields are complicated in different ways. Both ecosystems are evolving really fast and some new tools are really hard to get used to. Also in Objective-C era ios apps had lower level code comparing to android's java at the time. Now with swift and kotlin it's pretty much on the same level, but swift has more unconventional features that are hard to wrap your head around at first.
I'd say android and ios are pretty equal now dev-wise.
U just made me delete android studio and start learning IOS
Apple should have sent me a free laptop damnit
@@codingwithmitch lol I agree
Can you guide me from where I should start learning iOS ?
Being Android developer, I'm really excited to learn iOS to do parity but I am not sure from where I should start?
@Justin Smith not true in many countries
i would still call myself a beginner on android but getting to this point took so much grit from me. on the flipside, deploying to Google Play has WAY less barriers than deploying to App Store and deploying apps i think is part of the fun
From my experience with android, to understand all features you really have to take with you some java experience in order to be able to move fast, understand framewok fast(how it works especially in jetpack) without experience in programming I do not recommand to start working for large projects
15:01.. You can't do that starts till 15:40, hell yeah that covers my 60-70 percent of work which I need to do platform specific. wow so Kotlin is amazing to fool you for multiplatform, I might move back to Xamarin back again, why need to get in to Kotlin ??? Till date the most perfect but least talked about cross=platform I've seen so far is NativeScript.. We built a enterprise level product for an Insurance domain and were able to use almost 90% of the code without anything changed. I know NativeScript sucks when UI comes in forefront, however its less pain in the end. we got almost 2 months to test the app and covered the UI enhancement while fixing the issues man.
As an android developer, my heart is stuck while you are speaking.
The problem with Kotlin multi-platform is that Kotlin doesn't have the features that Swift has, specifically concurrency features of Swift.
I don't really agree with RecyclerView, the adapter boilerplate is similar in UIKit.
Since you use SwiftUI it would be only fair to compare that to Jetpack Compose, and lazy listviews are comparable there. AFAIK Jetpack compose is more stable and production ready than SwiftUI is.
But I agree iOS in general is easier by a mile, my main reasons why iOS development is easier than Android:
- Amount of components: On Android you have a lot of them: Application, Activity, Fragments, Services, BroadCastReceivers. On iOS it's basically Application And ViewController.
- Component Lifecycle: On Android the Lifecycle is so much more complicated, because the are multiple scenarios where a component will get killed or restarted and it's necessary to restore/recover from that. On iOS your ViewController will never get disposed because of memory pressure.
- Direct control over the ViewController constructor. On Android Activities/Fragments will get created for you, you can only pass data using limited bundles or over a shared viewmodel, you do not have control over the constructor. On iOS you can pass whatever you need to a ViewController over a constructor or setter and call it a day, the ViewController will never get killed or re-created so there is no need for serialization here.
- Limited options: yes iOS has a lot less options when it comes to a lot of system-related things, like notifications are very limited compared to what you can do on Android, same goes for running in the background or picture-in-picture and and and.
- Only need to consider the 2 iOS versions: unthinkable in the Android world, but for iOS it's fine to just target the latest 2 iOS versions, since adoption rate of new versions is fast, the 2 latest iOS versions cover most of the ground already.
- No Fragmentation: there is a limited amount of devices that need to get tested. On Android you have a lot of different manufacturers and yes it does matter, in production you'll run into bugs left and right that are very specific to a manufacturer or even just one single model. Multiply that with the 6 API versions you should support and you get a exploding number of devices to test with.
I do agree, I have 6y of experience in Android and 1y of IOS, at first I thought that IOS was harder, now I can appreciate the positives of each one.
It took me less time to learn IOS, not sure if this was because I already had experience in Kotlin but within a month I was able to build an app without needing to search for a Stackoverflow post.
5:29 dam Asynctask I don't know the last time I used that, also, remember the time where we had to build Databases without Room? I sure do, I can't say I miss those days.
Haha dark times
probably it is been made easier in swiftUI than android studio and java (or Kotlin) because u dont have to much differences in the os between different devices unlike the android. it is open source and there is way to many devices with so much differences. that need to be considered.
it's interesting to compare the kmp with ios native in terms of performance
This got me excited about KMP!
app management, store management, signing, building is much easier on Android. Significant when managing many apps.
You convinced me to use native iOS instead of flutter or other similar solutions.
Can't wait stable version of KMM
Loved this video. Really believe KMM is the future, and yeah I feel like Apple makes life easier for devs lol (I would just hope for them to collab with Jetbrains for a decent IDE instead of XCode)
Jetbrains just killed AppCode due to sales below expectations...
@@vxsniffer appcode has nothing to do wiith kmm
I wanted to switch to iOS but shit they still don’t have something similar to coroutines and you can have all of these guards and callbacks laying around.
Swift 6 has async/await: it will be announced at the next WWDC
Swift UI is declarative like Jetpack Compose, so if you compare, compare those 2. Recycler view is like Table View from storyboard or xib file. I spend hours to discover I have to drag and drop variable from UI designer to code part of UIController to just display the list. Both parts are very similar. Regarding dependencies XCode has many different popular 3rd party managers for that like cocoapods or carthahe. And of course there is dependency mismatch which can thrown many confusing errors, like linter errors for example. Don't let me even start on provisioning profiles and certificates. First time it took me whole week to just upload an app to the store. Both systems have pros and cons, really neither better or easier.
Ok and do you got a video for how to load a plugin in to the software ?
SwiftUI is not ready stable for iOS Dev ,so u need UIKit because most of all legacy apps still on UIKit and Obj-C
As someone who recently got back into mobile dev..im completely agree.. :)
To setup a roomdb app for android i had alot of problems with getting gradle dependencies to work.
Recyclerview seems complex because you can tweak and turn things to make it work the way you want to and the sky is the limit. Love android development.
That is true but why can't you have both
Render engine problem
Theme didnt support with UI component
UI didnt reload until run app
Restart ☺👍
App development with Android Studio is frustrating.
Love Flutter and React Native instead.
Libraries like ktor for the network client and kotlin serialization for parsing will come in handy, since both of these libraries support multiplatform out of the box 📦
Yep looking at ktor, kotlinx.serialization, kotlinx.datetime, sqldelight
Does iOS have MVVM architectural pattern?
Your experience with iOS is based on SwiftUI. UIKit is way more complex than any UI framework out there. There are so many ways to do layout with UIKit, which is confusing and overwhelming for a beginner. You can implement UI with code, xibs, storyboards, etc... all of them have a big learning curve, especially coding UIKit with code, you are 10x slower compared with SwiftUI. The recycler view has probably the same complexity or less than a Collection View... it is the same exact problems. What about memory? On android you have GC, easy... on iOS you need to be very careful not to create memory leaks with Ref Cycles or closures...
It is not really fair to compare swift UI experience with your Legacy Android experience. You need to have legacy iOS Experience to be able to say that iOS is easier than android 🤦♂️
Btw, I've done KMM at scale. It is not easy, unless your team has time for researching and talking with the guys from JetBrains, you will lose a lot of time. The productivity and tools are not mature enough, you have to come up with custom scripts to improve the developer experience, and not to mention the random crashes Kotlin/Native produces on iOS, especially after Kotlin/native updates. The problem is although the code you write for business logic is "almost" the same (you still need to do platform-specific code), they run in different environments. The android code will run on the JVM, on iOS it is Kotlin/Native which is not stable yet, even the memory model is being totally refactored right now... So, for sure KMM is not only roses and sunshine. If you think it will save you time, it won't, the advantage is that your business logic will be the same, so it is good for consistency. Right now that is the only big pro of KMM.
Do you think Swift and Native iOS development will still be in demand with the likes of React Native and Flutter bombarding it?
I will be starting my next project with Flutter so I will miss your Kotlin videos: /
Good luck
How is it going with flutter?
KMP looks quite interesting, but from what I have understood, if your app relies heavily on multithreaded coroutines (so most modern apps), the KMP MultiThread project isn’t quite ready for prime-time.
Also, having written apps on both platforms, I find the code editing & refactoring much easier and flexible on IntelliJ IDE’s like Android Studio. Plus, working with older apps with XCode can sometimes leave you blocked for days from nebulous xcode errors. Of course, if you are starting a brand new app targeting iOS 14, things likely go smoothly. So both platforms really have their ups and downs, but I do agree that iOS is likely easier if you are targeting high IOS versions.
what do I do if my soft doesn't add up to the correct length of the loop? and I have so gap at the end because the notes aren't the
Is it possible creating a kmp application on fushia os as flutter does?
I guess probably if kotlin native supports it
I thought the same but when I had to do iOS maintenance to an app it was quite difficult, there was some obj c bagagge and it trickled down to the swift apis, then ios12 incompatibility bugs were hard to workaround and the sdk not being open source was a bummer.
Sound more like my experience 😂 give him a few more months
I think the Android documentation is much better. Much of the iOS documentation is in objective c still. Apple also don't have any guidelines for architecture or anything like the weekly now in android show or their tutorials, all they have are talks at wwdc. They also don't have anything as good as leak canary as far as I know, plus you can get retain cycles.
But the architecture for iOS I agree is better than Android, since you can do certain things with far less code. You don't have to create services and configure as much, and things like bluetooth are much easier.
The gradle headache is the one thing why I'm thinking of switching to full stack web developer
What do you think about native Android development future?
Not going anywhere
@@codingwithmitch but there is flutter some people say it will replace android in future?
@@shariqshaikh5715 How you are going to support the enterprise android apps in flutter? and thousands of apps that are already build in native android or IOS platform and no one can change their entire code base into flutter or react native
I think KMM is for those who doesnt want to admit that flutter is not for babies...
change my mind
However it is harder to submit an app to the Apple Store
not know , but just know you've affected my life, and apparently tens of thousands of others, in an imnsely positive way. Thank you
Cross platform app development platforms suit well for small to medium sized projects. In large projects with huge code base KMM is the right solution.
everybody is gangsta until firebase notification and podfiles come in. Not to mention how to merge fix that 14k LINES OF STORYBOARD UI...
I'ma gangsta
What do you think about flutter?
Is it possible to master both platforms in native?
make my first ever drum loop. I'm not and expert at soft yet but I have learnt a lot at producing and looking back at my journey, I just
First problem mitch mentions about android I was facing at the moment, 🤦♂️.
Am having a problem with my gradle, "could not find method dependencyResolutionManagement() in settings.gradle, yet it's there.
Somebody help
Even the old non SwiftUI way is much cleaner in iOS with TableViews and what not. There is simply a big list of things iOS devs dont have to think about things just work for the most part. XCode can be a beast though and publishing is crazy complicated.
At a quick first glance, it looks quite a bit easier! (Android engineer but with my first Macbook on my current project thought to give it a shot) Swift is pretty clean code too, I like the C-style syntax and it looks like a declarative Kotlin / Compose style.
Not changing any time soon :)...just love Android way too much but iOS development is pretty slick.
Great vlog bro.
Developing for Android sucks, but someone's got to do it, right? Here's your engagement, Mitch! Keep it up!
i think you can say "faster" in build time, "simpler" in making uis. actually i also think it's easier than android however if you go deeply, i think everything is difficult and hard to compare which is easier because there is no finish line
I got amaze in every video of mitch
Awesome content.❤️..not related to this. Which camera you are using love Bokeh effect.
Canon eos r
Yeah man it's true, I had to spend a lot of time fixing a tiny bug Android Studio
5 years experience in Android, now learning iOS: it feels like Android is a military guy with an absolute discipline, whereas iOS is a hippy
Hi Mitch, I am from the JavaScript world, and I did a little bit of Swift today learning Swift and Swift UIKIT and boy Swift is nothing like JavaScript. For example, using CSS with your JavaScript is completely different from Swift. Adding padding with the Swift UI is weird? For example, to add padding you put. .padding() and in JavaScript with CSS you can get really detailed like padding: 0.10; OR padding: 10px 20px; Swift is really different! Also, Swift there is no console.log or document.write it is print("HELLO WORLD") with Swift like python.
I think the only similarities I had seen between Swift, and JavaScript was the var when defining a variable. I will continue to learn Swift, but do you feel that there is a huge difference between JavaScript and Swift? I am still fairly new to programming, almost 1 year in using curly bracket languages like JavaScript and PHP and now I jump into Swift, and it is very different. Are there any benefits to learning Swift? Would you say Swift is easier to learn in comparison to JavaScript?
Learning Android Studio now with Kotlin. Spent a couple of months learning Django for the back end creating basic CRUD apps. Next I plan to create an API with Django. Afterwards create an Android application which would make a request to Django. But at this very moment I am learning deeply the Kotlin programming language with IntelliJ and later I will focus on this thing called XML. Thanks Mitch for the videos.
I've found that iOS development is easy, but there is some trade offs. The gradle can be a pain in the butt. Every time I have to checkout iOS's repository I've had to run cocoa pods on a command line. They also have those weird settings on the profile that if are incorrect you'll be running around in circles. Maps have also been a bit of a pain to work as well.
I came to Android from an Angular/.Net background and the first thing to hit me was how shitty the dependency injection is and how tedious it is to add project dependencies. They really could have learned something from their Angular team
ios series please
Being android devs just listening is swift ui and ios feel jealous
Bro 🙂 you are doing the best 🙂
as a beginner i screw up on things like
a lot of way to implement 1 single thing so not able to understand the standard and also issue with dependencies it makes me fustrate
Please tell me what is the best place to start learning IOS development as you are in the same road.
Do you think KMP is possible without using KMM plugin at all? I haven't tried out KMP yet, but I have seen people talk about not using KMM plugin for KMP, since it restricts you to using mac os.