views:

636

answers:

10

Hey StackOverflow-ers,

I'm a student in software engineering in Montreal. For the last 3 years I've had a few interships (once per year). The first two (in the same company) were mostly sysadmin jobs, but I did get to do a few Perl programs (mostly log file analysing and statistics generation).

My other intership was in the IT security field. I did a huge CGI Perl script to analyse time spent by users on the Internet.

The thing is, what I really want to do is programming, but my interships were mostly sysadmins jobs with some programming (due to my previous experience with Linux and UNIX).

I have another internship this winter, however I would like it to be in the OO programming field, and SW engineering.

I have a background in system administration but I know OO quite well, due to my college courses and projects (C++, Java, VB.NET, ASP.NET, but not C# unfortunately :( ).

My question is this : how can compete, in interviews, having no previous work experience in the OO field (though I build some projects in Java, Swing, etc., and am learning JSP right now), with other students with OO experience in previous interships?

What should be my "selling points" ? I consider myself quite a good programmer, but my previous interviews didn't turn out well due to my lack of experience. In fact, I got an intership last winter in system administration, since, well... that's my background!

Any tips on how to convince a potential employer that I am the perfect candidate despite my lack of professional experience (but lots of personal knowledge (and interest)) ?

Thank you,

Guillaume.

A: 

Aptitude and enthusiasm will get you a long way. If you can answer interview questions, work through programming problems, and you have personal projects that you are working on, lack of experience shouldn't hold you back too much.

Make sure you nail the questions, though. If you don't have experience, you've got to know your stuff cold to make up for it.

Be sure to emphasize side projects. If I interview someone who likes to spend their free time at home coding, they get lots of bonus points.

Eric Z Beard
A: 

First, one thing I always follow that has never led me wrong is honesty. If you don't know something just say "I don't know". This is so important when it comes to programming interviews and very easy to follow.

Next, take the time to start and/or get involved with some open source projects. Saying that you worked on an open source project says alot. First, it shows that you can grok other people's code and have the resolve to work collaboratively with other people in the programming community. This goes a long way. I have come across employers that actually skip the screening process when they can confirm that I contribute to various open source projects. This is probably your best defense against little experience in the field.

If you have the experience/drive then do presentations and/or coding sessions at user group meetings and/or code camps. This also goes a LONG way. Displaying that you can talk and converse with other programmers in a scenario like this, it shows employers that you enjoy programming and working with the community.

Finally, start low. You will need to start at the bottom of the totem pole, but work hard and show that you are a quality programmer and recruitors/employers will be banging down your door.

Sean Chambers
+2  A: 

Well, one place to get immediate, documented, experience is through open source projects. Join a project, or start a new one. Help with documentation on OSS projects (employers would love to see that). Help with writing unit tests, contribute patches, etc. And the sooner you get started, the better.

Open Source experience is good and experience and it shows a level of dedication to development and the language that you work in.

Good Luck

Jason Dean
A: 

By the fact that you A) posted a question to this site and B) have a blog it appears, it shows you have passion. That is one thing a lot of people don't have so you that to your advantage. Use that passion to further your knowledge.

If you are truly passionate about programming as you say, then just start programming. You can't learn how to program by thinking your way through it. The only way to get experience is to program. For someone like yourself, find an open source project you want to help and start contributing. That will give you valuable experience in using source control among other things.

The other thing is find a technology that you feel you can really get behind and go deep on it, learn any and everything you can about that technology and that platform. Immerse yourself. The reason I say that is because someone isn't going to hire you if you know a little about this and a little about that. They expect you to be able to walk in and do a job. That doesn't mean you shouldn't "play" with other things, but do yourself a favor and leave them off your resume unless you have production experience with them.

Hope that helps. -Keith

Keith Elder
+3  A: 

no offense, but from your description it would appear that you're not really qualified for a 'real' OO programming job. Academic classes are a good introduction to a language but no substitute for solving real problems with fluctuating deadlines, finicky users, cholicky managers, et al ;-)

this leaves three options:

  1. join an open-source project that uses OO and a language you know, and contribute to it significantly. This will provide an analogue of real programming experience [but not real job experience] and may help you get a programming job in another year or two

  2. or, apply for an entry-level OO programming job and impress the heck out of the interviewer with your communication skills, contagious enthusiasm, eagerness to learn, commitment to the customer/user/whatever, etc. In other words, present and sell yourself truthfully but as the 'complete package' needing only the opportunity to explode.

    • Don't be discouraged if you get turned down a lot
    • don't apply for jobs you don't really want
    • expect to stay in the job for at least a year if not two or three, to really learn how to program in a non-academic environment
  3. start your own business as a consultant, programmer, freelance, and/or develop products, and learn at your own pace. This is risky when out of school, less risky when in school, and if you happen on an unoccupied niche can be quite lucrative

