What steps should I take to get into Mobile Development?
My Goal: Create an app similar to Tinder
*Please note, I'm not trying to throw my hat in the ring with Tinder, Bumble, and all of those. This is just a side project that I'm interested in, I'm not considering fighting against Tinder.
My Current Skills:
* Minimal experience with MEAN stack and React Native (tutorials & summer internship)
My Resources: Youtube tutorials, Google, and Safari (such as Practical React Native: Build Two Full Projects and One Full Game using React Native)
- Pick either Android, iOS, or RN
- Complete tutorials in that language until I have a solid foundation for MobileDev
- Continue building my skills so I can create my goal app
Now, I am 100% willing to get some scrapes and bruises in order to create my goal app, no doubt about it. However, I want to make sure that I'm on the right track and doing this efficiently.
* Would it be okay for me to learn React Native first, then worry about learning native languages later? - I read about some risks with working with React Native and it seems like the general consensus is that if I'm a massive tech company, I should stick with native. I'm not a massive tech company, so I'm thinking React Native.
* Should I try to learn React Native and Android at the same time if I want to go into industry? I was told that if I want a Mobile Dev job, I should be working on learning Kotlin.
*Is there anything that maybe I didn't think of?
I'm looking for honest and genuine insight on this, both cautious and encouraging. Thank you for your time.
And if you're learning Kotlin, Swift is really similar and will help you get your introduced to iOS as well.
My suggestion would be to start with one platform (one which you think would be easier to get started with first / device you own right now).
I've personally found Ray Wenderlich's tutorials really helpful for both iOS and Android. It also helps to research and learn about the mobile lifecycle, architectures, and refer to some open source projects to help you get started.
For more info refer to https://cordova.apache.org/
And these resources from Cornell are also really great
First off, good for you that you're working on a side project! This will definitely show prospective employers that you're passionate about software development, and will give you something to speak about on your interviews, even if the project remains a proof of concept and doesn't go anywhere.
Choosing a tech stack is a great question and as you mentioned, one that many companies have grappled with; Airbnb and Dropbox both made the decision to go with native after they realized that there is a high cost of maintaining code that is shared between platforms. However, since this is more an opportunity for you to build your skills rather than to create a scalable, maintainable app, I'd recommend that you choose whichever tech stack is most comfortable for you and you are most excited to learn - for you, it sounds from your question like that would be React Native. Don't worry about learning all 3 languages right now, since you can always pick up additional languages on the job. I would recommend focusing on one platform at a time; your goal right now should be to build something you are proud of and to learn from the experience.
A few tips:
- It may be worth buying a cheap (used) phone so you can test on actual devices that are native to both platforms. (i.e. if you own an iPhone, buy a cheap Android - or vice versa)
- Mobile development is comprised of 4 key components: language, development tools, design patterns and practices, and app architecture. Many of those (not just language) will vary by platform.
- Debugging is always frustrating, and can be more so when trying to narrow down bugs across multiple platforms. Be prepared to use Google and Stack Overflow, give yourself constant pep talks, and take notes on how you've fixed bugs and issues so that you can refer back to them and tangibly see how much you have learned.
- UX (user experience) is hugely important in the mobile development world, so read up on UX basics and Apple's Human Interface Guidelines.
- For a different perspective, here's a post which lists some limitations of React Native
Most of all, have fun!