33

I am currently a 3rd year college student pursuing a degree in computer science. As part of my degree, I am required to complete a number of co-ops/internships. These are paid internships in the United States. Students are fully responsible for securing theses positions themselves (searching, applying, interviewing, etc.). It is great experience to have in an early career, but it also means the quality of the positions can vary depending on where you get offers from. I have completed one summer internship and am in the middle of an 8-month internship at a separate company (both software engineering roles).

While these have started out as exciting opportunities to get "real world" experience, both internships eventually devolved into mostly unfulfilling work that make me question my career choice as a whole.

My biggest grievances with these experiences have been the following:

  • Unsatisfying workload: The amount of work I have been assigned is often way less than what I am capable of handling. My managers always praise the pace and quality of my work, but there has simply not been enough to keep me occupied and engaged. Addressing this with comments such as "I feel like I could be taking on more responsibility" has not resulted with much change.
  • No collaboration: I have been the sole developer on all of the projects I have been assigned. While having a high degree of freedom is nice, I feel like it has limited my early career learning and growth. Not having the opportunity to collaborate with other coworkers or pick the brains of more senior developers has limited me to doing only what I am capable of teaching myself.
  • Little constructive criticism: Being an undergrad student with less than one year of work experience, I fully understand that I have a lot to learn when it comes to my skills as a developer and overall employee. However, I feel that I don't receive the criticism necessary to make these improvements. Code reviews have ranged from non-existent to very informal, and directly asking for ways I can improve has not been fruitful.

While there have been moments where these internships have felt challenging and rewarding, I'd say the grievances listed above have caused them to feel unfulfilling a majority of the time. I do enjoy the technical challenge that programming provides, but not enough to justify dealing with these issues.

Are these just unfortunate experiences that don't reflect the software industry as a whole? If so, how can I make the most of my time to hopefully secure a better opportunity in the future?

If this is actually reflective of life in the software industry, do I need to do some soul searching when it comes to my career path?

16
  • 4
    Can you search for a different internship at a different company ? I think most companies want to go easy on interns for various reasons. However, I can guarantee that after you graduate and become a full time software engineer, there will be great, fun, and even potentially very technically challenging projects with tight deadlines for you to work on. Apr 26 at 0:18
  • 2
    Are you seriously complaining about not having enough unpaid work to do for a private company?
    – iono
    Apr 26 at 12:54
  • 2
    You'll never be fulfilled. Either it's a little underwhelming like it is now, or it will be to much. No job will perfectly match your expectations, skills, and energy. If you have a good boss, count yourself lucky because it's a nightmare when you have a bad one.
    – Issel
    Apr 26 at 19:40
  • 6
    "Addressing this with comments such as 'I feel like I could be taking on more responsibility' has not resulted with much change" - don't rely on somewhat vague hints (and especially don't stop at vague hints if they didn't work). If you don't have enough work to fill your time, then say "I don't have enough work to fill my time, what can I work on?" (or, better yet, find potential things you can do and discuss this with your manager).
    – NotThatGuy
    Apr 26 at 22:07
  • 6
    I'm guessing you went for a larger corporation. Try a startup.
    – user541686
    Apr 27 at 10:15

13 Answers 13

75

If this is actually reflective of life in the software industry

It's reflective of normal working life. Jobs don't exist to make people feel 'fulfilled'. Most people work to get paid.

So people either find a job they love doing or they soldier through any job for the money. Or with a mental shift for some they can be fulfilled doing any job. Most people have some mixture of this further into their careers.

I took up network engineering, not because it was fulfilling, but because it is highly paid in my locale. If fishermen or ditch diggers were making more, I'd be doing that.

