7
$\begingroup$

I apologize if this isn't the right kind of forum to ask this question, but I've been feeling helpless.

I'm in my 4th year in college as a CS major. However, I am horrible at programming (relative to my peers). I'm just not very smart in general and I'm extremely unconfident when given a programming assignment and during coding interviews.

Because of this, I've tried to go into finance but I'm already behind, starting so late (when all my peers have had investment banking, private equity internships for the past 2 years). Full time recruiting is going on right now, and I applied to both programming and finance positions, but I don't think I'm prepared for either type of interview. Even though I feel like I'm studying really hard, I don't feel like I'm getting any better.

Can people please recommend the best ways to study for these interviews in a short period of time?

I've tried HackerRank but I'm really slow at solving problems and I don't feel I'm being efficient. How would you advise someone who's a complete beginner, i.e., knows basic data structures in C++ (and is also unfortunately not a fast learner) to prepare for coding interviews, in say, a week? (Other than just for a different field :( ) How would you break down each day of studying like? What sources would you recommend?

And any other advice would be really helpful - thanks for reading through

$\endgroup$
4
  • $\begingroup$ I've edited your post to break it up into multiple paragraphs. Note that walls of text are pretty hard to read. $\endgroup$ Aug 10, 2018 at 23:38
  • 1
    $\begingroup$ Watch this first. It is not about programming, but is about learning. ted.com/talks/… $\endgroup$ Aug 11, 2018 at 8:44
  • $\begingroup$ As a programming teacher, the codingbat about page resonates with me: codingbat.com/about.html . I recommend read that, particularly the part about turning big problems into little problems. It’s not C++ but you could start some of the Java or Python problems to build your speed over a week and continue this practice to improve your problem solving speed and proficiency. $\endgroup$
    – ThisClark
    Aug 11, 2018 at 12:55
  • $\begingroup$ Dang. I was in the same boat a couple of years ago. One thing that helped me was doing actual projects. I always did poorly on those things where I just had to remember how something worked, but when I started working on open source projects and doing my own stuff everything made so much more sense. Now I can go back and do those same interview/skillbuilder type questions I used to struggle with. Just keep practicing, be patient, and apply what you learn whenever you can. $\endgroup$ Aug 16, 2018 at 20:51

6 Answers 6

10
$\begingroup$

I think you are probably asking the wrong question. You aren't going to become a good programmer in a week. Or a month. Maybe not in a year unless it is well structured.

My advice is to figure out what you are good at, not what you are bad at. Seek jobs that play to your strengths. Not every person that works in computing does so as a programmer, for example. I once told a student who was struggling in a hard course that she would probably wind up as the manager of all the superstar programmers in the class. Why? Because she asked the right questions. Often enough the question is more important than any answer.

You can't go back and undo the mistakes you made getting to where you are. But if you figure out your strengths and write applications that emphasize them and stress them in interviews you may be fine. Just don't suggest you are a programmer, nor stress that you are bad at it.

$\endgroup$
4
$\begingroup$

Practice practice practice.

Programming is a lot like a craft, like playing the piano, or painting, or playing basketball. The only way to get better at it is by doing it.

If you've been treating the last 4 years as something to get through, chances are you haven't given yourself the opportunity to get that practice. Just reading the books and doing the homework isn't enough: you need to play around, work on larger projects, figure out what you enjoy, and take a deeper dive into the topics you find interesting.

This is a huge topic, but in general here's the approach I'd recommend:

  1. Create a portfolio page. This can be a basic "hello world" webpage to start with. The idea is to give yourself a place to put the progress you're making.
  2. Give yourself a project. Start small. Smaller than you think is interesting. If you're interested in game development, then put together a Pong clone. If you're interested in finance, put together a data visualization of some of your favorite stocks. The exact project doesn't really matter, the point is to just try stuff and see what you enjoy.
  3. Finish that project. Put it on your portfolio site. Then move onto a new project.

Each project should have a small scope: think a weekend of work, not a month of work. Use this pattern to explore a bunch of different topics. Try out different languages, frameworks, topics, etc.

I am horrible at programming (relative to my peers)

Stop comparing yourself to other people. You'll always find people who are better than you at something. Stop worrying about that, and spend your time figuring out what you enjoy.

I'm just not very smart in general and I'm extremely unconfident when given a programming assignment and during coding interviews.

Being a good programmer is less about being "smart" and more about being willing to put in the time it requires to practice.

Can people please recommend the best ways to study for these interviews in a short period of time? [...] How would you advise someone who's a complete beginner... to prepare for coding interviews, in say, a week?

You can't. You aren't going to learn how to program in a week. Teach Yourself Programming in Ten Years is a good read, although I wouldn't take it too literally. Different approaches work for different people, but the core argument is that you need to practice coding to get better at it. This takes time.

How would you break down each day of studying like?

Stop giving yourself a deadline of one week. Put together a simple website this weekend. Next week, put together a basic program that demonstrates something you're interested in. Repeat that process for 6 months, and then you'll be more ready for an interview.

What sources would you recommend?

There are a ton of resources on the internet designed to help you learn how to program. Google is your friend here. Googling "basic html tutorial" will return a ton of results.

This is going to require a commitment from you. It's not going to be an easy fix that you magically cram into a week. But if you keep at it, then you can find topics you're interested in and get more practice in those topics.

Good luck.

$\endgroup$
3
$\begingroup$

The only way is practice, and to study what the best do. Look at Robert Martin, Test driven development etc.

