Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Programming in the real world

  1. Jul 4, 2008 #1
    I have been looking to improve my skills in C++ to make myself marketable for the future. What I'm wondering is what kind of skills employers are looking for.

    I'm a pro at creating console applications, but I highly doubt tech companies would be working in that.

    For example, I was looking at an entry level job offered by Lockheed Martin, and it said knowledge in C/C++ is desirable.

    What do they mean? I should be able to write programs in consoles? I should be able to create GUIs, or create code that works with an existing GUI?

    I know in the real world, things are done in teams, so I would not be responsible for everything, but how would I go about preparing for something like that? I know about programming structure and methods and all that stuff. I just don't know how or where an employer would want me to apply it.

    Any insight would be appreciated, and please forgive my ignorance.
  2. jcsd
  3. Jul 5, 2008 #2
    The simplest way of preparing yourself is to (i) learn as much as possible about using a given language to solve problems that interest you, (ii) try to get internships during your holidays that will help you see how things work in the real world, and (iii) see if you can find any open source projects in areas in which you're interested, study their code, and contribute.

    If you eventually end up working as a coder, the requirements for a given job are highly variable. For example, I did an internship for Lockheed at the end of my first year at Cambridge working on some libraries for guidance systems. As such, I wasn't required to know *anything* about GUI programming, GUI toolkits, networking, and so on. All I had to know was how to (quickly) implement needed features in deep (and very often ancient) code. Obviously, if you went to work for the HIG at Apple you'd need to know an awful lot about Cocoa, Carbon, and Quartz. The moral is that jobs (particularly in large companies) tend to focus on small, well-defined skill sets, as well as the ability to interact with people who know other small, well-defined areas better than you. Pick an area in which you're interested, learn it well, and you'll be off to a good start. It's also far more important to have a good knowledge of sound programming principles than it is to be up to speed with the latest programming fad of the day; fashions come and go but sound knowledge is permanent.
  4. Jul 5, 2008 #3

    Ben Niehoff

    User Avatar
    Science Advisor
    Gold Member

    Most tech companies like Lockheed are going to be writing primarily console programs. It is much more efficient to run things from the command line than with a GUI.

    Software companies that produce programs to be used by end users are the ones doing a lot of GUI development, but really, GUI development is quite easy if you can write console programs and understand object-oriented programming.

    In general, if you need graphical output for something, you can look up how to do it. It will be a matter of learning how to use a set of functions from certain header files. You probably won't have to know very much about the theory of computer graphics unless you are building a simulator, working on a video game, doing robot vision, or designing a graphics card.
  5. Jul 5, 2008 #4


    User Avatar

    Sometimes, the programming experience is important for the employer to value the employee's ability. You can't be an expert in everything from asm language to C++ to java. and I suggest you could gain your experience below:
    1. read other export's code, this mean's you can stand on the shoulder of gaint,:smile:
    2. read some books about design structures like <<design pattern>>
    3. If you have more time, you can attend some project in open source socity such as www.sourceforge.net.
    A good company also has a training plan for its employee.
  6. Jul 13, 2008 #5
    This is 100% true. I am a PhD student at Penn State working with Boeing, NASA, Bell, and others. I have worked with them for about 8 years (I am relatively young) and have yet to see a GUI. Console programs are much easier to use with shell scripts and what not, and you will probably be doing a lot of trade studies (running the same program thousands of times, changing parameters only slightly).

    Also extremely true. You will see code that will amaze you. Not because it's good, but because it's a wonder it ever worked. I once ran into a case of a CFD program written in fortran77 where the program reallocated the entire domain every time step and wondered why his code took forever to run (he had been using it for a decade).

    I am not as experienced as these other guys, but I just thought I would throw in my 2 cents. However, I would like to say that knowing how to write a GUI is not always bad. They are easier to use if your going to export your code to others, I find.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook