Start learning. It has literally never been easier to build a mobile app.
Flutter is IMO the best option right now if you want to build a cross platform app. I've developed native iOS applications, native android applications, and even react-native applications that run on both ios/android. By far, hands down, Flutter is THE BEST of all the options if you need to target both platforms.
You could maybe hire a contractor or something to help make the UI better if needed. Personally, I wouldn't bother unless your app is published and bringing in money, and you can make a business case that spending $X on making it better will bring $Y more revenue. That would give you an idea of what's a good amount to spend. I wouldn't worry about any of that yet though.
Though I know quite a few backend developers who have built apps and struggled with the following issues.
1. UI/UX - UX and UI are critical for an app and you might have to hire a designer to create those interactions for you. Backend roles usually involve no/little UI/UX work and it's easy to only focus on the functional bit of it.
2. Updates - It's easy to rollback a backend codebase from production or revert it to it's last state when something goes wrong. When deploying an app you have no such option. Android updates take about a week to reach 80% adoption. And if you encounter a critical bug in that time period, you have to halt the rollback. You end up with some users on a new buggy version and some users on an older version. This can be tricky to manage.
If you want to learn and start with iOS, I'd advise doing the 100 Days of SwiftUI: https://www.hackingwithswift.com/100/swiftui
The great thing about this course is that you can do it alongside your work, because it's divided in chunks of 1 hour. My experience is that you can do it in the evening, even after a full day of work.
On mobile we work with pretty high-level abstractions, so if you did this yourself, most of the new stuff to you would be the frameworks like UIKit or Core Data (at least on iOS).
Edit: Ray Wenderlich and objc.io are my go-to learning resources for iOS stuff
A lot of Android is not front end. SQLite databases, models, maybe use cases, JUnit unit tests etc. You know how to do a DAO to MySQL, Oracle or Sqlite? You know how to do a JUnit unit test of a data structure? That part will be easier then.
Keep UI simple - one Activity, Navigation and Fragments. Use a ConstraintLayout and simple views like TextViews. Use a popular, simple image library.
Much of Android work is not UI work. Keep the UI simple initially.
If the goal is to build a project as a hobby and (maybe) make money from it, best to learn any of the cross platform tools for mobile apps, here are some popular ones: https://hackernoon.com/9-popular-cross-platform-tools-for-ap...
Best of luck!
Depending on the functionality needed for your app idea (and your skills), this might be a good path.
This was in the early 2010s.
My Background: Coming from Java backend experience, I built multiple android apps(native Android), tried react native and then learned Flutter. I also outsourced two apps and successfully got it done in react native.
My Advice:
1. Do it yourself if you want to really learn mobile development. I recommend to explore Flutter(cross-platform and similar to Java), try to build a sample app in a day or two. Whether you succeed or not, ask yourself, how do you feel now, would you want to learn and code yourself? Remember, it is going to take a lot more time than you estimate now(when I learnt Android first, I estimated a week to learn and years after, I'm still learning, I shipped my first decent app after 4 months, while working on backend parallely)
2. If the answer is No to all above questions
Outsource the work. How?
A. Do you know any friend who'd want to do this?
B. Hire a developer on hourly basis to work with you closely and ofcourse remotely. Where? Invide or Toptal. Few tips for successful outsourcing
- Do not go for upwork or freelancer or project basis work
- Teamwork is key, hire someone who's a team player
- Have weekly call to discuss progress with the dev. Discuss things other than the project as well, build relationship. Transaction based approach does not work.
- Think how can you make it easy for the other person to understand. Can you get every minute screen detail designed via a designer and hand it over to the dev?
You already know java, learning Android should be pretty easy, whether you leverage kotlin or not.
That would be the obvious option number 1 to develop your app.
Whether you want to :
- do it in java or kotlin for Android
- start with ios instead learning swift
- use a crossplatform sdk. Caution, there is a reason why these sdks are still only marginally used. It is not because mobile devs are grumpy but because they come with some advantages and drawbacks and very often these drawbacks are too important.
- find somebody to code it for you.
will depend on what kind of app you are doing, and what you want to do with it.
e.g. some kind of social app should probably be on all platforms because you want to maximize network effects.
Photography apps are a bit easier to develop on iOS. As with everything dealing with low level, having a smaller surface of change helps.
It depends also on your market.
If you know Java, I would instead recommend going through Googles new Kotlin courses for a week or so and see where that leads you:
https://www.udacity.com/course/kotlin-bootcamp-for-programme...
https://codelabs.developers.google.com/advanced-android-kotl...
https://codelabs.developers.google.com/codelabs/kotlin-andro...
Worst case, you have learned som kotlin which may eventually help you in your day job since kotlin is getting big in backend too.
My general advice is to pick a project that seems achievable fairly quickly and do your learning while trying to make that real. It’s much more motivating than learning for learning’s sake and only then actually making something.
• Native iOS / Android for years • Backend development • Frontend web development • Machine learning models
I would suggest you one thing:
Do your research on finding really good succinct tutorials. The best approach is asking the right question on google.
You usually find tons of blogs / tutorials with very basic or simple examples. Your task — if you want to learn it — is to _research_ and find the best tutorial that covers the most ground in the shortest amount of time. This is not easy to do, but that’s a good skill quick learners have.
I needed to build front-ends and went the JS way. Vue.js and a framework (bootstrap vue for instance) and you are good to go.
With PWA you can make such an app very similar to a native one.
In terms of effort, for an amateur Python dev like myself, it took maybe a weekend to understand how this works, and then more time to get the details.
https://github.com/melling/ios_topics
I’d pick one platform and build a great app for it. If you go Android, Kotlin looks like the way to go.
Personally, I'd go with Flutter, but it's still a lot to learn...
I love Java (literally the best). Django is easy. Go is alright. jQuery & Bootstrap are great. Moving into heavy UI i.e, React/Redux, the entire JS ecosystem, mobile fragmentation, absurd, pointless policy changes in the UI world are absolutely 10x more annoying, difficult, arbitrary, meaningless, buggy, and horrible than anything back-end. TensorFlow, Unstructured-Data, NoSQL, CI/CD? No problem. You have an API, documentation that works, Linux systems that are consistent, predictable, repeatable. UI/UX? Changes every day. Docs from 2 years ago often don't work. Lower barrier to entry, lower quality ecosystem. Security & supply-chain nightmare. Fragmentation for no reason other than large corporations focusing on bottom lines and leaking core-rot. It's a insult to time investment.
I can build a full-stack, horizontally scalable, complex, awesome system with whatever tools you want I can guarantee you that no matter what you throw at me, I'll spend prob 75% screwing around with JS bugs, mobile garbage, awful ecosystems, and pointless garbage that at the end of the day comes down to nitpicking about pixel performance and arbitrary platforms.
I know I'm not the only who's wasted countless hours of my own time, clients money, companies time, and real-end-user money and value on things that were shiny and interesting to a PM or UX team and ended up sinking over half the cost of project on effectively nothing. The people that make the decisions don't understand it, because UI/UX is literally all they can "see". It's insanity. If I ever start a company, I'd love to model it off a concept like Stripe; such a beautiful concept of a beautiful idea run by some of the smartest guys out there, all based entirely off an API. No play-store policies, shifting trends, corporate politics, useless garbage, pure JS developers maintaining random repo's for tools that don't need to be built.
If you're smart, be like Amazon, Google, Facebook and every other huge idea: Make an unresponsive, useful front-end and just say no to fancy UI. Amazons website is an glorious defiance to the quite frankly disgusting culture of what robs real engineers time and resources away from something like curing disease, balancing equality, providing security, and focusing on things that could actually make the world a better place. Look at this site right here. Look what happened to Reddit.
If it's more than Bootstrap and you're not funded, just say no to UI/UX. JUST SAY NO.
EDIT: There's probably some good takeaways from the book "Zen and the Art of Motorcycle Maintenance". Do yourself and the world a favor by not feeding this economy of engineered over-complexity and willful-ignorance, especially in this day in age. Our species might be about to go extinct. There's more important things to do. Seriously.
or
the ionic.io framework