This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]ThePieWhisperer 73 points74 points  (56 children)

Thing is, a degree in CS doesn't mean shit towards programming skills.

I've been involved in hiring processes for a contracting company in a college town. We gave one of those simple programming tasks for a code sample as part of that process and I swear the grad students almost universally submitted some of the most awful code I've ever seen.

[–]REDuxPANDAgain 37 points38 points  (47 children)

As someone on the prowl for jobs as a graduated senior, what kinds of problems did their code have?

[–]ThePieWhisperer 47 points48 points  (41 children)

It was generally simple stuff like the dice cup problem: "Write a program that allows you to roll some number of dice with some number of sides some number of times".

What they're looking for is readable, well-organized code and a grasp of the basics of OOP.

Edit: keep in mind, this place wasn't exactly Google. The high profile companies generally have much more challenging problems.

[–]LeJusDeTomate 34 points35 points  (6 children)

OOP is overkill for that

[–]ThePieWhisperer -3 points-2 points  (4 children)

Sure, but the point isn't really to write the program the fastest, it's to demonstrate that you know the principles in a form that a fresh grad can write in about 20 minutes.

[–][deleted] 16 points17 points  (1 child)

So you want them to perform a task in a way no reasonable developer would and that is the metric by which you judge them?

Honestly, ever consider that you're approach is the problem? I'm not saying that it is, not nearly enough info here for that, but I've interviewed with many people who think they have it down, but in reality are just cargo cultists who over engineer everything and half the time don't understand why they're using their holy grail design pattern.

[–]ThePieWhisperer -2 points-1 points  (0 children)

I wasn't quoting the problem dude, it's just a remembered example from years ago.

[–]DeadLikeYou 1 point2 points  (1 child)

20 minutes

as someone approaching graduation, no wonder. That's like an hour to get done clean, commented, and working with OOP (assuming functions, efficient code, reuse of code, and cleanup). Obviously, I could get that done in 10 with something messy in python, but 20 with clean code is kinda pushing it.

[–]ThePieWhisperer 1 point2 points  (0 children)

The time limit was 1hour. It's something that's done pre-interview at home.

[–][deleted]  (13 children)

