The Ultimate Guide to Getting a Software Engineering Job out of College


This article was originally posted on the CareerDean blog.

So, you want to become a software engineer. My guess: you’re majoring (or planning to major) in computer science, you love to code, and you want to build the next big thing. What’s next?

Let’s take a deep dive into what you really need to do to get a fast pace, action-packed (and sometimes cushy) software engineering job. We’ll start from the beginning: high school, and then share what ideal path you need to take to become well on your way to join the ranks of the software engineering elite.

Why Become a Software Engineer?

Is it worth becoming a programmer? If you’re reading this guide, I’d bet the answer is yes. There are a number of reasons why you’d want to go down this path. Some of them are:

  • Salary: You have a good opportunity to earn a great salary and a decent living right out of school. A low paid programmer can make more money than a well compensated teacher.
  • Demand: There’s a tremendous demand for competent programmers, so you’re almost guaranteed to find a job if you have the skills.
  • A desk job: If you prefer to stay safe, the environment that you’re working in is not hazardous. You’re not risking your life working near heavy machinery and toxic chemicals. Just be sure to get up and walk around once in awhile.
  • Respect: Programmers are perceived as highly intelligent and creative, and therefore get a lot of respect from just about anyone.

If that’s reason enough to keep on going, continue reading.

Where to Start in High School

High school is where I knew I wanted to major in computer science. You, too, may believe in the same. You’ll probably start taking computer programming classes if offered, and then applied specifically to colleges that catered to your growing interest in computer science and software engineering.

If you’re currently a college student focused on working through school to build out your career, keep reading. After all, not everyone falls in love with software engineering during high school. Most don’t know what they’re going to do with their lives until they are out of the house and have discovered new things.

But if you are interested in computer science as a high schooler, focus your studies around the topics that will engage you during your computer science college path: math classes, such as linear algebra, calculus, discrete mathematics, and probability/statistics classes. It’s even better if you can learn about complexity theory, Nyquist-Shannon, the Central Limit theorem, and the Bayes’ theorem — but not to worry if you don’t establish that foundation in high school: you’ll probably learn all of that in college. Try out a programming class. If IB or AP courses in computer science are offered, that’d be great way to get a head start. Do well at school, study hard for your SATs, and get into an awesome college with a laser-like focus on CS. That’ll be your primary objective.

If you want to grow your computer programming experience as a high schooler, start coding and build applications. Build up a presence on Github. Who knows, maybe you’ll impress your potential employer (but probably not your admissions officer). Still, it’s never too early to start.

Also, if you can (though it’s super rare), get experience in the real world by joining a high school co-op. It will give you a foundation from which to grow your career. Just don’t let your grades fall while you’re focused on what will happen beyond the four years at school. Co-ops give you real world experience for tomorrow. Your high school education gives you the foundation you need for today.

Your next step after high school is most likely college. If you’re looking to get into a specific engineering school, you know already that this is super competitive. It helps to be creative, but it also helps to show that you have the academic prowess to succeed at school.

Admissions officers focused on students interested in every single major aren’t going to necessarily be attuned to knowing that your app is great, so don’t build apps in high school with the goal of assuming that a great app will get you into college. Getting into college, in this case, is about the standard things that get everyone into college: great academics, a wide spread of extracurriculars, and even volunteer work. But if you build an amazing app, I might suggest that you find a computer science professor who would vouch for you and may actually help get you into school.

Hey, it’s worth a try.

Now for the obvious question that you may have: does school matter? The answer is “yes and no.” It’s not about the name of the school that will get you a job. A school can only get you so far, and some schools (especially Stanford) have a leg up on the competition. Your schooling will get your resume looked at and get you the subsequent interview, but it is all up to you to sell yourself and your skills to get the job.

Is there talent at some of the top schools? But of course! Top CS programs across the nation are incredibly selective. But not to fret if you go to a lower-ranked school (and puh-lease! Who bothers with those useless rankings anyway?): that doesn’t preclude you from being able to forge your own path — in fact, due to the pressure and competition at these higher ranked schools, you’re better positioned to achieve greatness without the added insanity of beating out your super smart peers.

(By the way, my Ivy League university computer science degree did nothing for my software engineering career, which is now non-existent. Your experience may be better.)

No matter what the school, you need to surround yourself with super smart people. Build relationships with people who matter, be it your fellow students or faculty. Do independent study if offered to push yourself to the limits. If there’s a local chapter of the Association for Computing Machinery at your university, join it, go to meetings, and become active. Altogether, this will open doors that you may need down the road, so start early and look for ways to grow your network.

When it comes down to it, the schooling may get you in the door, but it will be your expertise that will seal the deal.

