Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Got a CS degree, but I’m unable to be programmer. What can I do?
294 points by Tmp1234 on July 22, 2018 | hide | past | favorite | 315 comments
I recently graduated and have been grinding for interview prep (leetcode and CTCI mostly), but I’m getting no where. Easy problems take me 2-5 hours. I experience PTSD like symptoms from the constant barrage of negative thoughts the difficulty and stress of doing these problems are causing me. I don’t have time to do anything else and no objectively measurable progress is being made. Even if I get a problem right, I gain little to no satisfaction at this point. I completely hate what I’ve gotten myself into. I put all my eggs in the “being a programmer” basket and it’s clearly not for me. I do have a computer science undergraduate degree which I’m hoping I can use for something. Are there any career paths I can pivot to that are less cognitively demanding than software engineering where this degree would be an asset?



> I experience PTSD like symptoms from the constant barrage of negative thoughts the difficulty and stress of doing these problems are causing me.

A lot of the other posters have given some great advice from a technical perspective. I'd suggest taking some time to evaluate and improve your mental health as well. If you're putting yourself under so much pressure, that pressure alone will hold you back to a great extent.

First off, just relax. Take a little time off to reset your psyche, overcome your burnout, and rediscover your confidence/interest. It's amazing what taking a week off can do.

Take up some activities that have been shown to help with stress relief. Meditation. Exercise. Long walks. Digital disconnects. Healthy sleep cycle.

Read this book: The Inner Game of Tennis. It's a short read, but it will transform the way you approach high-pressure situations.

You mentioned PTSD - do you actually have PTSD, anxiety, or other similar mental health problems? If so, talk to a counselor or find some way to address those underlying issues.

You have a long career window ahead of you, so don't burn yourself out at this point. Job prospects are great for CS majors, and you seem like a guy who's very motivated and hard working. Spend a bit of time taking care of yourself, and I'm sure you'll be fine in the long haul.


This is really great advice. Being too stressed during an interview is not good for looking like a good job candidate. I’ll have to check out that book too, because I personally get a little too stressed public speaking, so thanks for the recommendation. That’s one of the great things about questions like these is they can be very relatable and you get such great advice from all walks of life.


Thanks. Since you mentioned public speaking, I would also strongly recommend Toastmasters as a way to improve your public speaking and overcoming-anxiety skills. I've personally tried it, and it really helped.


Thanks, I’ll have to check that out too. Just bought The Inner Game of Tennis and read up past the introduction. Seems like it will be very insightful.


I have been planning to join Toastmasters for the past 2 years but for procrastination!


If you tell yourself (and actually do, if required) that you'll only participate as an audience and not to actually do public speaking, you may get yourself over the 'thing' that may be behind the 'procrastination'.


I had a bunch of friends recommend Calm to me. I started using this morning - here's to paying it forward: https://www.calm.com/


Did you like it?


I love public speaking. It’s just that I have to get there.


I think I took off about a year after I graduated, I kept working at my job and then when I decided to look for work it all lined up just perfectly. Look for jobs that want new programmers or interns is all I can say.

Also:

You do not have to ace the interview just show promise.

What I mean is, even I've gone through interviews where I didn't know all the answers and they still kept wanting to follow up with me. Don't be too harsh on yourself.


> where I didn't know all the answers and they still kept wanting to follow up with me.

Absolutely this. The primary purpose of the interview is to establish whether or not you are competent enough to do the job. This doesn't necessarily mean having all of the skills out of the box, but whether you are capable of picking them up and have the basis to do so. Best piece of advice I could give is don't lie. If you don't know the answer, say so. But, better to follow up with "...but, this how I think it might work" or "...but, this is how I would go about finding the solution".

One of my purposes in interviews was literally to get the candidate to say they didn't know. We can work with people that know their limits; can't work with a bumbling fool that knows no bounds.


>One of my purposes in interviews was literally to get the candidate to say they didn't know.

This. It's ok to admit you don't know everything in an interview. Some of my most glowing feedback from interviews came from interviews where I answered questions with a flat out "I don't know"


Yep, when I'm interviewing a developer, if they try to bullshit an answer I instantly lose trust in them. How can I trust their work if, when they don't know something, they just try to BS their way through? Far more healthy to admit they don't understand and seek help / guidance from those who might. Humility is an important developer trait.


This. If you can move in with your parents, or don't need to start making money immediately, I'd prioritize dealing with your mental health issues. See a therapist or do some meditation. Whatever you need to do to get centered again. If things are that bad for you, even if you get a job, you're either going to have trouble keeping it or make yourself miserable doing it.


This is great advice as well and is pretty much exactly the path I took after graduating with a CS degree. I had an internship leading up to my graduation that I really did not enjoy. I ended up leaving earlier than expected because I felt the need to focus on my mental health and address deeper questions about what I wanted out of life. I did not feel ready to start a career.

I ended up taking about 2 years to examine and reflect upon my situation. Meditation played a huge part during this time. I traveled, explored new hobbies and ideas, and experienced different ways of life. I eventually ended up moving back home to live with my parents as I continued to sort things out.

Currently, I feel much more stable and have a clearer idea of how I want to move forward. I now have a plan to move out and pursue a career utilizing my degree and feel very excited about the future. Taking time off to reflect in this way has been indispensable for me.


As a medical student who also happens to have a CS degree, might I suggest that a councillor is an excellent idea, and a psychologist or psychiatrist might also be worthwhile.


As someone with dreadful experiences of the metal health system, I think the very last thing you want to do is see a psychiatrist. Psychiatrists are expensive and look at brain chemistry, more than likely you’ll end up on some sort of medication which you likely don’t need.

By all means see a counsellor or a psychologist, but unless you have deep psychological issues where you are getting to an unbelievably unbearable point where medication might help you, see a psychologist first and leave the psychiatrist out of it.

And, in case anyone thinks I hate psychiatrists - I don’t. I just feel they aren’t that helpful in the sort of situations you describe here.


I don't know where you live, but generally that is applied to people who have all the other things and are still unhappy. Psychiatrists will generally try to steer you towards healthy fulfilling social lifestyles, and only then if you are still unhappy then usually you have some chemical imbalance that can be fixed, why be too proud rather than just fix it.


I don't know where you live, but of the two psychiatrists I've seen both wrote me a prescription on my second appointment. And frankly, my mental health isn't the worst.


There are great psychiatrists out there, but honestly the two issues are that their main tool is medication which is a very blunt instrument, and they still only know so much about the brain.

Unfortunately, for every great psychiatrist, there are just as many truly awful ones and despite their medical degree they can totally botch your diagnosis.

That’s my opinion anyway, take it as you will.


Antidepressants are a first-line therapy. They're often very helpful in enabling people to make the changes that will help them improve their long-term health. They're excessively stigmatized however, which is incredibly unfortunate.


With good reason, the last medication my psych gave me left me with liver damage.


The side effects you experienced are unfortunate; if it happened to me, I would be very angry. However, the stigma around mental health is real and prevents many people from getting the help that they need. You can be angry without contributing to the stigma.


Actually, I found that the psychiatrists I saw universally did not listen to me, and one even told me to live with injustice (!!). I feel that the stigma is caused by the medical profession.


Psychiatrists are basically drug gatekeepers. They don't really listen to your problems, they just try to infer what medication is best for you (in a 10 min window) depending on how you act.


Was covering the bases as I'm not familiar with the US primary care system - here in Australia a general practitioner can refer you for CBT and start antidepressants themselves, but I'm not sure how that extrapolates around the world.

For what it's worth, antidepressants have a very valid part to play in the treatment of depression, as do various other psychopharmacologies. I've taken medication for performance anxiety in the past and it helped me overcome some real challenges.

That said, talk therapy with a good psychologist is also very useful both alone and in combination with drugs.


I’m an Australian.


A good therapist helps, a bad one will make things worse. This is speaking as someone who has only had bad therapists and is a thread away from giving up on the healthcare industry altogether. American healthcare is a disgusting joke.


I added a separate comment to add some information about my situation. It addresses your question and advice too.

https://news.ycombinator.com/item?id=17594084


+1 on Inner game of Tennis. Life changing book there.


