Is it okay for someone with a 2-year experience in the field to apply for an unpaid internship?

Hello, guys!
I would appreciate some words or advice on a dilemma I’m having right now.

I am a self-taught developer. In January 2019 I managed to get my first job, which at the time felt incredible. However, almost 2 years later, I feel like I did not grow professionally as much as I had hoped at this company.

I think the reason for this is because I was moved around to do different things, never sticking to something.
When I got the job, I was told I would be working with Java and the Spring ecosystem. 2 months later, I was moved to work on an AngularJS app, which I had to pick up from scratch. 3 months later, moved to work on a React Native app, again with almost zero knowledge. And so on… You get the idea. 2 years down the road and it looks like the best description for my career so far is " jack of all trades, master of none".

I must change something.

With that in mind, there is a pretty big and cool company in my city where I would like to try and apply for a job. However, it looks like the only way in for now is through an unpaid internship, after which there is a 90% chance you’ll get hired.

Financially, it won’t be a big hit since I have some savings.

But my problem is the following: is it okay for someone with a 2-year experience in the field to apply for an unpaid internship? Or is it going to look embarrassing and laughed upon?

Thank you.

1 Like

I recommend people avoid unpaid internships like the plague. They are exploitative and should be illegal.


Hello @almoont, welcome to freeCodeCamp!

This should be the goal if your just starting out due to the following reasons:

  1. You don’t have as much experience knowing what is out there
  2. You don’t have any existing (or much) experience to build off
  3. You don’t have as much knowledge of the overall context of a given system, working on multiple parts gives you a better idea of the whole.
  4. You might not know exactly what you want to focus on, or not have the best idea of what you can focus on.

From there, you can focus on what you like more, or continue on your “master of none” approach. There isn’t anything technically wrong with this, because you will keep learning new technologies. However, it does mean your overall skillset wont be super focused, which could be a good or bad thing depending on the situation. If anything it means you can easily slip into any given role and have “extra” experience outside of said role which can come in handy.

So technically you did grow, just maybe not as how you wanted. If increasing the number of technologies, and parts of the stack you know and have worked with isn’t growing, what would you consider growing in your career?

A big and cool company should be able to pay their employees for the work they do. If the guy cleaning the toilets is getting paid for his work, shouldn’t you get paid too? (Nothing against the guy cleaning toilets, I was doing that job at once!)

Leaving a paid for job that doesn’t horrible suck (if you made it 2 years I assume your not about to claw your eyes out) for an unpaid job in the current job climate seems unnecessarily risky. Who isn’t to say you can get what you want at your current job?

So what would you consider “growing your career” so much so you want to leave your current job?


Since you already have your target company that you know is actively hiring, and you haven’t spoke with them yet. Why not contact the recruiter and simply ask if there’s opening headcount for junior/mid level dev?

It’s weird to have it on your resume imo and you will have to explain it better than what you have put on. You might end up removing it if you can’t come up with a convincing story. But what is the point if you remove that out from your resume? Why not forget about the internship, spend a couple of weeks to sharpen a specific set of skills that interest you the most, and let that be your bread and butter. Then you won’t be as stressed with being master of none. And it is not that bad that you have worked across multiple projects in a period of time. I know someone who works as a software engineer in a major financial institution that being routinely put onto different teams to deal with different projects every few months.

Unpaid internships are profoundly unethical. They are illegal in some places and should be everywhere.

Two years of development experience means that you should looking for a job with better pay and career prospects, not a demotion.


Hello, @yuchiu, thank you for your answer.

I did reach out to them, they do have openings, just not in the development department. For now they only hire devs who complete the mentioned internship.
I also think it is going to look weird on the resume, but still wanted an outside opinion.

Yes, I do intend to do that, but it won’t be so easy, will have to cut back on some things that occupy my schedule.
That’s why I would’ve preferred that this “sharpening of a specific skill set” was happening at my current job.

Hello, JeremyLT, ArielLeslie, thank you for your thoughts. Will try to avoid the internship and focus on a full-time job.

Hello, @bradtaniguchi, thanks for taking your time to answer.

For me, growing would’ve been consolidating and adding more to the knowledge of the technologies I already had before I got the job. Focusing on a few, filling in the gaps and experimenting until I felt comfortable and confident with them.