If you read a book like Smart and Gets Things Done: Joel Spolsky’s Concise Guide to Finding the Best Technical Talent, you’ll know a lot of what the prestigious tech companies are looking for. And if you read David and Goliath by Malcolm Gladwell, you’ll know that being an underdog isn’t always a bad thing.

Your Chances if You Go to a “Different” College

The aforementioned section speaks about the most common type of higher education. But there’s more to that than the typical four year college. Are your chances at being a successful software engineer at a prestigious university dented by doing the lesser standard offerings?

Let’s start with online universities. Yes, if you establish yourself as a graduate of a for-profit institution, you may be in trouble. According to the vast majority of software engineers today, graduating from an online university is not a sign of prestige. One went as far as calling these schools “like WalMart. It’s competent, shows you can go through the program, but is not a prestige brand.”

On the plus side, that’s not always the case — that is, an online degree may discount you for consideration when seen independently, but if you have the right skills to complement your academic “achievements” to date, you may very well succeed. The overall benefits of online education still stand: cheap and free options. According to Cody Sparky Wood, online education is a winner in his eyes: “Using these open source courses and information platforms and a degree of ingenuity, an ambitious individual could easily blow away an average university graduate of CS online or otherwise.”

Considering how many people become successful software engineers without actually majoring in computer science, perhaps he’s right.

You may elect to go to a community college instead. After all, there’s a significant cost savings benefit to going to a local two-year institution. Some will argue that if you can get the same education at a community college, why bother with the four-year university path? As before, your school can get you the interview. If you work hard, the school name is not as important.

Of course, there’s another option that’s quite popular — getting a leg up (and a cost savings compared to going to a four year school) if you start off at a community college and then transfer to a university. In fact, if you want to get into a better school that you weren’t able to get into during high school, this may be a great way to do it — every school accepts a set number of transfers, and acceptance isn’t as competitive. Just know that if you get in, you may have to take some of the classes you completed again (but you’ll probably get an easy A, right?)

Remember, if you get into a four year school after community college and are worried about the credibility a community college may take away from your appeal as a potential candidate, employers won’t know where you started as long as you don’t tell them. The degree is all that matters at the end of the day. But if it ever comes up in a conversation, play to your strengths that you navigated through a difficult university transfer process.

If you graduated from your local college, don’t be embarrassed to put your community college degree on your resume. Employers want to see your highest level of education; if community college is it, that’s fine. It shows that you went further than high school and has merit.

Finally, let’s talk about distance education. You’ll grow your skillset, but you’ll lack “first rate facilities, exposure to quality tutors, and ability to collaborate in real-time.” And that’s not necessarily a deal-breaker. You can still learn — in fact, you can complement your college education with open universities to enhance your learnings and grow independently outside of the classroom — and succeed. Remember, if you can code, you can code.

What if I Don’t Actually Have a Degree?

Having a college degree is a pretty big slice of the job consideration pie. But some people just don’t have a degree. Perhaps they got lucky, finding a cushy job at age 19. Perhaps they decided to postpone their education by doing a freelance stint, or they got a head start programming early (and were too comfortable to go to school).

If you identify with any of these examples above, not to fret! As Chris Jester-Young says, “work experience trumps academic achievements in pretty much all companies I know. If you’ve proved yourself, don’t be afraid just because you don’t have a degree.”

Still, the degree may be beneficial to have. Not all companies are created equal. But for coders, if you have relevant work experience, those tech companies (at least the innovative ones) may not require it. Degrees are good for the resume, but they won’t automatically bestow you with practical knowledge — you’ll get “very shallow” exposure to most corners of the landscape, says Jack D. Leach. And regardless, that’s good exposure. You may have to work “a little harder to break into the scene, but once you’re in, you’re as good as anyone else.” However, be prepared to take lower than market-rate salaries in the beginning.

One other challenge you’ll have is that of competition. If you’re applying for companies that see thousands of applicants per vacancy, a lack of a degree can be a deterrent. You’ll do better if you have a good skillset showcased as well as personal recommendations, according to Brice Pollock. But if you feel that the competition isn’t working in your favor, network! That’s the best way to grow your career whether you’re in school or not. Doing activities like attending meetups and conventions or becoming involved in open source projects, in addition to volunteering tech skills at non-profits, will all work in your favor down the road. James Duran explains that “it’s easier to find a job when you know someone on the inside who can help expedite or push your application through.” And Moriel Scottlender says that open source is far from worthless: “the cooperative skills you gain and the ability to work together with REALLY bright programmers on code base is a great way to improve skills and your portfolio.”

Worst comes to worse, keep on doing what you’re doing, but try to take college courses in the evening to backfill your resume. While work experience usually is more important than schooling, sadly, there are places that require it.

The exception would be if you go back into academia. If you’re looking to be a professor in computer science and not a coder, get back to the books.

Should You Drop Out?

