Hello, I am currently a Senior majoring in Computer Science and Mathematics. Last year, I found a problem with myself in that while searching for internships, after having applied to countless opportunities (80+) I was rejected for every single one: not even a chance for an interview, most of them simply ghosted me so I just assumed that they were not interested.
My Career Development Office at my school said my resume looked fine, but I feel that is from a general standpoint rather than a specialized one; additionally, after doing some research afterwards, I realized that my skillset was sorely lacking (I am aiming to become a full-stack developer). Having stated the above, I am not certain exactly what sort of skills I need to be learning so that employers will at least give me a chance to interview. Some of my relevant knowledge include:
Programming Languages: Java, Python
Theory: Data Structures, Object Oriented Design, Algorithms/Run-time analysis
Related: Discrete Mathematics/Graph Theory, Linear Algebra
Any input is much appreciated, and I hope to be a active participant in this forum.
Welcome to the Freecodecamp forum . Have you gone through the Freecodecamp’s curriculum? If not I would suggest you to go through it most of which you might easily pick up and might already know some too being a computer science and math major. Like they claim in their website they offer a proven path to a first developer job. I am also quite new but I have seen that a lot of the times, what is taught at schools isn’t what the industry is using for example React, I have seen is not taught at many schools.
They have done a lot of research while setting up the curriculum for Freecodecamp like what is actually being used in the industry by most programmers. I can try to look and post like to the article where they mention that.
Apart from that I would also try to look and apply for very specific jobs that looks for Java developers as you mentioned you know it at the same time trying to work on projects to show in your portfolio.
I am also very new, just sharing what I have observed here and there. Others with more experience might comment soon.
Interviewing processes, especially for entry-level positions, vary a great deal so there isn’t a set list that you can prepare for. Not having work/internship experience is going to make it a little harder for you, but it’s not a deal-breaker. Very often, employers know that a junior developer might not have experience in the language or technical stack that they use and are fine with that. We often try to give you the opportunity to interview in one of the languages that you know. Be aware that even if that language isn’t used by the team you’re interviewing with, you may be tested on some of the intricacies and details of that language. We know that you’ll have to learn something new, so seeing how well you understand something that you have already learned is the best way that we can judge where you’re at. You may be asked to read written code and explain how it works. You may be asked to find errors in written code. You will likely be asked to solve some problems with code - from a skeleton, from scratch, on a computer, or on a whiteboard. Our expectation on these challenges isn’t perfection. It’s fine if there are errors, but we want to see confidence and familiarity with core concepts. At my company, junior applicants are given coding challenges that require them to work with complex data structures and do things like find, sort, filter based on non-trivial requirements, because that’s honestly most of what we do.
I think you already have a skillset to grow from.
You have a foundation in programming and have already learned some back end languages.
I don’t think it should take you that long and be really difficult to learn some front end technologies.
I think an advantage you have over beginner self taught developers is that you already understand how programming works.
Whereas a lot of self taught developers have to learn programming basics AND current web technologies.
I think this is a huge advantage you have over self taught developers.
You have already spent years learning all of this theory where you will feel more comfortable solving these types of technical challenges over a self taught developer.
I think you will be able to learn the necessary skills to land a job after you graduate.
The core problem-solving skills are what programming really is. Without that, you can’t write effective code, even if you know all the documentation of a language by heart.
As an interviewer I do expect someone with a 4 year degree to know both the conceptual fundamentals and to be able to show that they can actually apply those effectively in a couple of languages. I don’t care that much about whether they know the syntax of the language they’d use at the job, but I do want to see them show that they really know the languages that their resume claims that they know. That doesn’t mean that I judge them for looking something up (we all do that!), but I do want to feel like they understand what they’re doing.
I think there’s a big misconception about what a Bs.CS gets you. I’m not a fan of the phrasing that “it doesn’t teach you the skills you need in the real world” which is said a lot. I think it discredits the value a CS degree has as well as is disrespectful to people who sacrificed a significant portion of their life and money/credit to attain one. But it does have some truth to it.
A CS degree is a very generalized program where you learn almost everything related to computing in every way but usually from a theoretical approach. It’s a lot of short-lived deep dives but at the end of the program you’re a generalist with a massive list of concepts you understand in theory. This is awesome because it lays a solid foundation for beginning your career regardless of where in the industry you’d like to go. And I honestly believe it will pay off in dividends down the road.
But now that you know you want to be a “full-stack developer” (in web I’m assuming?) you have to build a portfolio that showcases what your skills are.
To answer the question “[what] skills expected of a new CS Bachelors student?” I would say not much in terms of practical skills. And this could be why you’re getting more or less ignored.
In my experience, people in the industry generally don’t expect much out of fresh CS grads. They typically are not ready for real-world work as software/web developers.
So you need to build a portfolio of projects (not class projects) that show-off to employers and hiring managers that you know more than just how to traverse a binary tree or the difference between big endian and little endian – both of which are cool to know, but not practical pieces of knowledge.
I suspect you can rip through the freeCodeCamp curriculum pretty fast with your background and it’ll give you a good direction to follow. If you take your time and do a good job with your projects you probably won’t get to finish the curriculum before you start getting calls back.
I’ve heard this take from a few people over the years, so there is probably some truth to it, but it doesn’t match my experience.
Personal anecdotal information incoming - YMMV
One of the advantages that a university program offers that people don’t talk about enough is that it gives you access to professional work with training wheels. The vast majority of CS students that I have known have worked in the field when they complete their degree. Working part-time for the university is common (I built and maintained websites for campus organizations, for example). Working for one of your CS professors on their current project is often offered to undergraduates as well as grad students. Most commonly, there are internships. Many CS departments actually require you to do at least a summer internship in order to even be awarded a degree. Even if it’s not a school requirement, it’s pretty well known that internships pave the way to jobs. Some students only do internships over the summer. Some continue to work for the company part-time throughout the last year or two of their education. These are paid positions for real companies. Interns don’t just follow people around or learn by observing; they write real code that goes into real products. They participate in planning, they fix bugs, write new features, perform code reviews, and push code.
Very often, internship positions are only available to current college students. There are relationships between recruiters and universities. Schools help you find and apply for internships and entry level jobs.
Working experience is a benefit of a traditional degree program, but that means that it has also become an expectation. When I look at the resume of a new graduate I expect to see work/internships as a student or personal project(s) that are developed enough to be resume-worthy. If all I see is classwork, they’re going on the bottom of the pile.
I hope my original post wasn’t trying to undercut the value of a CS degree. But I think it’s important to know that there’s a real stigma against fresh CS grads out there which is likely working against you if you haven’t leveraged all the resources you mentioned as well as worked to build up a network during your time in uni.
I especially agree on the topic of paid-internships or co-op placements. It’s so important to make sure whatever program you take in Uni/College includes them. I would actually argue that you’re taking a big risk if you pay for an education that doesn’t.
And definitely a huge plus for students who take up jobs at the university but from what I understand that’s a pretty small percentage who actually get those opportunities (maybe I’m wrong?).
Another issue with university work is that the internal practices are sometimes… less ideal. This is coming from my own very limited experience working with a few universities as well as knowing people who work/worked at them. I’m hesitant to say this, but I think if you’re not careful a university job can form bad habits early in your career. I know a lot of smart people working at universities and I don’t love the “best practice” phrase because what even is “best”? But whatever “best practice” is, I think universities have a lot of room to level up (at least in terms of catching up with where the rest of the industry is at).
Any experience is better than no experience and at least - in theory - it should help you actually get interviews when applying for other jobs.
It may vary by program, but when I was a CS student the majority of my classmates had at least some form of paid work experience in the field when they graduated. The classmates who were panicking about not having a job lined up in their last semester were largely the ones who hadn’t done internships because they thought that was just something the rest of us were doing to make money and were surprised it was expected. (Again, the expectation may have existed in my area because the majority of students did have work experience and our competition from the nearby school were required to do a co-op.)
I agree that not all the lessons you learn in these roles are good, and you can learn some bad habits. What it does though, is balance out the “theory only, limited practical understanding” criticism that I see people make. When I’m looking at potential candidates, the reason I like seeing either work experience or a large project is that it means you’ve actually had to see things through long-term, figure stuff out on the fly, fix and refactor existing code. Student work or an internship also tells me that you have some understanding of the realities of real-world programming: making tradeoffs, arbitrary requirements, working with others, tools like version control, design and review processes, being held accountable.
Basically, my expectation of a “good” candidate with a degree is that you understand the core fundamentals well that you can discuss issues in general terms, that you have familiarity with multiple language families, that and that you can pick up any language/framework/tech stack pretty quickly. On top of that, I know that I can usually be picky enough to get someone who has practical experience with day-to-day development work.