Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

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

If I begin my career (first job) with developing on the iOS platform, does that lock me in into iOS and Mac OS X development only? By locking me in I mean will that create barriers for me to switch technologies as I would be mainly working with Objective-C. If yes, does that make my career choices limited?

I'm interested in comparing this with Android development, which if pursued will leave me with Java skills (correct me if I'm wrong) which I can use elsewhere.

share|improve this question

closed as not constructive by gnat, Kilian Foth, thorsten müller, Jalayn, MichaelT Apr 16 '13 at 14:49

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

up vote 11 down vote accepted

Learning to develop Android Applications in Java is going to give you some basics in Java development. But your primary platform is mobile device so it is not going to give you any knowledge of how to use Java on a backend server. Even though the language is the same the problem space is different.

Thus learning to develop on the iPhone using objective-C is going to give you some experience with Objective-C and OO in general. It is not going to make you a MAC application developer or an OO developer. Though you will be able to apply your knowledge there will be a whole bunch of new stuff that you will need to master.

In both cases what you learn will help you by giving you experience in general. Neither is going to lock you in but then neither is going to teach you everything you need for a particular language or problem space. There will always be more to learn and new techniques to master.

In your next IPhone project build the back-end in C++ just to give yourself the opportunity of learning a new language (while still remaining within your comfort zone). Then each new project learn something new.

share|improve this answer
Thank you! That's what I was looking for. Wish could accept the answer twice. :) – Jungle Hunter Feb 1 '11 at 7:11
Some additional advice: spend some time learning a few languages. After a certain point the similarities show, and you'll be able to learn a new language in a few weeks or a new application framework in a few months. – Hack Saw Feb 1 '11 at 7:29
@Hack: I'll keep that in mind. :) – Jungle Hunter Feb 1 '11 at 8:47

To avoid getting locked in to a particular technology, make a habit of learning new programming languages or frameworks on a regular basis. Work on personal projects with technology you don't use at work.

Expose yourself to a new language every year if you have the time for it. The more background you have in other programming areas, the more you'll be prepared for the transition when today's mobile technology becomes obsolete.

share|improve this answer

Focus on fundamentals (algorithms, design patterns, et al). The language, framework, and platform are just tools to get the job done.

Once you learn certain development styles, you can easily translate that to any other platform.

Anyone can be a programmer; software engineer takes years of practice and training.

share|improve this answer

I am in a situation were although I am a .net developer contracts have come up for other development. Because of this I must learn other languages. What I have found is the opposite, learning a different language and environment actually helps you to negate lock in, you also learn to appreciate the languages more in an overall sense.

My biggest boon however is learning to look at the same problem space in different mindsets, now I have a more gestalt view regarding my projects as a whole.

So in the end I would suggest EVERYONE learn more than one language and environment, the subtle differences help you to become a more employable and empowered developer.

share|improve this answer

It doesn't matter what technology you start with, lock-in is a result of your behavior and your employer's attitude. If you work at being the "go-to" guy for iOS developlment, you'll find yourself locked in to iOS. If you bring your co-workers up to speed on what you do and make it easy for them to step in and work on your old code, you'll be free to move on to new areas.

If your employer is smart, they'll see that the software you write is easily maintainable and they'll want you to move into new areas. You'll never be locked in.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.