If an app is developed for both iOS and Android, is that basically twice the work?
What I mean is, suppose a programmer creates an app for iOS. Then, he/she decides that it should be available for Android users, too. Is the programmer essentially starting from scratch (except that he has the idea already), or are there just a few tweaks to the code to make it work for one platform over another?
Similarly, if one writes software for Windows, but wants to make it available for Mac products, does he/she start over writing a whole new program?
There are utility programs that (more or less) translate Android to I-stuff. You might have to do some fixing and optimizing after the translate, though.
So far as I know, there are none that go the other way. So if you intend from the start to do both, you are probably better off starting with Android. I haven’t researched it lately though, that could have changed.
And you’ll need to account for the different aspect ratios & graphics standards (that is, I-stuff has graphic standards, Android has guidelines).
It can be “translated” but the systems have different design guidelines. Android, for instance, has the 4 buttons under the screen. Also, some of the button designs are different. You have to redesign the whole app for iOS (or Android). You can share data, servers and everything else, but the apps are different, most of the time, even regarding screen resolution. When creating an iOS app you usually have 3 resolutions: one for iPhone 3, one for 4 and another one for the iPhone 5. On Android you have even more resolutions to work with.
In general, if you want software to work on multiple platforms (Android and iOS/Windows and Mac/etc), you have a few choices:
The first, as you mention, is you totally re-write it. This isn’t as huge as writing it the first time; a lot of the time, you can re-use some or all of the logic with a few syntax changes. Graphics-wise, though, you generally have to rewrite it all.
if you know from the beginning that you want multi-platform, you can look around for frameworks that support both. The problem with that is that you almost always run into some issues; something doesn’t work right on one or the other, or some feature isn’t supported. It’s a bit of a risk. I gather with modern smartphone apps this has been minimized to some extent, as everyone wants their stuff to run on all phones. But it’s still far from perfect.
you do what misling said: you find something that translates the code from one to the other. You end up with two separate projects that have to be separately maintained, and it may or may not work well.
So it’s basically work, and there’s no magic that will just make everything work fine. The closest you get to magic is to not go the app route at all, and make your stuff work in a browser. That way you get phone/mac/windows/etc all in one. But there’s still problems with that; even with the best responsive design you can’t get really great looking, fancy stuff that works on all screen sizes, so you end up making your screen designs really simple, or you write specialized code for each different sized device.
This is why us software people tend to have pretty good job security.