I don't know if this helps, but I personally find coding interview practice sites/problems to be extremely boring, difficult, not fun, and frustrating to work on. I'm saying this as a 13-years-of-experience software engineer; I've been called a rock star or ninja or something similar in almost every company and team I've worked in (big and small), and throughout my entire career and the numerous times I've job-hunted, I have never passed a single interview that involved those types of questions. (I've interviewed at both Google and Facebook, both more than once, at different points of my career, with no success) I pretty much always end up at a company where I had a really easy interview and we just talked about my experience and projects. I am (I'd like to think; and I think my coworkers mostly agree) good at everything involved in a software engineering job (building things, architecting things, communication, working well with others), but I absolutely cannot solve those whiteboard interview problems, especially during the interview.

I saw that itamarst posted a link for a list of companies who don't do "whiteboard interviews" type of questions. If you believe you're a good dev and can build stuff and just hate those interviews, I would encourage you to start there and try interviewing at those companies and land your first professional job, and see if you're really cut out for a software engineer role.


> “really easy interview and we just talked about my experience and projects“

This is what interviewing is like in 99% of other sectors, even engineering. You might be asked some competency based questions at a larger organisation but the whole “dance like a monkey in a high pressure environment while we watch” whiteboard/coding test feels like cruel and unusual punishment to me that is nothing like the job of actually programming.


  the whole “dance like a monkey in a high pressure
  environment while we watch” whiteboard/coding test
  feels like cruel and unusual punishment to me
When I was a teenager I attended a group interview for a retail job, and we were put into groups and told to design a TV advert for the retailer then act it out in front of the other interviewees. Of course my group decided to do a song.

Once you've been inoculated by having to sing in front of a room of 30 people, whiteboard coding in front of 2 people feels downright respectful and dignified :)


It is testing for people who can solve the below 5 percent of real problems under immense pressure. Even development crunch does not work like these tests.

The trouble is, the skillet to do so is not actually overlapping with the one needed for prolonged deep or repetitive work. So you end up hiring either fresh heads from such pressuring environments, super geniuses (yeah right) or people who learned to pass and game these tests.


It's a hazing ritual. Let's call it what it is.


That's not true. I've interviewed for many engineering jobs and lots of them involved solving puzzle-like problems on a whiteboard.


Your anecdotal experience differing from OP's does not make what he said inherently untrue.


Are you US based? It may be a cultural thing as I have nevered heard of any engineers (and I know a good few dozen) who have had to do anything like that.


It's not even a culturally US-based thing. If anything, it might be the culture of some specific places in the US, likely places where programmers are dime-a-dozen and you can afford to exclude good people because great people are applying too. In the Midwest or Appalachia or most places in the South and most places in the prairie, companies are just glad someone is applying.

I have absolutely no hard evidence to back this up other than anecdotes from my network of colleagues, but the only places I've ever heard of doing programming challenges during an interview is the kind of places where programmers collect en masse. SV, Seattle, Austin, NYC, Boston, the places where when you post a CS job, you expect thousands of qualified candidates to apply.


Can't agree with this enough.

Over 15 years professional experience here, master's degree in CS, and I often struggle with whiteboarding. Looking for a new job now and some of the questions I've been asked:

1. Overlapping maximal interval sets (https://www.geeksforgeeks.org/find-the-point-where-maximum-i...)

2. Print a matrix in a spiral form (https://www.geeksforgeeks.org/print-a-given-matrix-in-spiral...)

3. Implement setInterval using setTimeout (recursion)

4. Shorten a string of repeated letters (dddbbbaa) into numerical format (3d3b2a). also write function to reverse this process

5. Given this JSON input, write an API in NodeJS

6. Write an algorithm to convert decimals to Roman numerals (https://www.geeksforgeeks.org/converting-decimal-number-lyin...)

7. Convert from prefix to postfix notation (https://www.geeksforgeeks.org/prefix-postfix-conversion/)

I could go on and on. So stupid. How does answering any of these on the fly signal ability as a programmer?

The take-home tests are the least offensive to me, because at least they simulate what it's like to work on a real project (somewhat).

The HackerRank.com tests aren't any better than live whiteboarding -- why can't I look stuff up (they disable copying and pasting)? Are you not allowed to look stuff up at a real job?

All these stupid questions implicitly assume the same thing: the most important developer skill is memorizing a large corpus of algorithms to obscure problems.

Trust me, it's not.

It'll probably take one of the FANG companies to start de-emphasizing this nonsense before everyone else stops mimicking them.


+1 to this.

Similar story for me. Although I wont go so far as saying I am a rockstar I do have a reputation for building solid, maintainable, reliable code that works even though I have struggled in the high-pressure whiteboarding interviews (I'm currently at a company that is well-known/infamous for whiteboarding interviews too).

There are different roles other than "software engineer" that are programming based, even at FANG-style companies (in my personal experience). At my current employer although I spend my entire day designing/writing/debugging code using the same tools, infrastructure, programming languages, and expectations on code-standards/quality etc I am not a "software engineer" as far as my job role goes. My role still has "engineer" in the title, but the expectations for the purest CS knowledge were slightly lower and the interviews were basically a chat about work I had done elsewhere and a few general questions around experience and knowledge (salary/total comp is about ~85% what a software engineer gets)

tl;dr - you dont have to be a "software engineer" to program for a living


> Similar story for me.

Another +1 here. I got so sick of programming interviews that I went freelance. If at any time a potential client suggests I need to do a whiteboard style interview, I decline and offer to work for them for a week at half price.


That's a great tactic. Keeps the ball rolling on the negotiation & also shows them your competence in a real way. Thanks for sharing.


I am finding the same kind of trouble on my job hunt what kind of roles should I be looking for?


When I had to get the right people for a job, I made the sifting assignment simply: write an app that consumes a JSON API. I got an Indian guy with a long CV who never even tried, and a guy who machine translated the Dutch ad and sailed through this question. Guess who got the job...


This is relatable and makes a lot of sense! Can you direct us to the link or any list of companies which don't have whiteboard tests or competitive coding tests? It would be really useful for OP and most of us.



100% agree with this


"Easy problems take me 2-5 hours."

Are you sure you're not reinventing established theories and algorithms? Those problems are supposed to be hard because they're based on ideas discovered by the most brilliant minds. If you can do them in 2-5 hours with no background you might actually be real good.

Depending on what level of familiarity you have with the material, you might be selling yourself really short. Deliberate thinkers (often misunderstood even by themselves as "slow") are often the most reliable because they take the time to understand and think things through.

Please take a deep breath and start with a reasonable supposition. If "easy" problems are taking too long for you, maybe there's an easy way to "solve" it (memorizing the patterns and knowing the most likely to be tested algorithms).

Like others say in this thread, not only are those problems unrealistic, it's much like test prep for standardized tests that you may have taken getting into college.


>> "Easy problems take me 2-5 hours."

> Those problems are supposed to be hard because they're based on ideas discovered by the most brilliant minds. If you can do them in 2-5 hours with no background you might actually be real good.

Putting myself in the OP's shoes, this would be really frustrating advice to hear. The OP literally said they already got a CS degree and that these are "easy problems" taking them 2-5 hours. Baselessly calling into question their own assessment of problem difficulty (as if it's likely that they're that clueless about how difficult interview problems are supposed to be after having received a CS degree) while simultaneously suggesting they might actually be brilliant and simply not realizing it is, honestly, just unhelpful advice, if not potentially actively harmful. If you're going to do this, at least ask them to post a question or two so you can independently gauge their assessment first.


I think you underestimate how common imposter syndrome is. It may be that the OP just isn't good at programming. But it may also be imposter syndrome. Having the degree suggests that they did something and gained some skills. So it isn't unlikely that the OP is selling themselves short. Plus it is better to encourage people than put them down. Most people can learn most skills, but some people require less time to learn some skills. That's really the only difference. And there's no clear evidence into which camp OP is in, but it's unlikely that they can't learn the skills.


You call out impostor syndrome when you actually have evidence to suggest it is the case, not completely baselessly. Like when you give someone a role because you believe in their ability (whether through prior interviews with them, or seeing their prior work, etc.), but they don't feel up to the task. In other words, we know they actually can do tasks that we believe to be of similar or greater difficulty, but they somehow don't believe that that's the case. But we have no single shred of evidence that this is the case here... or if you think we do, well, I don't see it, and neither did the parent comment point to any.

In particular, having a CS degree and finding that you're having trouble with what you believe to be easy interview problems (to emphasize: actually having trouble, not merely thinking that you might have trouble if you were to try) is not in any way evidence that you're experiencing impostor syndrome, of all things. It might be evidence that you don't have enough practice, or you didn't learn the material well, or that you lack motivation, or that you just don't find the topic interesting, etc... but the one thing it does not mean (in the absence of extra evidence) is that you're actually brilliant and yet also incapable of assessing the difficulty of interview problems accurately.


Impostor syndrome gets talked about so much in conference talks that I think we as an industry have started to classify all confidence problems as impostor syndrome and thats just inaccurate and unhelpful. Instead, there are a variety of things in work that can cause problems.


While I agree that it could be taken that way considering the tone of OP's post there were several considerations going into my reply:

1. OP seemed locked in a spiral of negativity that was aggravating performance anxiety.

2. OP was actually able to solve problems and I assumed OP is not talking about "Fizz Buzz" class problems.

3. OP was nowhere to be found in the comments at the time of posting so I wanted the comment to be realistic but positive and also encourage others struggling with similar issues to take a deep breath and objectively reassess their situation rather than assuming everything is a waste and they truly aren't cut out for it.

As an aside, having just read OP's comment history[1], while he likes problem solving, his main motivation is money (extrinsic motivation) and he seems prone to analysis paralysis and anxiety about raw ability/intelligence. Based on that I wouldn't encourage OP to pursue something that stresses them out and aren't confident in purely for money.

There is enough good advice and feedback in this entire thread for a meaningful discussion with OP. Without the OP's feedback our discussion will only be trading assumptions and suppositions but thanks for the honest feedback, duly noted.

1. https://news.ycombinator.com/threads?id=Tmp1234


> he seems prone to analysis paralysis and anxiety about raw ability/intelligence.

This is what I also gained, and to me, it says that OP has the ability to solve these problems in much less time. I was a lot like OP when I started out. In college, I would get good marks but be one of the last people submitting a test. Whiteboard-style problems would take me forever to complete. I constantly felt that even though I could get it right, it took too long to be of any use.

My problem was much of what you said: I was reinventing crude versions of the wheel while spending an inordinate amount of time comparing different ways to solve problems. I'm not some brilliant mind that's going to have a ubiquitous name in the annals of CS. I've just been really good at breaking down problems and tasks, and early on, I was writing things akin to FizzBuzz EE[0] rather than a 10 line solution that solved the problem.

[0]: https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris...


Regardless of whether OP is good at programming, it sounds like he might not enjoy it.

To OP: you spent a couple years in college and got yourself a CS degree. Congrats. It is not an obligation to spend the rest of your life doing something you dislike. You might try a software job for a year to see how you like it, or maybe it's already time to change direction. Do you already have something else in mind you'd like to do?


Those problems are supposed to be hard because they're based on ideas discovered by the most brilliant minds

Exactly this. The way this game works that you and the interviewer have read the same book. He or she asks you a “difficult” question, you pretend to think about it, then rattle off the answer you memorised from the book. The interviewer is then satisfied that you read the same blogs and follow the same people on Twitter as them, which is what this is really a test for, and you pass. There is zero correlation between any of this and actually working in the industry


I agree that some of the problems are too hard to be realistic. I made sure to not count those when I was analyzing my performance. As I said in the comment I'm linking to below, a few months ago I couldn't even do Fibonacci recursively. I just couldn't figure out how to structure the code, when to call the function, how to pass the results of each call up the stack etc. This is just one example. The other day I tried to do the brute force implementation of finding the median of 2 sorted arrays. Brute force as in have two pointers at the start of each array incrementing until you reach the median. It was too hard for me to code successfully and I spent 2-3 hours on it.

I wrote a comment that I realize should have been part of the original post on hindsight. It may give you more content if you choose to respond.

https://news.ycombinator.com/item?id=17594084


They easy problems are usually really easy to solve. Including tinkering with the syntax of the language it should be possible in ~15 minutes.

Even if you don't find some quicker algorithm, bruteforcing usually still works.


Straight out of college, I definitely found ways to complicate simple problems to a few hours. It is easy to put limits on yourself that aren't in the problem, like excluding non optimal solutions or even forcing a specific pattern that isn't really a good fit.

But I can't say programming as a career is definitely something every CS major should make their goal. Having a better relationship to coding is something that can be handled gradually with less stress.

There is plenty to do in theory and there are plenty of related fields that benefit from a CS background even if one doesn't code. Really, any science/math/statistics masters degree should be considered with those that need the most scientific computing being the best choices for a CS graduate.

A CS BS that does a master's in another science might end up programming in R and it isn't really all that different. But the stresses, sense of competition and expectations won't be the same.


You don't have a job yet, so you don't actually know what being a programmer is like. You're stressing out about what you think being a programmer is like, and worse, you're stressing out about what you think how a programmer is hired.

Sit back, relax, go talk to someone who actually does the job, and re-evaluate once you're better contextualized.


Yeah like I said in another thread, CTCI is for more of a software __engineering__ role. There are lots of really easy software developement jobs where you ain’t doing algorithmic/dataatructures, just chilling with other code monkeys , humming Katy perry tunes and stackoverflow searching 4 hrs a day, the rest is breaks and hn reading


> the rest is breaks and hn reading

and, of course, writing HN comments.


A candidate displaying the attitude shown in this post would not pass the culture fit round if the company needs team players.


the joke is (probably) on you: most people know not to mention these things in a job interview, but expect to enter a team with like-minded individuals upon hiring.

employers can't screen for it because there's no paper trail.


"Code monkeys" feels pretty derogatory when talking about people just doing the job they are paid for.

It's especially unnecessary in a thread like this one where OP is doubting his skills and choices, and looking for help/direction.


I think the way that abledon used it here is fine. He wasn't saying "everyone else is a code monkey", he was saying "we are all code monkeys" himself included.

In this context, it might actually help OP to relax a bit - the message is "Don't worry, you don't have to be a programming contest winner in order to work as a programmer. Many programming jobs are much lower stress and lower cognitive load than that", and abledon's description certainly matches my own programming job more than, e.g. what was described in the other "What was it like to be a software engineer at NeXT?" post on HN.


Exactly. You must ask yourself what you want from this. If it's a secure-ish job, good pay, and relatively low-stress it's pretty easy to find.

If it's The Social Network style code-bro'ing, coding the cure to cancer, etc; well that's pretty easy to find too.


At the risk of mirroring pure-awesome's comment: we could say the use of the word 'just' is derogatory, but it doesn't make sense to deny the distinction it draws.

There's a difference between a mechanical engineer, and a car technician. There's a difference between serious algorithmic work, and code-monkey work. One is more demanding than the other.


This doesn't sound half bad. How can I find these?


At work you will normally have an internet connection, so what are effectively useless "elite code" algorithm puzzles are A) easily looked up, and B) not most of what the work is. Those are not realistic problems, business have better things to do than waste time on those sort of things. Here is a realistic problem that might be encountered at work: "We need output X under these circumstances, but instead got output Y. Track down the problem and estimate time to correct". Another might be, "We have a new business requirement, how long will it take to design and code it - think about it and let me know tomorrow." Businesses are not arcane IQ test puzzles like the sites you are looking at.


Estimate time to correct?? Most of the time that's very low, the hard part is figuring out why you get Y instead of X.


That is true, but in order to get the jobs you described that pay reasonably well you still need to solve algorithmic problems on Leetcode or CTCI. And sometimes knowing different data structures and algorithms do come in handy, so some problems on Leetcode can be considered realistic.


No, you can get there by finding jobs where the interviewers/hiring managers aren't using Leetcode as their filter. (They do exist, even if they're not as common as they should be.)


That's why I said "pay reasonably well". It seems to me that most places that don't interview and filter candidates by asking algorithmic problems don't pay as well as those that do. That's just been my experience as a student that's interviewed for internships and is going to start interviewing for new grad positions in the fall.

Also

> (They do exist, even if they're not as common as they should be.)

I'm curious why you think interviews _should_ be non-algorithmic. How do you propose interviews be done? How else are you supposed to find if someone can employ critical thinking + has the necessary programming skills? And yes, most interview questions _are_ original and not straight from Leetcode so they do demonstrate critical thinking + programming skills.


You’re thinking rather short sided here. There are a lot of ways to find out if someone can think critically and also has the appropriate level of skill at programming. I prefer to give them a set of much more real world type scenarios to see how they will handle things. Often I do this in a paired programming scenario. We both sit down. I drive they navigate and we spend 20 - 30 minutes trying to build something. The something is never anything that is going to go into production. Just code that is real and useful and can show me how they think through a problem and whether they can catch mistakes in code as they happen in real time. Lately I’ve been a fan of making a shopping cart (since the software I build doesn’t have a shopping cart).

I keep it very short. I try to make it low stress. I try to make it fun and funny. Why? I really want to know if the candidate can work with me and how they will work. I don’t care one bit whether they can remember the big O notation of a red-black tree search or whether they know how to reimplement a complex datatype. I care how they will work with me in my environment.

You might say “you’re method is just too simplistic. People can game it and get through.” It’s been accused of that before. And frankly, I can memorize algorithms and game that interview. Try gaming me while we pair on some code and I try to toss in a few roadblocks. Try to game me as I try to see how you will react as we work together. It’s hard, and my methods have been quite successful for me.

As for the pay, I don’t pay people what Amazon, Google, and Facebook pay. But I pay very well and people stick with me so it seems to work out.


The other good test is to toss some intentionally cleverly buggy or incomplete piece of code to analyze and debug, since a third of the job is debugging.

And by bug I do not mean super hidden tricky language feature you get to look up on language standard to not misuse.


At one of my companies we pay SF/BayArea market salaries and the way we hire (pretty much everyone, not just programmers) is: 1) short (10-20 min) phone interview, 2) if it seems like a good candidate we invite them for a paid test run, usually 2 weeks of actual real work, either remotely or in person, 3) if it works out, they get hired.

Pretty much nothing will accurately predict how well someone is going to do on the job. The best approximation is for them actually doing the job.

Also, the two most important things that we look/test for throughout the process are: 1) how good of a fit the candidate is for the team/company (do they get along with their team?) and 2) how enthusiastic they are about working with us (did they do some research on us ahead of time? are they excited about the opportunity?)


"Pretty much nothing will accurately predict how well someone is going to do on the job."

^ this is a doggone well-phrased and accurate summation of the challenge of team-building. Raw capability is by no means a predictor of how well someone'll work with the organization.


I'm sure this is effective, but are folks really willing to agree to this? Do you pay for the 2 weeks of work? Do candidates ever say no to this arrangement?


Does this not reduce your pool to people who are actively looking? That excludes most people, especially the top candidates who are never out of work.


There are drawbacks and advantages to every hiring process, it's possible they've determined this set of advantages/drawbacks works best for them.

Besides, it's possible to take 2 weeks off of your current job.


Is the 2 week paid work done only for candidates that aren't currently employed or how does it work?


You can’t use this process to hire someone who already has a job. So you’re limited to college grads and the otherwise unemployed. That is a pool not everyone can be content with.


Employees ready to move on often have substantial time off built up and also have the ability to negotiate additional time flexibly.


I am actually game for this 2-week trial. How do I contact you?


Just my own little anecdote, but I was able to get into upper middle class after 4 years and no degree. I've never completely passed an algorithms interview either - most of my jobs haven't had algorithm filters. I'm now doing functional programming in a cool language for a living.

