7

I am a Masters student in Computer Science and I have read a lot on different programming languages but never used any of them anywhere. If I have, that was just some few lines at a basic level.

Now I have a student job at a very highly reputable scientific institute. They needed someone for developing a GUI, either in Java or Python, to control some instrument and get its readings on the computer. I got that interview somehow and they just asked me some basic questions unrelated to any coding, and now they have recruited me.

I am a bit worried now about whether or not I will be able to do justice to the job and their expectations because I really think I don't carry the skills for the tasks. Although I really want to work there and learn and this is my first opportunity to practise programming, at the same time, I don't want to disappoint them and make them regret their decision of hiring me.

How should I go about it?

Appulus
  • 488
  • 7
  • 13
sameer
  • 81
  • 1
  • 2
  • 11
    All entry level programmers are either heavily overconfident in their ability and in for a shock when they meet the reality of the working world, or they are panicked they will be overwhelmed. You will at times be overwhelmed. Happens to all or us. Practice and be ready to absorb all you can from day one. – dlb Feb 12 '17 at 19:39
  • 1
    Just a suggestion for future. During the interview ask what do they expect you to achieve in the first month (or quarter). This is the good way to reduce the anxiety and start managing expectations. – PM 77-1 Feb 12 '17 at 21:52
  • For every one of us there's a time where you need to take the dive and try something you're not sure you can do. Do your best at it and it can work. – Magisch Feb 13 '17 at 07:30
  • 2
    You got a student job. They don't expect too much from you or they would have hired a professional programmer. This is your chance to shine and impress them. But if you can't, it's not your problem. They get what they pay for (i.e., not much for a student job). –  Feb 13 '17 at 11:50
  • 11
    You're a masters student in computer science but you have never used any programming languages anywhere?? What??? – WalkerDev Feb 13 '17 at 15:56
  • 1
    @UpAllNight Computer science as a subject is generally extremely theoretical and less about programming ability. – bobo2000 Feb 14 '17 at 11:29
  • OP if your fundamentals are not there, start with the basics and take a crash course in x language on code academy, then build from there. – bobo2000 Feb 14 '17 at 11:30
  • Most people start in exactly your position. Buckle up, make pots of coffee and prepare to spend hours on stackoverflow. – cbll Feb 14 '17 at 11:56
  • 2
    @bobo2000, but to have never used any programming languages anywhere seems suspect. – mikeazo Feb 14 '17 at 13:25
  • 1
    @bobo2000 I'm a developer. You write code in year one. There is no CS program in the world that doesn't. – WalkerDev Feb 14 '17 at 14:43
  • 2
    @UpAllNight Sure, but some programs are a lot more theoretical than others, where if any coding is done is not very high level. – bobo2000 Feb 14 '17 at 14:52
  • 1
    @bobo2000 which ends up creating students like this hapless fellow. – WalkerDev Feb 14 '17 at 15:15
  • @UpAllNight I am surprised that they didn't give him a coding assignment during the interview process. – bobo2000 Feb 15 '17 at 15:48
  • @bobo2000 No CS program should be so "theoretical" that its students make it all the way to masters without knowing as much as C++ or Java or having implemented as much as a linked list. At the very least, such as student should be able to write excellent pseudocode and know the syntax of the language to such a degree that transferring that pseudocode to actual code should be trivial. As UpAllNight mentions, all CS programs should have code in year one. My own expected us to implement complex algorithms in C++, Java and a few others. I cannot image a program that does otherwise. – E404 Feb 17 '17 at 19:22
  • @E404 in my CS program there was a fair amount of coding too, the issue is where commercial coding is A LOT different to academic coding. Half the languages I used on my CS degree, I never used again when I was a developer. Haskell for example. A lot of assignments were also small. In the UK (not sure about the US), some top tier universities are known to be a lot more theoretical, where the syllabus is largely mathematical driven with the focus being behind why Computers work the way they do on a low level mathematical level. So it comes down to where you study as well. – bobo2000 Feb 18 '17 at 21:40
  • @bobo2000 but op claims to have never used any of them anywhere. That seems a bit steep. A good programmer can typically learn a new language with relative ease, so even if OP has never used a particular language, learning the basics of that language should take about a weekend if OP is competent in at least one language. And yes, many universities have rather theoretical courses. Theory and the mathematical perspective are very important in CS. But you need both, and I cannot imagine no programming at all. – E404 Feb 20 '17 at 11:35
  • @E404 yeah that is odd. I would disagree however it is easy picking up a programming language especially if you are inexperienced. Front end languages are totally different to back end languages for example. Not because of syntax, but because one involves call backs where writing code is done in a functional way, the other is procedural and more object oriented. I remember when I made the transistion from backend to front end, understanding call backs and the DOM was tricky. – bobo2000 Feb 20 '17 at 13:02
  • @bobo2000 Indeed, I agree that back end to front end can be difficult because they are so different. But, I think that most CS programs will do the bulk of their work in a higher language like C++ or Java. A C++ programmer should be able to pick up Python in a weekend. Even less time to learn Java, probably. I think that mere familiarity with a particular type of programming language (like OO) should make it much easier to pick up other languages of that type because you need only learn the syntax differences (which you can write up and refer to anyway), not how to program again from scratch. – E404 Feb 20 '17 at 17:37
  • @E404 The OP is struggling with is creating the GUI in his current role. Depending on what language you are using there are different ways of creating it, C# XAML, Java it's swing (or another). I think that commercial programming is generally a lot more different than academic coding, when I was a CS undergrad I had no idea of the different frameworks and how to use them until I graduated starting a steep learning curve. At uni, we were expected to code everything from scratch. So even if the OP has the basic knowledge, he might just not know how to apply it to build a commercial software. – bobo2000 Feb 20 '17 at 17:45
  • @bobo2000 I agree completely. But OP claims to never have really used a programming language at all. ( or to just have scratched the surface ) If OP's problem was simply "I've never built a Java GUI before, and have never worked in a commercial environment" we could tell them all about swing and corporations with some links to a tutorial or two. "I've never used Java or a related language, or any language very much at all for that matter," is a completely different problem. GUI's and commercial code are very different from academic coding, but not as different as no coding. – E404 Feb 20 '17 at 18:02
  • @bobo2000 But all this is probably neither here not there as OP does claim to currently be in the described situation and that, assuming that OP didn't make up this question for their own amusement, the described situation is, indeed, possible. In terms of a learning curve, OP is standing in front of a cliff of some description. – E404 Feb 20 '17 at 18:07
  • @E404 yes very weird that he said that he has never used a programming language before. Maybe he didn't describe the situation properly with regards to that? – bobo2000 Feb 20 '17 at 18:28
  • @bobo2000 Yes, perhaps they didn't. Still, we should assume the questions is correct as posed so that the answers will be valid and useful for any other people searching for similar problems. Perhaps the question could be made more useful and general by removing all references to programming and simply making it a question along the lines of "Although recently graduated and eager, I am unsure that I am able to perform the relevant tasks that my first employer has set me" – E404 Feb 20 '17 at 18:42