9
  • 10
    "I took up network engineering, not because it was fulfilling, but because it is highly paid in my locale. If fishermen or ditch diggers were making more, I'd be doing that." - Surely you can't be seriously advising people to base their career choice solely on money. By that logic we'd all have to become miserable investment bankers. Research shows that neither job satisfaction nor happiness are strongly coupled to income but rather to how good you are at your job and how much you feel like you're doing something meaningful.
    – Peter
    Apr 27 at 13:54
  • 9
    It sure is easy to feel like you're doing something meaningful when that something puts a car in the garage and a chicken in the pot.
    – LeLetter
    Apr 27 at 17:53
  • 4
    @Peter Surely you must know salaries are not set in a vacuum but one's aptitude has some bearing. Hopefully what someone is good at also pays enough for comfortable living. If it doesn't, it may be wise to take a job one is okay at which does. Being a bad (jobless?) investment banker is probably worse than both no matter how much a good one is paid.
    – foreverska
    Apr 27 at 18:28
  • 2
    @Peter most places you don't have unlimited choice. I'd rather be an astronaut, but we don't have a space program. I came to my current country intending to be a fisherman until I found out how much they made.
    – Kilisi
    Apr 27 at 20:27
  • 2
    @Kilisi. If you make enough being a Network Engineer, you can still be a fisherman Apr 27 at 22:13
58

Is this experience reflective of life in the software industry?

Yes. And No.

From a company perspective, interns cost money. They are around for a very limited time. You need to invest a lot of money in training, then checking their output to make sure it is usable. If you get a good intern, you may use a little of the work for production. If you get a bad one, you cannot use anything. In most companys, developer time is a very limited and valuable resource. No one wants to spend a lot of time coaching an intern which will be gone in a few months.

So your experience as an intern is normal. In most places, interns get assigned a project that has been selected for you before you joined. If you complete it "too fast", there is nothing the business needs from you beside that. Use the time to study on your own. Expand and improve on your project, maybe rewrite it again and see where that leads. If you have access to company source code, read it and try to learn from it.

Is this experience reflective of life as an employee in the software industry?

No. As an employee, you are contributing to the worth of the business. If you are sitting around having nothing to do you aren't cost effective. Your manager will have a strong incentive keeping you busy. Still, you won't receive a lot of feedback, and coaching will also not be something you experience often. Software development is a craft that requires you to study a lot by yourself.

I have learned the most by making mistakes. Next is reading other peoples code and reviewing my own after some period of time. It's very rare that you get someone to sit down and explain something to you.

6
  • 5
    "From a company perspective, interns cost money." That strongly varies from company to company, and depending on what job the intern is doing. In many places, companies use interns as a very cheap way to get the work done.
    – Stef
    Apr 26 at 12:41
  • 5
    While I mostly agree with this answer, I would say that the cause is actually because interns are "cheap". Because they are cheap (and inexperienced) you give them unimportant projects where it doesn't really matters if things work out or not. And having someone tutoring them quickly becomes more expensive than having them without anything to do.
    – Echox
    Apr 26 at 13:24
  • 1
    Interns get assigned a project that has been selected for you before you joined. Yes, this is very common. It's often make-work created at the request of HR or a Community Relations team. Once it's done, it's done.
    – tbrookside
    Apr 26 at 18:57
  • 10
    @Echox The intern themselves is cheap. Getting usable output is extremely expensive. You basically have to assign a full-time developer to review the code. At that point, the developer can just do it themselves for half the time or less. Onboarding for software development is extremely expensive, and it is typically priced at around 6 months worth of salary. You don't drop that kind of money on an intern that will leave within the year.
    – Nelson
    Apr 27 at 2:41
  • 3
    Our company has a lot of interns returning as regular employees later. Maybe it's a cost initially, but it's also an investment.
    – towr
    Apr 27 at 10:33
21

It sounds as if no one is willing to invest in you because you're only going to be around for 8 months. But out in the workforce, you're also going to find places that are not going to give you this satisfaction you are looking for. As you gain experience, the work load will definitely change and you will be involved in more projects where collaboration is necessary. But always remember that "work doesn't love you back". There'll be plenty of projects where are you will think that the work is asinine, but ultimately the business wants what the business wants, and it is a means of getting you a paycheck. Also known as "eatin' regular"!

You would be better off taking that zest for what you're doing and building some cool technology on your own time, with or without collaborators. Have your own pet projects that the bureaucrats can't mess up for you. Derive your satisfaction there.

1
  • 1
    "There'll be plenty of projects where are you will think that the work is asinine" Very true. You'll probably get quite a few great projects, but there will always be some that aren't going to be fun. It's just part of the job (and I highly doubt there are any jobs where this isn't the case).
    – Dnomyar96
    Apr 26 at 5:35
6

"...eventually devolved into mostly unfulfilling work that make me question my career choice as a whole" get used to (ignoring) that feeling, I'm pretty sure it comes up in all careers from time to time XD