However to do that you have to wont to do it. If you have no passion, then find something that you have passion for. If you have passion (that is you would do it for fun), then

  • Read about Test Driven Development.
  • Practice coding Katas.
  • Read about good programming style.
  • Practice pair programming with a partner, that will let you learn. (A good way to learn tennis or any one on one sport, is to find an opponent that is way better than you, but is willing to play just a little better than you. They will always beat you, but by just a little. You will feel that you may beat them next time. And you will learn a lot. This is the sort of person you need to find, but good at programming.)
  • Learn a new language, one from a different paradigm (when you know one quite well).
  • Before learning C++, learn Eiffel. C++ is about one of the biggest and hardest languages that you can learn. (There are harder ones, but they are usually much smaller. C++ is hard and big.) It is faster to learn Eiffel, and then C# and C++ than to learn C++. That is the claim of Bertrand Myers, the created of the language, and a teacher at a University. He created it because he was frustrated with the lack of a good teaching language. There is a companion book called a “touch of class”. It is designed to help you learn OO using Eiffel. You can down load Eiffel from the Eiffel website (the GPL version is Free Software).
  • Read about agile

Taking short cuts is like driving a formula 1 car across the grass, because that is the straightest line to the finish; The quickest route is around the track.

$\endgroup$
3
$\begingroup$

You are a beginner. Spend time in every area that you can to improve. You will get ahead more where you have talent, but don't forget the basics.

Spend about two hours reading soft material, two hours coding and two hours learning hard stuff. Spend the remaining time on what motivates you about work/career at the time. Get proper sleep. Eat well. Meet another person at least every second day, minimum!

Manage your stress levels.

Prepare for the interview:

Read up on all the bad things that happen during interviews and make sure you are aware of the pitfalls. Not failing a interview is all you need to get a job if you have the qualifications. Soft and hard questions!

Get accustomed to the kinds of interviews and questions they ask. In a week you can be better prepared than some interviewers.

Look in to the programs they may ask you to write AT the interview, and what they would be looking for in a answer. Its probably not what you expect. How you interact with the interviewer is key.

Prepare for the programing test:

Solve ANY problem you know how to solve and post it to codereview here on stackexchange, say its prep work for a interview. Fix all the problems pointed out and post it again. Repeat until its amazing.

Read the top 100 questions and answers on stackoverflow in programing and top 100 for c++. This is things that are interesting or many have struggled with. Knowing this makes avoids looking bad.

Long term:

C++ is not for everyone. I struggled with c++ so bad I thought programing was not for me. My programs crashed all the time. I did not understand how anyone could make anything. Everything was hard. Now I code in Java and its easy as. Turns out pointer arithmetics is really hard and unintuitive. As is destructors, templates and macros.

Also programing is not for everyone. But not every position where programing is wanted need to excel at coding. If you have soft skills and can be social with both nerds and "normals" there is lots of places that needs (even if they don't know it) bridging between the two.

Don't think you have wasted time, life is just starting and you are educated in a field with a massive demand.

$\endgroup$
2
$\begingroup$

Well, it isn't going to happen overnight or in a week, so just let that idea go. First, why do you want to go into software? Finance? that's easy, you want to make money. Is it the same reason for software.

Have you considered trying software sales? May be a good blend of the two fields.

I think exercises like LeetCode, HR, et al are tough because they are timed. However, that's useful practice for a student. Businesses aren't going to give you a sheet of homework problems and tell you to submit your answers in a few weeks. Timed practice helps eliminate the paralysis by analysis that can plague some students.

What has helped me is this: Start with simple problems on whatever practice platform you prefer. Solve the simple problem. Then go back and explain your answer, out loud, as if you're in an interview. Move on to the next problem.

Eventually, you should be able to solve and explain these simple problems within the time limit. Don't half-ass your explanations either, get a partner if you need somebody to explain to.

Once you're able to do simple problems like that, within time, explain them, know it cold, then move on to moderately challenging problems. Repeat the cycle, first be able to solve them, use your textbooks, slides, notes, whatever you need. Then solve them with no extra resources. Then explain your solution, within the given time limits.

Once moderate problems are under your belt, go out and apply. How long it takes you to get to that point however, that's impossible for anyone to map out. A lot of those other students you are comparing yourself to, many of them started doing this sort of thing already, it just may not be apparent.

Also, get some side projects that interest you. Nothing motivates learning like a project you care about. Employers aren't going to be paying you to solve coding challenge problems, keep that in mind.

It's a slog for many of us, only the very lucky few actually breeze through a CS degree. Often times the work those other slogging students put in just isn't quite as apparent, don't compare yourself to their highlight reel.

$\endgroup$
0
$\begingroup$

For been more confident about programming....

advice zero

be an agnostic programmer, I mean don't choose a language above any other one without technical reasons.

Be open to learn anything language, don't matter if it is Java or PHP or C++ will give you more job opportunities

First one.

Choose an area that demonstrate your skills, I mean; you got:

  • VR
  • VideoGames
  • Databases
  • administrative software
  • etc

second one.

Choose your best language, many times we hear about if python or ruby or java are the key for the success; nevertheless consider your choise will transform in your future tool into a job; be wise in your election

third one.

Practice, but in a smart way; for example

  • build logical exercises for been confident with the sintax language
  • build logical and mathematical exercises
  • build an small but complete first product

Product?

Yeah for example if your learning about how to develop financial software you can start writing a basic CRUD that makes possible watching charts and tables with relevant information

at this point you can make a versioning of this product and attach more features:

  • reports
  • dinamic charts
  • social loggin accounts

Do not fear the immense amount of frames and languages, choose your favorite tools and practice with them, there is no a short way to success

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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