It’s been asked and asked again. If you’re coding and at school, you may get comfortable and want to continue working at the code, foregoing any type of continued higher education.

But should you?

Let’s back up to high school: remember all the effort it took you to get into college? Why step away from an opportunity that took you so long to acquire?

All things being equal, if a recruiter was staring at two resumes that exhibited the same experience level with one of the engineers having not completed his/her degree, the likeliness of being considered for the next step would be lower if the degree was not completed. Hiring manager Neville Kuyt explains his internal process, saying that there are funnels in the hiring process to weed out the people who aren’t a good fit, so for junior roles, a degree is certainly a deal breaker.

Of course, if the applicant for the job was out of school for ten years and has that many years of experience under his/her belt, it would be a different story.

What about a startup? With startups, things seem to be a bit different — but only to a point. If you feel like you can grow with the startup and make them successful while at school, take time off and go back to school when the ride ends. It would make sense to eventually finish school for the prestige and credibility a full blown degree holds, especially as it affords you flexibility, giving you consideration for the next job.

Then again, if you work for a startup that will eventually become the next Facebook, by all means, keep on doing what you’re doing. Here are a list of a few dropouts who can inspire you:

  • David Karp of Tumblr, who didn’t even finish high school
  • Richard Branson of Virgin fame, also didn’t graduate high school
  • Kirk Kerkorian, the founder of the MGM hotel and casino, left school in 8th grade
  • Quentin Tarantino, filmmaker, decided school wasn’t for him at age 15
  • Steve Jobs, the man otherwise known as the father of Apple Computer
  • Mark Zuckerberg, the man behind the wildly successful social network, Facebook
  • Frank Lloyd Wright, one of America’s most successful architects
  • James Cameron, an Academy Award winning director

But if you do go back to school, whether that’s in two years or twenty, you may wish to consider continuing at your old school, or as Dal Jeanis recommends, a school like Charter Oak State College, which is a fully accredited college in Connecticut that helps with degree completion, accepting any accredited units, no matter how old, and tells you what you need to complete your degree.

Educational Enrichment

Regardless of however you’ve pursued your education or even if you haven’t yet begun, it’d help if you learned how to become a good programmer. Not all methodologies are taught in a classroom. These books and programs are some readers’ top picks:

Programming:

  • Code Complete by Steve McConnell, which covers the process of coding and how to do it well. It’s relatively dated but it’s a worthwhile read.
  • The Pragmatic Programmer talks about how to have the right attitude as a developer.
  • Joel on Software is one of the top blogs addressing the software thought process. He’s not writing too often lately, but is still regarded as a top influencer in the software engineering space.
  • Courses such as Codecademy, Code School, and Treehouse all offer free courses worth exploring.
  • Make School: Make School has grown some pretty successful independent developers. It’s been known to help you build apps/products that are actually being used (such as in the App Store). There’s a demo day where you can showcase your products too.
  • Coursera: Coursera focuses on many different disciplines, not just programming. They partner with universities to provide free content.
  • Bootcamps: There are a lot of bootcamps that have benefited the lives of developers and enriched them immensely.
  • Adobe MAX has also been suggested to explore some creative angles of the art and science of coding.

Non-Programming:

This list is by no means exhaustive.

The Programming Approach

If you have flexibility on the type of programming language you want to learn, more power to you, but focus on one language and do it well. (It doesn’t hurt to have working knowledge of other languages, but being a jack of all trades may not make you super competent.) Master a particular language thoroughly and then apply that knowledge across other disciplines.

Here’s a short list (and by no means complete) of what languages will apply to what disciplines out of college, courtesy of Omotola and Aethetc:

  • Python: web development, game development, data analysis, financial computation, machine learning and computer vision, big data, natural language, and operations and systems management
  • Java: web development, Android development, game development, and systems programming
  • JavaScript: web development, game development, cross platform mobile development, and web applications
  • Objective-C and Swift: iOS development
  • PHP: web development, game development, cross platform mobile development, and web applications
  • C/C++: application development, systems programming

It’s helpful to see which language best serves you by practicing with the language you’re most interested in and working on a few small projects. It’s okay to start down a path, reject that path, and try again. By the time you graduate, you should be adept at one particular language. Don’t shy away from the fact that you won’t be the most proficient coder in the room; there’s always someone who is two steps (or two miles) behind you. And keep in mind that the tech space is forever changing, so you may want to keep abreast of new developments to keep yourself on top.

Taking Advantage at School

Now that you’re in school — congratulations! Get smart and take advantage of the time you have for the educational opportunities a classroom environment affords to you, but also look into opportunities to enhance your appeal to potential employers.

