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've been really frustrated recently. It's so hard to get a C++ job. I learnt some J2EE, but I really don't want to do this in my career.

I am student, will graduate very soon. I am looking for C++ job, entry level. Except C++, data structures, algorithms, what else should I improve?

share|improve this question

migrated from stackoverflow.com Mar 8 '11 at 3:53

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

closed as off topic by Mark Trapp Dec 10 '11 at 18:16

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.

3  
I think that would really depend on WHAT kind of job doing C++ you'd want to get, wouldn't it? Do you want to work in games, or building desktop apps, or working on servers, or...? I think the most important thing I could pass on to you is to never think you'll be doing X as a career, because many times, you will be expected to diversify and branch out to deal with things in other technologies in the course of your job. –  birryree Mar 8 '11 at 2:16
2  
I have failed Amazon and Bloomberg's interviews. I just want to get a job about C++. Coz I am international student in US. So, getting a job soon is important for me since the Visa issue is complicated. –  Andy Leman Mar 8 '11 at 2:24
2  
Well respect for not wanting a Java job anyway. I don't like your chances. –  Matt Joiner Mar 8 '11 at 2:38
2  
@Andy - ruling out technologies as a new graduate is not really the way I'd go about choosing a company. You could end up writing C++ for some company that gives you a dead end job. I actually went from C++ to Java to C++ to Java/Python in my jobs, because the companies I moved to offered significantly better opportunities for me to grow and develop as a developer. –  birryree Mar 8 '11 at 2:43
1  
thank you everyone. Actually, the reason I mention C++ is that I want to focus something and improve dramatically. If I studying a lot simultaneously, I doubt I can improve quickly. And actually i didn't ruling out Java, I just not that into J2EE. Coz I fell not interesting by using SO MANY framework. Not free at all for me. I know, my opinion of is is naive and immature. Forgive me. –  Andy Leman Mar 8 '11 at 2:54

7 Answers 7

So hard to get a C++ job. I leant some J2EE, but really don't want to do this in my career.

So, getting a job soon is important for me since the Visa issue is complicated.

Instant red-flag moment. Get a job. Any job. Even if it's COBOL. Once you have a job and the visa problem is out of the way, then you can start looking for a job you want to do.

Queue my younger generation rant here :-)

My first job was cleaning louvred windows in two high-rise buildings that hadn't been cleaned in about forty years hence every single louvre (about 1200 of the mongrels) had about 10mm of gunk on them. Not soft gunk. This was gunk that could have stopped a shockwave from a 300 kiloton B61-7 nuclear bomb dropped twenty feet away.

I did that since the most important thing at the time was to get the money flowing in. Once that immediate problem was solved, then I started looking for decent coding work.

End rant.

If you can get a Java job, take it. You'll be very unlikely to be doing that same job in fifty years when you retire :-)

You still have the issue of how to get the job you want, but at least you won't be under so much pressure and stress.

share|improve this answer
    
thank you paxdiablo. Your real experience inspired me. I agree with you totally. I will try my best and grab every chance. thank u. –  Andy Leman Mar 8 '11 at 2:57
    
+1 for ur inspiration –  Shine Mar 8 '11 at 6:31
    
@Richa, I have to say that this is the first time I've thought of cleaning crap of a thousand-plus louvres to be inspirational :-) –  paxdiablo Mar 8 '11 at 6:37

You need to start thinking of yourself as a programmer, software engineer, or a software developer rather than a "[insert a TLA (three-letter acronym) here] developer". You will certainly end up working with many technologies over the years.

As for C++ (which I quit about five years ago and have no plans to go back to), it may be difficult to find jobs in it for two reasons:

  • there are simply fewer such jobs. Since mid-1990s: desktop apps started moving to the Web, a great "market share" of application development shifted to Java, LAMP stack and open-source options in general (Perl, Ruby, etc.) took their share as well, .NET came along, you get the idea
  • at the same time, there are now people who have been doing C++ for 20+ years and they are good
share|improve this answer