But seriously, try asking individual senior devs if there's anything you can help them out with -- that would solve the collab problem, the light workload 'problem' (too much time on your hands is never really a problem but rather an opportunity to figure out how to use it well e.g. learning a new language, framework, engine...), and probably the constructive criticism problem as well. It sounds like you've asked your manager for new tasks and haven't gotten much word back, but from their perspective that's essentially creating a problem i.e. they have to take time to find something for you to do. If you approach a coworker directly to chat about what they're working on and ask if they could use an extra pair of hands, you'll be solving a problem; that's much more likely to bear fruit. Maybe run the proposal by your manager first to make sure they're ok with you taking on the work, but if it's just a rubber stamp you need the manager will likely respond quickly in the affirmative.

4

Are these just unfortunate experiences that don't reflect the software industry as a whole?

Yes. No. Maybe. There definitely are workplaces where this is the way they work, but on one hand it's actually hard to tell that this is the norm, and on the other some would actually find this "fortunate" instead of "unfortunate".

Now, what one could tell is that these are (unfortunate) experiences that reflect internships as a whole. I'll try to explain why this is the case addressing your specific concerns:

  • Unsatisfying workload: Most companies (specially big ones) rarely have activities or projects ready for interns to participate in. Sometimes they even have to take time to decide or define what the intern can do once they have accepted it. So if you're efficient and swift with the task they assign to you and they don't give you more to do, it's most likely because they don't have more to give to you. Also, you shouldn't expect them to let you participate on ongoing, important projects that mean money to them and are either already planned enough to allow an extra member to participate, or not planned enough to allow an external to participate on it.
  • No collaboration: This is, in a way, an extension to the previous point. No matter how good you already are, you are still an intern and not part of the main workforce of the company. As such, any worker assigned to work with you will be more on a role of an advisor and less a supervisor/leader/coworker. All this means an investment of work and time for the company, something not all companies are ready to do for an intern. You expect them to be helpful on your personal growth, but they expect you to be an addendum that will eventually leave the company.
  • Little constructive criticism: Again, most companies aren't ready to invest time and effort to help you and specifically you to grow, specially if they don't have an space for you in the near future. You might encounter with people that are willing to give you advice and constructive criticism, but if that's the case you should take it as a favour from the person itself and not as an expected retribution from the company.

All this might even sound a little harsh to you; I hope not, as it isn't the purpose of my answer (and if it's the case I offer you my sincerest apology). But overall, I think the issue is in what you think an intership is. In the real world, an internship is less about what a company can teach you and do for your personal growth, and more about what you can learn by yourself by being in a company. If you want to learn, you should pay less attention on how they interact with you and more on how they interact amongst themselves.

3

On how to actually move forward, here's my two cents.

I'm going to assume that you at least somewhat enjoy programming, since if you hated it, you would've known by your 3rd year, in which case this answer is irrelevant.

Now, I believe internships serve 2 crucial functions. One is obviously to equip you for work, but an often overlooked functionality is for you to figure out what work you enjoy doing.

I'm going to naively catagorize all the software companies along 2 dimensions. One dimension is the size (this usually determines HOW work is done)

  • Startups
  • Medium sized companies
  • Large corporations

Another dimension is the thing they do (this usually determines WHAT work is done)

  • Engineering consultancy / Research
  • Product development (many sub-categories in this one)
  • ...

This gives you 6+ types of companies with vastly different work natures (granted some of these combinations are rarer than others). The earlier you figure out which of these 6+ best suits you, the quicker you are to find a job you like (or at least not hate). Unfortunately, once you actually start work, job hopping becomes tricky. This is where internships come in. Internships give you a commitment-free place to test if you would enjoy a certain type of work / work environment. Each type of company you cross off during your internship is one less job hop from finding what you enjoy doing.

So I believe the way to move forward is this: continue doing internships if you still have the opportunity to, and make sure these internships vary enough that it lets you determine whether or not you'd like to work for that type of company. Your internships should tell you what you're looking for, and it seems to have done exactly that.

I can confidently say that your grievances are not universally true, but some types of companies are more likely to give you that feeling than others. As you look for your next internship / job, keep in mind what you're looking for and ask the interviewer the apporpriate questions, e.g. ask about their code review process if you want more formal reviewing.

