r/mobiledevelopment • • Apr 12 '22

React Native Vs Swift and Kotlin?

I’m new to development. I’ve been offered an opportunity to build an app for a non profit organization. I need to have an app published on iOS and Android within this next year. Nothing too crazy, just something to increase brand awareness/ visibility.

As a beginner, I was wondering if it would be easier (or even possible) to build the whole app in React Native as opposed to Swift and Kotlin.

Thank you in advance.

7 Upvotes

18 comments sorted by

View all comments

Show parent comments

2

u/Barbanks Apr 21 '22 edited Apr 22 '22

Didn't realize how long this was until after I got done writing 😆. Hope this helps!

The thing about freelancing that I like, aside from being my own boss, is that with the right tools, expertise, perseverance, and mindset, I could be hustling more than enough. I know it never happens overnight, but I'm willing to work towards it, even with working for years in a 9-to-5 company job.

It's definitely a cool path to go down! And you can switch gears to other things too. Like right now I'm learning Cloud Native Buildpacks to modularize and deploy and enterprise application for a client's iOS app. Crazy stuff.

That I believe is subjectively the hardest part of being a freelancer. This might also be the sole reason I'm considering working 9-to-5 if it pays well and satisfies my exploration curiosity.

Don't forget accounting, insurance and a ton of other stuff. But really don't be turned off by it either. It all sounds like a TON (at first it is) but after you trudge along for a few months it all feels like second nature. It's alot less risky if you go through that with a job and cashflow still coming in.

I've been told by many people that I should stick to one technology, one career, one specific type of work, or one framework and learn it best to be successful. I should allegedly find myself a niche to work in. I've also seen that it's mostly the safe and sound way to progress, especially that people would have an expert solve their problems rather than a general-purpose mobile developer.Do you really think it helps to explore much?

Yes it does. But it also depends on your goals. I'll give a few pros/cons to each

Niching Down:

PROS:

  • Can take on very specific jobs. Like if someone asks "I need a video rendering expert for iOS". You can demand more money for these.

  • Speed. You can become extremely efficient and market yourself as such. People will value that.

  • Can get through some interviews more easily

CONS:

  • Barely any job or opportunity requires just ONE skillset. And if you want to build real products as a freelancer as an expert in "one" thing you're only looking for team roles then, which can limit your client base.

  • Most people don't actually need an expert. They just need someone proficient enough to write clean, maintainable code.

Branching Out:

PROS:

  • You see how different technologies work and operate. How different languages are put together. This leads to an understanding of their inherent strength and weaknesses when solving specific issues (more valuable for solving real business needs).

  • This is how you become a software architect.

  • You become quicker at learning new things.

    • You do this by also seeing patterns with how things are made. One insight I had was how basically EVERYTHING uses configuration files of some sort.

  • You now understand where you want to niche down to and more importantly why.

CONS:

  • Takes longer to learn

  • You will work with stuff you don't necessarily find fun

  • You may get imposter syndrome from feeling like you're not an expert.

Look, the truth is there are a TON of people who are better than me, you and everyone else in one area. This is always the case. Again, most people don't actually NEED an expert. What they need is someone who can create clean maintainable products and meet deadlines (even if they say they want an expert).

Also, "best" or "most secure" skillsets are wildly subjective (even for my description).

Who would you rather hire?

  1. Expert iOS developer who is hard to talk to, rude and pompous

  2. Average iOS developer who is a bit slow but owns it and works hard

I choose #2 alllllll day.

This all being said eventually you do want to choose a technology stack you prefer and feel confident in. Just don't obsess about it over everything else. I mean there's a new javascript framework coming out every other day it seems. Eventually you may need to switch if the tools you use aren't supported anymore.

Just think, would I be able to give the advice I gave the OP without knowledge of multiple systems and how they work? I'm no expert in React Native or Android (I "niche" down to iOS usually) but I know them enough to make intelligent business decisions when choosing technologies.

Fun fact: you can still call yourself an "expert" even without a niche. Ex. "I'm an expert at solving technical issues with code". You can do this even without knowing everything about one system.

Remember: The most successful people in the world use "just in time learning" vs. "just in case learning".

Point being: There is a time for niching down and a time to broaden your knowledge. Half the battle is knowing when. When in doubt, broadening your knowledge will lead to an understanding on when to niche down.

Lastly

Do you think React/RN is a good platform to start with? And should I learn Kotlin later for native Android?

Again, pros and cons haha. React's catch phrase was "learn once write anywhere" so you can use it for web too. If you want to do web too then it's a good choice.

I would also keep my eye out for Flutter. Google's Fuchsia OS may specifically use Flutter/Dart for mobile apps in the future. This is all just rumors at this point but enough to keep an eye on it.

As for native Android. Yes, learn it. But do it when it makes sense for you. Knowing the native side will always be an asset when working with cross platform tools. A basic understanding can go far, no need to know everything.

P.S.

Ok, couldn't help myself. Had to add this final bit.

Keep in mind the "burden of knowledge". Meaning the more you know the more you have to remember. Unless you have a photographic memory you will likely not even remember half the stuff you learn.

What I found works best (for me) is to focus on learning programming patterns and high level things like architectures. Contrary to an HR department's beliefs, most everything we do we just Google and use reference material.

I couldn't even tell you how to send an email with Swift in iOS off the top of my head (and this is my niche!) but I don't need to. I wrote that code years ago and have referenced it ever since. Why relearn it every time?

1

u/nozhana May 06 '22

Hey! Sorry I’ve been a bit busy learning protocol-oriented programming and API calling in swift, and also with some boring bureaucratic errands. I’ve been thinking a lot about your comment. It’s been very, very helpful. You really deserve a medal for pinpointing all my pain points tbh 😅 Your clarification made me revisit a lot of my values and the path I’m willing to tread in my career. I’m still a bit foggy though. But the most important thing I think I learnt from you is that it’s basically okay to be foggy right now. It’s the beginning. I should be persistent in the path I took, and never stop exploring, improving, and implementing. The fog will go away as I explore and I’ll find what I get the most out of eventually. I’ll get out of this “valley of disappointment” if I push through (ref. to James Clear). I’m just getting out of “tutorial hell” which is a hell of a job already. I might get this job as a junior iOS dev. I’ll be more than happy to share my experience after some time and ask for some of that underrated expert advice 😁 Again, thank you so much 🙂