We’ll be exploring some of the things you can do during school later on in this guide, but the short version:

  • Explore co-ops or internships where available
  • Start a side project
  • Take business classes so you can understand what you could be doing
  • Network as much as you can so that your job searching prospects are better.
  • Build your leadership and interpersonal skills, because coding is collaborative too.

Also, look into your college counseling. Yeah, I realize not everyone is too fond of it — your mileage may vary depending on the schools you go to. But some schools are specifically structured around career development, which will prove to be helpful. you can attend a career development class that teaches you how to create resumes, update your reference letters, and sends you on mock interviews, you’re ahead of the game.

If you have good rapport with your professors, you may want to ask them to open doors for you, either directly at a company or through a recruiter. But finding recruiters isn’t so difficult — they’re in it to win it and want to make their presence known.

Now, the Academics

So now we got some of your preparation and expectations out of the way. How do you become an awesome computer science student who is adequately prepared for the next step after you graduate?

Let’s broach those realistic topics that may befall a sizable number of you: you may not be the best student. Perhaps your math skills are falling, or you’re struggling in your computer science classes.

Newsflash: Not all computer science classes are created equal. C++ is more difficult than, say, Ruby on Rails or Python, but as reddit user curiouscat321 says, “some languages expose you to different ideas” but you need not obsess “over which you learn.” After you try coding those more accessible languages on your own time, you’ll find out if it’s for you or if it’s not.

Also, don’t get discouraged by the assignments you may have at school. When you’re taking a course like Operating Systems, you’ll find that the assignment, which may be something like a driver for your Ethernet card, is nothing but a tremendous frustration. This doesn’t negate your ability at programming — not all low level coding is for everyone.

Still, some argue that programmers are born, not made, and software engineering requires some sort of problem solving skills. Also, be aware that if your schooling is giving you annoyance and frustration, that’s not limited to academia — it’ll happen in the real world too. If you’re still interested in moving forward, go for it. You don’t have to be a “great” programmer. Being “good” is still good too. There’s a demand and you have an opportunity to seize the day.

The software engineering field is tremendously diverse. If something you’re doing tickles your fancy, pursue it more. As Neville Kuyt says, “there is no single personality type, skill set, [and] attitude that guarantees success — I’ve known developers who were highly successful in one project struggle to make an impact in others.” Get a wide range of skills and competencies — and do whatever you can to get those skills under your belt while at school. Take all the entry level classes you can. You may get an A in some and a D in others (cue to my Digital Logic days), but all hope is not lost.

How Your CS Major Factors Into the Job Hunt

Guess what? A CS degree is nice and will give you exposure to topics you may not necessarily experience in the real world, but it’s not a deal-breaker when it comes to getting a job. In fact, being a non STEM major isn’t necessarily bad for you either.

If you’ve graduated college and have the programming ability, majoring in a non STEM track may have “earned [you] bragging rights” as Katelyn Hare says, just by finishing your degree. She adds, “this industry can benefit from people with different backgrounds and different ideas.” As long as the companies get the skills they need and you’re confident at your coding ability, you’re probably in a good place.

For entry level jobs, you may not fare so well. This is especially true for positions where there are hundreds or thousands of applicants for one single position. Sometimes, a CS degree helps “winnow the number of resumes down to a manageable number,” according to Roger Warner. However, Roger also says that non-CS degree people are the exception, not the norm.

But once you’re at the senior level, your degree means very little if anything.

Still, all jobs, including web development jobs, require some sort of computer science knowledge. The theoretical concepts are not learned on the job and your college exposure may be the only time you’ll learn what you need to establish the critical foundation necessary to be well-rounded as a coder.

And if that’s damn near impossible, look into areas of study that are near where you want to be. Oliver Jones suggests that if you’re interested in imaging, you should get a degree in physics or the fine arts. If you’d like to do geocoding, a degree in geography or earth sciences would be helpful. Big-data mining roles would be better served by a degree in statistics or psychology. It’d also help to have knowledge of accounting, economics, or business. And, of course, take courses in math, chemistry, or biology.

And another thing, if you’re still in school and want to switch majors so that you can focus on learning how to code, don’t. While it certainly helps to expose yourself to other disciplines that may be “easier,” the computer science track covers topics that you would not otherwise be exposed to, such as data structures and algorithms, compilers, operating systems internals, NP complete, recursion, and those theoretical concepts that cannot be communicated in a coding class or a bootcamp. You may need it down the road, so trudge through it — it’ll help.

Just note, these classes alone won’t mean anything. Together, they’ll have value. You’ll benefit from understanding tools, methods, and context of all these frustrating classes.

Computer Engineering versus Computer Science

Would it be worthwhile to go down the path of computer engineering instead? Not necessarily. My good friend is a Google Spreadsheets engineer and majored in computer engineering. It’s still necessary to have your coding skills up to snuff. You can still do well at programming if you practice on your own. All computer engineering adds is a stronger foundation in electrical engineering, which you may need if you go into designing hardware.

