I’ve been a business programmer for almost thirty years. I’m thinking about writing a phone App.
Are they hard to write for an experienced programmer? What language choices are most commonly used? Procedural or Object programming?
If it’s Object than I may be screwed. All my experience is in Procedural and I write a lot of SQL code. I use a lot of tools like Crystal Reports to write database reports.
Do most programmers write the App for one platform and then convert it to the other? For example write it for Android and then convert to IPhone?
Any books or instructional web sites to recommend?
They’re not particularly harder to write than any other kind of programming. Both major mobile platforms use object-oriented languages, Java (and sometimes a bit of C) for Android and Objective C for iOS.
If you provide some details on what you’re actually thinking of writing, people can point you in the right direction with regard to APIs and such to look at.
Don’t be afraid of OOP. It’s easy to pick up the basic ideas if you are a competent procedural programmer.
I’d start with the typical “Hello World” program that writes to the screen. Learn how to read finger swipes and presses. Get input from the Google keyboard and display back whatever is typed. Basically learn how to use the run time libraries.
Read a text file and display it, line by line on the screen. A post it note App would be interesting to write.
Multimedia would be interesting to manipulate. Play snippets of a mp3 file. Maybe an App that would display several images while a song plays. I could use an App that would play the same snippet over and over again. for example, enter a beginning and ending time in seconds. I take voice lessons and that would be useful in learning melodies of a song.
For some reason, Alarm Clock Apps fail a lot. I spent an hour a couple months ago looking at Alarm Clock Apps and reading Reviews in the Android App store. Every single one of them were unreliable. I finally downloaded one that lets you pick a song and then it will wake up (at a selected time) and play that song. Works pretty good for 30 min or even an hour naps. But you can’t trust it over night. It won’t go off the next morning. Based on reviews this seems to be common with all these Android alarm clocks.
Actually I’ve been in this field since the 80’s and I must say the instructions and documentation for programming Android apps is quite extensive and good. Also free!
Use Java and get the Android SDK here…
Note you make your app, then install it on your cell phone via a USB cable from your PC. All of this is object oriented of course.
I looked into the same stuff a year or so ago. My recent dev work was all server-side .NET. Some webby, some not.
My local library had several “Programming Android for dummies” books. Which weren’t truly “dummies” books, but were still a total noob intro to the tools and the API for somebody who was already a dev skilled with other tech on other platforms.
I skimmed a couple of those books and ended up a lot smarter about where and how my skillset met or didn’t meet with the requirements.
Suggest the OP do the same. Ditto for Apple. You’ll be a LOT smarter about this stuff for the investment of 4 or 8 hours of reading.
Android vs iOS:
There are now various frameworks available where you write your code against the framework and the framework publisher has a version for iOS and a version for Android.
The good news is you only need to write your app once.
The bad news is
you get to debug it twice;
you take a huge dependency on somebody else’s project;
you’ll probably miss out on a few corner-case features of each underlying OS & platform in the name of cross-platform compatibility.
I never moved forward with actually doing any phone / tablet dev, so I have no advice on which framework(s) might be better than others.
I might argue against Swift being preferred; Apple’s certainly not made an official proclamation to abandon Objective-C, and of course most of the libraries are still written in Objective-C. I recently saw a breakdown of iPhone and Mac apps from Apple that were written in Swift, and IIRC it was only a few small, random apps here and there. Swift just isn’t stable yet, even for Apple’s own use.
OP, cross-platform will be hard without commercial solutions that specialize in such. You might consider Mono to write in C#, or Xamarin for the same.
You could stay semi-platform-neutral by learning about Model-View-Controller, wherein most of the platform independent stuff can live apart from the UI.
You should have been at WWDC. Every presentation and code sample was in Swift. Aside from a few “you can also do this in…” comments, you wouldn’t have known Objective-C existed.
When Apple introduces a new dev tech, you basically get two years to get on board before they leave you behind. Those two years are up, stable or not.
Yeah. All you have to do is look in the store for some simple but useful app that’s plausibly a one-programmer effort. There will be 10,000 versions on offer by 10,000 hopeful devs. And all but the first dozen or so have only a handful of downloads.
Of those 10,000 devs 9,000 of them live in low-cost countries where $500/mo is a good living. That’s your competition. They’re cranking out an app every couple days hoping to get enough out there to actually make more than a dollar a day.
The odds of developing a killer app are low but that doesn’t mean it’s not fun and still potentially profitable to learn these skills. For an experienced programmer in business phone apps may be a little more OO intensive than your experience but it’s still relatively easy to develop code, besides the convenient tools there is an enormous amount of reusable code for every phone function. Phone app versions of conventional business apps are becoming common now. UI programming is a real specialty now so not every software developer needs to have experience in this area but it never hurts to expand your skill set and there may be much more of the conventional business app programming in the future where you aren’t developing a new app, just extending to a new platform.
I teach Android programming at a community college, so here are my recommendations.
I’d start with Android since the development and publishing environment is more open than iOS. To develop for Apple you need to have a Mac (unless that’s not an issue for you), and Apple vets anything you want to publish, which requires a fee.
Use Android Studio - it’s a very nice system. You need to know Java, up to and through understanding classes, inheritance and interfaces, and knowing collections is useful too. If you want to use a database, knowing the basics of SQL is sufficient to get started with SQLite. The basics of OOP aren’t really that hard, and the books I listed below help quite a bit.
There are several good books, such as Big Nerd Ranch Android (2nd edition) and Head First Android. The Android Developer’s site has some good introductory tutorials too. And of course, maybe you can take a college course!
If you’d like to learn Swift and development for Apple in an easy way, there’s Swift Playgrounds for iPad which generates Swift apps for iPad and iOS. It’s geared for kids, and I haven’t played much with this.
If you’re thinking “write-once, run anywhere”, PhoneGap is the granddaddy of them all. A neighboring college uses it for their courses, since you don’t need to learn Java. Instead you get to learn JavaScript, which isn’t really any easier. These become hosted apps, something you can’t publish to a Play store.
Well, yeah, I didn’t go to WWDC, but I’ve watched the Mac OS X (err… macOS) relevant sessions, and Objective-C is definitely still alive. I think the question is whether or not Mac OS X is still alive – it doesn’t get a lot of love.
I know at some point I’m going to have to transition to Swift, but that’s not today.