I would like to know what would be needed to study and understand in terms of computing platforms and OS (Linux, Mac OS X and Windows) to become a software porting engineer.
migrated from stackoverflow.com Feb 15 '12 at 15:05
closed as not a real question by Morons, gnat, Yannis Rizos♦ Feb 24 '12 at 9:44
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, see the FAQ.
That's an incredibly broad question.
Generally you'd need to have a basic knowledge of each platform, plus have a preferred cross-platform toolkit (Java, Qt/C++, c#).
Once you know a cross-platform toolkit you know 90% of your code is going to be the same and its just a case of looking up functions for each platform when you need it to be. Such as getting the operating system version number, as an example.
Really you need to start with the toolkit/toolchain and work from there.
This answer is too broad. There are no general "porting software" experts. Most porting software experts focus on a particular programming language or environment.
The most typical scenario for porting is a C++ application. Usually, the porting will consist of detecting the platform-specific functionality and removing or abstracting this. Afterwards, the abstraction can be implemented for multiple platforms. Apart from being a huge refactoring job (often with cross-cutting concerns throughout the codebase), the software porter will have to adjust the build system and installation to correspond to the target platform.
A good way to start with this is to read through multi-platform codebases. StepMania is a good example. Familiarise yourself with as much cross-platform frameworks as possible: Qt, OpenSDL and Java are good candidates.
You have to be familiar with the platform the application is coming from and the platform the application is going to. It is really as simple as that. This is not a particularly common task (in the life cycle of the application), so there is not exactly a ton of need to be filled in this arena. Whether or not you are a "porting expert" will be a lot less relevant than your expertise of the thing being ported in 99% of cases.