CS versus CIS

Another question that arises is whether you should pursue CIS or CS. If you’re focused more heavily on coding, stick with CS. CIS is a more generic discipline, focused on business and design and not as focused on implementation. It’s great for you if you want to be an analyst. It’s not so good if you truly want to be a code monkey. Further, you won’t learn the theoretical topics such as discrete mathematics and data structures and algorithms that will help you prepare for your life as a programmer.

The computer science degree is far more in depth, with a focus on courses that will help you with planning an app, gathering requirements, and deployment.

Double Majors

Getting a double major (or a minor) could be a great help — but not necessarily. Bill Karwin says that some degrees, like communications or English, “are notorious for having absolutely no value on their own with regards to employability.” But together with a computer science degree, that makes you a force to be reckoned with. An overarching issue with programmers in particular, especially as they’re usually behind a screen, is that they’re poor communicators. Communications courses would be tremendously beneficial for that. English, too, would help, especially if you’re doing anything like technical writing.

There’s a myth that a double major on college campuses will automatically get you the job, however. This isn’t necessarily true. If, all things being equal, a single computer science major job candidate with a 3.9 GPA is compared to a double major who has a 3.4 GPA, employers would more likely go with the candidate who has the 3.9 GPA. Further, employers might consider that you’re more committed to computer science if you focus on that exclusively, though that’s not necessarily a given — it all depends on the employer. Regardless, if you do a double major, do both of your majors well.

If you want to enhance your education, any of the aforementioned areas of study (physics, geography, accounting, economics, business, math, etc.) would be useful for coders, depending on the specific job you’re seeking. Also, having some knowledge of philosophy or formal logic will also help you be better at debugging than if you don’t.

Courses out of Pure Interest

If you were taking other courses during the summer or during the school year out of pure interest, it may also help to add it to your resume. This is especially true if the course is relevant to the job.

Having unrelated courses on your resume would provide a “talking point in the interview and targeted multiple angles on career development,” says Chang Yoo. “Expressing passion and showing evidence helps tremendously.”

On the other hand, you may be giving off the impression that computer science isn’t a priority. Why not take more computer science classes out of pure interest?

The Dreaded GPA

You may not necessarily be the best student. You may fear that one bad grade could affect your prospects for getting a great job.

Let’s talk about that bad grade: if you got a D or an F on a course related to your major in computer science, repeat the courses and do well on them the second time. In most cases, your transcript won’t be requested. Some companies will ask. If you are forced to provide your transcript and didn’t retake the course, explain the bad grade (or the W on your transcript) but don’t make it sound like it was the professor’s fault (don’t say he was a stupid professor, for example). Show that you learned from your failures — you were overwhelmed and need to pace yourself better, for example, or you didn’t see eye to eye with the professor during the coursework. If it comes up by the hiring manager, be prepared in your mind with the response needed to justify the less-than-ideal grade. Don’t fumble when you’re discussing it.

If your GPA in computer science is really good, flaunt it. If your overall GPA isn’t as great, leave that off of your resume. A resume saying something like “Major GPA: 3.9” will hold the weight needed to get your foot in the door in your first job. If you’re asked for your overall GPA, be honest and explain why you didn’t do so well in your other classes. Emphasize your strengths. If your GPA isn’t particularly great even for computer science, leave it off your resume; you may not need it — but may be asked. On the plus side, a GPA is a “first job” issue. Once you have the experience, you won’t be asked anymore.

Just remember, a very high GPA will help you score an interview. A low GPA will just make you need to work harder to get a company’s attention. Show off your side projects or experience. And rule of thumb: there is no one-size-fits-all GPA for your job prospects. The higher, the better, of course, but it may also depend on the career path you are taking.

Don’t give companies a reason to filter you out on paper by displaying a less than stellar GPA on your resume. If they’re interested, that’s when you stand up and sell yourself to a prospective employer. Get ready to tell them that you still have the skill set they’re seeking and that you’ll rock at it. In the meantime, if you have good experience on the side, focus on getting references from people you’ve worked with and professors who can vouch for your ability. Also, work to build up a kick-ass presence on Github, which includes knowledge of multiple languages if you have the skillset. The passion to be self-taught and to do it well will work in your favor.

Bachelors of ________

Does it matter if you get a BA or a BS? Usually not. The reason why I got a BA at my Ivy League university was because there was a dedicated program for BS students that was only accessible if I attended the school of engineering and applied sciences. Your situation may be similar. The BA degree may have fewer math and computer science course requirements, both of which would be helpful and which would provide you with a stronger background.

Most companies won’t look at whether you get a BA or a BS, and they usually won’t care. But if you go into a career path that is more math-heavy, you may elect to take those math classes at college. Get the skills you need and you’ll be just fine.

