What I wanted to know before I left college: A programmer reflects



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 OpenSolaris 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

Eric Wendelin job resume

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.
  • 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!

If you liked this post, please help me share it
  • Reddit
  • StumbleUpon
  • description
  • del.icio.us
  • Digg
  • co.mments
  • Google
  • Slashdot
  • Technorati
  • TwitThis
  • E-mail this story to a friend!
  • Furl

Responses (29)

  1. Thanks for sharing this. I changed careers a year back, and am looking for ways to “make-up” for “lost time”. I will definitely follow some of your tips to accelerate the process!

  2. @David:
    That’s what I do :). Please feel free to ask other questions. I’m sure other readers may chip in, too.

  3. Yeah, learning more Linux has been on my to-do list for awhile. I’ll get around to it eventually. You’re right, though; it’s come up more than a few times in my professional career.

    I would add, once you’re done with college, never stop learning. I’ve been able to expand my career significantly by stepping up when there was an obvious gap in the company’s skill set. That’s how I turned myself from a web developer into an SEO specialist, an analyst, and an online marketer.

  4. This is one of the best Blog posts I’ve read in weeks. I’m a Computer Science student and throughout the course I’ve realised that there really isn’t enough time to really immerse yourself in the subject without some outside work. Sadly, all I’ve really had so far is some Web Design and SEO work, but I’m looking to apply for a summer internship at Oracle. You wouldn’t happen to have any advice on getting an internship, regardless of experience at university would you?

  5. @Mike:

    So it looks like you are off to a good start with a blog (make sure that it enhances a recruiters opinion of you by making it perfectly professional) and some sort of programming work done. Depending on what type of programming you’d be doing, I encourage you to go make up a project for yourself and do it. If it is Java, take the SCJA. Otherwise, blog about the kinds of things you are learning. If you post a solution, make sure it is simple and very correct.

    As far as interviews and resumes, be honest and gently exceed the interviewers expectations. Don’t say your knowledge of SQL is a 9 on a scale of 1 to 10, it’s probably not. The point is to acknowledge that you have limited experience but infinite learning potential.

    Show passion and a hint of confidence and you will land a good internship in no time. Get to it!

  6. Good post Eric. I especially liked your comment about starting a blog or mentoring. When I’m looking for someone to hire, I want someone who is passionate about coding - not someone who’s just looking for a job.

    If you have a blog (active is better…) and you can show me that you are active in the community, its going to go a long way in showing me that you want to learn anything you can about your field of expertise. That goes much further than someone who is just a decent programmer. A decent programmer won’t become a great programmer without some passion.

  7. Hey there. I have to agree with the previous posters here, good material to blog about. I will pitch in and say that side projects are a definite must. Without committing to side projects that you start AND finish then you might never be exposed to some material that you miss in the classroom. Plus, as you learn on your own and you look for resources you stumble onto other things and thus learn more in the process.

    While in college, a group of friends and me would tackle projects on the side that interested us. One of our last projects can be seen at http://www.blacklabsentertainment.com. I linked this on my resume and got a lot of interest during interviews.

    In short, take the time to learn as much as you can. Don’t limit yourself to one programming language. Learn a few, especially C/C++ as these show you understand memory management and can program without the assistance of a garbage collector. And take internships and industry experience as often as you can! I did a six month co-op at IBM while a junior in school. Then when I returned home I worked for a start-up company doing software development and quickly became one of their prominent developers/architects. Now I am currently working at Microsoft.

    Hard work, definitely pays off.

  8. You should’ve learned that stuff on your own. The world certainly doesn’t need another programmer with no self-motivation to learn. I give your career another two years before you become a bank teller.

  9. One piece of advice I would add is, get a full-time internship if you can, no later than the summer of your junior year. This will give you a head start on understanding “the real world” much better than even a PT student job, and makes your resume stand out vs the kids with just a GPA to list on their resume.

    And do look at small companies. At the big ones inyerns (and new grads too) will just be a cog in the machine.

  10. Aaron Johnson

    I’m also in my 3rd year out of school, and at my 3rd job. I agree with most everything you say, but I also wanted to add a few things.

    While I was in school I was working for a local company from my hometown doing .NET programming. I didn’t like the company all that well, but it payed pretty well so I stayed with it. When I graduated, I did the default thing and went back there to work full time.

    I stayed there almost a year before moving to Cincinnati for a different job. Not looking for jobs right out of college was probably the stupidest thing I’ve ever done. I was miserable, living at home and making ~32k/yr, and all it took was a resolution to finally do something about it and find a new job. The new job payed more than double, and even though a lot of that was eaten up with living expenses, etc., I’ve never been happier.

    Don’t be complacent. If you feel like you need a move, MOVE! I’ve found that there are a ton of programming jobs in just about every town in the country. We’re a utility that just about every decent sized business either needs or could benefit from.

  11. I couldn’t agree more about GPA. I was one of the lucky ones to understand this while still in school (although it was a while back).

    Basically once you graduate no one looks at your GPA. And I mean no one!!! Like you said, unless you plan on going to grad school, it doesn’t matter. The most important factor is to learn the material. By this I mean learn it so you can apply it, don’t just memorize the little nuance to excel in the tests. Otherwise once you leave school you’ll be in trouble.

    As well, take the time to learn as much as you can about it. Instead of getting amazing grades I focused on just getting good grades. Not the best, but good enough. But because of this I had the time to write many software systems just for fun. I tried things. I experimented. And I think I got more long term value from this!

  12. @Alex:
    Yes, I agree that blogs tend to show that one is passionate about what they blog about.

    @Jonathan:
    Getting a full-time internship is very beneficial. I had one that forced me to use a command-line environment and it may have made all the difference. I would not say that interns at large companies are always just a “cog”, it depends on the group you get in.

    @Aaron:
    I believe you should ALWAYS be keeping your options open. At the same time, if you move around too much it will look bad on your resume. Definitely look for a good first job as it will probably define your next 10 years.

    @Stephane:
    Yeah, I’m the one who focused on GPA too much. I just didn’t understand why my being valedictorian didn’t help me out… I now know why and yes KNOWLEDGE IS KING.

  13. @web design company (Joseph H):
    What are you referring to that I did not do? I did go use Linux and network etc. Most candidates I interview DID NOT.

    I wish I had used Solaris and perhaps taken the SCJP sooner, but it obviously worked out because I turn down job offers from companies like yours at least weekly and I work for a VERY good company (see my LinkedIn page)

    I’ll agree that self-motivation and self-learning is important. You must have skimmed my post because it’s obvious you did not fully understand it.

  14. @Luis:
    Congrats on the nice job. Other stuff you can show a potential employer is huge, and it obviously paid off for both of us :)

  15. Hey, this is a great article
    i am just graduated and a company wants to hire me.

    There is one catch tough. They want me to get almost all java certificates in a short time, associate, programmer, developer and web developer.

    Is this doable, i know java to a good extent

  16. @Peter

    Yes, it’s do-able but very difficult. Make sure the job is worth it and then go for it. Good luck!

  17. I am a recent graduate and wanted to work up my Java skills over the summer. I see that you took SCJP edition 5. If I take the exam now, would you recommend taking SCJP edition 6 or 5?
    Thanks!

  18. @Kashif:

    I would have taken the SCJP version 6 if it had been available. It might be harder, but I think it is worth it to take the version 6 exam. Good luck!

  19. well im in australia so i dont have the same opportunities as the rest of you but having read that im finally realizing how little i actually do know
    i know nothing about programming even though im studying a double degree bachelor of business and bachelor of IT which has a large focus on programming on the IT side
    i will definitely have to look into a few different languages and also unix/shell stuff, i simply cant use it

  20. I agree with most of the above, however I disagree regarding GPA “not mattering”. It does not matter in the sense that (I believe) it in noway reflects the true ability of the individual — however it DOES matter in getting your foot in the door. Businesses filter resumes on numerous criteria, many times with computers sorting out stuff before a human even sees it. If you have a crappy GPA it makes it that much harder to get your foot in the door to show what you really can do. However, once you are in the door you will have to prove yourself through your other skills.

    Another thing along the lines of what you were saying, spread outside what school teaches you. 90% of the useful tools I have gained in computer programming came from teaching myself. And the less popular languages are often the more desirable, for example PHP vs. PERL — there are fewer PERL jobs out there but there are also a lot fewer real PERL programmers — they are in huge demand, the salaries are higher and companies can’t afford to lose you. Don’t just go with what everyone else is learning, look at what is in demand.

  21. @John:

    I see your point that your GPA can possibly mean the difference between getting an interview and not. I agree there, and having a good GPA cannot hurt you.

    I would say that it would be better to “spread outside what school teaches you” than to focus on a great (as opposed to acceptable) GPA, if you can’t do both.

  22. Hi Eric,

    Found your site through Stumbling - I got to tell you that you hit the nail on the head. I am just about to finish my bachelor’s degree online, having attained my associates from a community college here in colorado. Needless to say, I work as a full web developer that is currently connecting 3 distinct systems to power one web site (oracle, mysql, dbase) and not much of what I am coding was taught in any class thus far, short of SQL. I use primarily PHP, but have 2 years of Java training and never took the cert tests, but could after a short brush up.

    The thing is, I have been in discussions with a few colleges in terms of what should be offered and why. The benefit I had was a complete Sun lab setup and 2 full terms of Solaris admin and Java - neither of which I use, but because of that and my insistence on trying nearly anything open source (linux, php, mysql etc) I am where I am at now and still moving forward.

    Great post!

  23. @Bill:

    Congrats on your success. May I ask where you were able to take 2 terms of Solaris? It seems that if you can master Solaris then you have a lot of knowledge you might need for other open source tools.

  24. @Eric

    Northeastern Junior College had a full Solaris lab and used the Sun curriculum for that and the Java courses I took.

  25. @Bill:
    Interesting. It’s great that they setup their students for success.

Trackbacks

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>