Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I have been a C++,Qt programmer for the last 3.5 years and have hit a plateau in terms of doing something new. Work has been repetitive and routine. I personally believe it is time to move on but off late I am getting more offers in mobile development like Android,Iphone etc. The latest offer I have is for objective-C based profile.

I do not have the slightest idea about objective-C apart from that it is Object oriented C resembling C++ but not exactly a clone. Questions in my mind are

  • what are the pros/cons of this careers switch or for any such switch?
  • Is it good for one's career to change domains after sometime?
  • How difficult it is to get back to one's previous area of proficiency?

Thanks

share|improve this question

migrated from stackoverflow.com Jun 22 '11 at 3:14

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

    
Did you get an actual solid job offer as in "Hey, can you start tomorrow?", or a request to come in for a chat to see if you fit? The ease of the switch may play a part on your willingness to do the switch. –  tehnyit Jun 22 '11 at 8:05
    
Why not try going for Samsung's Bada platform? It uses C++ so it may be an easy switch for you. Also, it seems more like a company issue than a domain issue, have you looked for other companies that use C++/Qt? –  Jetti Jun 22 '11 at 14:19
    
@Jetti.I have got the offer after a C++ based interview which focused more on the OOAD part and I got through. The offers I have got for C++/Qt are paying very less compared to this offer. Otherwise why would I consider it. Putting food on the table is one's first priority considering that inflation in my place is going through the roof. So you get my point mate. And as far as BADA is concerned I don't like it. I have also worked in Samsung and it is nothing but a wrapper on C code. They have taken there existing proprietary C based platform and added some C++ wrappers and voila BADA is born. –  rocknroll Jun 23 '11 at 16:23

8 Answers 8

up vote 5 down vote accepted

Programming is programming. Mobile development is hot. Desktop development is not. If the money is right, go for it. You will use many languages in your career. I have programmed professionally in COBOL, FORTRAN, C, Ada, C++, Perl, Tcl, C#, Java, Ruby, Javascript, Python, and Groovy. The more languages you know, the easier it is to move to a new one. It's no big deal... you spend a couple of months with the documentation handy, and gradually refer to it less and less.

share|improve this answer
    
+1 - The more languages you know, the easier it is to move to a new one. –  webdad3 Jun 22 '11 at 14:52
    
Professionaly I know only C,C++ .Off late my close programmer friends have been telling me to try something completely new, it will expand my horizon of thinking. And I've been tempted to give it a try. Just to move out of my comfort zone. Ofcourse I could again move back to C,C++ role if the new role is uninteresting atleast I won't have the guilt of not giving it a try. –  rocknroll Jun 23 '11 at 2:11
    
Also, the more languages you know, the easier it is to get a job that requires a language you have never used. They figure that if you have know a lot of languages, one more should be no problem. That's how I got the Ruby job. –  kevin cline Jun 23 '11 at 21:24

Objective-C is somewhat similar to C++/Java, with stupid looking syntax. Sorry...personal bias...I never liked the look of Objective-C. However, it's not so different that you would have an incredible amount of difficulty learning it or anything like that. Anyways:

Pros -
- Learning new languages enhances your programming ability and knowledge
- Your skill set will be more diverse
- You could hit it big with a popular app
- You'll stay interested and entertained in your career
- You might be able to get more desirable careers based on your interests

Cons -
- You have to be a beginner again! You may have forgotten what that's like
- You may not like the new field
- Perhaps a lower salary since you're not that experienced

However, there's no need to leave your old skill set behind. It wouldn't be hard to start learning Objective-C on the side while continuing what you're doing. Start it off as a hobby and make it a career if you find that you enjoy what you're doing. This way, you could minimize the risks involved.

share|improve this answer
    
Hi Casey, I couldn't have chosen two best answers so I have upvoted your answer. –  rocknroll Jun 23 '11 at 2:07

