7

My Situation

I am an unpaid intern programmer for a new startup. However, I am not being given actual programming work - instead, I have other grunt-work responsibilities that are constantly ongoing and never-ending. I have not yet completed my Bachelor's and I am working to gain experience.

I joined the team simply because I wanted to gain experience before gaining a paid position in my upper years.

My Concern

I won't be getting any real experience with the actual codebase or even the basics of software development at this rate as the senior programming team is very busy and never assigns me actual programming work to do.

I don't have direct access to the codebase. What can I do to learn more about the code or about software development, or to gain access to the codebase?

  • Can you tell us in what country you are ? Unpaid work is not legal everywhere and it could just be a red flag in itself. – Walfrat Jun 13 '18 at 7:40
  • I'm in Canada, however since this job is not equivalent to that of a full-time employee it is legal. I am also interning of my own accord, thank you for your concern though – Kunal Jun 13 '18 at 7:42
  • 1
    ok, what do you mean "grunt-work" responsabilities when you don't have access to the code ? To me it seems like what we call in my country a "coffee intership". – Walfrat Jun 13 '18 at 7:45
  • I can't delve too deeply, however it is work that does not require programming knowledge however is essential to the technical aspect of the company. And yes I agree a coffee internship may be an accurate term – Kunal Jun 13 '18 at 7:47
  • 1
    @Kunal which province are you in? the rules on what an unpaid internship is allowed to consist of vary between them – motosubatsu Jun 13 '18 at 13:38
12

Internships aren't always about making an actual meaningful contribution to a specific work item. Often, they're designed as a learning experience. You seem to be hinting that you understand this:

I joined the team simply because I wanted to gain experience before gaining a paid position in my upper years.

I think you need to shift your expectations a bit: Actual technical skills are only a part of the overall employment experience. To put it another way, regardless of whether you know how to code or not, there are a lot of other valuable skills you need in order to be a valuable, successful employee:

  • Communication - to technical peers, non-technical peers, management, subordinates
  • Understanding priorities and how to respond to requests to change them from different parties
  • Navigating workplace politics - understanding where your marching orders come from, how to not step on your manager's feet, etc.
  • Understanding who the ultimate customer is, and how your role impacts them
  • Flexibility to learn and adapt what you picked up in school to the specific environment at a given employer

Your first question was,

What can I do to learn more about the code(I don't have direct access to)

The answer to that may be: Nothing! But that's ok, because you asked a better question right after that:

Or to learn more about software development?

Everything! For now, since you don't have access to the code, put your desire to learn programming skills aside - in theory, you're learning those skills in your school classes, anyways. Right now, in this internship, you can focus on the soft skills I listed above. That's the value this internship will have for you:

  • Pay attention to communication in the office. Watch how that senior team communicates with each other. Try to pick out what works and what doesn't, and then try to figure out why.
  • Watch how the team's priorities shift over time. Watch for politics - people trying to side-step the official priorities, and how the team responds. Think about why that does or doesn't work well.
  • Consider the team's ultimate customer - is it some internal functional unit that uses the software, or is it sold commercially? Pay attention to the communication channels between the team and that customer, and ask yourself: Does this work well? How would I respond to this? How can we meet the company's internal demands while understanding the customer?
  • Look at the team's development methodology. How do they manage their work? How do they control it's quality? Where are the pitfalls in their processes? How would you apply the technical skills learned in school to this specific type of environment?

In short: Do the menial work you've been assigned, and in the meantime, use your observational skills to understand the environment. The value you get from this internship may not be actual hands-on technical work, but that doesn't mean it has no value - you're getting the value of being exposed to a work environment and the chance to learn from that exposure. This way, when you get a "real" job, you'll be much more likely to not be blindsided by these concepts in the way that so many "fresh" programmers are (because they've spent their time focusing on picking up language ABC and haven't really learned how to work in a "real" environment).

  • 2
    This is one of the most complete answers I have read in some time. This part in particular needs to be recognized. you're getting the value of being exposed to a work environment and the chance to learn from that exposure. – Mister Positive Jun 13 '18 at 13:49
3

An internship is not to give you experience with the discipline, an internship is to give you experience with the industry.

To expect to have access to a code base as an intern is akin to an apprentice blacksmith expecting to be working on a sword (the most difficult item to smith) or someone learning in a kitchen expecting to be cooking meals.

An apprenticeship is to learn how the business works, what is expected, what habits make for success, and frankly, to do the jobs that nobody else wants to do. If you're in a kitchen, you're job is going to be more cleaning and taking out the garbage. If you're a blacksmith, you're going to be hauling coal and iron and stoking the furnace.

An apprentice to a baker is not going to be working on a wedding cake either.

Another important lesson you seem to be learning against your will is that there is plenty of things in a job that you have to do that are not glamorous, are not fun, and do not advance your goals. These are real world things that even grizzled old veterans of the industry such as myself still have to do to this day.

If there is a need for me to crawl on my hands and knees to run cables, I do it, and so will you, now, and in the future, which brings me to the next thing an internship teaches.

An internship teaches humility. You are going to be surrounded by people who know far more than you, are better than you, and may have little to no respect for you. This should be a humbling experience, and an important one because this will always be the case to some degree. You're going to have to ask for help, ask for opportunities and prove yourself at every turn until you've earned trust and respect.

THIS NEVER CHANGES

While I don't mean to be too harsh, the reality of the matter is that in order to benefit from the internship, you need to have your eyes and ears open, and your mouth shut. You literally know nothing of the industry and the people you are working with are getting less from you than you are from them. Respect the time and effort they are putting forth and eagerly absorb everything they teach you.

You can pick up code in a book or online, workplace experience is the real value of an internship.

  • @Erik comments are not for arguing with answers, you know better than that. – Richard U Jun 13 '18 at 20:58
2

I don't have direct access to

I think it's a serious issue. If you don't have even access to code repository, you cannot make any valuable contribution at all. Talk to your manager, and ask for access. If interns don't have access to code, it's not worth to waste your time there. Just quit and find a better internship.

Maybe your company is shitty, or maybe they require some security cleareance for full access. Anyway you don't have to deal with it. If it's a big company with security clearance required, try smaller startups in future. I personally believe as an intern, you will learn much more in a small startup, rather than a large company during internship (esp short duration ones).

even the basics of software development at this rate as the senior programming team is very busy.

Unfortunately you have to take initiatives. Gone are the days where companies used to care about training their employees/interns. There are some good companies, but most of them don't care about you. You have to take initiatives. What did you study? Try to go through the codebase. Find a bug, or some minor change. Fix it, and create a pull request, that's how you learn. You can also, of course, go through a bug tracker and assign yourself some nice ticket (or minor feature) and start working on it.

  • " If you don't have even access to code repository, you cannot make any valuable contribution at all." This is just not true. Lots of employees who make valuable contributions don't have access to the codebase. – Erik Jun 13 '18 at 20:38
  • @Erik as software developer? – VarunAgw Jun 14 '18 at 8:20
  • Sure. I've made valuable contributions to other teams just by talking with them for a bit. Also, even software development has a lot of non-coding tasks. Also, he's an intern, not a software developer. – Erik Jun 14 '18 at 8:24
  • @Erik He is a intern software developer. Personally I had very high expectations from any internship I had in past. I did everything a regular software developer do on daily basis. And that's how I written the answer. – VarunAgw Jun 14 '18 at 9:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.