Steven A. Lowe
I'm still a student! I'm not applying for "real" jobs, but for 16-weeks internships. I have some experience in programming, mostly in Perl, but I know what it is to deal with (angry) customers/users, lousy custumer support, and doing a project with deadline, changing requirements, and documentation.
Guillaume Gervais
emphasize your real-world experience and eagerness. Perl is not generally considered a 'good' programming language for OOP (or really anything but regex text processing, which is what it was designed for). It's not that you can't do OOP in Perl, it's just that no one can read it when you do ;-)
Steven A. Lowe
Why is point 3 risky when out of school / risky when in school? Why is the website in your profile, "nov8er.com" a reserved domain page?
jparanich
@[jparanich]: risky when out of school because you have to do everything to make the money to live on; less risky when in school because presumably you need less money to live on and/or have additional means of support (scholarships, grants, loans, etc.).
Steven A. Lowe
@[jparanich]: my apologies for nov8r.com being down, I am in the process of moving it to a new hosting service and the DNS just propagated yesterday but the new site is not yet configured - and probably won't be until after this weekend
Steven A. Lowe
A: 

Thank you all for your support!

I'm not out of school yet ; I am still a full-time student! My university program is a cooperative one : I have to get 3 internships to get my diploma.

Let my explain briefly my background : this winter will be my 4th internship.

My first two were while I studied in CÉGEP, Quebec's post-high-school but pre-university schools.

The first one was pratically given to me by CÉGEP : a employer called in, searching for someone knowledgeable in Linux system administration. I fitted the job perfectly since I was the only student who knew Linux outside of school. My interview wasn't even a real one, since all the details had been discussed between my school and the employer : I knew that I was hired even before doing the interview.

The second one was in the same company, one year later, since I liked my first one very much.

Then I arrived at my university, where every student is required to have 3 internships to get his (or her) diploma. Having no real experience in computer science interviews (since my first internships were "given" to me), I did a few screw-ups when doing interviews for OO jobs. I finally managed to get an interview for a security / sysadmin / Perl programming job at Bombardier Aerospace.

My internship went well, but now I want a real software development job. All the people I know had one last winter, which mean I am disadvantaged in terms of experience.

However, I DO have programming experience. All my internship required me to do a substancial amount of programming, especially in Perl. My Perl skills are quite good, and I got to develop some nice tools for both companies I worked in. I solved real problems not seen in school (like how to parse efficiently 5 GB log files while keeping memory usage as low as possible).

Obviously, I can easily get an internship this winter if I apply on jobs in the sysadmin domain or Linux world. There are a few of them available each year and I've got a lot of experience in the field, but as stated previously, I would like my next internship to be in SW development.

I am currently working on a personal project in Java, which is a small UML class editor. So I get to deal with the Swing framework, listeners, MVC architecture, etc. This is not as big as what is being done in the "real world", but it a fun project and I am having a lot of fun doing it, and if I can get it quite advance in the next month, I will probably put in on SourceForge. In the same time I am learning JSP.

As for OO open source project, this is something I should be looking into. I probably won't have time for it right now, one month away from my first interviews, being a full-time student, but I am not putting this option away.

Anyway, thank you!

Guillaume Gervais
A: 

Bring with you some Perl code that:

  • demonstrates a programming style that you can be proud of,
  • does something significant and useful, and
  • is object-oriented (for good reasons, not just to demonstrate that you can regurgitate syntax)
Liudvikas Bukys
A: 

Contribute patches to some CPAN distribution. This will show that you: 1) use CPAN - managers love peoples that can write code faster 2) can read and modify someones code.

Study Moose/Mouse - it is modern OO system for Perl, it is much better that old OO system that was copied from Python.

Alexandr Ciornii
A: 

Every company is different. I have been a Senior Software Developer at Software companies, and I was never even asked a programming question.

Do your best in the interviews and just be yourself.

I find OOP to be useful, but sometimes overrated paradigm to work within. Functional decomposition can get you pretty far.

A: 

You may have received a good grade in your C++ class, but would the professor recommend you for an internship?

Your school's reputation or lack of it may be influencing the selection process.

Jeff O