Most people I meet haven't had my path to success, but it is possible. My gut feeling is that I'm a small statistic because people give up quite easily when they think their goals are unattainable. My first programming position took me 15 interviews to land a job!


Take home assignments, discussions about work history, problem solving at an architectural level, the list goes on. Programming to algorithms in a live interview setting is about the least realistic way to gauge real job aptitude. Tons of thought leaders write about this, and tons of places implement more rational hiring practices.

On the “pay reasonably well” line, the average new college grad salary is 50K. I’d wager that the vast majority of salaries in the field exceed that. The googles of the world pay way in excess, and they may make you do some stupid dances to get in the door, but that’s not the real world, that’s just one weird part of the world.


> problem solving at an architectural level

That's a problem for people who haven't done internships and have just graduated. Architecture skills and knowing how things are/should be designed come from experience, which a lot of people don't have.

On the other hand, algorithms + data structure knowledge and how they're applied do not really require experience, just knowing fundamentals well.

So your method is definitely good for experienced people but not for new grads/interns. And these are methods the industry employs anyway — big companies do stress more on system design for industry hires, less so for new grads + interns.


First, I never said that people shouldn't ask algorithmic problems. I said they shouldn't ask Leetcode-style questions. To me, that stood for a whole class of problems where you have to know the area in order to be able to solve the problem. When you have people talking about studying for interviews, I'm arguing that those are bad interviews.

Background: I've been a programmer for 33 years. I have never (directly) used a tree of any kind. (I've used STL and Java maps, which I think are trees under the hood.) Asking me to do something with a tree in an interview question is therefore probably a sub-optimal way of determining whether I'm a good fit. Yes, I know what a tree is. No, I don't know it like the back of my hand, and I don't know the algorithms in detail. Yes, I could probably figure it out during an interview. But expecting me to know that background when I come into an interview, when I have never used it so far in a pretty long career, and so I'm probably not going to actually use it at the new place either... that's asking me to memorize a bunch of stuff that isn't actually going to be useful on the job. That's a bogus interview approach.

Algorithmic questions should be something that the interviewee hasn't memorized the answer to, but also that they don't need to have memorized a bunch of background or know the "trick" to be able to answer.

Now, I'm in kind of a different world. I've worked mostly in embedded systems. If you're interviewing for a job where they use a lot of trees in their data structures, you probably ought to know them. If you are interviewing at one of the big boys (Google, Facebook, et al), where an improvement in the structure you use to represent the data can mean that you need several thousand fewer machines, they are going to really care about your grasp of the nuances of data structures. But, despite Google's size, most jobs are not at Google, or at that type of place.

If you're going to classify only Google, Facebook, Amazon, and their ilk as "paying reasonably well", then I do not agree with your definition, but I will agree that you'd better be able to pass Leetcode-type questions in their interviews.


>original and not straight from Leetcode so they do demonstrate critical thinking + programming skills.

Leetcode style questions almost never require anything resembling critical thinking. The only thing they demonstrate is problem solving under pressure.


Lots of companies don't do stupid programming puzzles. Here's a list: https://github.com/poteto/hiring-without-whiteboards

Don't listen to people telling you that you shouldn't be a programmer. Doing these sort of puzzles has very little to do with 90% of what programmers do. There are jobs that need these algorithm skills, sure, but they're not the default jobs.


>Doing these sort of puzzles has very little to do with 90% of what programmers do.

On the other hand, it's not a waste of time for a young person to just go through a few of these a week as they are job hunting. And you really do get better at them as you do more and more. Certain patterns repeat, and the tricky ones usually have nice explanations that you can certainly learn from. They are also FUN if you do them in a stress-free situation outside an interview.


Thank you for this resource!


It's been 3 years since I graduated and started working as a full-time software engineer, but I still struggle with leetcode problems. Even easy ones. My day to day work involves gluing together API's and not writing algorithmic code to solve tricky puzzles. Don't think that just because you can't solve leetcode problems you're not meant to be an engineer. And trust me, I feel your pain. I haven't written a binary search tree from scratch in years, so reading through my algorithms book right now is a struggle. I'm also actively interviewing for jobs and it's really frustrating to work 40-50 hours at work then come home and put in another 20-30 hours of leetcoding for interviews. It's really really tough.

I'm ready to be downvoted for this, but if you can't solve a problem in 15-20 minutes, just look at the solution, understand it, and memorize it. The more problems you work on the better your pattern recognition will get, and it'll be easier to solve related problems. Unless you're a genius programmer, I seriously doubt most normal people can easily and flawlessly answer these stupid questions within 15 minutes in an interview setting.

Also keep in mind that the vast majority of interviewers will tell you that they're looking for a good thought process as opposed to the correct solution, but they're 100% full of shit so don't believe what they say. There are hundreds of engineers who have already memorized 300+ leetcode problems and WILL write correct and bug-free code in an interview setting, and they will get the job no matter how good your "thought process" is. However, there are SOME companies that care about thought process, and those are the ones you have to look for. Unfortunately I haven't found out how to determine which companies actually do that, but typically they're start-ups. This only applies if you're in the Bay Area, however. I can't comment on what it's like outside of California.

I feel like nobody in the thread truly read your original post. You asked for alternative career options because you can't solve leetcode problems and that's absolutely ridiculous. You can absolutely get hired as a software engineer, you just have to play the game. Keep leetcoding and you'll eventually crack an interview. It's just a numbers game. Good luck!


Your post came at a good time for me. I've been working as a programmer / engineer for the better part of two decades now. I'm self-taught, have plenty of code in production at several (small/medium) companies doing millions a year in business. I have recently started interviewing again, and it's exactly as you state it: 40-50 hours a week working, and another 20 or so on Leetcode. It's exhausting to put in all this work knowing that much of it is unlikely to be needed outside of the interview setting. A couple of the recruiters have even said as much (Literally that the interview prep material is unrelated to the day to day work for the position). Glad to see I'm not alone in this.


Strongly agree with most of your points. It's a MASSIVE pain in the posterior to be job-hunting. You effectively take on a second part-time job doing interview-prep and everything else in your life gets put on hold - vacations, weekends, quiet evenings with your SO. Woe betide those who have a kid during the process - you might as well stop job-hunting until you're able to get more than 5 hours of sleep every night.

I don't advocate memorizing solutions because I don't think it sticks. I prefer to look at the solution and implement the algorithm myself. Pattern recognition is key though. And I too believe that most interviewers who say they're looking for "thought process" are full of shit. Partly because the question always seems easier to the interviewer and than the interviewee. But mostly because all the candidates who did grind through hundreds or thousands of leetcode, hackerrank, careercup and/or topcoder problems have skewed what normal interview performance looks like.


My view has been they are looking for people with high IQs exclusively. Whiteboard interviews cut out people who are not even intelligent enough to memorize solutions and algorithms while also accepting people smart enough to come up with solutions to tough problems they haven't seen before. It seems given how much I struggle I may not even fit in the memorize 300+ leetcode category.

I'm very interested in this divide between people who are for white board interviews and against it and how it correlates with job performance and content. I may make a separate post about it because I'd like to get to the bottom of it.


>> high IQs exclusively

I agree and I think its illegal to do so. Its a form of discrimination so they have disguised it as a "coding challenge".


>> vast majority of interviewers will tell you that they're looking for a good thought process as opposed to the correct solution, but they're 100% full of shit so don't believe what they say.

I am actively interviewing right now. Also interviewed at FANG companies. This is absolutely 100% correct. Those people don't give shit about thought process as much as they do about correct bug free solution under 15 minutes. If you take even JUST 2 MINUTES to think they start looking at you suspiciously and reject you in their mind. This is really a fucked up situation.


If you have passable people skills and enjoy a bit of travel, you may consider sales engineering.

You basically handle all of the technical things that are over the heads of the normal sales team, both pre and post sales. This will often look like integration type work -- trying to figure out how to make your companies product work in the prospect/customer's environment.


This! Sales and solutions englineering is a ton of fun, applies both halves of your brain every day, and builds a great foundation wherever you want to go in your career. I actually went from 5 years as an engineer, to a sales engineer, in order to understand customers better. Couldnt be happier.


This. I know a ton of sales engineers who love the combination of technical discussion (even if theoretical) and human interaction. And it tends to be a profitable career path too!


Yep, it's invaluable if your sales guy actually knows a little bit about the technology, even if they can't implement much themselves.


I came here to say this. Or even vanilla Account Management for a software company (you probably don't want to be an Account Executive given anxiety).

It's a very different role, but also valuable, and having any kind or CS background may put you ahead in many companies.


Somethings wrong when someone is trying to game the interview system by trying to do programming puzzles rather than thinking that the best way to get a job is to try and write some software.

I got into programming because I like creating things, having ideas and making them happen. Algorithms like you find in programming puzzles rarely stand in your way to create things. GoogleFu / BingJitsu tends to solve most problems pretty quick.

Now your search skills often depend on what you are aware of to look for

I enjoy programming puzzles from time to time, usually advent of code, but I also don't get a huge level of satisfaction from solving those problems so I don't do them all and often just cherry pick the most interesting ones after the event is over. Often the most interesting thing is to see what techniques other people used to solve it. Which is really the key point for a professional software developer :- be aware of techniques and know what kind of problems they can be used for. Often techniques can be applied to problems in ways that are just not obvious.

So, first piece of advice, look for jobs that don't do puzzle based interviewing. Smaller companies are good targets, they don't need to do formula based recruiting ( however many do try to copy big players approaches to interviewing )

Ok, so maybe you really don't want to be a dev...but there are other specialist areas, like testing, devops, UI (Ux). But that would greatly depend on what you enjoy.

If none of it is of interest, then there is all kinds of tangential roles, recruiters, product management, HR. But may require further study.

Just work out what you really like doing


Are you sure that the problem is programming itself, and not stress itself? Ie. if you were a biology major or whatever, and you were stressing out over interviews for pharma companies, would it be the same? If yes, then you're kindof in luck, because it's not about CS, you're just stressing out. In this case, get help on that.

As other people here have asked, do you enjoy programming as a past time? Do you write stupid little things for youself? Have you made N websites for yourself? Have you compiled the Linux kernel just for fun? If the answer is "yes, I like doing things like this in my past time", then you're on the right track to be a programmer. If no, then maybe not. In that case, you can still be a good programmer, google "cal newport follow your passion is bad advice".

In any case, if you decide you don't want to be a programmer, a good parallel path you could go into (which friends of mine who aren't really interested in programming have gone into) is Data/Analytics/DataScience. Essentially you can make roughly equivalent money by helping companies make decisions based on their data. There is a stack of roles here, from infra, to data engineer, all sorts of analyists, data scientists, and so on (the division is not clear). If you want, you can have a very rewarding and successful career here and just do SQL if you go into the Analytics/Data Science region of the stack, you don't even have to write Python on an everyday basis.


Its not clear if you've actually tried applying for jobs and doing interviews, or just doing interview prep. If you haven't applied for jobs just start doing it. Grad programs would be a first start. I think you'll find its easier than you think. Sure, the big name companies will have a high bar but less well known tech companies and esp corporates really don't expect grads to know that much.

If you are getting interviews then bombing them all - then you can start to worry. If you really don't get anywhere you can try looking for QA/test jobs where you usually have to know a bit about software and end up writing scripts and maybe move into dev later with some more practice.


It sounds to me like you might have more of a stress issue than anything else. It is hard for me to imagine someone getting a CS degree but also failing to be able to practice and get better at interview problems on basis of intellect.

Don't make any rash decisions. Practice with an answer key and fix mistakes in solving mundane problems rapidly. Repeat. Struggle is overrated compared to repetition and quick correction.


> Struggle is overrated compared to repetition and quick correction.

Just to offer a differing view, I would posit the exact opposite: struggle is underrated compared to repetition and quick correction. The latter is prone to blind memorization, and in my experience, many CS interview questions have a core idea or central motif that aren't apparent until after a long thought.

I don't think that either of struggle or rapid repetition are "wrong", but rather, everyone should experiment with both styles and find some middle ground between the two.


> central motif that aren't apparent until after a long thought.

and yet its impossible to figure out a central / repeating motif if you haven't actually done a lot of the same kind of questions.

sitting down and thinking things through is generally the final phase, in which you're improving the most. In order to get there, a varying degree of repetition is necessary.


Also, two recommendations to help combat the anxiety/stress: 1) try some form of meditation (you can start with an app like HeadSpace), 2) get the book The Charisma Myth by Olivia Fox Cabane and practice the exercises there - they'll help you a lot with building your confidence and reducing anxiety.

Good luck! Wish you the best.


There are plenty of opportunities outside of coding. Consider technical sales, consulting, software support, technical writing, UX/design, project management, just to name a few. A CS degree is now a foundational degree that can serve as the starting point for many career paths. Don't stress.


I'll second this suggestion. It's exactly what came to mind when I read OP's post. I would also add to this list: testing/quality assurance, and information technology. Since you successfully completed a CS degree, you obviously have the capacity to exercise skills in this field. Ask yourself if there are parts of CS (or a related field) that you enjoy more than software development -- and pursue those interests.


I agree. There are lots of tangent careers you can do with a CS degree. Also consider: IT operations, Quality Assurance, technical PM, network infrastructure. Some of these might require a bit more training, but your CS degree is a solid foundation to build from.


Don't get hung up on the problems. 98% of the people I've worked with couldn't, e.g., reverse a linked list to save their life. Many of them were perfectly fine professional programmers all the same.

If you have a CS degree, it is almost 100% certain that you are qualified to do programming at a bank or insurance company or whatever at the very least. If you're scared of the intimidating tech companies, then just skip them and go work somewhere that'll be less stressful.


There are a lot of public sector jobs that require any degree. My mother had a long and fulfilling career in the food stamp program, starting out helping people sign up and moving into training, supervision, and eventually became a county director. This is with a degree in anthropology. You’d be surprised how many jobs there are whose qualifications are like “be able to type and spell and generally help make things get done” which are impossible to staff because nobody who can do the work would do it for the pay on offer. These jobs tend to be lower stress anyway, better confined to 8-5 too.