3

My answer concerns the first point mostly but is applicable to the other points.

You are an intern and temporary. You are not in a position where you can take more than token responsibility. In a supervisory role it can take a lot of effort to keep tabs on your staff, know what they are doing, set them good tasks to do, stopping them from breaking things or doing the wrong work or hassling other people within the company. Interns and new starts can consume a lot of your valuable time.

I guess that you are very keen and eager to do lots of good work and very focused on that, probably doing lots of extra hours while everyone else in the company has family and other non-work related responsibilities and pastimes. At university the projects, labs, assignments etc count towards your degree and are designed to be challenging but achievable. At work if the company is not diligent and careful then bad work or a mistake could kill the company and jobs would be lost. Most people don't understand just how difficult it is to get enough sales to build a sustainable business - it is extremely difficult and the majority of businesses fail. This is why the pace you are expecting is different.

You can't expect a company to set aside hundreds of people-hours to make sure their interns are having a good or fulfilling experience.

Concerning lack of collaboration or feedback, again you are temporary and again, all these other people you are working with probably also have their own objectives, tasks and other sources of stress and pressure. Helping you probably doesn't feature on their annual review.

If you enjoy the challenge of programming and like the technologies you are working with/on then this will probably be the right industry for you but you need to find the right company that will train you and allow you to grow, for your permanent job. In the mean time use any spare time to learn new things and learn from your colleagues.

1
  • As a senior programmer and had some intern beside me. I can say this is real answer.
    – nyconing
    Apr 27 at 9:24
2

I don't think there is a typical software program.

You might find yourself on a big important program, with a large multi disciplinary team. There are regular team meetings to check progress. Everything gets reviewed to make sure it's been done right.

Next you might be on a tiny program, with a small budget. The only team members are you and a manager assigned part time. You're expected to get it done by yourself.

1
  • People have been paying me to write software for >40 years now. I've never experienced your last paragraph. I'm not saying it doesn't happen, but I have found it easy enough to avoid. Apr 26 at 14:58
2

I have worked as a software engineer for over 35 years. My experience has varied a great deal by company and manager. The better jobs offer great opportunities to learn from others via code reviews and informal collaboration. I've learned a great deal that way and you're right to value that when it happens.

If you enjoy writing software as an experience in itself, you will probably enjoy it as a career. That being said, there are better and worse work environments. My previous job was a nightmare due to the personalities of a couple of people working there. Reviews were non-existent and any suggestions on improvements were treated with contempt by both of those people.

Where I work now, every pull request is reviewed and feedback given. We all get along really well and enjoy talking about new things we are learning. What's even better, many of those observations actually end up making a difference in what we are doing. I'm also getting paid fairly well for the local market.

My suggestion would be to ask pointed questions about the sorts of issues that matter most to you as a developer during interviews. You are there to ask questions just as much as to answer them. You get to filter them too. If you don't get clear answers on those questions or those answers aren't what you are looking for, feel free to move on.

Others have pointed out that you are considered more of a cost than a benefit to the company early on in your career. While this is true, companies invest in interns because it's a great pipeline to finding new employees that CAN make strong contributions in short order while they cost less than more experience people. If you can make the case that you are a fast learner, you'll go far quickly. I've seen that happen over and over again.

As for workload, I see most projects as being way behind schedule due to overly optimistic estimations or due to politically driven timelines. You'll rarely be ahead of schedule once you graduate.

1
  • +1 My own experience agrees that its more about finding a team that fits with how you like to work.
    – Erika
    Apr 27 at 13:15
2

Are these just unfortunate experiences that don't reflect the software industry as a whole?

To me, it sounds more like an unfortunate intern experience. Some intern experiences will be better than others, but a good internship program will actually have low expectations. It's meant to give students some low-stakes work experience and assess their readiness for associate level positions. Consider the ramifications of an internship with high-stakes work and expectation of mid-career experience on day one - is it worth it to burn out students in such an environment?

If so, how can I make the most of my time to hopefully secure a better opportunity in the future?