My simple advice is stop looking for only a particular language job. At your stage you do feel that working in one language or in one environment is way better than the other. But this is not the case. At the end it is about programming and solving problems. Doesn't matter if it's C++, JAVA, kernel programming, web designing. Each one is equally interested and equally boring. Consider e.g. if you get a job in C++, but the code is an intermediate library, which just past the request to lower level by changing the type. Will you like to do this or will you like to work on a server implemented in JAVA which gets thousand requests per minute?

share|improve this answer
    
you are right Manoj. thanks :) –  Andy Leman Mar 8 '11 at 8:26
    
+1 very good point Manoj, there is interesting and boring in everything. –  Anonymous Type Mar 20 '11 at 21:46

Let's try writing something that sounds like at least half an answer.

First of all, how confident do you feel about C++? From my humble experience, when people tell they are proficient in C++, this carries nearly no information at all. Some will say they master C++ and have no clue what template programming is. Some will say that, sure, they know OO programming, but when you dig a bit, you start to realize they don't know what a virtual method is. Some will say they only have a rough knowledge of it when they actually know way much of it than most people you know. And so on.

On the other side, people might expect very different skills from you. Some will consider template programming is not that important. Some will consider you are not even worth their time if you cannot explain C++ implementations of twelve design patterns of the Gang of Four, by heart. Some will say templates are the most important part of C++ but design patterns are useless. Some will consider low level details are not that important. Some will expect you to have a deep understanding of how your code is dealt with by the compiler.

C++ is a very broad language that is both high level (although not that much in nowadays standards; Ruby programmers are asked not to chuckle, thanks) and low level. It has its own implementation of the object oriented programming paradigm, and it allows to do a wide range of things with templates. People don't use it the same way, and not all people expect the same knowledge of it.

So in the end, which C++ is the one you practice? Which C++ practicing is your interviewer expecting?

The other point I see is, why do you want to get a C++ job in the first place? Will any job do as long as it is C++? What made you choose C++ over every other single languages? Is it because it is the one you are the more experienced with? Is it because you like its semantic? Is it because it is the most adapted to the kind of programming you like the most? If you apply to a job as a C++ programmer, being unable to give a solid reason of why you want to do C++ programming is a problem.

Answering those questions might help you answering your original question. Still, I am sorry for replying to your question with even more questions, but I still hope this gives you a few hints.

share|improve this answer
1  
you drove me think deeply. thanks..I will consider it carefully. Your points really make sense! "Good at C++" is one of the vaguest expression.... –  Andy Leman Mar 8 '11 at 3:13
1  
You are welcome. By the way regarding your point of frameworks, you are very right, and this Joel on Software article may interest you. –  Julien Guertault Mar 8 '11 at 3:23
    
@Julien Guertaul I just finished reading that article. Really deep sight and incisive. I understood what you tried to tell me. Thanks a lot! really. –  Andy Leman Mar 8 '11 at 3:37

If you say you have a good understanding of Operating Systems, is that what you WANT to do? You could work in a job working on embedded OSes, or working for the Microsoft Windows team, or working on Linux systems, like at Red Hat or Novell or IBM. Those jobs might be tough to find, and it depends on where you are willing to relocate to work on them.

You are focusing too strongly on just finding a job with a company dealing with a particular language, I think you should focus more on domain.

Large commercial video game companies will use C++ because it is the lingua franca of developing for consoles and PCs, and because of all the existing libraries and software written for C and C++. But many smaller/indie game developers make games in languages like Java, Adobe Flash/ActionScript, C#.

Other companies use a certain language out of concern for their customers. I worked in the defense space and our customers used C++, so the company used C++. Some customers wanted Java stuff, we we wrote Java stuff for them.

I worked in the security space, my company dealt in Java, C++, .NET, Visual Basic 6 - and I had to use Perl, Python, bash scripting, etc. on the side to do a bunch of stuff to make life easier. The company actually made a huge shift from C++ to Java because they wanted to take advantage of Java technologies and the Java web stack stuff.

