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

I know that language is just a tool and it's all about creating product. But if you are all about enterprise and than you change to mobile development - how do you manage it?
If I am used to PHP and it's framework and switch to Ruby - how do I deal with it? With learning and getting experience with Rails, with Ruby language and so on.
What if I was C++ programmer working on standalone programs? And than I switch to Python/Django for web?

In general, here are my questions for all the examples above:

  1. Is it possible to switch your specialisation as software developer? From web-development to enteprise, from standalone to mobile, etc. If yes, how? Or should I stick with one path to become expert in it?

  2. How do you learn new languages? I mean, there are new frameworks you need to learn, and if it's different development sphere - say, mobile after web-development - you need to learn basic stuff for this sphere, right? How do you handle it?

  3. Is switching language/career path hard in terms of getting new job since you dont have any experience in this language? Do you downgrade in salarys?

Please explain it all to me! How do people handle it? I am 100% sure I love development, atm I love PHP/RoR and web-development, so I use PHP as my main language at fulltime job, but I don't want to stick with it forever and I want to be able to change languages or/and maybe development direction (mobile, standalone, enterprise). How do you do it without hurting your career, or is it impossible?

share|improve this question

closed as not constructive by gnat, Walter, Yusubov, Glenn Nelson, Dynamic Dec 20 '12 at 20:52

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.

"Is it possible to switch your specialisation as software developer?" ...Sure, but its better to add a specialization. You make a very incorrect assumption here that a programmer can only be good at one thing. If you think of it as 'adding' a specialization, now you are both a web and mobile developer. Does that sound like it will hurt your career? – GrandmasterB Dec 20 '12 at 19:40

Being a good software developer means constant learning of new technologies, patterns, practices and languages. It all comes down to motivation. If you have motivation to do mobile development, you can learn it.

It is not a problem to switch between different paradigms, platforms and languages. Question is not if it is possible, but how fast can you do it. Some developers can do within days, some need months to reach levels of productivity as before.

Just like every kind of learning. Piece by piece. Don't try to hurry it. You will only hurt yourself.

Yes, it might be possible you will get lower salary from start, but if you learn quick, you can get it within few years.

share|improve this answer
@GeraldBlizzy You are obviously young and inexperienced. Few years is nothing in the long run. Especially if it gives you competetive edge in employment market. – Euphoric Dec 20 '12 at 18:52
@GeraldBlizzy: Errr... no. You might only need a few months to become functional in a new technology. A "few years" might get you closer to mastery of some technologies, but the truth is, you don't need to master everything in front of you. – FrustratedWithFormsDesigner Dec 20 '12 at 19:03

As for your first question, I do not see a reason you cannot switch specilization. I have not, but I dont see why I would not be able to take the skills I learned and translate them to a different specialization. Its all about learning new skills.

To answer your second point, I would ask you how did you learn the current language you are using. Then I would tell you to do that to learn the new language/framework you want to work with. Learning a new language is just a matter of reading, useing and modifying examples until you understand. I have found that learning a new language is not as difficult as learning your fist since you alread have a knowledge base and can make comparisons from the language you are learning to the language you know to help understand the new language.

share|improve this answer
Yep but for jobs-market people would rather prefered someone experienced in certain platform/language rather a guy who is programming for 5 years bu is newbie in this certain platform/language – Gerald Blizzy Dec 20 '12 at 18:47
Employers want bright individuals who have a solid base and who they are able to teach. They want someone who they can develop. If they are looking for someone with 5+ years experience, it is so that they can come in and do more advanced work right away. – DFord Dec 20 '12 at 18:53
  1. Yes, it is possible. How is a matter of finding someone willing to hire you for Technology Y even though you have more skill in Technology X. I've done it once between companies, and once within the same company. It's a little harder than getting a new job with the same technology as you've worked with before, but it's not impossible. You might have more luck finding jobs through your personal network and connections than on job-boards online, because people who have a personal connection to you might be more willing to take you on in a new technology than people who've only ever seen your resume and nothing else.

  2. I start by setting up the basic tool set, reading some documentation, and doing a couple of simple "Hello, World!" applications. Depending on how similar the new tech is to what I already know, I might start with more ambitious projects. Also, you'll learn stuff as you go. I've been doing web development of various flavours (PHP web apps, JavaEE web services, etc...) and I still learn new things. You never really finish learning.

  3. Maybe. If a company hires two developers to work with Technology Y and one of them has 5+ years experience and one of them is experienced in Technology X which is similar but not the same, it's possible that the less experienced developer could get a smaller salary because they are not considered "expert" in this field. Other factors that might influence this are: how in-demand are expert-level skills for Technology Y in the overall industry? How badly does the company need expert-level skills for Technology Y? Of course, once the less experienced developer is considered "expert", their salary will go up. It varies between companies. Not all do it, but I know of some that do. If you're really worried about this, you could do little hobby projects in Technology Y in your spare time so that you can show to a potential employer that you have some experience.

share|improve this answer

How do you learn new languages?

By reading, and by practice. Reading is important to gain a full understanding of the new language. Reading just one good book on any technology puts you far ahead of most developers. The problem with reading is that you often learn that the rest of your team is writing a pile of WTF.

Is switching language/career path hard in terms of getting new job since you dont have any experience in this language?

Advanced shops hiring for the long term don't care if you know their chosen language. They hire based on ability, and assume that the new hires will have little trouble learning a new language.

It can be harder to get contract work in an unfamiliar technology, but it's not impossible. I got hired to work on a Ruby on Rails application with no experience in Ruby or web development. Almost no one had Rails experience, and I was able to convince them I could and would learn quickly.

Do you downgrade in salarys?

I would not. If you think your current job is a dead-end, then learn a more popular language on your own, and find a new position before the old one ends.

... I want to be able to change languages or/and maybe development direction (mobile, standalone, enterprise).

So do it. There are thousands of developers who started writing mobile apps at home for fun.

How do you do it without hurting your career, or is it impossible?

You do it at home instead of watching TV or playing video games.

share|improve this answer

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