views:

505

answers:

12

I have been doing web development for the past 3 years, mainly in PHP and MySQL. Lately I have been changing into the C/C++ area. The reason is that I want to try out something new and expand my skillset before deciding which area I want to focus on.

I would like to get advice from you guys about this. Is this a good idea? Is it a bad idea? For each, please give your reasoning, and if you made this change, how did you make it?

+2  A: 

You may want to stay in one area if you are sure it won't sink. Since nobody can guarantee you that, it may make sense to broaden your skills and try out various things.

Which is better, being an expert in one are or being a generalist, is very much dependent on two things:

  1. Your personality. Can you switch contexts from HTML to memory management and then to databases or rather focus on one thing.

  2. Your local job market. Does anybody need a PHP guru or rather a guy who knows frontend, backend and also social enough to talk with customers.

Think of those two vectors, where do you recognize yourself? What is needed where you live? Then take a calculated decision.

Developer Art
+6  A: 

If you are working for a company then you might be able to switch to a different department or project, especially if you have a reputation as a hard worker and fast learner. If you're self employed or looking to work for a new company it might be tougher as people want to hire someone with proven experience. Personally, I like to have job security. If I want to try something different in my career, I'm going to try and learn the skills on my own time (if I can't be paid to learn them at work) before I make a move.

TLiebe
+2  A: 

I switch from PERL to .Net architecture a while ago and I can say I don't regret it. Granted I didn't really have the choice, but I still think it was a good thing.

If you are a quick learner, it's rather easy to do the switch, but you got to be willing to also change the way you write code. Different language also means different philosophy in coding.

David Brunelle
A: 

I would suggest trying out some open source projects, or doing some side work, before actually changing careers. This will help you figure out if its really where you want to go before you give up one job for another you may not like.

But I would say always expand your skills! Try anything new, it the only way to keep sharp. I think you will be more of an expert by having a wide skill set then by focusing on one small area.

ryanday
A: 

This is almost like a pediatrician saying that wants to become a brain surgeon. It is possible, but it takes training and practice. Your best bet I think is to get involved in an ongoing C++ project, at your company or an open source one, get your feet wet and get a feeling for what is like to program in C++.

Otávio Décio
I like the way you implied the difference in skill involved.
int3
Bad analogy. There are a lot of involved web projects that are well designed using high level comp sci. concepts. The language doesn't really communicate or imply skill level whatsoever.
simplemotives
A: 

Hi,

I've done the reverse move. Used to develop in C/C++ real time programming and moved to Web Applications and JAVA.

Here what I think, If you worked and gained a certain amount of respect and professionalism at your environment you should consider staying and gaining more exprience.

C++ is very gratifying if you like full control of your code, even at the smallest details. With Java and Web Application I feel a bit like I weave software and not always write it. (In the sense that I take many different applications and weave them together into a web application platform)

Web Application is dynamic and there's always something to learn while C/C++ is more of a "Knowing all the tid bits" of the language and how things work on every layer.

If you like the details and the control go for C++. If you just want to try something new out of curiosity, I would recommend to stay with Web Application.

Ben
A: 

Learning new languages and skills can be very beneficial even if you don't change your career. It opens your mind to different approaches and ways of working. If you do change career you're previous experience will help in the same way.

Be prepared to have to go a bit further to prove yourself. PHP experience is often looked down on a little by other language practitioners, especially in areas like C++ - but not everyone is narrow minded, so don't let that put you off.

That said I would recommend .Net over C++ as both an easier progression and higher chance of being taken seriously early on.

Whichever way you choose be sure to tap into the best books, forums, groups and other resources. For C++ that means reading the Scott Meyers books (Effective C++ et al), looking into the Boost libraries (once you're confident with the language), and ideally joining the ACCU.

Phil Nash
+1  A: 

I made the switch from embedded C to C++ in a distributed computing environment a few years back. It was a career based decision and I am more than glad that I made it. If it makes career sense for you, then by all means go for it. Personally, I would think that moving from an interpreted language and building a skill set in a compiled language is a good career move since it will widen your knowledge based considerably.

With all of that said, it only makes sense if the change is something that you can do safely in the current environment. If you can move in your current company into a C++ role, go for it. If not, start looking into larger C++ open-source projects. Spend a lot of time learning C++ idioms and how it is really used as opposed to the really neat stuff (e.g., template metaprogramming). The rest will come naturally as you become more experienced.

D.Shawley
A: 

Both ways are good actually, becoming a master on one field and on the other hand becoming fluent on many fields.

But i think, like learning different human languages, learning new things expands your horizon and your vision of the craft; thus enables you to look at things from a higher level.. Some of the ways to do it, are by starting with pet projects on your own or by participating in maintenance jobs..

LostMohican
A: 

My advise is staying with the web is better off. When I work for a company, I want to be able to grow my skill sets while staying relevant in the industry. I believe web applications are the future, and I would highly recommend the following article for more insights:

All Programming is Web Programming

Ryan Liang
A: 

I recently made the jump from C++ to C#, and while that may not be quite the leap from web to OOP, it was still a great opportunity to learn something new.

(I can't even imagine an argument against learning new languages and programming styles.)

I was lucky enough to be able to move between departments easily enough. If you are able, request a switch to another and give that a shot. Be ready however for the switch. Your head will be buried in books and websites (perhaps a development community site) for most of the day, and you'll definitely feel like you're always falling behind in your work.

Inevitably, it doesn't matter because you'll come out more marketable, and at a time like this, that's all that counts.

One last great reason to try out something new, if you decide you like both, you'll be able to bridge between the two in your applications and fully understand dataflow from front to back ends.

Norla
A: 

i made a partial switch from c/c++ to javascript .partial in the sense that i am a still c++ programmer mainly but i often end up writing javascript.i found the switch preety easy and interesting.in the begining absence of debugging tools was annoying but slowly i adjusted my mind set from compiled environment to interpreted environment and lately it has been widening my undersatnding of things.So my recommendation is to give a try.

pushkarpriyadarshi