If you want to do C++, and you can't cut companies' interviews for low-level work, then you could do desktop applications or the native application space. Many of these are still written with native languages to avoid having to install something like the JRE or the .NET runtime onto target machines. You can take your pick of many companies in this space, many companies still deal in this space (think of many desktop apps you use, they are likely written in C or C++ if you're in Windows).

But I think you should really ask yourself why you want to do C++, and what field you'd actually want to work in. Don't be so adamant about any particular technologies because you will be doing a variety of things in your career. If you're not constantly learning and growing, you're doing something wrong.

share|improve this answer
    
thank you birryree. It's really helpful and enlightened to me. Besides, I want to ask, if I would like to do something about desktop application development. What can I start now to learn , to try? Qt for GUI is more choice it turns out, what else? –  Andy Leman Mar 8 '11 at 2:56
    
@Andy - Every company is different in what they use, but if you can show that you have done relevant work/projects, it's always to your advantage. Qt is seen as a GUI framework, but it has evolved into a powerful cross platform development framework since it has GUI libraries, networking libraries, multimedia support, etc. I think if you want to get into doing native apps, Qt would not be a bad way to go. When I did native development, I used Qt, Boost, OpenGL, OSG, and a lot of other stuff. Platform specific stuff like Win32API was not typical because we were cross platform. –  birryree Mar 8 '11 at 3:01

For one, you should give some constraints (as was already mentioned) and based on those dig deeper into the respective tools, environments, APIs. You need to consider platforms, architectures, your own interests, development in the target industry of your interest etc ...

Examples:

  1. cross-platform GUI development - you may want to look into wxWidgets, Qt ...
  2. Windows drivers (driver writers, please spare me the argument about C++ in kernel mode ;)), which requires a very specialized skill set, mastering certain tools (WinDbg comes to mind) and so on
  3. Win32 development: learn the Win32 APIs, get an overview of the "subsystems" and architecture, get acquainted to the security model if you write tools that require special privileges
  4. on unixoid platforms there is still a variety of tools (dbx vs. gdb, pmake vs. GNU make, autoconf, automake, libtool) and compilers (GCC, SunC) you should master ... and then there are the libraries that make sense for the environment: pthreads vs. OpenMP, ncurses, pcre ...
  5. Embedded development in the automotive industry: check the MISRA rules (there is a set for C and one for C++)

Yadda yadda ...

The language and the basics are just the beginning. I guess what I am basically saying is that you should now add experience to your acquired knowledge. One way would be to join some FLOSS project in the area of your interest or one were you think you can make a difference - that way you can benefit from the experience of others who can give you a helping hand and you can improve your existing skills and make up your mind. Your question shows you haven't made up your mind yet :)

Bonus recommendation: get the book "Being Geek" and read through it.

share|improve this answer
    
The examples you give me is so helpful. Thanks. I think column 1 and 3 are what I interested. Thanks you! –  Andy Leman Mar 8 '11 at 2:59

Acquire some domain knowledge in an area where C++ might be applied that's of interest to you. Finance, gaming, scientific computing, graphics - knowing something about the problem space lifts you above being a mere coder. You want to have something to bring to the table besides your C++ skills.

share|improve this answer
    
+1, the question is too generic to give any more detailed recommendations. For example no mentioning of the target platforms/architectures ... –  0xC0000022L Mar 8 '11 at 2:21
2  
Failing that, you could BS your way to any job you want like most of our industry does. –  Zoidberg Mar 8 '11 at 2:21
    
thanks, I have pretty good understand in Operating System. I also have done some thing about Linux kernel. What can I do about this or relative to this? Or based on this experience, what filed is easy for me to get into? –  Andy Leman Mar 8 '11 at 2:22
    
Sounds like you can work on developing Linux. I don't know how much dough you'll make writing operating systems. Better lift your sights higher to some application domain. –  duffymo Mar 8 '11 at 2:24
    
@duffymo yes, I had some interviews about low level job and I failed. I think I need to go to application level. What suggestion do you have? What domain knowledge should I learn...confused. Thanks –  Andy Leman Mar 8 '11 at 2:26

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