Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm green at programming but not entirely noobish. I taught myself some Java about five years ago, and I learnt me some Objective-C recently.

I was talking with a Unix guy a while back, and he said that if you do your object architecture and design very completely and correctly, cross-platform development becomes really easy. All you have to do is take the description of each element and implement it. Since your design is so complete, each individual element is composed of relatively simple tasks.

I'd like to get some feedback on that concept. In theory it makes sense, but programming is about execution.

And if you agree with the concept, can you point me to some material that would help me understand how to build those kind of complete, specific designs?

share|improve this question

migrated from Jan 16 '12 at 10:33

This question came from our site for professional and enthusiast programmers.

Conceptually, yes, cross-platform development becomes really easy. Practically? Not necessarily. You still have to deal with the idiosyncrasies of each platform when you go to implement your elegant and well-thought-out design. – Cody Gray Jan 13 '12 at 9:52
Cody, thanks for the reply. Do you have any knowledge of good guides for the design process? – Le Mot Juiced Jan 13 '12 at 18:04
What language would you use to express a "really specific, complete" design?" How would it improve on a modern programming language? – kevin cline Jan 16 '12 at 19:36

Big upfront design is proved to be not useful for any project. You can design as much as you want, you will never get to a point when you will be able to specify everything so detailed and so clear that porting to another operating system will be very easy.

Don't get me wrong, design is necessary, but not in very much detail. It is usually impossible to know upfront all the problems you will encounter on your way to plan for multiplatform deployment.

However, other practices and principles can and will help you achieve a design that is easy enough to be modified for any reason.

Look for these: - SOLID principles - Design Patterns - Clean Code - Orthogonality, Decoupling, etc - Test Driven Development + Unit Testing & Use Cases

These techniques, even it takes some time to learn, will help you much more. Basically, what you essentially need is a code sufficiently decoupled and enough orthogonal so it will allow you to do implement the modifications.

There are also some classic design patterns when you have to interact differently with different systems (check out Gateway, Adapter, Facade patterns ... as first thoughts).

share|improve this answer
I dont know about "any project". Those airplane designers do a pretty good job. I'd be worried if they were holding a standup meeting and discussing implementing landing gear mid-flight. – Chris Shain Jan 14 '12 at 17:15
I think we could argue about this for eternity. I agree with you, that an "landing gear control system" requires more rigorous design. But if you just design it for a year, implement it for half a year and document it for another half ... it will fail. Iterative development is always better, and I said nothing about standup meetings. And I also bet that Le Mot Juiced will have much more success with a nice decoupled and orthogonal design based on my answer and iterative development than with big upfront design. – Patkos Csaba Jan 14 '12 at 17:22
Absolutely. I am a big fan of iterative design, and I think it works great. Just wary of absolute statements. – Chris Shain Jan 14 '12 at 17:27
Ah, OK, sorry for the misunderstanding. – Patkos Csaba Jan 14 '12 at 17:44
Iterative design only works if failure is cheap. Airplanes fail expensively, so you can't iterate the physical design. You can however iterate the computer model, and this is exactly what they do in practice. – Joeri Sebrechts Jan 16 '12 at 12:08

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.