How Internships Can Help You in Your Job Search

One of the best ways to grow your experience for the real world is to pursue an internship. Internships are offered at a slew of companies looking for tech chops, and usually are real work, building toward a company’s goals. Depending on the company, internships may be paid or unpaid, and interns may work alongside full time employees as equals or as trainees. Interns also receive mentors, full time engineers who work with interns to help them grow and develop their skills.

More so, it’s true hands-on experience to grow your resume. If you have an opportunity to take an internship during your college career, it’s almost a no-brainer to take it. The best way to locate an internship is to check sites like LinkedIn for listings, but don’t hesitate to look at the “Careers” pages of companies you may be interested in working for. You may also get your foot in the door as well through a personal connection. Your professors could have industry contacts that can help you get a job as well.

One of the most important things we need to stress here in this guide is that you must look for internships early. A good summer internship may have its spots taken as early as October or November of the previous year; they’re pretty competitive. If you don’t have an internship after Christmas, you may also give off the impression to companies that you’re not as employable, making them think, “why hasn’t anyone made an offer yet?” It never looks good to wait until the last minute.

Before your internship is over, get feedback on your overall performance so that you can know how to improve. If you’re interested in pursuing employment with the company after your internship, ask! Find out what opportunities may be available to you now that you’ve gone through their internship program. End your internship in a good way, keeping in close contact with your manager (who you’ve hopefully built a good rapport with), and thank your management team and colleagues for the opportunity. It’s even better if your manager will volunteer to use him/her as a reference. Always keep your options open for other employment, but if you’re happy and love the culture at the internship, that may be just the place you’d want to be after graduation.

Remember, you already got your foot in the door as an intern at that company.

A Short Note on Co-Ops

When you graduate, you may have never heard of a co-op. Not many schools offer any. It’d help to learn what a co-op is to explain why.

As Daniel explains, “co-op is short for cooperative education.” The idea of a co-op stemmed from a hybrid of classroom experience and work experience before students graduate. They are typically part of a college’s curriculum. With a co-op, you may or may not get school credit. In some instances, co-op programs are full time and last one or two semesters, and do not require you to be doing any type of schoolwork in tandem.

The reason co-ops are relatively hard to find is that companies typically partner with universities to establish co-op programs. Not all schools are on board with the idea. In order to get into a co-op, speak with your career counselor to see if such programs are available, and seize the day while you can. I’m very lucky to have married someone who attended a co-op position, because once he graduated, he continued his employment at the same company.

Co-ops aren’t tied to your traditional education, but count as work experience, just as internships do.

Successful School (and Personal) Projects

Some of your school and personal projects may be big wins. Maybe you wrote a successful paper that was cited by other educational institutions. Maybe you built an iOS app that is selling well in the App Store.

These are great ways to build your resume and credibility for the time that you get into a job. Be sure to explain exactly what you were responsible for, be it frontend coding, design and general development, backend, or UX. Even if you’ve worked with a group or with a few other students or colleagues, it’s a way to demonstrate that you have “demonstrated teamwork, initiative, and the ability to finish a project and get it to market.”

Should I Do a Research Paper?

Is a research paper really worth it? Unless you’re going into academia after college, the answer is in your favor: probably not. Most companies won’t care as much about the research paper than in your skillset.

It’s important that your schooling helps you grow your footprint and knowledge in becoming a computer science. A research paper won’t hurt, but it’s not going to make a significant dent on whether you’ll get the job or not. Plus, if it takes too much time and you have to push graduation to pursue the research, you could otherwise be gaining value experience if you were in the real world already.

All things being equal, though, that research paper may tip you over the edge, and may open doors for you.

By the way, if you want to further your research experience, you can try to get into research experience for undergraduate program. REUs are funded by the National Science Foundation (NSF) and just like jobs. They may also require faculty references to get in.

Do Employers Care About Work-Study Abroad?

In a nutshell, it doesn’t hurt to pursue different cultures and countries while you’re a student at a university. As a college student, you don’t have many opportunities to go abroad, and while you’re currently at college, it’s a good time to try. You’ll find that the experience will be rewarding and that you’ll get great exposure to cultures that you may not otherwise ever have in your lifetime. As many say, it’s a once in a lifetime opportunity.

You don’t necessarily need to include work/study abroad on your resume; most employers won’t require it. Those who do need a transcript may or may not respond well to a work/study abroad program, but in reality, it’s unlikely that it would be a deterrent against employment. As Nico Gevers suggests, “trying to figure out what a future boss might want should not be the deciding factor in any decision you make today.”

Your Focus in Education: Now What?

