5

I started my internship with a biological data analysis institute yesterday (i.e. have spent two full working days there), and I am very concerned that I am expected to have programming skills that I really don't have. My own background: I have just finished a theoretical physics degree and next year will be persuing a Masters in Mathematics. I have done some programming in my course (an intro to MATLAB, C++ and python in my 3 years respectively), but everything has been very geared towards physics applications. e.g. simulate many body collisions, plot a graph of the transmitted intensity for some funky aperature etc). What's worse, I now realise that we only really looked at very basic features of these programming languages, and basic packages. We never learned the fundamentals of 'how a computer thinks', which is why I am having difficulties now.

I did OK in our programming tasks, and this gave me a really skewed perspective of what it means to know a programming language. I put 'python, MATLAB, basic C++' on the 'skills' section of my CV, not really realising that my knowledge of python really is 'basic' at best. That's the paradox I guess. It feels like with computing, you only know how little you know after you reach a certain level of proficiency. I did not mean to deceive anyone with writing the skills I thought I had.

In any case, I have been struggling over the last couple of days. I realised that at the institute, everyone is basically a programming pro, and the interns are generally computer science students or statisticians. While my degree is numerical, I really have done pathetically little in the way of real data analysis and computing.

I didn't know about Anaconda for instance. I have only ever used simple python libraries like scipy and numpy, matplotlib. I was introduced to it today. But the thing I am struggling with most are things like: what folders does the (programming language? interface? Environment? I don't even know the right word to use here :() have access to? When I want to read/call a file, which folder does it have to be in? How can I check my path without exiting my working environment? etc. Today I wasted 2 hours simply because I called a file name by the name of a python module that I was later calling. I wish I could say t was 'by mistake'. In reality, I didn't think this would be a problem. The text file has an extension anyway?

As you can see these are small things that really require PROGRAMMING EXPERIENCE to be ok with. I don't think that cramming a python book will help.

I can tell that the other members of the team are getting annoyed. I don't ask too may questions (nor too little I think). But if I ask a question, it's often too basic. And if I don't I waste time.

The person who gave me a (long) skype interview- the head on my group- is returning tomorrow and we are meeting for the first time. I am quite embarrased, especially as I know they were considering other candidtaes.

Any advice on the best way to proceed, or how to learn what might be useful quickly, would be much appreciated.

  • 3
    Don't stress too much. File I/O, paths, and package management are things that even more experienced devs struggle with sometimes. (Source: I work as a Python developer and have spent hours trying to get things to import properly.) These really are skills that come with experience and it's no shame to have trouble with them in your first programming job. – ekl Jun 18 at 19:01
6

Your problem doesn't seem to be programming per se, but rather how a programming language interacts with specific interfaces, environments, and libraries.

These are things you learn when you need them to. Trust me, you could be a computer science student and still not know any of this unless you had specifically worked with it before.

The good news is that it doesn't take that long to learn. You don't know how to use Python to interact with folders on a Windows 10 laptop? Google it, you'll figure it out in 1 minute. You don't know how to see the working directory? Google it, figure it out in a minute. And then just keep repeating that. Think up of questions that you think might be relevant to your current tasks, and find the answers.

Start now, and do it for some hours. You'll find that you'll get your head around it quickly. It really isn't that complicated, and you don't have to learn "how a computer thinks" (especially not in Python): you just have to memorize a few lines of code.

It's slightly different with a language like C++ which is more low-level: here, it can be helpful to know exactly what happens, but even still, if you can't understand it immediately, it's fine as long as you at least can memorize the code needed to accomplish the task.

Oh, and your co-workers being annoyed with an intern after 2 days: They're twats.

  • I couldn't disagree more with this. Programming isn't something you can just wing. As many memes as there are about "just copy from StackOverflow", lacking understanding of the fundamentals (control flow, simple data structures, OOP, etc.) will inhibit you along every step of the way. Most crucially, such a lack of understanding can lead you to not know how to proceed with the implementation of something (and you can't even google it, because you don't know what you don't know), or just as bad, lead you down a path of implementing it in some convoluted time wasting way. – Alexander Jun 19 at 5:08
  • Now I do think programming is something you can self-learn using internet resources, but I think it's crucial to first nail the basics, before you start googling particular snippets (which is something I still constantly do, even as a progressional software developer). – Alexander Jun 19 at 5:09
4

You are an intern, not a program lead. Relax a bit. Presumably people will understand that you are new at this.

That said, however, I'd suggest that you do a big push on Python. Find some code that they use already and absorb it. If they use Anaconda, then get familiar with that asap.

Your suggestion to talk to the person that interviewed you is a good one. Ask for their advice about coming quickly up to speed.

But part of the internship experience is to learn, not to bring real expertise to the team. They probably already have that. Of course, they set the tasks in the programming "test" and you did ok, so they are probably not as uncomfortable as you are.

You could also try to pick out one of the members who you are comfortable with and use them as a mentor, either explicitly or implicitly.

3

Others have given good advice. What I would add to this is that you should try to reframe your problem. You've identified the areas that you're struggling with - and that's OK, at the start of an internship. Rather than thinking "this is a problem, I shouldn't be here", instead ask yourself "what can I do to fix this?". Treat it as an opportunity to learn (which is, after all, what internships are for). If you're worried about asking too many basic questions of experienced people, then instead ask them if they can recommend a book or other resource that you could use to get up to speed.

And, as others have said, don't be afraid to google stuff continually. That's how most "real programmers" work most of the time these days :-)

1

The worst thing that you can do is continue on without asking questions. Don't be scared to do so. I am currently a Development intern and I do have programming background but there is soooo much more than I do not know. Therefore when something comes up that I don't know, I ask and I get a simple explanation and if I need more I ask for more. That is the environment I work in but I know that alot of places aren't as open and friendly (my old internship) but it is still worth it to ask. I used to find something I didn't know, Google it, memorize the smart-looking definition of it, and then if I was asked if I understood something about the thing I didn't know about, I would say "yes" and then I'd panic for the next few months. DONT BE LIKE ME! The longer you wait to ask these things, the harder it will get. Honestly, it is really good that you are recognizing it this early on in your job. Take that as a positive.

One more thing, again, I don't know what your work environment is like, but it could also be a good idea to talk to your manager and state that you have a concern about your programming experiences and ask if they could give recommendations on training sites you can go on, and if they would give you some time at work to do a little training here and there to help you understand everything more.

Hope this helps, you aren't the only one who has ever felt this way so do not worry, you got this!

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.