People will joke that you should go into management. Maybe, but I’ve never heard of anyone going from a CS degree to managing programmers directly.

If I were talking to someone who was one year into a degree and hating it, I would really push the idea of getting a technical vocational training in something like HVAC, plumbing, or electrical. Those careers require a lot more from you physically, but not as much mentally and the pay is really good. Better than you’re likely to get as some kind of administrative person. But there are other trade offs.

I think a lot of people here are calling your bluff, because if you really didn’t like it, why are you reading HN? But you should know that you can have a good and fulfilling life not programming. But understand that you will probably make less money, often a lot less. You are the only person who can decide if it will be a better life for you to do something else with less money or to do something you dislike for more.

There are lots of people who cannot program or dislike it who nevertheless manage to eek a career out of it. I can’t in good conscience tell you to do that, because they cause the rest of us a lot of stress and what kind of life is that, where you spend every night sleeping fitfully trying to convince yourself that you fooled us yesterday (you didn’t) and just need to fake it a little longer. So don’t. Find something that you enjoy and do that instead.

You 100% have time to do something else. Just stop and do something else. Don’t torture yourself. You are what, 23? Go get some more loans and get a degree or certificate in something you want to do, and live your life for yourself.


I think a large hidden factor when comparing pay is the length (and cost) of the education required as well as hours worked. I make 45% more than the median income here (Sweden) with zero education and averaging 35 or so hours per week, working as a septic tank truck driver.

It's not as much as I'd make as a software developer; but I never had any student loans to worry about and what software devs are working 35 hour weeks and still make bank?


An undergraduate degree is an indication you can sit down and do complex work without needing someone holding your hand. It is not a life sentence to a particular career (that would be a PhD).

There are plenty of jobs you can do with a CS degree that don't involve being a programmer, as others have mentioned. Don't feel you need to work in that field either. A friend I did my BSc Biology with is now a financial advisor with one of the big four banks in Australia. Having any degree is good, having a STEM degree is even better.

Also, it sounds like a lot of this is in your head. You should talk about it to a close friend or someone you trust :)


I will start by assuming you didn’t cheat your way through school. Most hiring managers like CS majors because creating an OS or Compiler is hard. So let’s assume you got good enough grades to show that you learned the material.

One possibility is you just aren’t wired for the interview process, but could make a competent programmer given the chance. The other is you got the degree. It just aren’t wired for programming in general.

In either case there are a lot of near-programming jobs where your CS degree can be valuable. Thing Sales engineering if you are outgoing, QA if not, and technical support if you are in the middle. All 3 allow you to be technical, and can lead to programming jobs if you are so inclined. And all 3 positions are filled with people who wish they had a CS degree.


Project manager, Business Analyst, Sales engineer, devops, high level support role, a role in system integrations, technical writer.. etc etc. I believe CS degree is a good base now and days and doesnt mean you have to go straight into development. Best people I know in the above roles have a programming background. Good luck, don't stress and dont give up. First job was the hardest for me :)

Get out there and interview if its important to you. The more interviews you fail the better you will get at them! If you wish to master the silly technical interviews IMO the best way is to throw yourself into the fire.


I would hope that a "Devops Engineer" or similar would be able to breeze through Easy leetcode problems (i.e., string manipulation) without issue.


True, I guess I didn’t group together string manipulation as a lee7code problem. Devops people I know are mostly chef and powershell scripts.


I don't know if this will be helpful, but when I was in college, I failed a very basic CS math class because I was very anxious, comparing myself to others, feeling inadequate, feeling like I had wasted my college tuition (I took on a lot of debt, and my family isn't rich. The whole reason I got into this was for some semblance of financial security.) I thought I had ADD and that maybe if I got diagnosed I would be able to get some of those magic amphetamines that everyone else seemed to be using. Instead the psychiatrist I saw recommended I seek therapy for anxiety and depression. I was putting so much pressure on myself to succeed and take care of my family that it was impossible for me to succeed in school or even really live my life to the fullest without addressing my thought patterns and emotional state.

I don't know your situation, but there are plenty of respectable jobs you can get with a CS degree without being a master of CTCI. It won't be Amazon or Netflix but it's okay, most people don't work at a Facebook/Amazon/Apple/Netflix/Google.


Some of the best Product Managers I’ve worked with people with Engineering or Comp Sci degrees who had been mediocre devs for one reason or another.

That said, is there any type of programming are you good at? What actual work have you done? Have you shipped an iPhone app or launched a basic website? Were your comp sci courses brutally hard and you spent hours working at them and barely eked out a degree?

I’m asking because you just may be failing because of anxiety, not “stupidity”.


How does one train to be a Product Manager?


I recommend materials or coursework by Pragmatic Marketing (https://www.pragmaticmarketing.com/), if you can take their class. It was kind of accepted as one of the standard training courses for this role in industry at several companies I either worked for or interviewed with.

This particular PDF [1] really helped me understand the roles better.

I also read the book "The Product Manager's Survival Guide" (ISBN-10: 007180546X) and found it to be a pretty good basic introduction, when I needed it.

Lastly, nothing beats having cross-disciplinary experience by chance in any job. What lead me into product management was always "getting stuck in the middle" because I was equally capable of being technical as well as talking with a user and understanding their needs. I was more of a Technical Product Manager, however, than a pure Product Manager (an important distinction).

[1] This is a legit download - "The Strategic Role of Product Management" it's a link to a PDF on the Pragmatic Marketing website - https://cdn.agilitycms.com/pragmatic-marketing-v2/SRPM_PM180...


I took that course and recommend it highly. It’s how I was going to answer this question but yours is VERY complete :-)


Thank you!


PMP cert seems to be a defacto certificate I see thrown around in the field. (besides all the scrum stuff)


At the time of this reply you've been downvoted a bit, and that is ridiculous.

No, not everyone requires certification to be a PM, but many places do, and in many cases it helps get past the resume filtering process.

So get a PMP cert if you want, or don't and find a company that isn't going to discriminate on the lack of a certification. It costs a bit of sanity and $500 some to pad PMI's coffers, but its basically paying $500 for your resume going to the top of the stack. Sucks, but it is how it is for a large enough number of companies to matter.

"Defacto" may be the wrong word, perhaps "ubiquitous" would be more correct, but your point is valid.


Gotcha and agreed. My lexicon seems to be regressing rapidly with age :(


PMP is for project management, relevant to product management, but perhaps a particular set of tools within the broader domain of product management.


Thank you!


Firstly, how much do you code when you are doing your undergraduate? No offense, but 2-5 hours seems too long. If so, you should first brush up your basics, and let go of the thought 'I am from a CS major'. Programming is almost always self-taught, or can't really be learnt effectively through classes, only through, you know practices. Assuming your college did an OK job, you should pick up and relearn everything relatively fast, in 2-3 months or so. Algorithmic questions can be pretty intimidating for sure, so again, practice a lot, ask your friends to do mock interviews, and go interview around with less famous companies on the market, to understand the process will also help.

Anyway, self-taught is the only way here. I have an imposer syndrome when I graduated. It does make feel better knowing that one of the best guys in our class, who we assume is already a CS guru at the very beginning, actually knows nothing about programming at that beginning. He was faking it to project confidence to us, but after getting positive feedback from the environment, he actually gained the momentum to learn and understand CS as the guru we thought he was. So it is not too late to do it all over again.

Hope this helps. :)


Getting in Google et al would be too stressful, but lots of small businesses hire programmers for relatively simple apps. They usually don't have hard technical interview questions. I'd look into a variety of job listings. Downside is salary will be definitely under 100k (probably closer to 50k), but it's still higher than starting from scratch in another field.


I think many engineers would love to have a scrum master or project manager who at least understands what they are trying to do. Your challenges position you to appreciate the difficulty of engineering at the highest level. Use your demonstrated (in this post) communications skills to help them cut through the bureaucracy and be effective!

You have more to offer than you realize!


Like many on this thread I think it's entirely possible you're not giving yourself enough credit.

I've been working as a software engineer at companies that don't ask riddles for about 8 years, and I've been on both sides of the technical interview many times. As the interview-ee, there's exactly one interview I actually left feeling like I'd nailed it, but several others from which I received offers, some of which turned into perfectly fine jobs. As the interview-er, I've learned that I'm looking for a multitude of factors, of which technical proficiency isn't even the most important. In other words, while there is a technical bar to pass, it's usually lower than the interviewee thinks it is.

I doubt we live in the same metro area, and even if we do my current employer is not hiring. I'd be happy to run a fake, no pressure ~20-30 minute phone-screen with you, and then offer feedback. jmkimmel at gmail


Some thoughts:

1. Talk to a therapist about your stress/anxiety issues. This can totally kill an interview even if you're qualified, and is probably a bigger issue than your perceived lack of skill. Xanax or other anxiety drugs can help a ton for interview days, but talk to a therapist first.

2. Keep trying. It can take a surprisingly long time to land your first job.


I'll second this. I'm not a counselor, but my guess it that your anxiety is coloring your perception and performance of programming tasks.

I strongly suggest you make some time with a counselor, and let him/her help you understand the real causes of your anxiety, and find a path towards managing it. This is what they do for a living, and AFAICT most of them are pretty decent at it.

My guess is that you'll have a better chance of enjoying programming, and perhaps performing better at it, once you get a handle on the anxiety.


It may be that the problem isn't you, maybe it's just that you and CS don't fit.

The others in this thread are right of course. Make sure your mental health is good. Make sure you try other approaches to finding a job in CS. And so on.

I would just like to add another thing you can try: Give yourself a break, go for holidays for the first week of thr break and then afterwards do something else that's hard. Study a science. Study electronic circuit design and build something. Read about architecture and design a building. Or something else. Just something else than CS and challenge yourself.