Whether you were an unpaid teaching assistant (or an Advanced Placement Computer Science teacher), it’s not a bad thing to say that you worked in such a capacity. TA experience is not frowned upon. It shows prospective employers that you have a fundamental understanding of the topic you’re covering, which in itself could be tremendously helpful in getting consideration. Moreover, if you can teach aspiring developers, you are ahead of the game. Cody Sparky Wood explains it well, reminding us that “there is a saying that … if you can’t explain it simply, you don’t really understand it.”

Alone, TA experience doesn’t necessarily amount to much. Companies will do rigorous technical interviews to ascertain if you’re truly good at coding. Any type of expressed teaching experience is typically seen as a positive toward employment, not a negative.

However, the more you teach, the better you learn. You’ll be able to improve your skills while helping others. And if you teach, you will be able to see things from different angles, the angles of your students, which could be extremely vital for your personal and professional growth.

Going One Step Beyond: Master’s Degrees and PhD’s

Sometimes, you may feel ill-prepared to go to work right after school. Perhaps you want to get a master’s degree or a PhD. There’s nothing wrong with this path, especially if it gives you time to think about what you truly want in life. A master’s degree would “afford you the time and space to test the waters gradually and ease you into any endeavors you wish to pursue,” says Omotola. It’s also useful to go with a master’s degree or a PhD if you want to focus in areas like computer vision or artificial intelligence, but it’s not so useful if you’re focused on the more technical side of things. Still, “the more you learn, the more possibilities you create for yourself,” says Vishal Anand.

If you’re an international student looking to pursue a master’s degree, it’d be better to get it from an accredited and regionally recognized US university. Doing so would make it easier for the HR department at a US company to weigh its true value.

Like a college, the school you get a master’s degree matters. More recognized universities will catch the eye of hiring matters. It’s not necessarily all you need to seal the deal, though. It will, like your undergraduate studies, help you get that interview. Everything else is on you.

An MBA would be great too for the business experience, but expect there to be a bit of resentment in the workplace as Joe Grossberg says, “engineers gripe that MBAs don’t know jack [about technology]” and “MBAs gripe that engineers don’t know jack [about business].” An MBA isn’t necessarily the best use of your time if your focus is in a technical role, but MBAs are usually well-networked which can help in the job search. Instead of focusing on an MBA, there seems to be a preference on those who are more into the tech side of things, be it having computer hobbies or a “techno fetish.”

On the plus side, you can wait until you get hired to pursue a master’s or PhD. Some companies have perks such as degree reimbursements just as long as you’re maintaining a certain GPA. Speak to your hiring manager and find out what options are available to you once you are hired. Some companies will welcome the pursuit of a higher level of education, since they don’t want to lose valuable assets to their company.

Don’t Get Lazy

Let’s say you just got hired, and then you figured it was a good time to slack off. Just like in high school when you were accepted to a college program, it’s never a good idea to let senioritis kick in — your colleges may have required you high school transcript, as will your employers (probably). Even if you only have one semester to go, you should absolutely take it seriously.

You shouldn’t forget that your first job out of school may not be the only job that requires a transcript. If you get lazy, it could translate to how prospective employers see your commitment (or lack thereof) to software engineering, which according to Jack D. Leach, is “a big characteristic problem” and “could look very bad to you.” Further, as Neville Kuyt reminds us, “the purpose of school is … partly to prepare you for the rest of your career (where your GPA may well be a consideration), and partly to establish a habit of learning.” It’s critical to continue “learning for the sake of learning.”

Your job opportunity isn’t permanent, and if you screw it up, that’s time you’ll never get back.

The Job Hunt: Where to Start

You will probably find most of your jobs on LinkedIn, Monster, CareerBuilder, Stack Overflow Careers, and Dice. Another place to look for job opportunities is at local meetups outside of school. Take advantage of open-houses at your school or in the area, career fairs, group interviews, hiring events, staffing companies, hiring webinars, and anywhere you possibly can that is related to the job application process. Establish connections as much as possible.

Some other sites tools recommended to find jobs:

  • Jobr: a mobile app available for iOS and Android that provides users with job opportunities that you can apply to at the swipe of a finger — literally.
  • Blonk: a tool with a similar concept to Jobr that allows you to find a company you like and tap to express your interest in the opportunity
  • AngelList: Perfect for those hunting for startups in particular, AngelList shows vacancies in all types of companies, including pre-funded startups to startups that have raised a Series C round.
  • Glassdoor: An anonymous resource where you can find how people rank the companies they work at, and where to find up to date salary information for your company or city.

There are also hundreds of job listings across the web on smaller sites: PowerToFly, TechMeAbroad and JobsInTech (which covers the companies that sponsor visas), and many more — including, quite possibly, your college’s website. Some of these smaller sites may have exclusive postings, so get creative and hunt for opportunities. Bear in mind that some job listings are also only available on the company’s websites, so make sure to go there if you’re looking for an opportunity.

