

Jobs in the Real World 101 & Software Engineers - curlandc30

What language and what will i be performing if i go into the computer programming field? I am heading to college next year and I want to get some practice before then.I have been going to monster.com and typing in software engineers. I want to practice doing real world programming and seeing how it is. Can someone give me some tips on what languages most companies want employees to know and what jobs they will performing. What languages do you recommend me learning for the real world in the job field? What will I be doing in the job field?
======
arebop
The real world is a varied place, and monster.com is not a uniform sample in
my experience. One thing you'll find in the real world is corporate IT
programming. This slice is well-represented on monster. You'll probably not
have a shot at those jobs without a college degree; you can intern in those
places with junior standing or so. Corporate IT jobs are mostly about
simulating paperwork in computer systems to reduce handling costs. Java, C#,
and VB.NET are popular languages.

Another slice of the real world is full of tech companies. Again, big
companies will demand credentials. They will care more that your major is
actually relevant and that you graduated from the right school compared to a
non-tech company. But, tech companies are better able to discern actual skill
and talent than non-tech companies. So, particularly in small tech companies,
they won't actually require formal credentials if it's clear that you'll
perform well. Tech companies by definition have to innovate to survive, so
they're about solving all sorts of problems that haven't been satisfactorily
solved before. C++ and Java are popular languages, but there's more diversity
here than in IT.

There are lots of small businesses that need software for something. They will
often advertise one-off projects and wind up using coders from low-wage
countries. There are lots of terrible programmers working for low prices, but
if you don't care about making money you could compete with them for coding
jobs just to get the experience. In the real world, there's a lot of terrible
code whose owners need bug fixes and new features. There are also many
terrible coders who promise the world and work for rock-bottom prices. So all
around, that could be an eye-opening experience.

"The real world" is often used in contrast to academia, but it's silly to deny
the legitimacy or practical benefit of basic research. There are university
and commercial labs where researchers do really imaginative thinking and lots
of experimental work to develop new programming languages or techniques. These
places normally require advanced degrees and plenty of evidence of your
brilliance and ability to convince other people that your ideas are
interesting. They write a lot of math and prose and demos or experiments, but
normally someone else turns the most promising ideas into mass-market
products. Researchers don't care so much about maintainability, so they often
favor languages that provide individual power (think lisp) over group safety
(java). They are a well-educated and smart group, so they don't fear coq or
haskell. C++ is pretty popular in certain circles, but generally this group
cares least about agreeing to use any particular language.

I suggest you find a free software project that makes software you personally
enjoy using, and contribute to that. You can start today, without formal
credentials. Hopefully, you can find such a project whose members care about
mentoring! Maybe <http://code.google.com/soc/> is a good place to start
looking. Anyway, you can learn plenty about the reality of software
engineering by studying a free software project. Learn the language they use,
read their design documentation to see what they think the most important
properties and relationships in the codebase are, see how they manage bug
reports and feature requests, etc.

------
gprisament
My advice: Get really good at C in linux. Focus on learning about cool
algorithms and datastructures (hash tables, rb-trees, alpha-beta search,
shift-reduce, ...) rather than the particulars of any language. If you get
great at C programming in linux, and have a solid algorithmic foundation, then
you'll be able to pick up the language-du-jour in a matter of days (if not
hours).

------
curlandc30
Sounds good! The problem I have is thinking of a program to write and then
actually using the write code to write the program. Can someone help me with
that one please? I appreciate all the hints!