Consider that you are student first, intern second.

  • Measure how much time it takes you to complete tasks, report that to your manager, and review expectations. Ask if time leftover could be spent on training/comp sci homework

  • Get to know your coworkers and their jobs. It's not all servers and front-ends. Who's the project manager? The product manager? The facilities manager? The sales manager? What exactly do they do? Why do they do it? Do they like their jobs? Who's focused on pet projects and who's working on lead projects? What's the market value of the company's assets?

  • Talk about what you know. The youth know things! What's the new disruptive technology or buzzy event on campus? There are things (like Coachella) that may be old news to you and big news to mid-career employees.

  • Interviews are a two-way street. Start a reflection on the kind of environment you want to work in, and the kind of work you want to do. Write questions you could ask a future employer that would help you find a fit.

  • Embrace the balance you have now. Let down time give you energy to exercise, plan meals, make friends, and explore things outside of school and work. As time passes, it gets harder to incorporate these things into a sustainable routine.

If this is actually reflective of life in the software industry, do I need to do some soul searching when it comes to my career path?

Our modern times allow a little a job hunting/career switching early in a career. Be very selective with your final internship, and think of the many ways to make software. Do you like making things relieable? Fast? Beautiful? Mobile? Feature-ful? Deliverable? Managable? Compelling? Let these questions guide your research going forward.

Your degree is a tool; you will want one that will give you a lot of opportunities, and software has a lot of opportunities. Let the opportunities you find inspire the soul searching.

1

Your experience is not representative of the software industry as a whole.

  • Unsatisfying workload clearly is not an endemic issue, because if you excel at your work it is very easy to advance to more challenging positions
  • There are clearly many teams which collaborate significantly
  • In many places there is plenty of routine feedback and more available if you ask for it, including code reviews, performance evals, 1-on-1s and feedback on projects

The one kernel of truth you can take away is that all of it takes time (months) to right itself. So for example, just because your job is too easy and you are bored, doesn't mean you'll get promoted the next day. It will take time for your boss to recognize how good you are, and then it will take time for a tougher project to become available, before they can move you to something more challenging. If you try to seek a new job, it will also take time before you've accumulated enough experience at your current job to convince employers that you are qualified for a bigger one. In either case, it will take at least 6-12 months. This is longer than the entire duration of a typical internship, so don't be surprised that it feels like things will never improve. During an internship, they probably won't :). But over the course of a few years in the industry, you will certainly rise to your level of competence (or incompetence).

Another thing is that jobs are not a lottery, you have a choice in what you will do. Since you have now discovered that you enjoy challenging work, high collaboration and constructive feedback, you can make an effort to seek out positions where these things are available. You know how in interviews they ask if you have any questions? This is where you say:

  • What is the technical complexity of the work I would do in this position? What will be the biggest challenges? Can you give examples?
  • Would you say this position is more individual work, or collaborative? Can you give examples of how the team collaborates day-to-day?
  • How do you provide feedback and constructive criticism to team members? How frequent and thorough are things like 1-on-1s, code reviews and discussions of planned projects?

The interview is not just about them seeing if you will be a good employee, but also about you seeing if they will be a good place for you to work. And as a bonus, asking the above will probably make you look pretty good as a candidate.

0

Not a full answer but a suggestion picking up from the point made by this answer:

If you get a good intern, you may use a little of the work for production. If you get a bad one, you cannot use anything.

One thing you could spend some time on is making sure that the work you do does retain value after your departure - taking on things like

  • ensuring your work is documented from a user point of view
  • making sure your work is being built in the team's Continuous Integration system
  • ensuring your work is documented from a developer point of view - readme.md files in the repo, code comments if relevant, automated tests
  • demos and usability testing of your work with stakeholders, and iterative improvement based on the feedback
  • presentations to the wider team showing what you are doing - or introducing interesting technologies you've been able to spend time learning
0

I find it interesting all of these answers are fundamentally very different from what you would read on a place like Blind, maybe because there's a lot of Europeans here. There, the unanimous answer would be (in nicer terms) "spend your time practicing leetcode to get higher-paid jobs." Lack of code review and responsibility IS a handicap for your career and it's NOT reflective of the software industry if you're chasing most competitive high-paid jobs in the US. But to get highly paid jobs in the US in early-career you mostly just need leetcode practice, so that's the objective answer to how to make the best of your time to secure a better opportunity later. I recommend reading some insight on Blind if this resonates with you.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .