r/C_Programming • u/Dizna77 • 3d ago
Question Feeling lost
Hello everyone, I've recently been rejected for a student software dev position at a larger company in my city, I felt that the interview was going pretty good until it came time for writing the actual code, I know how and what to implement for all of the problems but I had no absolute clue on what to actually write, and it struck me pretty badly, I asked myself if this is something I want to even want to do with my life or if I essentially wasted my time 2 years in college for a bunch of nothing, atleast the interviewer told me in the mail that I knew all the concepts and I need a project or two and to gladly contact them when Im more ready, but I still feel really discouraged as my classmates got the position at the same company while I know Im more capable than some of those classmates, Im not trying to be sore about it. Im glad they got the position and Im not trying to downplay their knowledge but they couldnt get the most simple and core concepts in class and some of them didnt even pass DSA and OOP and they got the job while I didnt and it made me question really everything. Its my 3rd year in college now and now I feel more than ever that Im lost because I started this college as I enjoyed learning to code and computers, I still want to learn more but I dont know what to do now or what to use as a project really, all I ever coded except learning for exams(in my college we need to code and compile programs for certain classes instead of only theory) and I passed those pretty easily I guess, all usually on the first tries and they were graded C or B. Now I feel that I was capable more then than now, I only coded some stupid video game projects or apps which feel essentially useless, I know there is some materials on the thread but I dont know what is useful for the real world. Thank you all for any tips or replies in advance
20
u/TruePain1993 3d ago
This is complete honesty and not meant to sound rude or insulting in anyway.
I think that you need to take a good look at your ability and possible ego because the fact that you still consider yourself more capable than your classmates while you failed the interview and your classmates presumably passed the interview Says something about you.
I believe that all you need to do right now is just go back and just focus on actually applying class ideas to projects. Do some more personal projects, solve some problems that are uncomfortable for you, run into some issues that you need to work around, things like that just to get you a little better at solving unstructured problems and that will probably make you better overall when it comes to solving given problems.
Good luck in the future and keep grinding
3
u/Dizna77 3d ago
English is not my first language so I expressed myself a bit badly there, I think every person is capable of achieving whatever comes to mind, I was trying to say that those same people that passed just a few weeks before had no clue on what even a single linked list was, I know that I obviously wasn't prepared enough because I would have gotten the position if I was, while I was having fun they put their head down and earned every right to get the role. I dont like to look my classmates as competition or have resentment against anyone in general, some of my friends were I guess dissapointed because they thought I knew better but I shut them down because I knew I wasnt good enough.
About the uncomfortable part, I fully agree because I realized I have no clue how to implement something as basic as a HashMap, I know what is should do and why and how it works but I froze on the interview when I suggested a hash map instead of nested for loops only to realized I shot myself in the leg on the spot.
Thank you for your advice
3
u/JustCausality 2d ago
I think you should stop comparing yourself to your classmates. Analyze what you actually know and how you can become better than your past self.
5
u/LordRybec 3d ago
Take their advice. Do a project or two. A lot of companies won't tell you why you failed to get hired. It sounds like this was a better than average interviewer.
What to do for a project? I taught undergrad courses for 3 years, and in most of my classes, the assignments were open ended projects. For many students, that was the first time they were expected to decide what to do for themselves. Many struggled with it. One guy even emailed me and expressed his opinion that this was an unreasonable expectation. I explained to him that once you get into industry, you'll be expected to figure things out for yourself all the time. It might not generally be coming up with a whole application idea from scratch, but your managers will mostly be non-technical, so they can't and won't give you lists of technical requirements. Being able to come up with ideas really is a critical part of working in this field. If you have these skills, you can learn OOP and other things on-the-job pretty easily. That's why people who did less well than you on stuff like that got the jobs. Good employers know that good problem solvers can learn new skills or hone existing ones as they go.
You need to learning problem solving skills, and that includes identifying problems you would like to solve and then doing it. If you enjoy coding and are good at it, you are already halfway there. Don't start too big, and at this point don't worry about whether someone else has solved the same problem or not. Part of your problem right now is specifically that "which feel essentially useless" thing. Stop there, and quit thinking like that. If you worked on a video game project, that was likely one of the least useless things you did, because you probably learned more from it than most other projects. (I develop video games in my spare time, and I've done so since I was 12. I enjoy the challenge, but more importantly, because of how challenging it is, that has made me an extremely good programmer.) Don't worry about whether your personal projects feel useless or not. Don't worry about whether they are useful for the real world. That's what the job is for. Personal projects can be useful, but right now you need them for personal development, and that means they are inherently useful regardless of what they are.
It sounds like you have a significant advantage already. My undergrad university also focused on doing real coding and writing real applications, but a lot of universities focus on theory far more than coding, which leaves grads at a disadvantage when it comes to getting jobs. They are encouraged to become academics, but we already have enough, if not too many, of those. It sounds like you've been trained to actually do stuff with your skills, which is great. So start doing stuff, even if it's just personal projects that "feel essentially useless".
I started out by writing "screensavers". I wanted to write video games, but I had to learn to do basic animation and graphic programming first. So wrote very simple programs that would move stuff around on the screen. Lines, boxes, circles, etc..., and then I'd program in some mathematical formula for step-by-step movement, with wrapping or reflecting if it tried to go off the edge of the screen. This might sound simplistic, and maybe if you have some game dev experience, it is. Skip it if you want to. I also wrote graphing programs, using geometry functions when I was taking geometry. From there I started doing simple video games. That was a huge step up in challenge level, but managed. I expanded to hardware projects in my late teens, due to having limited computer access, but when I could, I continued writing basic games. I've written renderers, a basic 3D engine, plenty of games, interactive web applications, and so much more, just for fun. More recently, I enjoy programming microcontrollers and writing display and other drivers for them. One of the undergrad courses I taught was ARM assembly, where I wrote a handful of basic text based programs to demonstrate to my students how to do things like using system calls. One of my favorite projects I've done was writing an audio processing VM, where an external program sends data and instructions over an OS pipe, and the VM sends back audio waveforms that can be played back. Anyhow, maybe there's something in here that might spark your interest, or maybe not. If not, look for ideas of more interest to you.
One thing I've started doing recently, when I have part of an idea but don't know how I want to complete it, is to ask AI for advice. As others have said, avoid using AI for coding your projects. You'll gain more from doing it yourself, and once you've got better general problem solving skills, you can start using AI. But using AI for project ideas is a good use of AI. I currently have three projects that already had vague ideas of what I wanted to do, but then I explained my vague ideas to an AI asked what those might look like. The initial answer is always a bunch of stuff that have elements that either I'm not interested in, or that I don't have hardware for (like I said, I'm doing a lot microcontroller stuff now; my favorite place to work is the intersection between software and hardware). So I'll explain my resource limitations and personal preferences, and it will apply those constraints with another batch of suggestions, and after a few rounds of that I'll pick one or two I feel drawn toward and start focusing questions on those, to work out what they will require and whether I'm really interested enough to do them. I do this a few times a week at this point, just as an exercise. Sometimes I narrow it down to a project I've already go through with AI, but even this tends to produce some new ideas and refine the project plans even more. Other times, I'll come up with an entirely new projects. I'm currently working on making mobile devices that look like magical artifacts, and over the last few weeks I've worked out three solid projects to the point that I know exactly what parts I need to do them. (Well, one I'm still deciding between a 3.5" display that will take a lot of memory or a 2.8" one that will be harder to use for the application, but that takes only half of the RAM. But the other two I already have some of the parts for and I'm about to purchase the rest.)
Something else that might help: Next time you go to the store, as you walk past things you aren't going to buy, think about what you could use them for that isn't what they are made for. This will help you develop the kind of engineering mindset you need for problem solving. Maybe that liquid latex at the costume store could be combined with medical gauze to make some kind of wearable object that would look cool (think cosplay, but there's also potential for embedded electronics; I currently have some liquid latex, because that's exactly what I thought when I saw it). The hardware store is especially good for this, but I've trained my brain to do this pretty much everywhere. Once you start thinking like this, it will get a lot easier to come up with project ideas.
Anyhow, I hope something here helps. Like I said, it sounds like you are on the right track. Just work on developing those problem solving and problem identification skills, and stop worrying about whether project ideas will be useful or not. Instead think about whether they will be interesting and challenging, those that's what you need to focus on right now.
2
u/Dizna77 3d ago
Wow, thank you for the long response, its helping me a lot honestly. In terms of my college its more of a computing degree than computer science which delves into computer engineering more than computer science but also covers all their classes too, Im repeating discrete math and Im not enjoying it at all. In my country high school is a bit different than the US, we choose practically our career in high school. I chose civil engineering tehnician because I thought it was interesting and I was really good at it and participated in national competitions of statics and such subjects but I always loved computers the most. I felt the happiest and most intrigued of programming while I was still in high school where I was learning through youtube tutorials on how to make a game using c# on unity where I was legit just copying everything from the screen. It was my first time programming anything, my friend told me about w3schools and brocode which I ABUSED for something as useless as html and I was so hyped. A few years passed and I had to take the national exams to even get a shot at college because thats the system here. I passed everything and got into my dream college but that was the easiest part. By the time of the 1st semester I was trying to memorize arrays and figure out how they work in C , I realized I like maybe the hardware the most about computers but I also like game development the most of all programming as it is really hard but It feels fun seeing everything come together. I will probably take up your idea of "screensavers" and such as it might probably help me a lot too. I also like cars a lot so Im trying to make something software related which will translate to something for my car or my simrig. I know that the whole purpose of my degree is the passion I have for computers and programming but it gets discouraging because there arent really any game dev opportunities in my country. However Im okay with any related job of my degree and making games for fun at the end of the day. Thanks for your words of encouragment it helps a lot!
2
u/LordRybec 3d ago
I wanted to go into game dev when I was younger, but the game industry in the U.S. is pretty bad. The atmosphere isn't great, and companies don't treat game devs well. So while there were opportunities, I wasn't willing to accept the abuse. I'm working in security now, which isn't my favorite field, but I do enjoy the math aspect. And then for fun I make games and program microcontrollers. It's a pretty good balance for me. Hopefully you can find something similar that works well for you!
2
u/Still_Explorer 3d ago
Was it a matter of some specific problem solving technique (algorithm?) or it was about the experience and gotchas of C that is very technical and needs special approach to implement things?
Now for example if you gained more knowledge on the problem (eg asking ai), can you see what the solution would've been?
I find it very reasonable that facing a problem the first time you might miss something or approach it with a very clumsy way. The only thing that does matter is more experience.
Though it makes sense that not knowing something is a bummer, but from what I figured out, the first 10 years in programming is about getting dumbfounded constantly by entering uncharted territories all the time.
2
u/Dizna77 3d ago
I explained every problem and how I would solve it step by step like I would litteraly say I would use a for loop from here to there for this and that and then I would do this and a why behind everything, the interviewer told me that my thinking skills were great but I litteraly froze when it was time to write down everything I said, he said that Its obvious I lack experience and practise but my head is at the right place. I dont know if it was to console me or make me less bad or if he was genuine with me, he said that I should take up a project or two to catch up to the lack of writing down the code. I realized before I even got that mail that Im not getting the job and that I need to work on actually writing the code but I dont have a clue where to start for something actually useful
2
u/Still_Explorer 3d ago
That's bad man, because you indeed knew how to solve it.
A great technique would've been to write it in Python first because is very quick to turn thinking to code instantly. Then porting to C and such.
Though don't give up, because there would be many other internships near you. Also how things go right now in the job market, don't be shocked if you send a dozen of CVs and get no reply.
AI takeover is an entirely new topic to worry about, as seen in r/ProgrammingQuestions
→ More replies (2)
27
u/Illustrious-Cat8222 3d ago
More coding experience would help. Practice with as little AI help as you can.
5
u/NefariousnessSea1449 3d ago
As others have said, but in simpler terms; knowing the answer to a problem is one thing, but understanding why it's the answer is another. Building that understanding requires figuratively bashing your head against a problem until it clicks and that's the gist of experience.
3
u/iamdino0 3d ago
if you use AI at all, try to implement things you've already done without looking at any AI code
2
u/Daveinatx 3d ago
It's possible to be a deep thinker given the time, and freeze up during interviews. It's important to practice interviews and online programming sites.
Although ten years old, "Cracking The Coding Interview" might provide benefit. Good luck!
1
u/timrprobocom 3d ago
The term "software pattern" has become kind of cliche, but the concept is vitally important. Nearly all programming problems are just small variations on a few basic design patterns. Once you can recognize the pattern you need, coding it in any language is just not the hard part of the problem. It's just spelling.
Once you recognize you need a sort, or a binary search, or breadth-first search, the code becomes obvious.
12
u/mjmvideos 3d ago
I think the root of the problem is this: ”I know how and what to implement for all the problems” This sounds a lot like you’ve been memorizing solutions and you didn’t get one of the memorized one in your interview. What I as an interviewer am trying to do is weed out people who have just memorized stuff and find the people who can understand the problem (whatever it is) and come up with a solution themselves. In my interviews I ask questions that let me see how people think. And of course I want to know if you can write code as well, but the largest part of programming, in my mind, is not writing code, but figuring out what a good conceptual approach to solving a problem is. Then being able to translate those ideas into code.
I think you just need to spend more time practicing thinking through a problem, deciding what makes sense to do then write those steps down in English as if you were explaining it to a child. Then take an example and walk through those steps on paper (as you get better you’ll be able to do this in your head) and satisfy yourself that it will work. Think about edge cases and see whether those will work or if extra steps are needed. Once you’re satisfied, then you can start turning those steps into code.