I’m not currently able to relocate, that’s why I am looking at job openings in my city. And 9 out of 10 are technology specific.
And I can’t seriously consider the ones where my experience only consists of working for a couple of months on a project that used that specific technology, barely scratching the surface. And for me, there are quite a few of them.

You may want this, but

This is what you’re likely to be doing for most of your career. You are a developer, so you are being paid to develop. And what you’re describing is you becoming experienced in web and mobile GUI development using JavaScript as the primary language.

You may have wanted to focus your career more on Java, that is very understandable, but it is absolutely normal to end up working in a different language for years at a time

To reiterate, you are employed as a developer, the company wants stuff developed.

That’s not to say the current job isn’t crap, and that you should not look for a new job. But this:

Is an extremely exploitative company. This is not a good idea. It’s highly unlikely that, if you worked there for the same period of time, you would be in a significantly different position to where you feel you are at now. You would just have have added a long period of not being paid anything. Also, if you want to focus on a specific subset of development to specialise, completely removing your financial security is not a great way to get that focus.

Be incredibly careful about going all out to work at a “cool” company. They are the same as non-cool companies (and in this case, significantly worse in terms of how they treat employees).

Edit: It may feel like you haven’t grown. But even with just the two things you’ve mentioned, someone hiring can confidently assume you can pick up different frameworks easily, you understand the tooling in the JS ecosystem, you understand build and deployment tooling options for mobile applications, you can switch languages. You only have two years experience so expert knowledge wouldn’t be assumed, but it can be assumed that broad shallow knowledge has given you the ability to know what questions to ask, and that broad experience means you can learn [and apply that learning] very quickly. It seems more that you lack confidence

1 Like

Hi, @DanCouper, I appreciate your feedback.

I think it depends on the company. A good friend of mine began as a Junior Java Dev, and 5 years later he’s a Senior at the same company. And in this time, 95% of his work was with Java and the Spring ecosystem.

On the other hand, I too was hired as a Java Dev, but it turned out to be completely different. I am not complaining, I just feel that it could’ve been more useful if I was to master a specific set of skills instead of jumping around between many.

I don’t think I lack confidence. I am just being a realist.
Some JS knowledge here and there isn’t going to help me if I were to apply for a job requiring good knowledge of Spring, for example.
And I sure as hell am not ready to apply for jobs that require good knowledge of AngularJS, or React Native, or Vue etc.

Anyway, thank you all for your thoughts.
I have decided to avoid this company and its internship, and instead rework my weekly schedule to have more time to focus on a narrower set of skills that I feel are closer to me, and in a few months to try and find a job that might suit me better in terms of growing and developing.

1 Like

Why do you think that? You’ve been doing this for two years: I would bet large amounts of money that, [for example] any of the companies I have worked for were to hire you, you could be productive in a short period of time if placed with someone more senior to guide you at first. Don’t underestimate how valuable two years of experience is. Frameworks are much of a muchness, they each have their own patterns and vagaries and you may feel that not being an expert in a specific one is a problem, but it normally isn’t.

I think this is a very sensible thing to do :+1:

TL;DR – good things are happening for you in your present job. Don’t jump yet.

You’ve worked in a bunch of different stacks, doing a bunch of different things, in the past two years. That is GREAT experience. Don’t sell yourself short.

I know it’s frustrating to get bounced around from project to project and technology-stack to technology-stack. (It’s happened to me.)

But I urge you to think of it this way: You’re being trained for a career as a developer with broad knowledge. If you stick with this career you will learn many new technology stacks. And I mean MANY. Technology stacks come and go, but user needs only grow with time.

Is this training intentional? Do your supervisors know they’re training you on various parts of the company’s business? Maybe. But what they think doesn’t matter as much as what you think about your training.

I know it’s frustrating to be two years in and feel like you don’t have mastery. But you are developing it. In many knowledge-based careers it takes several years to gain mastery. One of the best things about the developers’ career is this: there’s always more to learn. Be patient with yourself.

(And, others have mentioned this: Exploiting workers with unpaid internships is not cool. “Cool” companies don’t do that. Name-brand doesn’t necessarily mean “cool”.)