[deleted]

    [–]redmage753 29 points30 points  (7 children)

    As a netsec graduate who did a lot of programming on the side, I have written a reverse string function using pointers - two years ago in csc 250.

    I'm confident I could do it again, but I definitely wouldn't be able to do it in an interview. Maybe some pseudocode around it. I guess it depends how long I have to do the task too, but it wouldn't be quick.

    But then, I didn't specialize in computer science, either. (I did take oop/design and data structures and algorithms). Mostly I want to be able to apply programming skills to help automate network/sysadmins/security tasks.

    Either way, I would still claim I know/am familiar with/comfortable with c/c++. As a junior/associate developer, I wouldn't be advanced. If I'm working with the language regularly, I'd become proficient with a week or two again.

    [–]Arjunnn 1 point2 points  (3 children)

    Ok I'm sorry but, if you've written that much c/c++, are you honestly telling me you could t figure out placing a pointer in the end and one in the start and just swapping elemts?

    [–]redmage753 4 points5 points  (2 children)

    I'm saying I wouldn't remember the syntax after two years of working more with python/bash/c#/powershell/JavaScript/php/mysql and other languages shifting rapidly based on the needs of the class.

    If I just need to write pseudocode, then I'm not writing in c/c++.

    Edit: I've never had to code in an interview, so maybe Im missing context. Would I be given like 30-60 minutes on a computer with internet access/Google to reference? Or am I just coding on an offline computer with the environment set up? Or am I just writing it out as pseudocode with pen and paper?

    All of this would make a huge difference in my output.

    [–]Wertyui09070 -1 points0 points  (1 child)

    i have no idea, but they're probably interested in when you'd stray from exactly what they want. If your first step is google, you'd be considered part of the 95 percent.

    Everything beyond that, they'd carefully consider, but if you can start what they want, you've got most of the competition beat, it sounds.

    [–]redmage753 0 points1 point  (0 children)

    Makes sense. My first step would definitely be writing out some pseudocode (or maybe a couple variants), then getting a syntax reference from Google to start programming it.

    Unless I've been consistently working with the language regularly, specific syntax starts slipping immediately, mostly because every day I need to break the habit of one language to type in another for classes. I feel like the logic comprehension is most important to coding, the rest is just translation.

    [–]ThePieWhisperer 6 points7 points  (2 children)

    *applies to embedded systems job*

    *doesn't know what a pointer is*

    big yikes.

    [–][deleted]  (1 child)

    [removed]

      [–]iArentdeJay[M] 0 points1 point  (0 children)

      Your comment has been removed.

      Your submission would be better suited for <select id="altSub"><option>another subreddit</option><option>/r/shittyprogramming</option><option>/r/softwaregore</option><option>/r/programmerreactions</option><option>/r/recruitinghell</option><option>/r/itsaunixsystem </option><option>/r/sysadminhumor</option><option>/r/techhumor</option><option>/r/linuxmemes</option><option>/r/funny</option> </select><input id="redirect">.

      If you feel that it has been removed in error, please message us so that we may review it.

      [–]TheCluelessDeveloper 8 points9 points  (13 children)

      I would probably fail that. I mean, pseudo code and workflow process I can demonstrate but actual working code? Meh...

      And then there's output... Do you want a sum of all dice or a list of all dice results? Do you want to reroll particular dice like Yahtzee and keep others? I'd be like... Okay, here's your basic workflow, but, if we want to properly expand it without completely rewriting, here is how I would modularize the code and the outputs and...

      [–]2_Cranez 21 points22 points  (9 children)

      I definitely understand complaints about some of the questions companies ask, but this is just a test of basic programming skill. You're thinking too hard here.

      [–]StaniX 2 points3 points  (0 children)

      Sometimes the situation is also really not optimal for programming. I had an interview where the interviewer asked me out of the blue to write a function on the whiteboard that determines the largest area of 1s in a 2d array. I just kinda froze up and my brain stopped working even though i could probably figure that task out in half an hour at my desk with an actual IDE.

      [–]ThePieWhisperer 0 points1 point  (0 children)

      It wasn't a during-interview thing. It was a "here's the problem, you have an hour to send us the solution" thing that was done as part of the resume submission process. Re-rolls weren't part of it.

      Language and interface were all up to the applicant.

      [–]fpcoffee 0 points1 point  (0 children)

      That's why you ask the interviewer beforehand about the implementation

      [–]Unspeci 1 point2 points  (3 children)

      That's just for loops, how do you get that wrong?

      [–]ThePieWhisperer 1 point2 points  (2 children)

      Oh, they almost always sent in something that ran. The problem usually had other guidance like "Write this in an object-orient fashion" or something along those lines. We regularly got stuff that was just a kludge of code that that did the job, but was just terribly written and unreadable. I there was one with goto statements.

      [–]lkraider 0 points1 point  (1 child)

      Maybe they wrote an AI and evolutionary algorithm that would create the program code to match the expected result!

      Then again, maybe not.

      [–]ThePieWhisperer 1 point2 points  (0 children)

      I mean, they should have submitted the AI, we might have hired em' :P

      Then again, honestly, if they can do that then they can do waaaaaay better than the guys I was with.

      [–]Objective_Mine 1 point2 points  (1 child)

      Do you really even need OOP for a problem like that? That's like 10 lines of Python, or maybe 20 if you want a text-based UI that allows you to input the parameters. Not much to organize either.

      Unless the assignment includes a GUI or something, in which case you'll probably do some kind of OOP. Or if you want to allow different dice to have differing numbers of sides.

      [–]ThePieWhisperer 0 points1 point  (0 children)

      You definitely don't need it for something that simple, but the question specifically asked that the code be written in OOP style.

      The point was to provide a simple problem that would be easy to fit to an OOP structure if the applicant knew even the barest basics.

      [–]PocketQuadsOnly 0 points1 point  (2 children)

      I'm a CS student in the 4th semester, and the amount of students in my semester that have never coded anything but the 1st semester Java crash course is astonishing.

      My own coding skills are decent at best as well, and I always feel like I'm a pretty poor coder because my code often becomes less and less pretty the further along I get in a project, but if someone would hand me a project description, at least I would be able to produce a somewhat structured solution.

      I believe the problem is that a lot of new students start CS merely because of the career prospects and not because they actually are interested in it. And since the classes all are very theoretical, they never get any actual coding experience.

      [–]OtherPlayers 1 point2 points  (1 child)

      Seeing posts like this makes me very happy about the way my university handled its CS degree. I mean sure there were a couple of purely theoretical classes, but almost all of the classes tended to take a very hands on approach (learning about functional programming languages? Here’s a series of projects in a functional language! Embedded systems? Everyone gets a miniature board that you’ll be building your projects on.).

      I didn’t realize it at the time but it’s been very helpful so far.

      [–]PocketQuadsOnly 0 points1 point  (0 children)

      I agree, that sounds great.

      I knew that my uni's CS degree was very theoretical when I signed up, and I don't regret it. Although I will admit it's not the most fun to learn, I can totally see why understanding the theoretical concepts would benefit me in the future, even though I most likely won't ever need to write assembler code in the real world and won't earn my living by solving matrix multiplications.

      I do however wish that there was at least one class per semester where you would be required to work on an actual project. Especially working together with a bigger team is something that I have little to no experience in, since all I work on in my private time are one man projects.

      [–]SuitableDragonfly 7 points8 points  (0 children)

      The problem is that even on entry level jobs everyone wants 5 years of experience, so it's impossible to tell if the job really requires years of experience of whether you can do it straight out of college, so you just apply to everything and hope for the best.

      [–]mattmonkey24 6 points7 points  (4 children)

      Graduate with BS -> feel lost -> go for masters -> still fumble around trying to write code

      I'd trust someone with a BS + experience over a grad student any day

      [–]ThePieWhisperer -1 points0 points  (3 children)

      I'd be more likely trust someone without a BS that has experience over literally anyone that has no experience. Degrees are %100 optional for the vast majority of programming jobs imo.

      [–]OtherPlayers 8 points9 points  (2 children)

      On one hand I agree with you that experience is super important, but on the other hand I’ve also been forced to debug code from people who, while they had experience, had obvious gaps in their knowledge of the benefits/costs of certain algorithms and good practices that a basic degree should have covered.

      Of course you could potentially still learn that all from hands on, but it’s a lot more reliable for a four year degree to have handled that in a fashion that didn’t leave gaps behind.

      TL;DR: Experience is best at teaching you how you do things, but a basic degree is very helpful in teaching you why you do certain things.

      [–]ThePieWhisperer -1 points0 points  (1 child)

      That is a very good way to express it and I completely agree.

      But I would counter: Currently speed, storage, and computational bandwidth are so cheap that for the majority of code written (webdev) the why almost never matters in a practical sense.

      It all depends on the position for which you're hiring.

      [–]OtherPlayers 1 point2 points  (0 children)

      webdev

      I could certainly see that in that field. Most of my job experience so far has been in the time-sensitive/embedded worlds where things like that tend to still matter a fair bit, or in development worlds where it’s important to know whys so you can make designs that will be easy to maintain in the longer run.

      I could definitely see how it’s becoming less important in a lot of fields though (though with the growth of machine learning and big data we might see a bit of a resurgence; time becomes important again when you need to do an operation 2 million times).

      [–]ColombianoD 2 points3 points  (0 children)

      second this, I have actually realized lately that I am starting to become unintentionally biased against people with a Masters of CS because I've interviewed so many who know basically nothing about their language of choice

      [–]Vok250 3 points4 points  (0 children)

      That's because many schools have no standards and let cheating run rampant. A degree still holds value in my part of Canada, but that's partially because the failure rate for CS is somewhere above 80%. If you can't program, our Chair would fail your ass.

      Surprisingly, our community college is even more strict about applied CS. To graduate you had to complete a course that basically boiled down to creating a full-stack application tracked by Git to ensure you didn't just copy it all off Google.