A couple months ago I was at my Alma Mater Adams State College to talk about what I would have wanted to know if I was a student. I’ve been out of college for 3 years now, and held 3 VERY different programming jobs since graduating with my Bachelor’s Degree. I am hoping to shed some light on what I have learned about the “real world” and clear up some misconceptions.

Quick background

I just want to give you enough information about where I’m coming from here. Obviously, your experiences will be different but I think there are several things common to almost all workplaces and that is what this post will focus on.

I have done data-oriented programming, back-end programming, and web programming for a couple small companies and one quite large company. All of these positions were around Northern Colorado/Wyoming so we’re not exactly in Silicon Valley. If you really care about the details you can check out my LinkedIn page.

What I would’ve done differently

There are a few things that I would go back and do if I could:

Work with other OSes - I mostly used Windows because that was what we had in most of our labs. I would have been more prepared for the workplace if I had done more stuff in a shell. Go try out Mac or Ubuntu! Most of the candidates I see nowadays don’t have non-Windows experience, and it is really frickin’ valuable, I promise!

More research classes and internships - Do something outside your comfort zone! You can explore things that noone else has and that experience is absolutely invaluable. I really wish I had done the facial-recognition programming class or an internship at a bigger company. Don’t make my mistake.

Consider taking the SCJA or SCJP exams - My college program was Java-based but there were so many parts of the Java language that I really did not understand. I really learned a lot from passing the SCJP and I seriously recommend taking it as the knowledge WILL set you apart.

Connect with more people - I had what I would consider a rougher entrance into the programming world, and I may not have gotten a good programming job ever if I had not met some good companies at university job fairs. Take advantage of college job fairs outside your college

What I wish I’d known about the workplace

It was certainly different working on the same type of thing for many hours a day instead of the great diversity I had in school. My brain felt tired every day at about 4pm for the first month in the “real world”, but I think it’s just because I was learning so much.

Another thing I was surprised by is that people in the workplace seemed more easygoing than I would have thought and socialization (face-time) is an important part of working. All of the places I have worked I would guess that people tend to spend about 3 hours per week socializing in one way or another.

I have not had to work more than 50 hours per week during most weeks at any of my jobs, but I have friends that do have short periods where they work 80 hours/wk or more. You should definitely ask about this during your interviews, since you don’t want to be surprised by this.

Company/workgroup attitude is the most important factor in how much I succeeded in my work. One major part of the attitude is trust: the managers/tech leads that trusted their engineers (including newer ones) to produce good work got it so much more than those that did not. Similarly, the groups that recognized that their engineers are an investment, and put money toward training etc., got higher quality work and probably more profit. When you interview with an engineer, ask how long it was since the company paid for training.

The best job is not usually the best-paying job. You need to factor in benefits as well as intangibles (e.g. can I work from home? etc.) and really think hard about it because it affects your happiness significantly.

What I didn’t expect to help me

Things that I didn’t think would matter so much but ended up driving a lot of my success:

Joined clubs outside of engineering - this helped me with my social skills a LOT and helped me become a better team member.

of engineering - this helped me with my social skills a LOT and helped me become a better team member. Summer internship that forced me to use computing languages that I had not touched before: Perl, PHP, and other CL tools in a mostly command-line Linux environment - Going outside your comfort zone ended up being HUGE in my career because I realized how to pick up technologies and try to build something useful with them.

What I thought mattered and didn’t

GPA? - nope, except that it will allow you to go to graduate school

General eduation classes? - do matter somewhat, because you have to be able to think like your diverse user base and this helps you put you in someone else’s shoes.

Who you know? - Yes! I had no idea how much knowing someone from a company would really boost your chances of succeeding.

Summary: Do these things to prepare yourself

Go download another OS like OpenSolaris or Ubuntu

Connect with others. Go to your local JUG. Join LinkedIn.

Make a good list of questions to ask potential employers

Take extra classes in technology

Apply for an internship, even if you don’t get it or want it

Learn something outside of the required courses

Consider blogging and/or mentoring

I have compiled a random list of job links that I think are helpful. Hope they are!

If you are a professional now, share what helped you or what you didn’t expect. I’ve only shared my views and yours would be extra helpful to those who need it!