Hello, fellow programmers!
I am in my junior year of computer science, and I'm running into some walls.
I've been looking for internships, and it's proving to be extremely difficult to get one, or even be considered for one.
I've been programming for 4 years, and I know C, C++, some Java, some Python, and some Scheme. I am most proficient in C++.
At the university career fair, it seemed a lot of companies want us to programming prodigies, or have many more years of experience than I have. It doesn't seem that a passion for software engineering is enough anymore.
I've done group programs, done plenty of data structures, some software engineering, algorithms, and I know mathematical logic. I'm also a mathematics minor, and I'm currently taking abstract algebra. I've worked with SFML, developed a small physics engine for 2D games, and implemented plenty of data structures. If you looked at my code, you would see that I am more than competent.
I've had people tell me that I can use their work to show to potential employers, but I refuse to do that. I will NOT claim something is mine when it isn't, even if I understand the whole thing. I want to be competent because of my own work, not someone else's.
My main question is: How on earth do I get the experience these people are looking for, or how do I convince them that I am worth their time? The university courses do not provide the experience these companies want, and my coursework leaves me with little time to self study. I'm trying to break into the field of software engineering, but companies don't seem to want a newcomer - they all seem to want someone who has a lot of experience doing it. But how can I get the experience without actually having an opportunity to work in the field?
I hope you can see my frustration. I came to computer science because I love to program, and I love to solve complex problems, but that just doesn't seem to be enough anymore.
I've more than once considered just leaving the field altogether, but I enjoy it too much to leave.
I'm hoping that maybe some of you industry professionals can give me some advice.
Supply > Demand. It sucks but that's life. Companies can afford to shop around...and I haven't found a solution that doesn't involve knowing someone on the inside yet either.
Well, I had a nice long answer written out for you but I fudged and lost it. Here's a condensed version.
Things you need to:
○ Make a professional resume.
○ Make a GitHub account to host all your work.
○ Make a website with your own domain. You can get free hosting on GitHub Pages, so you just need to pay for the domain name. Domain names are cheap. No employer wants to see joeblow.blogspot.com.
○ Actually have work on GitHub which you can show off. Doesn't matter how small or pointless, employers want to know that you can write code, and how can they know that without seeing code?
○ Network! This is by far the best way for getting interviews and even jobs. If you don't know anybody, go meet people. Career fairs are a great place to meet people. Just make good impressions, get contact info, and recruiters will remember you.
Eh, I've noticed the opposite. At least in my area. There are more jobs than trained people to fill them. I have read that this is a nationwide issue, as well.
My opinion is that if this is your passion then you should stay the course.
Your interest and dedication will far outlast that of many of your peers.
Your interest will result in deeper understanding, and therefore greater capability than that of many other students. You should be able to see this difference soon if you don't already.
It's normal to have doubts as you follow your path, so try to take the long view. Can you picture your long term goals yet? Perhaps it's still a bit too early for that?
Lastly, I have a feeling that you're a great guy and a good person, so hang in there!
Thank you all for your input.
I've been told by many people that demand is higher than supply, but companies are still very picky.
It is a little discouraging that it is so difficult to get into this field, but I suppose other fields might be even harder to break into, given that computer science NEEDS more qualified graduates. Thankfully, my university has a relatively highly-ranked engineering school, so I may get the experience I need over the next two years of my education.
Perhaps I will consider graduate school, but I don't want to reach the point where I become over-qualified.
Being part of an existing Open Source project, especially something that is notable, works wonders.
An earlier poster mentioned GitHub; not only can you host your own work but you can fork and make changes to your favorite open source software. Even start your own project.
Putting that on your resume (both creating your own stuff and working on a larger project) will give employers a sense of your skill as well as how you work with a diasporate team.
There is way more demand for Java , C#, Python, and Javascript. You might have to put C++,game development on the back burner and get into iOS and Android development.
He's going to be looking for a job. Unless he's specifically looking for areas suited for C,C++ development,he must know Java and C#. Regardless of what steam C++ gets it wont out shadow those languages.
I agree with Cody here. In the area I'm looking at (pretty big tech area), there are essentially zero entry level jobs for C++ programmers. The jobs are out there, but they're all wanting a fair amount of professional experience.
Thankfully, my university teaches us C++, C, Assembly, Java, Scheme, MATLAB, and sometimes Python, depending on the teacher. That of course is not exhaustive, but it's a start.
I'm starting to think there is a gap between the university and the job world. What employers want and what the university teaches are too different - the school isn't going to be preparing me for the workforce, which essentially means I'm spending $50,000 to learn the stuff employers don't seem to care about. I love C++, but I guess I may just have to abandon the language to learn iOS and Android development (which, sadly, means I have to learn Objective-C).
I appreciate all the input, everyone. I always hear that computer science has more jobs than people entering the workforce, but it doesn't seem to be as black and white as that.
If you want to write an app that's cross platform then you'll avoid Objective C and Java like the plague. Stick with C++ unless you like maintaining 2 separate programs in separate languages.
It all depends on where you want to get a job. What exactly do you want to do? No one can create an accurate assertion we know what you're planning to do as a job.
To be completely honest, I know that I want to be in software development, but I do not know what level (programmer, manager, etc) or what field (security, operating systems, mobile, gaming, etc) I want to do it in. I have yet to gain enough experience to make a cohesive decision.
I actually don't know Java. When I came into the computer science department, I demonstrated my previous personal projects to the department and they then required that I skip the first programming class and encouraged me to go into the honors path (I couldn't because of class conflicts and whatnot - besides, it would only have been one or two honors courses, one of which I did and the other I did not). I jumped straight into the sophomore year of computer science and skipped the Java programming class. Oops. If I had known how much of an oopsie that was going to be, I would have petitioned to enroll in programming 1 and 2 concurrently.
We are using FreeRTOS in my embedded systems class, and I think it's pretty darn fascinating. We are using a TI Stellaris L3S1968, and we load FreeRTOS onto it. Programming in FreeRTOS seems to make a lot of sense to me, so maybe I'll eventually be able to list that as experience.
Like an article linked earlier in this thread stated: there are programmers out there that created a database for their dentist in 8th grade. By the time they get to this point in college, they have been programming for 8+ years, and here I am with only 3-4 years of experience, and mostly in a single language. Most the courses at my university are taught in C or C++ (the university says this is because "it will be easier to learn another language after C or C++ and that C and C++ are gaining a lot of steam and will be needed again soon"), so I will most likely not obtain a formal education in another language (besides Scheme, which I'm learning in Programming 3 right now - god, I hate that language).
Companies are looking for people like that - they are looking for prodigies, not skilled programmers. I try to push my passion for it, but that seems to only get me so far - they don't care how passionate I am, they want to see the work. I have yet to get all my code together into my github (only a portion of my work is there).
Anyway, I digress. That wasn't the main point that I wanted to make. I know what companies need me to know. I'd love to learn 5-6 more languages, but I simply do not have the time. I go to school full time, and I work 30+ hours a week. I keep to keep my GPA above a 3.7, or I can kiss a career goodbye. I can't quit my job - I have an apartment and have plenty of bills to pay. I know they want me to know all this stuff, but I simply don't have the time to learn it all outside of school. I learned graphics outside of school, and that took a lot of time to get good with it. I can't imagine doing that with a whole new language. I still have my personal projects (I'm working on one right now that isn't related to gaming), but they are ALL in C++. I have an (old) abandoned project in Objective-C. I'm not sure how to bridge this gap. I also want to keep what semblance of a social life I have, so I can't give every second of free time to learning this stuff - no social life will drive me crazy, crazier than programming is already making me.
Actually, I lied. I have two projects in Scheme (actually, in Racket). One is a program to solve the Queens problem for any NxN board, and the second is a program to compute a symbolic derivative (the second isn't finished yet), but I'm guessing companies won't give a bull about those, so I don't mention them. I could do both of those in C++ without trouble, and it would make much more sense than the way I did it in Scheme.
I got an email from a General Electric Aviation recruiter a couple days ago (they were looking through student resumes that we authorize the university to put on the career website) and they asked me to come speak with them at the career fair today to see if I would be a good fit in their company. So, let's hope that goes well.