(I mean, don't sign up for a university course, better just read some textbooks or online resources.)

Do this for a couple of days or weeks. And try to figure out if you are good at it.

If you hate everything, then please, seriously, talk to somebody about your mental health. Maybe you are burned out or have a depression. It can happen to everyone and it can be fixed.

Maybe you also just need more holidays or don't like work in general. I'm not excluding that possibility, I think that's a totally okay feeling to have but I also don't see a reason to assume that this applies to you.

However, if you find something that keeps you interested for hours every day and where you feel like you're good at it, congratulations. Maybe CS just isn't for you. I'm not saying that you should then become an Architect or Electronics Engineer or whatever it was that captured you. (You can, of course, but that's a long term thing I'd say.)

What I'm saying is that after having determined CS as the source of the problem for you, you can now look for alterations that are fun for you. Maybe you could be a product manager? You don't need to code, but it really helps if you know the language that developers speak. There are many other options as well I'm sure.


Systems Engineering.

Work in the world of avionics and help figure out what is needed for airplane manufacturers, pilots, or the manufacturers of the hardware and software for the many boxes that make modern air travel safe and reliable.

It involves writing English and logic and attention to detail, but it does not require coding. It helps to know the broad ideas behind coding, but isn’t necessary to write algorithms or otherwise solve problems in code.

I would strongly encourage this career path. Look to companies like Boeing, Garmin, United Technologies, and many more.

I will avoid asking other questions about your current predicament since many other people are asking you insightful questions. But if you truly don’t want to code, seriously consider systems engineering.


Real world software development work has almost nothing to do with the types of exercises you're likely doing. Focus on solving practical problems and making software that provides value to people, not brain-teaser, CS-heavy exercises.


When I graduated I had already decided that software development was too painful and not rewarding enough - in my experience up to that point. I chose to pursue system admin - networking, scripting, installing, configuring.

This was a good way to learn how to work with infrastructure 'hands on' and much less stressful than writing code, compared to my experience up to that point.

I ended up finding a route into development where I wasn't banging my head against so many walls, and was enjoying it, then stuck with it for about 12 years.

If you got a CS degree, you're capable of writing code, but you don't have to do it _now_.


A lot of experienced programmers would struggle with those interview questions. They tend to be pretty far detached from the what most programmers actually do in the wild.

Thankfully, a number of good companies don’t use silly brain teasers to select candidates, opting for pair programming exercises instead.

I would advise spending time learning about TDD, agile etc


Been there. Have a CS degree and did programming for most of my `student years`. Noticed only the last year that I didn't want to be a developer and had no idea what to do if you're not a developer. I am now working as a QA and I find it great. My developer background really helps me talk with the devs and understand what goes through their mind.

Do not hesitate to talk to a head hunter and explain the situation to him, he may have some jobs you might be interested in even though you never thought of it.

Warm vibes, I hope you'll love what you'll do someday.


I feel like the fact that you earned that degree should encourage you to think about what actual factors are limiting your progress.

I don't think "being too stupid" is that factor. I mean... you're smart enough to graduate with a CS degree!

Are you doing these interview prep just because you enjoy the training, or are you in "cram mode" trying to force yourself to get better?

> Even if I get a problem right, I gain little to no satisfaction at this point.

In order to make "deliberate practice" like this less stressful, you should establish a baseline of doing some task in a way that makes you enjoy it.

Step aside from interview prep, take a few days and focus on anything other than programming, then casually think about what YOU want to create -- for your own personal use/enjoyment -- to satisfy your creativity. Not to "grind" and get better at it -- but simply to tinker and fiddle and read and discover.

Once you're programming (or maybe reading, or writing, or painting, or making music etc...) just "for the kicks," you might try to dive deeper into a part that you don't understand well -- if you're not going anywhere, take a step back into the comfort zone, and do what you enjoy for a while, then try something harder again.


Leetcode problems are a mess. They're good to practice, not to learn. I graduated with a degree in CS, fairly recent. I was afraid of recursion. Never intuitively had a recursive solution. Then it hit me, the matter of fact is that I truly don't understand it on a fundamental level. I watched beginner videos, in particular, college lectures. Marty Stepp from Stanford. His CS2 videos were super helpful. Then I jumped to doing recursion problems, only homework problems (Like fibonacci). Eventually, I began doing more problems like backtracking. Then I went to Leetcode, and I only did the backtracking problems. Success! I did them like a champ.

My advice is, don't try to solve all the leetcode problems, you won't succeed. Focus on one area, one area only: strings, backtracking, recursion, etc. and master it. Live and breathe those problems. Watch videos. You learn programming by doing, not watching or reading and assuring yourself you'll know when the time comes. No copy paste ever!

Pramp is also a good peer interview platform, use that as a test.

I have faith in you. Don't give up on CS.

Also you can checkout the PM route - as "PMs who can code are gold"


There are always project management and product/program management roles. Having a CS background can be really advantageous without all the coding.

However, it sounds like you may be dealing with some mental health issues if you’re dealing with PTSD-like stress trying to do programming challenges. Please consider finding counseling at some point on your journey as this could be affecting more than just your enjoyment of programming


Degrees are worthless. A degree courses is designed to be easy to grade, not to teach you anything useful. The point is to show you are capable of learning, not to make you capable of doing a job. This makes them fairly portable, while jobs may ask for a degree with a specific subject they will generally consider anyone with a degree, unless its marine biology or some shit.

Code camps and uni are a good start, but if you want to actually know what you are doing, it takes years of experience, there is no way around this.

> Easy problems take me 2-5 hours

This is fairly typical of someone learning programming for the first time, it is also typical of someone coming out of uni with a degree. I wouldn't worry about it and just keep at it.

> Even if I get a problem right, I gain little to no satisfaction at this point.

Then quit this is the only reason people actually like programming.


> marine biology or some shit

Highly ignorant comment, makes everything else you're saying less credible. I'd say instead that STEM subjects are more conducive to instilling a certain style of thinking that's helpful for certain careers.


>Degrees are worthless. A degree courses is designed to be easy to grade, not to teach you anything useful.

My experience is very far from what you describe. I learned ton of stuff from teachers who were mostly enthusiastic about the field they were teaching. Do you write from your own experience? do you have a degree?


It depends strongly on where you go. I dropped out in my 20's because I was learning bugger all from completely disinterested lecturers. I'm picking it up again at 31 (new university) and I'm not only mostly enjoying it but I'm even enjoying "bullshit" subjects that have nothing to do with CS.

Some universities (I would assume most) are businesses that print degrees and answer to shareholders, others are learning institutions that answer to students.


"Being a programmer" on the job actually doing useful work for someone and knocking out contrived coding puzzles are two _very_ different things.

Just keep interviewing and realize that although some places will use these tests as secret handshakes to cull candidates, many more will try to evaluate YOU in a bigger picture: other aspects of your background and attributes, how they think you'll get along with the others, your grit, communication ability, and like-ability.

There is so much more to work than technical prowess (especially as measured by unrealistic quizzes). If your passion is software development, you are doing yourself a disservice to give up so early just because you are not performing the way you think you should be performing on puzzles.


I should like to see some of the problems that take you 2-5 hours to solve. Show your solution, and text about the way you tackle the problem.

Perhaps you need a mentor, someone that can give you some tips about your coding abilities and what you should do to improve.

If you need more than 10 minutes to sum the cubes of numbers from 1 to n in python, then I think you have a problem as a programmer.

Can you point to a leetcode problem that takes you 2-5 hours to solve?

Edited: Two weeks ago you submitted a similar post and in the comments you give this example:

>> To give a concrete example of some of the above, just this morning I tried to code the brute force solution following problem: Give two sorted arrays return the median. I spent over an hour trying to implement the brute force solution involving linearly going through each array and couldn’t code it in Python.

As a hobby programmer, my ten minutes approach:

  def median(a,b):
    ...:     ab = len(a)+len(b)
    ...:     pos = ab/2
    ...:     ia = 0
    ...:     ib = 0
    ...:     for ic in range(pos):
    ...:         if a[ia] <= b[ib]:
    ...:             x = a[ia]
    ...:             ia = ia + 1
    ...:         else:
    ...:             x = b[ib]
    ...:             ib = ib + 1
    ...:     if ab % 2 == 1 :
    ...:        return x
    ...:     else:
    ...:        return (x + max(a[ia],b[ib]))/2
    ...:

 But it is not correct


For the median question, I did not allow myself to combine the array. My idea was to increment in each array based on which value would come next in a sequence (as if they were on array), stop when I've incremented n times where n = length of both arrays / 2 (the median position) and then return. Here's the code:

class Solution: def findMedianSortedArrays(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: float """

        length = len(nums1) + len(nums2)
        medianIndex = length // 2
        ptr1 = 0
        ptr2 = 0
        curr = 0
        flag = 0
        
        if nums1[ptr1] < nums2[ptr2]:
            val = nums1[ptr1]
        else:
            val = nums2[ptr2]
        
        while curr < medianIndex:
            if nums1[ptr1] == val:
                if nums2[ptr2] < val:  
                    curr += 1
                    ptr1 +=1
                    val = nums1[ptr1]
                    flag = 0
                else:
                    if ptr1+1 < len(nums1) and abs(nums1[ptr1+1]) - abs(val) < abs(nums2[ptr2]) - abs(val):
                        curr+=1
                        ptr1+=1
                        val = nums1[ptr1]
                        flag = 0
                    else:
                        curr+=1
                        val = nums2[ptr2]
                        flag = 1
            else:
                if nums1[ptr1] < val:  
                    curr += 1
                    ptr2 +=1
                    val = nums2[ptr2]
                    flag = 1
                else:
                    if ptr2+1 < len(nums2) and abs(nums2[ptr2+1]) - abs(val) < abs(nums1[ptr1]) - abs(val):
                        curr+=1
                        ptr2+=1
                        val = nums2[ptr2]
                        flag = 1
                    else:
                        curr+=1
                        val = nums1[ptr1]
                        flag = 0
        
        if flag == 1:
            med = nums2[ptr2]
        else:
            med = nums1[ptr2]
            
        if length % 2 == 0:
            if med - nums1[ptr1 + 1] < med - nums2[ptr2 +1]:
                return (med + nums1[ptr1+1])/2
            else:
                return (med + nums2[ptr2+1])/2
        else:
            return med
Here's what I wrote for your sum the cubes. Took me 1 minute. I hope I didn't misunderstand the question.

def sumCubes(n): sumC = 0 for i in range(n+1): sumC += i 3 return sumC

I'll give you 2 more leetcode examples. Neither passed all test cases. The first is 2-3 hours. The latter 3. I didn't post the last submission for the latter one because I believe the one I posted is more telling of my thought process and coding ability imo so that solution is between 1 and 2 hours of work, but I wasn't able to get it in the end.

I honestly don't recall my idea here. I think it was to see if the start and end of the array had the same letter and if it didn't cut off the first and last letter and continue analyzing the array until the center is reached.

https://leetcode.com/problems/longest-palindromic-substring/...

class Solution: def longestPalindrome(self, s): """ :type s: str :rtype: str """ curr = "" big = ""

        for c in s:
            curr += c
            if curr != curr[::-1]:
                if len(curr[:len(curr)-1]) >= len(big):
                    big = curr[:len(curr)-1]
                    print(big)
                while curr != curr[::-1]:
                    curr = curr[1:]
        
        if len(curr) > len(big):
            return curr
        else:
            return big
I thought there were 3 cases in this problem. You hit a character, you hit a ? or you hit . The first one meant an exact match had to be made. The second that there only had to be some character in the string to take a position (the string couldn't end if there was a ?). The last could mean 0 to n matches so there had to be a lot of checks in my mind. I also thought about what happens if there's "?" which I wrote as a case inside the "" if case. When test cases didn't work I would try and code for that test case and it kept going wrong so I eventually gave up and looked at the solution. My main flaw is that it didn't occur to me that backtracking was the way to go or a way to check all the potential combinations. I thought you just had to keep moving forward.

https://leetcode.com/problems/wildcard-matching/description/

class Solution: def isMatch(self, s, p): """ :type s: str :type p: str :rtype: bool """ if len(p) == 0 and len(s) == 0: return True if len(p) == 0: return False

        i = 0
        j = 0
        while i < len(s):
            if j >= len(p) and p[len(p) - 1] != '*':
                return False
            
            if p[j] == '*':
                while j < len(p) and p[j] == '*':
                    j+=1
                if j == len(p):
                    break
                elif p[j] == '?':
                    x = len(p)- j
                    while len(s) - i > x:
                        i+=1
                    while j < len(p) and p[j] == '?':
                        i+=1
                        j+=1
                    if i > len(s) or j >= len(p) and i < len(s):
                        print(i)
                        return False
                    if i == len(s) and j == len(p):
                        break
                else:
                    while i < len(s) and p[j] != s[i]:
                        i+=1
                    

                    if i == len(s):
                        return False
            elif p[j] == '?':
                i+=1
                j+=1
            else:
                if p[j] != s[i]:
                    print(i, s[i])
                    print(j, p[j])
                    return False
                i+=1
                j+=1
        
        if j < len(p):
            while j < len(p) and p[j] =='*':
                j+=1
                
            
            if j == len(p) and p[j-1] == '*':
                return True
            else:
                return False
        return True


This is what I tried, recursion taking care of puting the simplest cases first. I haven't checked the solution. I think this kind of problem is like a state machine. In each call of the recursion the length of the pattern or the lengh of the string should decrease, so finally one get to the easy cases of length in (0,1,2).

This kind of problems are designed to test you can define a grammar and apply recursion. Another problem with the same flavor could be to evaluate string expressions like "3+25" using a grammar. My one-hour solution (not checked). But I think I have done similar problems.

         def pat(s,p):
    ...:     if s == "":
    ...:         if len(p)>1 and p[1] in "?*":
    ...:             return pat(s,p[2:])
    ...:     if p == "": return s == p
    ...:     if len(p) == 1:
    ...:         if p == "*": return True
    ...:         return s == p
    ...:     if len(p) == 2:
    ...:         if p[1] == "?":
    ...:             return s == p[0] or s==""
    ...:         if p[1] == "*":
    ...:             if s[0] != p[0]: return False
    ...:             if s == p[0]: return True
    ...:             return pat(s[1:],p)
    ...:     if p[1] != "?" and p[1] != "*":
    ...:         return s[0] == p[0] and pat(s[1:],p[1:])
    ...:     if p[1] == "?":
    ...:         if (s[0] != p[0]):
    ...:              return pat(s,p[2:]))
    ...:         if (s[0] == p[0]):
    ...:             return pat(s[1:],p[2:]) or pat(s,p[2:])
    ...:     if p[1] =="*":
    ...:         if (s[0] != p[0]): return pat(s,p[2:])
    ...:         return pat(s[1:],p) or pat(s,p[2:])
    ...:
    ...:


Your solution looks better than mine. Is there anything you've gleaned from the leetcode examples I posted?


I see that you prefer not to use recurrency in Python. That decision is correct since python is not optimized for recurrency but it also can make the code more complex. See https://realpython.com/python-thinking-recursively/

On the other hand, using iterators in python is nice. You didn't use iterators to compute the sum of cubes, many problems can be solved in one line using iterators. https://www.datacamp.com/community/tutorials/python-iterator...

Perhaps your code should try to go from the easy cases to the complex cases in pattern matching.

As a hobby programmer I program without stress, if I was to make a living by programming I think I shouldn't enjoy so much.

I think you should read norvig post: http://norvig.com/21-days.html, also to learn to program in python: https://github.com/norvig/pytudes

I believe that in a year or two you could be prepared to judge your progress


In one of your comments you say you have improved a lot in two months or so, so perhaps you need a little more practice and I think you could improve a lot more (less time for solving puzzles and writing better code). Anyway, I have tried to solve some of the puzzles. Perhaps other people in this thread can give more valuable information about your coding style. I wish you the best.

Sum of cubes:

  sum(i**3 for i in range(n+1))
findMedianSortedArrays using Haskell:

  let  m a [] n = a !! n
       m [] a n = a !! n
       m (x:_) (y:_) 0 = if x<=y then x else y
       m (x:xs) (y:ys) n = if x<=y then m xs (y:ys) (n-1) 
                         else m (x:xs) ys (n-1)

  let m1 a b = if odd n1 then m a b n12 
               else (m a b n12 + m a b (n12-1))/2 
               where n1 = length a + length b; n12 = div n1 2

  let findMedianSortedArrays = m1
 I haven't checked the code.


I am continually surprised by HN and its reluctance to call out mental health issues.

It is not normal to feel like your world is ending when you're under pressure. Forget the rest of this stuff. You don't need more tests. Talk to a councillor with the aim they can fix or refer you onto CBT, or a psychiatrist to mediate.

There is no shame in this. Not dealing with it is only going to cause unnecessary suffering. Address it and your interviews and life at a whole will all go a lot better.


You're not wrong that there's a mental health issue at hand. There's also a lot riding on my ability to do these leetcode questions. I've been talking to councilors for the past decade, but I'm at a point where I need to be financially independent. I wrote more about it in this comment:

https://news.ycombinator.com/item?id=17594084


But why do you want to work somewhere where you have this grotesquely irrelevant gauntlet? A silly interview process doesn't mean it's a good job or a good company, it just means they've got more applicants than they know what to do with.

I know there's a lot of pressure here to work a 80h week but you can be financially independent without pressure. Just pick your battle.

You've got a skill. Believe it or not, programmers are needed all around the world. The pay is dramatically variable but so are living costs. Move. Find a nice town with a small software company that's hiring and start a life. Get your head straight. Read. Get a hobby. It's all much easier when you're not blowing $3k/month on a 1 bed studio.

You can also work shunt jobs directly for companies. Build websites, build apps. Lots of project management and quoting for things that never come to fruition but it's a job and very little overhead.

I'm not trying to put you down. I'm sure you can jump start you happiness the way you're desperately trying to... But stepping into a low pressure job somewhere where it's dirt cheap to live is a much healthier approach to the problem you have.


> I experience PTSD like symptoms from the constant barrage of negative thoughts the difficulty and stress of doing these problems are causing me

This happens to me too, especially when it comes to programming soft skills. Making code work per requirements is easy. Making it future proof is hard.

So make the thing work per the requirements and only then worry about debating best practices, OOP design, and the various other soft skills. For most of these soft skills debates, there will be no objective truth.

And when it comes time to deal with a hiring, promotion, or firing decision, do you think your manager cares whether your code is functional or object oriented? No, and he probably wouldn't recognize the difference, even if he had the time to evaluate your code. He's only looking at two things: 1) Are your projects delivered on time and in a working manner? 2) Do your peers complain about you?

All the hard stuff is only indirectly related, and is usually the realm of a senior engineer. Senior engineers aren't respected because they are familiar with some secret objective truth, they just have experience collected artistry that builds whatever seems to be good code. As a junior, you just need to do your best to internalize what they say, and paint a better picture next time.


Decide what you want. Make a plan. Take baby steps. Climb that hill and go get it.

If you are thinking about dropping this whole line, my advice to you is (1) do what you need to do to get a job as a software engineer; (2) walk away from it after two months.

Do anything else after this, but make sure you nail this sucker that is making you feel this way. Make sure you beat this challenge before walking away. I am from India, until a few years ago, every fresh graduate and I mean civil engineer, arts, mechanical engineer, electronic engineer, you name it, got a job at an Indian IT firm. 8 years hence, they are coding away, carrying on. People who don't even have the basics in CS are making it in the IT industry. You have a CS degree, get some use out of it. Don't listen to bullshit from others and yourself about doing something else. The most celebrated victories are comes from the individuals in the more dire situations.

But before anything else, start exercising a full hour every single day, eat and sleep well. Dress well throughout the day. Do this for a full week and start fresh next day if you fail. It will work like magic and help you pull your head out of wherever you have it parked. Oh and before you sleep, dream of making it through.


#1: have you talked to an occupational therapist?

Software is going to be stressful, there are going to be time pressures. You might find an organization/industry where these are minimized. Medical, aerospace move at a very slow pace. I can think of a few companies in the industrial space where things move at a pretty slow pace as well.

Otherwise, software test, product management, documentation off the top of my head.

Asking for help is a good trait for a programmer to have. Good luck to you!


I think you're on the right track with therapy, just probably not occupational therapy unless you need rehabilitation for problems with fine motor movements (holding a spoon, writing, etc.)


> I think you're on the right track with therapy, just probably not occupational therapy unless you need rehabilitation for problems with fine motor movements (holding a spoon, writing, etc.)

OT's can help with PTSD as well. [1]

[1, PDF] https://www.aota.org/-/media/corporate/files/aboutot/profess...


I've been working in tech / IT for over 10 years now. After graduating with a CS degree I found myself questioning whether or not I wanted a job coding. Instead of applying for those types of jobs, I looked for software / application support roles. That could mean you work for a software company providing (customer facing) support to the products they sell or working within the IT Dept of a company supporting a number of users applications (I've done both). I did this for about 4-5 years and gained plenty experience with various technologies. The nature of the jobs will have you talking to people that have various roles in a company, which may give you insight on different jobs / industries outside of tech. During one of my application support jobs I was able to transition into a developer position since the work called for me writing some code anyways. It was interesting to me so I figured why not give it a shot. If you heart is not quite settled on being a software engineer, look into application support. You will learn plenty, still have a good challenge without coding, and might just find yourself coding here and there anyways as part of the job. Hope this helps.


Did you NOT enjoy programming before graduating and interview prepping?

Then I suggest you look at interviewing for positions tangential to 'software engineer'. Look for entry-level positions in software quality assurance (QA), systems engineer, etc. Read the job descriptions and see if anything appeals to you. Often these jobs will pay less than a position as a software engineer, but they don't require programming but will value your CS degree.


If you go into government / research (like I did at the start of my career), they only judge you based on your interview and education (NO whiteboard questions, easiest interview you've ever had), though the salary will be 30% less than industry. The U.S. National Labs are a superb work environment. If you manage to get an entry-level job somewhere like that, they will often pay for you to then get a PhD/MS/etc.


Happy to chat if you want to talk with a relatively recent grad who has done plenty of interviewing on both sides of the table. My email should be in my profile.


Op is currently stressed and also possibly burned out. I suspect he lost his enthusiasm for the field, if he's anything like myself it's only temporary and he just needs a break. If he's given assessments and he thinks their simple and he completes them, the fact is he stated himself he completed them. I suspect his enthusiasm is missing from this choice right now because he needs to explorer his industry more.


I'm not sure I have all the answers you need, but I do have some suggestions. I've worked as a programmer for 6 years now in a number of different roles and found that the experience can be quite different in different places. Not all programming roles are the same. Some roles will be quite gast paced and stressful while others will not.

Also don't necessarily get discouraged if you have a bad experience in one place. My first programming job didn't work out and the manager told me I wasn't suitable for programming. However my next employer was very happy with my work (and the pay was better too).

If you are going to stick with development find a niche that suits you. For example, don't ignore legacy technology. Many companies still have legacy code bases written in Delphi and cobol.

There aren't as many developers on the market for these roles and it can be less competitive.

Also consider suplimenting your CS degree with other skills. Or consider roles that are not purely programming roles.

On the other hand if you want to leave programming there are still options for you. There's more to computer science than programing.

There are tech support roles, QA testing, penetration testing, DBA for example.


The sales engineer and other suggestions are all good ones. You could also pivot to law school and become an attorney specializing in technology related cases.


Become a writer, UX expert (hot ticket), tech writer, project manager, QE tech, etc.

Lots of other trails to take, maybe one of them will be a better fit. Good luck.


In my experience, the negative thoughts and stress is associated with pressure to complete the task. This is relateable with most larger tasks (i.e. essay writing). I think it's two fold, first off, in engineering, nobody wants you to complete a problem 100%, rather solve it 25% but that solution is quite clear. Then you solve 25% again which was way easier after you solved the first 25%. This way it's easier for people around you to chime in with hints or to get an overview of the task / gain insight that the problem is not defined correctly. It's an iterative process! Second, the negative thoughts you face is not that uncommon, doing something you have no clue how to solve is difficult. Instead of trying to solve the problem, think about what strategy you should have solving the problem, in your CS degree you have lot's of tools for that if you look back. Avoiding the fear of not completing is a good way to actually complete, that's my motto anyway.

A good way to get on your feet(motivation wise) is to do easier things for a while, also something that really motivate. Maybe there's someone you know that have a problem that you can solve. If you feel that problems are too tough to do, pick something easier to get the flow going again.

The most important thing is to feel good! Like the most upvoted answer said, chill out. Increasing the pressure is not the answer. If it's anywhere near what my SO had, Yoga/structured days(doing something 1h, taking a walk, doing something 1h...)/dark rooms. The stress is real and should not be ignored. Getting a job that's completely off the field is not a bad thing either, you got yourself a CS degree, which you always will have in your back pocket. Doing something else will make you able to combine that degree with other work experience. And everyone else will think about you as a super human that actually get's computers ;)


A lot of great advice in these responses, advice applicable to anyone feeling stressed at performing the duties (perceived or otherwise) of their role/vocation.

I echo those who emphasize taking steps to avoid stressing out, and also those who advise considering other roles where your degree could come in handy.

Also, roles that have nothing to do with tech. Something excites you; take a swing at it.


My friend graduated from CS in Berkeley, but it was apparent when working with him that he was not really cut out for being a programmer. I suggested him to go for a PM interview with a large SV company and he got it, and now is doing really well. His other skills - communication, organization, strategy, research, and persistence, just work really well in the role he is in currently.

CS is a particular kind of smart that not everyone is. And you don't have to be smart in that way in order to be successful.

The CS degree is really valuable regardless of how difficult or frustrating you feel about doing CS. It's objectively one of the most valuable and versatile degrees out there. Non tech roles in the space (PM, design, BD, tech sales are all strong industries) are all very good roles that would love to see a CS degree.

I personally think of CS as "paying your dues". You suffer a bit and feel bad about yourself, but you've become an objectively more valuable person because of it, simply because you can program.


I'd echo the other answers that anxiety may be the real factor here – specifically some sort of performance/evaluation anxiety.

So if you face that head-on – talking to a therapist, reading about anti-anxiety strategies, etc – you may find that you are able to perform as a programmer. And even if programming itself isn't your best role – either because it triggers performance anxiety, or just doesn't match what you enjoy doing – addressing the sort of anxious-thoughts-under-pressure you're having will help in any other challenging interview/job role you find.

There are lots of roles in software that aren't constant intense programming, but require some familiarity with software lingo, tradeoffs, processes, etc and may involve small sessions of less-challenging programming. (These can involve various kinds of integration or demo work, project-management, "sales engineering", marketing, and so forth.) And you wouldn't need to "knock-it-out-of-the-park" on interview-style questions to qualify for such jobs – just show some ability to engage and improve.

But you may also have built things up in your mind as being worse than they are, leading to a self-reinforcing cycle of imagined doom.

Do some anti-anxiety research/coping practices. Maybe try to go into some low-value interviews even if you're scared – places you're not keenly interested in – as practice. You might find it's not as bad as you think, or that after a few it's no longer as scary. Consider other entry-level roles at software-type companies that let you learn about the industry and profession without needing to feel fully competent on day one. After you've interacted in a real environment you may find it easy to slide over into some useful closer-to-programming role, without the stressed-out ("PTSD") brain freezes you're facing now.


As someone who has never (and likely will never) pass these kinds of tests, am I in a minority in thinking maybe they're a good way of filtering the non-geniuses? I.e. Maybe the reason I can't pass these tests is I really am not sufficiently skilled/talented to work at Google?

At some point, I think we need to accept that sometimes other people are not the problem.


Everyone has limits. However, people vastly overestimate the impact of intelligence and underestimate knowledge, experience, interest, and work ethic. If you like programming and expose yourself to a sufficient variety of problems and architectures, over time you'll slowly run out of situations where you're running into truly novel problems. At that point your intelligence will matter very little, high or low.


This is basically my thinking :/


Dont worry about the puzzles, a lot of companies dont use them for interviews. Interviewing is (mostly) a numbers game, so while you might not get a Big 4 position (which frankly might be over rated anyways), just keep going, keep interviewing. I'd make notes on what I missed after an interview, studied them, and pushed to do better on the next one.


If you enjoy writing, your CS degree would be an asset if you want a career in patent law as a patent agent or a patent attorney.


Me too, algorithms are extremely hard for me at first. It took me a really long time to solve easy problems, and I could only solve 1~2 middle-level problems in one day. But finally, I managed to handle them by getting to know some effective learning strategies, e.g.

1. Explain to yourself how algorithms work, like a teacher teaching his/her students. 2. It's even impossible to explain to yourself when facing some middle-level/hard problems. Then I got another good idea: write everything down on papers. Finally, I found out that it was not that hard to solve these problems.

There are a lot of other learning strategies. In retrospect, I think it's lucky to be an engineer. Although it's hard, tough, brain-racking, I get to know a lot of learning strategies along the road. Sometimes you wonder if others are way smarter than you, but maybe they just know some learning strategies that you don't know, and they never give up.


The problem is smaller than you think. You need time.

Dunno if that helps, but I've been programming since 8 years old. When I did college there was definitely a considerable amount of people that I might consider that... they didn't know how to code or to properly solve problems, but that's because they didn't improve their problem solving skills.

If you have no monetary or legal obligations, just stay at your parents place, sit down, create a SPOJ account and go problem by problem until you are confident. If I had quit 2 years off my career to study problem solving now that I am 30, it would rarely make me lose anything, much less in a 30 years of work timeframe.

Go get rid of that anxiety I think you can only solve it by being more confident, and to be confident you need time. It is much easier to be a good guitar player if you start as a kid, but I bet that anybody that dedicate a few years will be able to perform well, peogramming is the same.


Buy some algorithms books. Brush up. In the beginning, if you're stuck on a problem, peek the solution. After a number of them you'll be able to start doing them yourself. You're learning a new skill, it's called the bullshit-google-algo-interview-problem-solving skill. It has little to do with most real problems, and when you do encounter the real problems, you'll talk to people and look up reference material anyway.

Just like how the SAT has little to do with predicting academic performance, this silly little game has little to do with predicting real world programming performance.

It can be a valuable exercise to be exposed to the material, but by no means is it a pre-req for being able to succeed at sw eng. Plenty of people garner the correct resources, study for this and get fancy jobs where they go on to spew out absolute garbage in code form. It is meaningless.

Some companies recognize the folly of this, ask the recruiters.


I checked out some of your previous posts and see that you are really, earnestly struggling with your decision to get into programming.

I feel for you, and I'll try to give you some advice with my "professional programmer"(TM) hat on.

Um, first, I think it would be helpful for you to find a way to ease up on the pressure you're putting yourself under. Maybe that means getting a "good enough" job in the meantime, or just a "regular job" (minimum-wage style), so as to get some immediate cash flow going. If money isn't a stressor for you, maybe just take some down time. (That top comment is top for good reason).

The second bit of advice would be to just actually go do the interviews, whether or not you think you've prepared "enough". You're a fresh college grad, and no-one is going to expect you to have all the answers. Don't worry about fucking up, basically, because of course you're going to. The key is just persistence -- don't let the fucking up get you too down, because you've still got to go to that next interview -- and make sure you learn from your fuck-ups, so you don't keep fucking up in the same way.

I can't tell you how scared I was during some of my first interviews. Reaching out a sweaty hand because I was a bundle of nerves is just one terrible experience. But if I hadn't had that experience ... well, you get the point.

Maybe programming isn't for you, but maybe a job you don't love will pay the bills, and that's okay. Or maybe it's just that leetcode and CTCI aren't for you. I mean, some of this interview stuff is like "security theater" at the airport, only it's "interview theater" at the whiteboard. Ineffectual at best, but demoralizing and humiliating at worst.

Don't let the red-black trees fool you. There is real work to be done!


Be a project manager. Extra marks if you can be an "agile" project manager because then you get the most post-its.


How did you manage to get through a CS degree?


>>I recently graduated and have been grinding for interview prep (leetcode and CTCI mostly)

So basically academic exercises on rote memorizing Math theorems which have no remote influence to real software development.

>>but I’m getting no where. Easy problems take me 2-5 hours.

I know ace developers with several years of experience who would fail at these problems.

>>I experience PTSD like symptoms from the constant barrage of negative thoughts the difficulty and stress of doing these problems are causing me.

Do not waste 2 minutes on this, because those problems are no reflection on your abilities.

---

Please try to understand this. People who invented these algorithms, took years to arrive at working solutions with several years of academic career behind them.

You and I are not going to crack the solutions to these algorithms in hours.

Those who do, build upon memorized patterns. If you consider this algorithm ability you might as well start handing fields medal prize to every joe who has memorized multiplication tables.


I was hired by Travelocity (many years ago) to be a designer. A few months in they had plenty of designers but couldn't hire front-end developers, so they made me a developer. It wasn't a choice. If I wanted to stay employed I had to figure it out. After several military deployments and treating programming like a hobby for some open source projects I developed a talent for it. A talent a CS degree could never provide.

I have seen several developers who thought they were awesome because they had a CS degree from a fancy school. They were very wrong.

Programming is a skill. Skills take practice to develop. End of story.

Most people are confused about the nature of education, especially CS students. Education is not trade school. Trade schools exist to get you started on a skill. Education exists to provide beneficial structured knowledge. If you are having trouble figuring this out I wouldn't hire you either.


How will you develop that skill again now considering you have already gone through the journey?


Start writing code on your personal time outside of work. How do musicians get started? They just do it.


Seeing as you were able to graduate I'd imagine your issue is not performance/anxiety related but rather efficient application of learned knowledge. This resolves with hours upon hours of gruelling development practice. I'm 21 years into self-taught programming and can testify that it's the constant struggle that develops your chops (fresh grads are often terrible developers).

Now if that doesn't sound like a path you want to go down but you still like programming (even if you don't want to be the one doing the dev work) I'd recommend picking up an MBA or some other administration based masters degree. Seeing as you have respect for the difficulty of programming and have the theoretical knowledge you could be a really fantastic manager and potentially at some point an executive over developers.


IT or cybersecurity both benefit from CS (cybersecurity especially, since that's basically just CS/IT + read the news / some sec feeds + basic risk assessment and management).

the good thing about IT for you in particular is that scripting is so important to it that it might sharpen your programming skills enough to incline you back toward software engineering. sysadmin scripting is obviously less theoretically demanding than most software engineering tasks, but you can get the satisfaction of solving real problems (relatively) quickly using code--and knowing basic CS principles will only help, as long as you're open to learning the practical realities of IT, which often strain to breaking the idealistic assumptions many CS people have about how systems work and where/why they fail.


Look for jobs at smaller companies. Not necessarily startups, but established small companies that have been around for 10 - 15 years. The interviews are much more about culture fit and technical background than just grinding out whiteboard questions. It helps you get your foot in the door.


I'd guess that implementing Fizz Buzz or describing a basic database schema is enough to get hired to 50% of programming jobs. That includes quite a few senior positions. Not exaggerating, Fizz Buzz or a similarly trivial problem is the only tech screen more often than you'd expect. Not only that, but the algorithm challenges are less common now. It's been a long time since I interviewed with a company that didn't give you a "take-home" problem. Personally, I disagree with this practice as it selects for people with extra free time, but there's no reason for you to be experiencing PTSD (is the P "Pre"?) about this. There's no shame in talking to a counselor, might help you sort out why you're really so worried.


I'd say Fizz Buzz + knowing when to use a map vs an array and you up your chances to 80%


> the algorithm challenges are less common now

That may be more a result of how your work history rather than shift in the industry norms.


Doubtful, I've observed the trend in how we screen junior candidates too. I hope you're not reading too much into my username, it's not serious.


Like most other people commenting here, I don't have advice on the career path—in my case, it's because you haven't given any information about what your strengths or interests are besides programming. Could you give us a little more info on what you enjoy, or what you think you're good at? What did you like in high school or college? Do you like math? Journalism? Lab work? Politics?

Aside from that, I have one other piece of advice that you may or may not enjoy hearing:

I would stop—like, right now—even thinking things like "I experience PTSD-like symptoms". (Unless you're dead serious about your symptoms being similar to that of those who really have PTSD, in which case get a real diagnosis from a professional.) There are many reasons for this, two of them being:

1. It's hard enough for professionals to get this stuff right without getting their diagnoses called into question (including by armchair-psychiatrists like us programmers on HN). Heck, people here are even questioning your assessment of the CS question's difficulty. (!) And there's so much context and prior knowledge/experience to evaluating symptoms that's difficult to judge as a layman. Just go on WebMD next time there's a weird pain or tingling or bump somewhere in your body. If your experience is anything like mine, you'll quickly find that you may have anything from M.S. to cancer... when in fact it might be nothing more than a cold (if even that) and it could go away after a while. All you're doing is depressing yourself.

2. The point of identifying any illness is very simple but very critical to keep in mind: to help find you a treatment for current or future symptoms based on the known literature. If you're not doing that, then telling yourself you have—or might have—a disease/disorder isn't doing you any good. Again, you're just depressing yourself. And what's worse is that you're suggesting to yourself that you don't have control over what's happening, when in fact there's quite a good chance you do.


Lots of great advice on this thread, but here's a different way of looking at things:

If you like programming itself, don't pull the parachute cord on it just yet. There are plenty of companies that aren't tech companies that need programmers -- maybe that's less pressure mentally and from actual demands from the job? Something to think about, at least.

Also, consider a secondary skill or interest and mull over what kind of company could benefit from the intersection of that and your programming skills. (That's somewhat inspired by this: https://medium.com/the-mission/make-the-pursuit-of-curiosity...)


This. I couldn't/can't pass a programmer interview at BigCo but I'm capable at LoB software that loads of business need. It's mostly script languages, moving data, integration of existing systems. Loads of "un-sexy" problems to solve, decent pay, lower stress, get to be a polyglot, big-fish, small pond.


>I experience PTSD like symptoms from the constant barrage of negative thoughts the difficulty and stress of doing these problems are causing me.

I am not sure if we have had similar thoughts and feelings. The idea that I am simply not good enough to be a programmer, after trying so hard. And I cant solve these problem quickly enough to be a programmer. I can definitely program, given enough amount of time, but being a professional programmer seems like a different thing. And there seems to be a immense amount of knowledge that I have absolutely no idea, there is more unknown then in the known. How am I suppose to do this day in day out? And it causes anxiety issues? is that similar to how you are felling?


Yes. Very much so.


Great!. Then I can give a few of my thoughts, I wouldn't say "advice". But you can have a think about it.

I did Computer Engineering degree, which is different to Computer Science. At the time I have always thought how CS would be a much better degree, but I could not get in due to higher entrance requirement, so instead I got into CE. I dropped into the CS class whenever I can. Reading their teaching materials, I grinned. I remember thinking why do they teach outdated stuff like these. Perl! ( It was on the way out, the future is super hyped thing called Java ). May be because my Collage wasn't all that good in CS ranking. May be that is why. In CE, we actually do lots of what I call real engineering work, with transistor and low level design. Which requires lot of discipline, and rules to follow.

After nearly 20 years. My thoughts are, none of the CS degree preps you for today's working environment. And it never will. It doesn't matter which college you go to, 90% of those work aren't really related. The modern tech teaching is not outdated, it is just the hype cycle moves so fast and tech industry as a whole ( Actually not tech industry, but specially Silicon Valley ) likes reinvent the wheel every few years what was put into text book material are likely outdated.

Most of the best programmer I have met, actually not most, but ALL of them. Are self taught.

And what is funny, ( sorry if this hurt anyone ), most programmer have absolutely No idea what the heck they are doing. They somehow got a pieces of code working, compiled, and it works. Don't ask them why or how or if it is good. At the moment they would have thought those code are good enough, likely 2 years later they thought it was a pile of crap.

Compared to real software engineering, which for example, code used by NASA, or Sqlite, the amount of testing and thoughts required are insane. But those are niche cases in today's market.

Then there is the domain knowledge, ask DHH to explain Linux Kernel to you? He would have said who the fxxk understand this. Algorithm what? Ask Linus to do Web Programming? Who the Fxxk has invented these pile of abstracted mess and trillion of framework just to render a page?

I was the few of the best in class for my programming project. But I never got a programming job, mainly because I had always in my mind, that real programmers were like Swordfish, Matrix, whatever thing that type so fast and could solve a problem instantly. But instead, now I know most programmer just stare at the monitor and does JACK ALL for a whole day.

Programming is 80% Reading + Thinking. Actually I will go on to say 90%. For a 100min of work, you only spend 10 min typing it out. There is actually lot of thinking going on without you realising it, when you have lunch, dinner, sleeping. Your Brian is constantly working in a background thread without you even knowing it.

I wish I had known this at the time. I wish someone could tell me programming is like that. I could happily hack out a solution in my own time and schedule, but I cant think faster and solve a problem in mins.

I had always dream of telling others; the world outside geek circle, how programming really is. I had always wish someone could fund me doing a Mini film, and have it played in all university or programming courses. It will be a documentary of famous programmers every day work and programming. From Facebook, Google, Apple or Microsoft. Having them staring at the monitor, and fast forward showing they did zero typing of code. And has embarrassing question that should know but they don't. How all these programmers are really no different to you.

I know how it feels, programming at your own schedule vs programming at someones else scheduled when you have no idea how long it will take. Would I be fired if I didn't work fast enough?

Programming isn't for everyone. There is a difference between able to write program and likes to write program for a living. And finally you are young! Explore more! Unless you have a burden ( bring money home ), keep looking, don't settle. I didn't understand the explore options when I was young, but once you are in your 30s, your freedom to explore are limited by families, relationship etc.

Good Luck.


You are not alone. As the founder of garage script I've come across a few students who got a CS degree and couldn't find a job. The problem might not actually be your ability to solve algorithm, but rather your inability to communicate. For the students who came to me with similar situations, I had them lead coding sessions at our local library to help them get more comfortable with talking to strangers and they now all have a full time job. From my work experience as a tech lead, I've hired many people who didnt do well with algorithm questions but they were able to listen to my suggestions and get to an answer.

Maybe start a Meetup group and work through problems with other people?


First, congratulations, you have accomplished a lot by getting a CS degree and should feel very proud of that.

Now before presuming you can't handle a workload at a company that isn't all testing-mensa-crazy, you might want to look into how you respond to this stress before evaluating the best course of action.

As other commenters have said, there are many options, but at the root of it you should understand what/why you feel this stress and it would be best to get professional advice on that.

I'm the last person who wants to advocate pharma-everywhere solutions, but I've worked with some extremely talented people who otherwise struggled through life and managed to find the right formula that worked for them.


> Easy problems take me 2-5 hours. I experience PTSD like symptoms

This is not ridiculously uncommon. I had this problem for awhile too. The only thing that got me through it was applying to every possible place and getting more practice. I know that may not be what you want to hear, I know you've probably already practiced a ton and I know you've probably already applied to a ton of places.

But seriously, practice. Apply everywhere without an expectation of a job immediately. Time yourself and if you can't figure out the problems, it's okay to look. It's fine. At a certain point you'll have just seen the problems before or a variant of them and you'll be able to do them.


Not all places hire using these types of interview techniques:

https://github.com/poteto/hiring-without-whiteboards

Don't give up so soon. You can do this.


> Are there any career paths I can pivot to that are less cognitively demanding than software engineering where this degree would be an asset?

Yes. If you understand basically how computers work and what they are capable of the corporate world will find a use for you. Can you communicate well? Like giving presentations? Try going into sales, project management or documentation. Are you a real people-person? Try going into people management.

These are just general categories. The reality is that the world we've created for ourselves has a tremendous need for people who can be at the edges of complicated technology and act as an interface to some other world. Don't despair.


How are you with "homework problem" stuff? Some companies will use "you have 24-48 hours to put together a demo matching these criteria" instead of doing technical problems at an interview, with the interview instead talking about the "why" and "how" decisions you made while putting the whatever together.

See https://github.com/icopp/tech-demo-1 and https://icopp.github.io/tech-demo-1 for an example of one I've done before.


I didn’t expect this many responses. It’s a bit overwhelming, but I'm thankful. I’m going to post a few important pieces of information I didn’t think of posting above that should help clarify my situation and how desperate it is.

I do have depression. Pretty bad one actually. I am just graduating from college at 31 because of the toll depression took on my life. I have no previous work experience because I spent my 20s just being depressed doing nothing basically. I've talked to therapists for years now and it's helped, but I've basically gone as far as that can go. My therapist and I both agree that basically as much as can be done from me through a psych has been done. My life needs to improve. Programming was supposed to be my ticket to a better life.

Some people have mentioned I should move home- My home environment is extremely toxic. I’ve cut off my mother completely because she has a severe, much worse mental illness and I only talk to my dad when I need something because he has quite the temper. I managed to get out of the house only because I’m on disability for my depression. To make things worse, my dad is past retirement age. Every single day I’m not making money forces my dad to prolong his retirement as he is the only one in the family with the mental faculties to maintain a job. It should be easy to imagine how this makes him more irritable and angry while also making me feel incredibly guilty and parasitic. This fragile economic state + my age is why I don't really have time to take it easy. I was supposed to be making money yesterday.

I’ve been preparing for technical interviews for over a year in reality, but intensely in the last month or 2. I couldn’t do Fibonacci recursively up until a few months ago until I looked it up and studied how the recursion was working. This is just one example. There are so many very basic things I can’t do.

Finally, I can’t depend on a network or friends in any form because I have none. I am a complete pariah in the computer science community I come from and every other community I’ve ever tried to integrate myself into, basically. No one will ever refer me to any job because no one likes me and, in the case of programming, everyone knows I suck.


>No one will ever refer me to any job because no one likes me

This may be true however. It is more likely they are not sure of your capabilities. A recommendation for a programming job is basically a sure thing job placement now days. However if someone recommends you and you are a screw up it affects their professional reputation. I would focus more on finding a technology you are genuinely interested in so you can "shop talk" with some other people in the industry while proving you know what you are talking about.

In programming almost no one cares about your personality (unless volatile). I have a programmer my team that I sat next to for 3 years and I think we have had maybe 5 minutes of non work related conversation during that time. He just hates talking to people period.


You should stop your crippling thinking habits, like all-or-nothing thinking that becoming a programmer is only worth it if you can get into "Top 4" companies (if I read that post correctly). Or, while your family situation kinda sucks, you feeling guilty doesn't help here at all. If you had a friend in a similar situation like yours, you would suggest that as long as they are actually trying to improve their skills and get a job, there is no point in feeling guilty about not succeeding, it's counterproductive.

Even if you do the puzzles 3x slower than "average programmer", but you still can do simple ones, you're much better than most of people who just can't solve them at all and won't bother to learn. I don't know what's the job market in US now, but you can probably get a job somewhere in IT to pay your bills (maybe try QA if you get no luck in dev). I mean, you got a CS degree, this already puts you in better position than many other IT job seekers.


I'm sorry about that. Maybe you can switch tracks without losing what you've already accomplished.

There's a paper by Phillip Guo about conversational programmers. These are people who do not program, but seek to learn programming so that they can be better at some non-programming task.

He's got three papers one this topic, but you're most interested in this one: http://pgbovine.net/publications/conversational-programmers-...

Particularly look at table 2, which is a summary of the motives of conversational programmers.


You might try sales. There are a lot of sales jobs where they value the salesman being able to understand and explain technical aspects of the product. My uncle started as an engineer and moved to sales and he absolutely loves it.


It looks more of a psychological issue and lot of stress causing a vicious cycle.

As whack suggested - try relaxing a bit and giving yourself a break for a week or so. You will be surprised at how effective breaks are in improving performance. This is one of the most common mistakes junior programmers do - no breaks and constant coding until you get burnt out.

I am writing a book on using mindfulness to become a better software engineer - https://leanpub.com/selfdebug/ - you can download it for free and see if it helps.


> I experience PTSD like symptoms from the constant barrage of negative thoughts the difficulty and stress of doing these problems are causing me.

There's a book called How to Keep People From Pushing Your Buttons by Albert Ellis (https://www.amazon.com/dp/B01DRXBJS8), who pioneered an early form of CBT (cognitive behavior therapy).

I would strongly recommend it as thoughtful reading material with the purpose of getting out of this negative loop so that programming isn't so stressful.


You have several options. This is what I would do in your place.

First, I would forget about interview-prep.

Second, I would try to get better idea about actual work, call friends from university that already work, and talk to them. I did learn this way that the day-to-day work in i.e. big corporations in a well run department is not really stressful, especially compared to a white-board interview. Some friend might even have an opening. Going through a referal is much better than just applying.

If you don't have friends with jobs already go ask on twitter. I think people around i.e. @sehurlburt form quite a friendly developer community and Stephanie herself often retweets i.e junior CVs.

Third, I'd figure out what position suits me. I would do this after I have realistic expectations about my work-environment. If programming itself is that stressful, I would probably advise-against doing ops-work, because baby-sitting servers can be even more stressful. But there are many positions that might fit you.

Manager - even though in many corps, people view getting to management as a promotion, there actually are junior managment position. Requires mostly people and organizational skills. Having a CS degree should help you stand apart.

Technical writer - mostly means writing documentation. If you have good writing ability, having a CS degree should be a plus.

QA - mostly software testing. Skill requirements can vastly differ, i.e. my boss expects me to be a decent coder, with some ops-experience. A friend of mine has 101 Javascript under his belt and in different corp mostly produces test-case documents in Word, another friend mostly clicks through a web portal based on a giant checklist. All of us have the title QA in their org.

You still might want to be a programmer. There are many levels of skill/stress/benefit ratios available.

If getting a job over a beer/coffer with a friend whose department/company has open position is not an option, I would go to a job-fair, or if I'd have a company I actually like, I'd wait for when they have an open-house, or something like that. I would talk to a recruiter there. That is how I got a job at RedHat as a QA more or less :-)


Yeah really don't sell yourself short. And you always get better with time because patterns repeat. If people do those problems faster it's just because they are using prior knowledge from problems they have solved before. That being said if you don't enjoy programming I believe that there are a lot of other options out there. I think that there is quite a demand for people who are technical but have soft skills as well. Perhaps in the business realm. Think someone who can be a middle man between customers wants and developers.


Computers are fun in many ways. Maybe you can buy one wacom tablet and use your computer mastery into drawing beautiful art? A CS degree will ease anything computer related you go into but having the professional skill you want will always take you a lot of time. See what you feel you can do best and make you feel better, cuz if you are lucky and find something you can give yourself this is what you will be doing for more time than you lived until now. Patience and persistance. Good luck


> I put all my eggs in the “being a programmer” basket and it’s clearly not for me

If you are sure you don’t want to be a programmer, then don’t be one.

Your degree shouldn’t pigeonhole you. If you are a recent graduate, you have plenty of eggs for whichever basket you choose.

Edit: what about data science? There are plenty of jobs available. Some might be based on coding, but others are based on maths, and others based on having a good business sense. It’s a diverse field which is in vogue and could allow you to pivot your career.


It's very good that you've recognized that programming is not for you. Congratulations! you have a chance to save yourself.

You shouldn't feel bad or try to apologize or try to "make it work" - those are all wastes of time. Get on with life, and find something you have the opportunity to excel at! Being stuck behind a glowing screen 8+ hours a day isn't ultimately rewarding or really sustainable - so find a way to make software-fiddling work for you, or get out now!


As others have said, maybe doing tricky CS-heavy coding puzzles and applying to the companies that screen for them is not the way to go. Lots of companies just need someone who knows their way around particular language and web framework. How about building out an idea for a website in Rails or Django and putting it on Heroku? Go to meetups, show it to people, network, and get advice. Not a sure thing but definitely an alternative strategy to consider. Best of luck!


CS majors that understand programming but don't want to be programmers can add great value in a number of areas including technical support roles, consulting roles, pre-sales engineering, professional services (helping companies to implement software), product and or project management, analysts, etc.

Some questions to think about - are you good with people and can you do well in a customer facing role? If not perhaps some of the more individual roles would be better.


I agree with the other posts here. Just because you can't solve leet code problems does not mean you can't still be an awesome programmer. But you asked for other jobs. If you have a CS degree at some point you studied systems. I suggest looking for a DevOps/SRE position. These are always in high demand. Your coding skills will come in handy. I hope you don't give up on a dream, but there are other options. I wish you the best of luck.


Would you feel more comfortable if doing a project at home? I read here on HN a nice advice to people that may be uncomfortable in a coding interview. Here it goes: - Ask the company if you can do a project of their choosing instead of coding at the interview. I do not mean to replace that interview, but instead of solving a problem, you would walkthrough what you have done with the interviewee. I never tried this, but I read some companies allow it.


Get a therapist to deal with the anxiety. There are plenty of nondev jobs for things where you use your tech background with no programming like program manager (tech planning for a project), project manager (organize the project), esp in big companies.

But I would suggest a therapist. Probably grad school to get more experience is not warranted until you know if you want to stay w cs, but something where you can get more confidence like an internship.


If it helps, I have a CS degree and about 15 years experience now. That experience started not in programming but in IT support and then system engineer/infrastructure work for corporates, followed by IT management and Project Management roles. These are all achievable with that degree.

I also know others who mixed it with some short courses on stats or other things to diversify into data science, marketing, business analysis and other areas.


First off, if you're beating yourself up because you cannot do these Leetcode, Project Euler stuff - stop it. You will probably not be the best algorithms developer, but who cares?

Don't sit around and say, "Where can I go from here?". No matter where you are, figure out where you want to go. And 9 times out of 10, the skills you have accrued in your life will be of some value. That is my experience, anyways.


For every job I've had, I never had a coding challenge during the interview. I had one where I had a homework assignment beforehand that we discussed during the interview, and mostly just talking interviews discussing my experience etc. I also work in a small city on the east cost and make less than half of what most people here do ($65k so maybe not really less than half) so that might have something to do with it...


> I experience PTSD like symptoms from the constant barrage of negative thoughts the difficulty and stress of doing these problems are causing me.

Find a good tutor who understands this issue and knows how to help.

I've helped multiple students level up in math by getting past this kind of anxiety.

The book Misteaks... and how to find them before the teacher does is about calculus, but hopefully it'll be obvious how to generalize it to your situation.


There are many paths your can take - test engineer, can still write some code but don’t have to. you can find out if you would really want to move forward as a coder or not

- scrum master roles, where you are managing agile teams

- sales engineering, helping sell technical products

- solution engineering , helping implement a company’s product, little coding and configuration

- training and teaching schools

- management and business, start as business analyst, get an mba and run a busines


Lots of great comments so far, but I would add that an alternative approach would be to find an open source project that you feel you could contribute to. Start at ground level fixing bugs and work your way up. It will look great on your resume and would be way more productive than just focusing on interview prep. If nothing else it will help you determine if you actually do enjoy programming.


This is just my opinion, but when I was in OP's shoes I found this to be the least helpful piece of advice I ever got. I was lucky enough to realize that programming stressed me out early on, early enough that I could switch majors into something that I liked better. But I still wanted to be a programmer, even if it was just as a hobby.

What I didn't like about being a real career programmer was the time stress, the expectation that you'll write code that works, and especially having to write code for someone else, where you're trying to translate their ideas and trying to do so correctly with limited information.

Contributing to open source sometimes (in my experience) embodies all of these in one. I've found a lot of really helpful open source projects where this isn't the case and everyone is nice and helpful, but you'll also find some times where the maintainer is mean, doesn't like your code, your code doesn't fit their style, and they're going to make sure you understand that. And if you spend your time writing good code, then do a pull request just to find out someone had already beaten you to it? Oh god... I'm stressing just writing this out.

Even if it's just 5% of the projects that are like this, to someone who already has crippling anxiety about their skills as a programmer, being put under public scrutiny is unthinkable. One bad experience and you might be gone forever.

What actually helped me was getting a job in another field and finding ways to write bash scripts or python scripts to help, with each script increasing in complexity until I had hundreds of small programs that I designed and wrote and improved over time. Zero stress, zero expectation, but when they work it feels amazing and is a great boost in confidence.


it's hard to say whether or not the problems you solve should take less than 2-5 hours, but two pieces of advice:

1. in an interview, whether you solve the problem is less important than demonstrating how you approach solving problems. think about it like being asked to find a needle in a haystack.

2. don't think you have to score a job at a Google right out of school. there are lots of opportunities in less stressful environments.

ok I lied, I have more advice...

3. as an alternative, write good quality useful software and post it to a hit repos, go answer questions on stack overflow, demonstrate your knowledge and abilities. become an expert in some area that interests you.

4. maybe you don't want to be a programmer. that's ok. your background will still give you an edge. I have a colleague that worked for a couple years as programmer and ditched it for PhD program in neuroscience (not thAt that is any less stressful).

5. consider getting professional career advice and coaching.

6. consider getting help for your anxiety. worrying whether your smart enough or how hard the problem is will keep you from actually problem solving.


Have you considered that you stink are completing those puzzles because they are so damn boring? I hate learning that way. I never make it past the first chapter of CTCI when I try to attack it head on. Find another way that works for you. I did. My personal "learn all the things" path to success has been taking things apart and learning to understand the pieces.


I just wanted to let you know you're no stranger to these thoughts. You're going through exactly what I went through with the completion of a music degree.

So, with that logic; perhaps you should try your hand at teaching music.

Though I didn't get into "software engineering". I'm a frontend/backend developer. How narrow are your sights set? The CS field is pretty big.


Dude. Relax. Programming isn’t that hard. You don’t need to get a job with Netflix or google. The job market is absolutely desperate to hire anybody who knows how to write a for loop.

I’m making a six figure salary writing chef cookbooks and cloudformation templates and I don’t even have a degree.

Just slow your roll, dial back your expectations and apply for less high pressure jobs, man.


Get hired someplace for $50k as a junior that doesn't whiteboard. Apply again as a senior for $100k+ in a few years. Long game.


There is something to the ideas expressed here which I think speak to your situation, specifically I note a lack of joy and play in your skill acquisition: https://www.physics.ohio-state.edu/~kilcup/262/feynman.html


I got a CS degree 15 years ago and I have never been a salaried developer, never written a line of production code. There are plenty of things that need to be done in this world where you need to understand the fundamentals behind coding, but don't actually write any. I suggest looking into Consulting and Software Project Management.


Happy to chat with you just email me Steve dot Morin @ Tripping dot com. Am a CTO at a Bay Area company happy to give advice.


The good news for you is that you don’t have to become a developer with a CS degree :) a few other roles and tech companies would rather hire someone with a CS degree rather than an MBA. Look for positions like product manager, program manager, project manager, UX, QA, etc. You don’t have to apply for a software engineer role.


Maybe you have not yet found your programming style. Schools tend to teach object oriented programming, but maybe functional programming is better suited for you. And also look into test-driven-development with test-first approach, where problems are broken down to really small parts and you solve one part at a time.


Take a break. This sounds like classic burnout. You need to regain the motivation and interest that got you here in the first place. You're young, and a bit of time doing something else will do you the world of good and remind you why you went down this path in the first place.

Nil desperandum!


Unfortunately, today a CS degree is like a degree in art, in that it gives you the tools, but is is still up to you to make a masterpiece. If it is not for you, you can try pivoting to similar fields like maybe get a masters in information assurance or cyber security.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: