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 currently a web developer building web apps in PHP and Javascript. I really enjoy the programming aspect more so than the front end design side of things. I would to like to start to focus my attention on this with the aim to becoming a software engineer in next couple of years.

So my first thought was to go and learn C++ but is this the best thing to start? In the future I would like to work on developing things such as operating systems and native applications.

When I look at at engineering jobs at say, Google, Facebook, Apple, they all appear to ask for C/C++ AND OR JAVA. Currently, I know none of these, but I am familiar with generic programming concepts such as loops, functions, oop etc. Also, out of C/C++ and JAVA which is the more probably chance of it getting me ahead in my career?

My problem would be that while learning say 'C++' what would I use it for? I currently have no use for it but really would like a career as a serious engineer rather than just web based stuff.

I have a mac and PC running linux and would like to start with some example projects and tutorials to just get a good understanding of the language

share|improve this question

closed as off topic by gnat, Robert Harvey, MichaelT, Jalayn, JB King Mar 21 '13 at 20:01

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

career advice, as well as what language you should learn next are off-topic per site FAQ – gnat Mar 21 '13 at 16:44
Why aren't you a software engineer? Title? – Sign Mar 21 '13 at 16:49
What do you mean? – Chris Mar 21 '13 at 17:29
Web developers already are software engineers. – iCanLearn Mar 21 '13 at 17:39
@iCanLearn ,no a software engineer IMO is a lot more than a web developer - and i dont consider myself a software engineer..yet. i'm kind of in the shoes of Chris and very demanding from myself - A s.E creates a library , a dev uses it. A s.E does serious architecture, dev implements it.A dev can built (awesome) things , a s.E designs bigger things. We all (devs) realize this sooner or later when we involve in large scale projects and new technologies... -- After all its a never-ending learning process, but for the question's shake i am starting over with Java and SQL from scratch... – Pan Chrono Mar 21 '13 at 17:53

My problem would be that while learning say 'C++' what would I use it for? I currently have no use for it but really would like a career as a serious engineer rather than just web based stuff.

In the future I would like to work on developing things such as operating systems and native applications.

share|improve this answer
Yeh, I see that. lol. But currently, building an OS is way beyond my scope. I dont expect to learn C++ then bang out an OS. Before that, I would need to build simple programs but for what? I get asked for web sites and apps every day but ive never been asked for software yet. – Chris Mar 21 '13 at 16:34
Sorry, couldn't resist. :-) I suspect your question may be closed I think it falls under 'career advice' which is off-topic here. BUT to answer your question anyway - identify a common problem you, a family member or friend suffers from that you could combat with an application written in your chosen languages and go from there. I wouldn't bother reading reference books cover-to-cover. Pick a problem, solve it, feel the sense of accomplishment then rinse and repeat until you're proficient enough to get a job doing it, then climb your way up to the big dogs (Google, fb, etc). – Anonymous Mar 21 '13 at 16:37
Ok, thank you. I guess I could build command line accounting software and things like that , – Chris Mar 21 '13 at 16:38
@Chris - Good place to start. :-) – Anonymous Mar 21 '13 at 16:57
That's the real thing you need to look for. Find a problem you have that you can solve. If you're solving a problem you personally have, you will have the motivation to make it perfect, where as if you were just taking our suggestions you would just get it done. Having one very polished professional project says much more than having a bunch of projects that work but are essentially throw-away projects. – Brian Green Mar 21 '13 at 17:28

Google and Apple will both concentrate on your algorithm and general problem solving abilities more than the languages that you know. As an engineer, you're generally expected to have a solid knowledge of data structures and algorithms (as well as at least a high level understanding of complexity analysis). Also having an understanding of operating systems and databases (RDBMS, NoSQL) would likely be expected as well.

The specific language (while each have their respective learning curves) is just a form of expression once you understand the underlying principles of CS.

share|improve this answer
Makes total sense! Do you have any suggestions as where I can develop those skills? Data structures / algorithms etc. I have no formal CS background, im self taught so there is a few gaps. – Chris Mar 21 '13 at 17:31

My suggestion, would be to study Object Oriented Programming for PHP, then study OOP books that are taught with Java examples - because at that point you wont have to know Java, but you will be able to understand all the examples. At the same time watch every Robert Martin, Uncle Bob, Clean Code, lecture video you can (youtube, vimeo, etc).

it wont make sense at first, and he will never mention PHP, but in the long run it will help you immensely. If you study OOP, and Clean Code - you will be an awesome PHP programmer, and it will then be much easier for you to learn other languages. Robert Martin also throws in some interesting programming history lessons from his own experience, so you get a nice view for how C, C++, etc came onto the scene.

share|improve this answer
Thanks! Yeah OOP is a difficult concept to grasp for me in real world situations. I'm using MVC in my php now but i've still not got OOP ingrained properly. – Chris Mar 21 '13 at 19:57
Cool! Yeah it takes a while - but its amazing!! Especially when combined with Clean Code ideas. I would also suggest checking out Nettuts+ they have many free tuts that go over OOP in a PHP context. and if you can subscribe, there are many in depth courses with lots of hours of video tuts. – cartalot Mar 21 '13 at 20:18

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