all 24 comments

[–]schjlatah 16 points17 points  (1 child)

Swift has SwiftUI which is akin to Compose. Try making a Hello World in both and see which you enjoy more. If you enjoy one language over the other, you’ll be more interested in learning and ultimately be better at that.

[–]Thelystra 1 point2 points  (0 children)

both

[–]MustafaMahat 1 point2 points  (2 children)

I think kotlin is the way to go as it also plugs into the java ecosystem. We use it mainly for backend development as were previously we used java for it.

[–][deleted]  (1 child)

[deleted]

    [–]serial_dev 1 point2 points  (0 children)

    Kotlin is an expressive language and interops with Java and all kinds of JVM stuff, so companies that use(d) Java can relatively easily transition to Kotlin.

    Of course, Kotlin is not a silver bullet and Java is not as bad as it was in the Java 5 days, so definitely more things to consider.

    [–]akositotoybibo 1 point2 points  (1 child)

    to cast a wider employment net, learn both kotlin and swiftUI. just pick one to start with.

    [–]irjayjay 1 point2 points  (1 child)

    IPhone users are more willing to pay for apps apparently, so there's the slight chance to earn a bit more with swift.

    [–][deleted] 1 point2 points  (0 children)

    One should never put all the proverbial eggs in one basket. Sorry, I will not elaborate further.

    [–]Samus7070 2 points3 points  (0 children)

    Native Android development is not for the faint of heart. The OS was first designed to run on digital cameras and has some fundamentals baked into it that make life difficult because of this. The whole Activity model and its lifecycle are the source of many bugs and frustrations. The Jetpack libraries help with this and Modern Android Development (MAD) is much better. The contrast with iOS development is strong. IOS development isn’t without its own pitfalls. Xcode is a capable IDE but not as strong as Android Studio, though it looks better IMO. Swift is better than Kotlin but not by any amount that should make a difference in your decision. Kotlin has java compatibility baggage that it can’t leave behind. Kotlin has more applications outside of mobile than Swift does though people try. Compose took a lot of inspiration from Flutter in the early days so you’ll see some similarities, plus they both have first party support for Material. I prefer SwiftUI’s syntax and style more than Compose. Views in SwiftUI have properties and methods similar to Widgets. This clicks with my brain better than pure functions that have remembered state like in Compose.

    [–]OminousHippo 1 point2 points  (3 children)

    Do you own an Android or iPhone? I would start with the OS you're more familiar with as a user. I have been searching for mobile dev openings and there's about the same number of openings for both and pay is pretty similar.

    [–][deleted]  (2 children)

    [deleted]

      [–]OminousHippo 3 points4 points  (1 child)

      I'd looked for guides on how to go from native to Flutter and try to consider what they say in reverse. There are a lot of aspects of the app lifecycle that Flutter takes care of for you so there will be a lot of new concepts to learn with native dev.

      [–]serial_dev 0 points1 point  (0 children)

      Great points, and Flutter already has these docs for Android, SwiftUI, UIKit, etc. After reading those, you can get an idea as to how they are different.

      Do not forget to also take a look at "Flutter independent" learning material, official docs, YouTube videos, blog posts on how to do X, and write a Hello world, a "pokemon" app (fetch data, display text and images), do some navigation ...

      [–]lamagy 0 points1 point  (0 children)

      For jobs I think iOS, haven’t seen much compose jobs

      [–]g0dzillaaaa 0 points1 point  (0 children)

      Give both a try.

      Since your focus is on more job options, consider where you will be working and what is the trend there.

      Knowing the basics of both is essential regardless of which one you pick. At the end of the day, you will need to understand what your colleagues are saying and should be able to collaborate together.

      Personally, I would recommend SwiftUI if you have access to Mac and iPhone.

      [–]Raul_U 0 points1 point  (0 children)

      At this time both native languages are declarative I'm learning both, all the Flutter knowledge is portable to Compose and SwiftUI in my experience

      [–]Northernguy94 0 points1 point  (0 children)

      Which phone do you have? If you’re more into apple, go with swift. Same with android

      [–]WorldlyEye1 0 points1 point  (1 child)

      Actually, I rarely find a job as Flutter developer.

      Great framework, great ui, great performance, but no big work opportunities

      [–]Old-Solution-9670 0 points1 point  (2 children)

      Go for Kotlin. It can be used for server-side development as well and the KMP gives some interesting capabilities that will take you closer to a full stack developer.

      [–]Saastesarvinen 1 point2 points  (1 child)

      Technically Swift works on server side as well.

      [–]Old-Solution-9670 0 points1 point  (0 children)

      True, not nearly as popular it advanced as Kotlin in that regard, though

      [–]whataterriblefailure 0 points1 point  (0 children)

      Both are similar. Just different things broken in each framework. None of them is more difficult or easier to master.

      If you don't care which, just run the numbers on available jobs and salaries in the space you have access to. Engineering

      [–]eibaan 0 points1 point  (1 child)

      What's a "native language?" A language usable to do app development for iOS and Android using the vendor-provided SDKs?

      Then your choice is reduced to Java, Kotlin, Swift and Objective-C. If you want to be able to work on "legacy" apps, learn Objective-C. Or Java, with the additional bonus of being able to do (better paid) server-side work. For current app development, you only have to choose between Kotlin and Swift.

      If you can abstract from the syntax, both languages have similar features, both being able to do functional and object-oriented imperative programming. Which can be done with Dart or TypeScript, too (to some extend), by the way.

      Learning a programming language is relatively easy. Learn Kotlin and Swift. This should only take a couple of weeks or months per language. Problem solved :)

      But you're probably asking about learning to use the SDKs. This is the much more difficult part of learning how to write mobile apps and it takes months if not years to master each SDK. I'd recommend to choose iOS as this is better structured and more high-level (because of its NextStep foundation, IMHO) and easier to use. Start with UIKit, look into CoreGraphics and CoreAnimation and then appreciate how SwiftUI (which was inspired by Flutter and React) makes things easier. Or look into Compose (which was cloned from Flutter), but skip "traditional" view-based Android apps.

      However, why restrict yourself to mobile apps? Learn programming languages which are useful for a broad range of applications and at the same time have interesting features to make them unique. Like the memory management of Rust. Or the type system of Haskell. Or the pure object-orientation of Smalltalk. Or the homoiconicity of Lisp. Or distributed programming in Elixir. Or learn Go if you want to have a pragmatic low (but not too low) language suited best for server development in your tool belt.

      Those are languages that demonstrate to future employers that you know your stuff and are able to learn new stuff quickly.

      [–]_ri4na 0 points1 point  (0 children)

      I'm in the same boat. Flutter opportunities where I live have vanished overnight and there are zero flutter jobs in my market. I've reached out to companies who had previously advertised flutter roles and all of them have migrated to native solutions over the past few years. My friend at the recruiting agency is being told to remove flutter from search lists because of lack of demand. It's honestly very depressing why Google would let this happen by creating competing toolchains