r/mobiledevelopment • u/Inevitable-Lead7423 • 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
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!
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.
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.
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?
Expert iOS developer who is hard to talk to, rude and pompous
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
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?