Moving from your career (from whichever language to Mobile App development/Web application development is always an addon to your career strengths. Jumping domains doesn't mean that you are losing the major part of the domain it also means you have hands-on many different domains (commonality on those domains).

Technology upgrade should happen in everyone's career. Just move-on. Rather than sticking only towards Objective-C/Android development. Fix yourself towards some main stream languages like RoR, Java, .Net etc., Learning a new language is just a matter of learning a new syntax, some languages have many wonderful concepts underlying in it.

share|improve this answer
    
+1 Technology upgrade should happen in everyone's career –  webdad3 Jun 22 '11 at 14:52

I'd venture to guess that if you feel that you've hit a plateau after 3.5 years, chances are that you're doing something wrong. Generally, when working as an engineer, you find that the more you learn, the less you know. I'm sitting at 9 years with the same company, 6 years working in the same domain, but as technology is always evolving, there's no way to stay on top of everything and reach a "plateau" of any kind.

/rant

Now.. If you're hellbent on looking elsewhere, does language really matter all that much? I'd think that an change in industry (if that isn't what you're looking at doing) would be a greater challenge than a tech stack change. Learning a new industry and a different core problem set would pose a far greater challenge IMHO.

share|improve this answer
    
It may be true he doesn't have opportunity to expand in his present job, but he could find another job in C++ where he could expand. –  Jeremy Jun 22 '11 at 14:03

I've recently been transitioning from Rich Desktop development to Web. The pros are that you begin to diversify (more job/contract opportunities match your core skills). The con is that if you switch too often, you don't give yourself enough time to become very skilled.

For example, I was a C/C++ developer from 95-2000. Switched over to Java from 2000-2003 and moved to .NET in 2003 focused on desktop and middle-tier development. When WPF arrived I moved to that (2006), and while I've always been able to do Web, I've started focusing heavily on that over the past few years with ASP.NET MVC. During each of the transitions it was never a hard cutover...I tapered off on the previous area of focus as I ramped up on the next.

As far as being able to go back. You might have to reacquaint yourself with Syntax (for example it takes me a while to get comfortable with C++ on a new project), but the skills you learned while on the previous tech stick with you plus you have a new perspective from using different stacks.

On the con...be careful not to switch too early. It takes some time to really become familiar with a new stack. Give yourself enough time to get some depth with a new tech.

share|improve this answer
    
Couldn't agree with your more mike. For a while I worked on .NET and then again on C++. I gained the confidence of working on different areas. Now if my project demands interfacing with .NET components I can relate to the complexities involved and convey my requirements accordingly to the .NET developers. –  rocknroll Jun 23 '11 at 2:14

I have changed core proficiencies more than once in my career, each time making a big leap forward. Programming is a constantly changing world and you need to always be changing to keep up.

Occasionally I will see a job opportunity I could have had if I had continued to go down the embedded C route, but ultimately I am more happy with web development in Rails (my current skill set) and I make more at it too.

share|improve this answer

As a side note; going to Objective-C from C++ is about like going from C to to C++. You are going to go from a statically typed language to a dynamically typed language. Although, in my experience of programming; it is always much more important that you understand the concepts of programming versus just tons of random languages.

If you know concepts, then going to another language is just learning the language and how to accomplish the concepts in that language.

share|improve this answer
    
C, C++ and Objective-C are all statically typed. You sure you don't mean something else? –  Itai Ferber Jun 22 '11 at 3:42
    
@itaiferber: The OO part of Objective-C is dynamically typed. –  mipadi Jun 22 '11 at 15:07
    
@mipadi I wouldn't say it was dynamically typed; that's just an instance of polymorphism. 'id' is still a static type, and is still required for creating objects. No? –  Itai Ferber Jun 23 '11 at 0:52

When you decide to change(here.. your core) is not advisable.

Its like you go to school, learn english from scratch A,B C.... and then after few years you decide to learn japanese and wish to become something else, but I assure you it won't as good as the ABC's you first learnt.

I'd say 3.5years is way too early, I believe there's lot to learn and accomplish, starting complex pet projects and joining communities will help in this matter;if you are bored with it at your workplace.

Find a way to showcase your ability, so that you can seek advice from others as well as give advice.

share|improve this answer
1  
Code is code. The more you write the better you get. Different languages approach it from different angles. I have found that learning a radically different language (i.e php from .Net) helped me with my .Net code. I think you are right in your other suggestions as far as doing personal projects as well as joining communities. –  webdad3 Jun 22 '11 at 14:54

Your Answer

 
discard

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

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