5 Answers5

14

You already have the job, it's too late for that sort of thinking. Get into your work and prove yourself.

My call is you'll find it's nowhere near as difficult as you're thinking.

Kilisi
  • 222,118
  • 122
  • 486
  • 793
  • 5
    Or he won't be able to write a single line of code and just stare at the screen with no idea what to do - which is, unfortunately, what happens to most people that got a diploma but never touched a real-life system. – T. Sar Feb 13 '17 at 16:25
  • @TSar just start at the beginning, I'm not a fan of academics but that strategy will work for anyone. – Kilisi Feb 13 '17 at 19:55
9

Just do your job as well as you can.

Do you feel like you were not honest during the interview process? Did you lie about your abilities? If not, they probably picked you because they thought you were the best fit for the job.

When you start in that company, make sure that you manage the expectations of whoever is going to manage you. If you feel like you need some extra supervision before you get up-to-speed, or if you feel like you need time to learn some aspects of the project, let them know and see with them what can be done for you to become autonomous and productive. That may involve working with a mentor who will teach you the important aspects of the process.

As a beginner, that's going to be your primary challenge. I doubt that they'll assign you tons of critical tasks, but you'll need to show that you can quickly reach a point where they can trust you with work. Things will come naturally with a bit of time and proper mentoring.

LeBash
  • 333
  • 2
  • 7
5

Just have a little faith in yourself.

People do not want you to fail. People will help you - they have been in the same boat. It might have been a while ago but they will help you.

If you are unsure do not just sit at the desk. Ask around for advice. You will get some advice and they will think more highly that you have asked.

6 months down the line you will be part of the team. The employers have factored in that it takes about that amount of time to get up to speed.

Ed Heal
  • 16,962
  • 6
  • 37
  • 66
  • 1
    The person who hired you especially doesn't want you to fail, because they would have been the one who hired the failure. Quite the opposite, by doing your job well you prove that this person was absolutely right hiring you, so they will want to support you. – gnasher729 Feb 14 '17 at 13:33
3

dlb in the comments section pretty much said what I wanted to. You won't be a dissapointment since you're an entry level programmer. Infact, many people will actually try to help you grow and up skill you.

I would advise you to take lots of notes, ask a lot of questions especially if you don't understand something and be confident.

spoon_man
  • 31
  • 1
1

How to approach the "customer" (your employer)

If they asked you to do the job and you honestly told them what were your capabilities, you have nothing to worry about. Throughout the following months try to keep them informed on your progress and immediatly tell them if you have some kind of problem that will slow you down.
You just have to be sure that everyone has the same expectations, and you don't deliver an underperforming product to an overestimating customer.

Being confident

Keep your resolve and be confident in yourself. Nobody was able to make a fully working and well written software right from the start.
Learning will probably be slow at the beginning, and you WILL find obsacles. Don't lose hope and slowly grind your way around them. When you will be done, you'll think everything was a lot easier than you initially thought.

Practical tips

Learning a language

If you never touched any programming language or GUI tool, choose the one you think is better suited for the job (based on languages supported by the libraries of the instrument you're developing for) and try to put up some simple example program, a small CRUD application with a backend of some sort will show you the most common problems and pitfalls for a beginner. For example, you could try developing a small app to manage your friends addresses and contacts.

If you have no tight time constraint, don't be afraid to try, fail, and try again. Learning from your own mistakes is extremely important for a developer.

Keeping your code clean

There is lots of documentation on the internet about this topic, and learning how to divide and reuse your code will surely make your life easier.
As a rule of thumb, if a method/function doesn't fit in your screen or a class has more than 7/8 methods you should probably ask yourself if the method/class isn't doing too much, and if you should move part of your code somewhere else.
Having well organized code will reduce the chance of bugs in your final product, and will make it easier to fix them or add new functionalities if they ask you.

Asking lots of questions and reading lots of examples

Websites like Stackoverflow are born exactly to help programmers share their knowledge and get better at their jobs. Most basic questions already have an answer there, expecially for more popular languages. If you don't know something, don't be afraid to ask.

BgrWorker
  • 3,242
  • 13
  • 26