You can also leverage networks like Hakka Labs and Toptal, which lets you get hired for high profile development jobs.

I highly recommend using JobHero to keep track of all those job applications in a great easy-to-use interface.

To prepare for your interviews (though we plan to cover interviews in a separate post), reddit user sohamehta suggests his site, InterviewKickstart. We’re down for that.

This list is not exclusive by any stretch. There is no shortage of opportunities out there for you. Developers are in big demand. Research companies that fit your technical skill set and put time into interviews.

If you’re specifically looking at jobs in Silicon Valley, you can read about Brice Pollock’s experience and take advantage of recruiters. We’ll save our tips and tricks on recruiters for another article.

Oh, and some companies hire up to a year in advance, so get moving in your junior year.

Types of Software Engineering Jobs to Pursue

The world of software engineering isn’t only about being a programmer. Sure, that’s the most dominant and common one. You can build an application on the web, or for Android, or for a desktop. You could be building apps for up-and-coming products like the Oculus VR. The bulk of your work will be about translating business requirements (specifications) into working code, and the the breakdown is about 90% code and 10% theory.

You could also focus your energy on building for tools and infrastructure. This is when your job involves building operating systems, compilers, search engines, or networking protocols. The knowledge breakdown is about 50% code and 50% theory. Since there are fewer jobs in this space, it’s also more competitive. It’s best to specialize in one thing and do it incredibly well, and to pursue higher education.

Finally, you may focus your energy on research and development. This is where a higher level degree may be needed, ensuring that you can develop brand new ideas in computer science.

Other Types of Jobs to Pursue

If, by now, you’ve given up on software development but still are a CS major, there are plenty of jobs available to you.

  • Management: a combination of a computer science degree and an MBA
  • Attorney: a law degree with your CS degree
  • Tech writers
  • Data scientists have a strong understanding of statistics and analysis
  • Information security
  • Bioinformatics
  • Technical recruiter
  • and the list goes on. I graduated in computer science and am writing guides like this for CareerDean.

Computer science graduates do not have to become computer scientists or coders.

Entry Level or New Graduate Jobs

When you start to find a job, you’ll see a handful of listings that seek out “new grads” and you’ll also find “entry level” jobs too. Is there a real difference?

Not necessarily. Most entry level jobs are recent graduates. While it doesn’t hurt to apply for an entry level job, bear in mind that some people see “new grads” applying to recent college graduates who have absolutely no industry experience except a relevant internship. Entry level jobs apply to someone who has 0 to 2 years of experience. It all depends on the company. Some companies use different terms of the same meaning.

Apply to both types of jobs. You never know what will happen.

Be Prepared to Not Be Prepared

Even with a computer science degree, you will have weaknesses you’ll either learn with other coursework in school, or you’ll learn them in the real world. Here’s a list of what you should be prepared to learn about during college on the side or after you graduate:

  • Project proficiency and practical/problem based workability (see PBL)
  • Version control management
  • Agile project management
  • Group dynamics/working in groups
  • Continuous integration
  • Unit testing
  • Multiple languages (there’s more than Java, PHP, and C++)
  • Exposure to modern environments
  • Developer workflow competence
  • Creative analytical approaches
  • Writing skills (it helps to write a coherent description of the tech they’re working on)
  • Humility to ask and research deeper
  • Use of debuggers, profilers, and other development practices (source control)
  • Capability to start right now
  • and many more.

Not all schools will not prepare you with the above; programming is a lot more than just the sheer act of coding. Being a good computer science major does not mean you’re a good programmer. Being a bad computer science major could mean you’re a great programmer. Academic institutions provide a playground that is “too controlled and small, as well as too academic and impractical,” says Mitch Pirtle. You’ll need to supplement your study with practical experience, and in many cases, that’ll only happen when you get a job.

Are You Ready?

Will you find that your coursework will have adequately prepared you for a job as a software engineer? The answer is: while some schools do well with the educational process, for teaching you how to be a good coder, probably not. Many report that their experiences have been more based on theoretical concepts instead of coding, and don’t necessarily give you the foundation to understand collaboration, versioning, unit testing, and other skills required in a typical work environment. Others report that schools will teach you how to independently grow and teach yourself, which is significant. With semesters being as short as they are, you’re effectively forced to learn and to do so quickly.

At the end of the day, school is great. You’ll graduate alongside other software engineers who are just as skilled in theory as you. But the “real world” will expose you to the experience you need to grow and be better at what you’re doing. Schooling, and especially a good school and good grades, will give you a leg up on the job market, but it won’t necessarily get you a job. You — your skills, your passion, your personality, and your work ethic — will get yourself a job. School will, however, give you an adequate foundation to get started in your software engineering career.