How difficult is it for web developers to transition to building mobile apps?
It is not uncommon for clients of web developers to come and say, “Hey, you did a great site for me. Can you make an app for Androids and iPhone too?” And that is when the web developer Googles “How difficult is it to transition to building mobile apps”.
Often, the client does not understand that the two are quite different, even though apps seems like a logical transition from web. After all, more and more people are using their phones more than their desktop machines.
While some would argue that programming is programming. In my humble opinion, I think it is quite difficult for web developers to transition into building mobile apps. Web developer and app developers are in two quite dissimilar worlds. First of all they are not programmed in the same language and they do not use the same development tools, nor development environments.
iPhone and iPad apps are programmed in Objective-C (the next generation evolution to the C/C++ languages). Actually, you can also program it in Swift too. (What is Swift? Oh, that is just another new programming language that came out in 2014)
And if your client wants an app for iPhone and Android, you have to write two different apps (pratically from scratch) in two different languages. And clients often want app on both platforms.
The Objective C and Java languages are code that are compiled into runtime executables. The web code, you just put up on the server and the browser just interprets it.
According to the book PhoneGap Beginner’s Guide by Andrew Lunny, it writes …
“your best bet for mobile development is to get a Mac and install Windows on a separate partition that you can boot into”
This is because to build iPhone apps, you have to build it on a Mac, and typically using the XCode IDE. The SDK for building iPhone apps will only run on Mac OS X. Whereas, you can develop Android apps on any major OS (Windows, Mac OS X, or Linux).
That’s another difference from web development (which you can build anywhere). And web development does not require download of SDKs like app development does.
SDKs are “software development kit” and IDE are “Integrated Development Environments”. For Android apps, many use the Eclipse IDE with special plugins for Android development.
The PhoneGap Beginner’s Guide also points out “just a few other important tools you’ll need to get up and running”. They include …
- Apache ant – like a make tool
- Ruby – the droidgap build tooling depends on it
If this is sounding quite different from web development, it is.
PhoneGap – bridge between web and app development
And this is not even native app development. PhoneGap is like a bridge between web development and app development. Wikipedia says …
This is not how real apps are built and are not truely native mobile apps. But it can serve as a bridge if you are trying to bridge the gap between web and app development.
To give you a setup workflow for developing Android apps (more details here), this is what one might do …
- Install Android SDK
- Install Java SE Development Kit
- Setup Eclipse Workspace and select packages in the Android SDK Manager
- Create Android Virtual Device in Eclipse so you can run emulators
- Compile and Build
You can also connect via cables your computer to your smartphone in debug settings.
In web development, you upload the files to the web server or host and your web app is live. For apps, you have to deploy to the Google Play store and the Apple Apps store.
As an example, to deploy to the Apple Apps Store, follow this workflow diagram on their site. It involves …
- Enrolling in “Apple Developer Program”. (Yes, you have to join the Apple Developer Program if you want to deploy an app on Apple iTunes Apps store)
- To distribute outside of the Apple iTunes Store, you have to join the iOS Developer Enterprise Program and sign your application with a Developer ID certificate.
- Testing app on multiple devices and systems
- Upload metadata about your app
- Submit app
- Release app
Whew! That’s is a lot to learn just to develop an app.