Ask HN: Is it possible for someone to not be cut out for software engineering?

183 points by conflicted_dev ↗ HN
I'm pretty new to software engineering (~1 year out of college as a CS major) and am having some serious problems improving my skillset (particularly with interviews).

Background:

- I worked as a linux sysadmin at a startup before going to school for CS. After 3 years, I graduated with a decent GPA (>3.6) and a couple internships at a large tech company.

- In college, I always felt like I had to work a harder than most of my classmates in order to get the same result. I would regularly spend 60 - 80 hours per week on schoolwork.

- Upon graduation, I accepted a job with the company I interned with and have worked there for ~1.3 years. However, I've been prepping to jump to a different role for a few months now.

- Recently (past 1.5 months), I've spent 1 - 3 hours per day on tech interview prep using CLRS, Cracking the Coding Interview, etc. My current target is a role at one of the "big four" tech companies or a high-quality startup doing either webdev or infrastructure engineering.

- So far, I have interviewed for and been rejected by no less than 10 different roles. I was also rejected by approximately 20 companies during college. I always fail during tech portions.

- I am REALLY bad at algorithm problems and experience serious performance anxiety. Concentrated studying and mass interviewing haven’t led to positive results so far. I can solve most problems correctly given enough time (usually 2x+ longer than interviews).

Questions:

1.) Does there ever come a point where it just isn't worth it to continue trying to be a software engineer who can get into top-tier companies / projects?

2.) How can I find some positive reinforcement in interviewing / interview prep even if I constantly get rejected? I do perform post mortems on every interview in order to find areas to improve.

3.) If my goal isn't an impossibility, how can I efficiently progress towards it? Would a mentor be helpful?

189 comments

[ 3.5 ms ] story [ 248 ms ] thread
I don't think you are cut out for a job at the big tech companies simply because they do put so much weight on discrete math and puzzle solving.

I say this as a person who is pretty much in the same boat.

Not everyone is the same, there are a lot of people who come straight out of college to the big companies who end up not being incredible software engineers. And vice versa.

Not everyone can prove their real skillset to the Facebooks of this world in an interview, with very little SE real world experience. You don't need to aim so high to enjoy your job and learn a lot.

Have you considered trying an interview boot camp? As awful as the state of the industry is for such a thing to even exist, having feedback and mentoring could be an additional aid over studying and practicing on your own. Interviews are conversations and not solo HackerRank tests, after all.
Experience can be a replacement for formal education but you need one or the other. I think that anybody can work at a big 4, but it won't be your first job unless you went the formal route.
Hmm, few notes & questions:

- Being cut out for software engineering activities; vs software engineering career/success, may be different skills and concepts. You could be good at development, system administration database administration; without necessarily being good at succeeding in any particular type of company culture or organization, applying those skills. Which one is your question: can a person be "not cut out for software engineering", or can a person be "not cut out for success at particular type of company as a software engineer"? [I would give the answer for both a "probably, in principle, but less often than assumed].

- You mention some of your perceived history of effort, success, and lack of success. What about more personal stuff - do you ENJOY the work? Are you attracted to software engineering (however you see it - development, sysadmin, etc)? Would you dabble with it even if you got a job in an unrelated field?

- Do you have a specific filter you might or might not be aware of? Are you seeking specific types of jobs in specific types of companies under specific constraints?

- Do you have friends you trust in similar professions, or with similar interests? What do they say?

- How about colleagues, classmates, profs?

- Number of failures at obtaining jobs is a metric but not a predictive one without context. Skill at interviews is not the same as skill at software engineering is not the same as skill at organizational success.

- Similarly, you may have _perceived_ to be working harder at college; you may have _actually_ been working harder, due to your higher standards; you may have been working harder but _not_ receiving the same results as others - without full understanding I would not automatically put full weight in your perception of relative work.

- Top Companies and Top Projects may not have one-to-one ration. Why do you think you want/need to work for those particular companies? Are you interested in prestige of the name? If not, what is your true interest - type of work? Team culture? Accomplishment? Paycheque? Write a list of your actual priorities, be brutally honest with yourself, and see how they match with those "top-tier companies".

- How would you perceive your skillset at large? Your communication skills, people skills, friendliness, dependability and reliability, loyalty? Personally, I look for a reliable willing learner on my teams more than somebody who can solve puzzles but will cause havoc - different companies have different fashions however.

Either way, best of luck :)

Thanks for taking the time to share some input. Here are your answers:

1.) I do enjoy software engineering to a certain degree, and even if I weren't in the field, I'd almost certainly still write code from time to time.

2.) This is a bit of an involved question, but I'll try to answer concisely. The past few years have given me a pretty decent idea of what I like/dislike about software engineering. At this point, I believe that the team and process are EXTREMELY important factors in determining a (software engineering) project's likelihood of success. I want to work in an organization where engineers are really excited about their product and/or technology of choice. In my experience, I've found that these people tend to congregate at what most consider to be leading/high-quality tech companies (e.g. facebook, google, airbnb, uber, twitter, etc.).

3. & 4.) A good number of my friends and ex-colleagues work at the aforementioned companies (as well as a few other "top-tier" firms). Their opinions on their companies is overwhelmingly positive and directly aligns with my values.

5.) I understand this, but it is a bit of a blocker if I can't even get in the door, right?

6.) This sentiment is reasonable, and it certainly is difficult to quantify "working harder." For what it's worth, I will say that it usually took me longer to complete assignments than it did many of my cohorts.

7.) Here's the brutally-honest list, in no particular order: - Atmosphere: I find that I thrive when I'm around people who constantly challenge themselves ot be better at what they do - Interesting work: I want to be engaged in my work; at the moment, that means full-stack webdev (JS + react/redux) or super-large scale infrastructure engineering (devops) with containerization - Prestige: having a top-tier name on the resume opens doors, and I'd like to maximize my opportunities in future endeavors - Compensation: The financial aspect is important; I work hard and want to be paid accordingly - Culture: Again, I want to be around people who are generally REALLY excited about what they're working on. Having led a startup in the past, I know what it's like to be a part of the atmosphere where everyone is passionate about their work. Now, I do know that this aspect isn't necessary a given for employees at top-tier firms (especially the large ones).

8.) Skillset: For simplicty'sake, I'll use a 1 - 10 scale where 1 is weak and 10 and strong: - Communication: 9/10 - I focus on this skill as much as possible because I've found that none of my work occurs in a bubble - People Skills / Friendliness: 7/10 - I like people and I like interacting with people. That said, I'm always learning how to better interact with people. - Dependability / Reliability: 9/10 - One of my nightmares is being perceived as unreliable. - Loyalty: 8/10 - It's a virtue and a weakness, but I tend towards loyalty to those who have done me right in the past, be it a person or company. - Pure Coding Skill: 6/10 - I get the job done, but I still have a lot to learn - Algorithms: lol/10 - Still working on it - Ability to learn: 9/10 - This is another trait I focus on. Tech is always changing, and I fully believe that one of the core skills of a good software engineer is to be able to continually learn new things.

You say you've only been prepping from CLRS and Cracking The Coding Interview for the past 1 and a half months. It's not unusual for candidates to spend up to 6 months prepping if not longer. Also, it's normal to be rejected from one of the big four 2-3 times before getting in.

When you say you had to work harder to get the same result, do you mean the programming or the math? In my CS classes I saw really smart kids who were aces in the theoretical aspects of the program but couldn't grok programming. I also saw the reverse. You will have to be honest with yourself and figure out which kind of person you are and if you are willing to put in the necessary work to be 'big 4' material.

My advice, is keep practicing the algorithms, but do so with purpose. Try to tie in what you are learning with what you are doing at work, or a side-project. The essentials will osmose over time. Learning this stuff without having the proper context to understand is value is difficult ... (for me anyways).

Thanks for the input. I tend to be good at programming, but very bad at algorithms / math.

At this point, I'm trying to assess what amount of work it's going to take to get into one of the "big 4"-type companies. I also need some way to feel like I'm improving.

1: Don't get hung up on a specific prestigious company. There's more to life then working for a specific company, going to a specific school, driving a specific car, wearing a specific article of clothing, ect. (This also plays into who you date and who your friends are.)

1.5: Interviewing is like dating. At the end of the day, it's all about a mutual compatibility among you and the people you work with.

2: Interviews aren't things you study for. When I interview candidates, I'm trying to figure out if they can learn and if they understand core concepts that come with experience.

I must say this: I can tell when someone studies for my interview. They get all the questions "right," so then I start twisting the questions and the candidate starts acting like "you said this wouldn't be on the test." Those candidates are rejected.

In an interview, I can always take some code on the board, make up a funny situation that you didn't study for, and see how you handle it. If all you do is study interview questions from a book, these questions will tank you.

I've had two situations where a candidate who studied my interview made it past. In one case, the candidate was fired after a few months because he was too focused on goals that weren't our business's goals; and because the quality of his work sucked. In the other case... Well, let's just say that upper management is well aware of the problem.

You're the second person I've heard this from within the past week. The last person I spoke to about this is an engineer at Facebook who found that several of the most recent interviewees simply "memorized the material for the test," as it were.

Personally, I don't find it useful to perform a rote rehearsal of the material. I'd much rather be able to intuitively understand it because I hope it will help me in areas other than interviewing.

Is everyone cut out to be an Olympic athlete, or are some genetics involved? The answer is "it's a mix."

Can anyone with diligent work ethic and a continual effort into learning find some place that needs their skills? Very likely. How well does your skill set match how broad a market? It depends. If you are narrower, or aim higher, it will take longer to find a match.

That being said: if you have sysadmin skills, have you considered an SRE position? Or DevOps? It may be that you find a better match there.

I'm not an engineer but I'm am a tech consultant. First, there are options outside of engineering that you may like. Second, being rejected by 20 companies doesn't seem excessive to me. It really is a numbers game. I have 10 years of experience and I'm looking a list of 83 places that didn't want me within the last year. Interviewing really beats me up and makes me feel like I have absolutely nothing to offer.

Companies focus on these code puzzles and things even when you will literally never come close to that level of code in practice. I mean, I can't even complete the screening challenges Uber gives you but I still found something I can do in the industry. If you are applying for some senior engineer position than you probably need to know this stuff, but if you are looking for a junior role than I really doubt the value of these.

Honestly, I question if I'm cut out for the work I do still. I sometimes just want to walk away from tech and never come back. Today is one of those days that I am questioning WTF I am doing with my life.

> First, there are options outside of engineering that you may like. Second, being rejected by 20 companies doesn't seem excessive to me. It really is a numbers game. I have 10 years of experience and I'm looking a list of 83 places that didn't want me within the last year.

This is kind of a tangent, but I don't understand how the sentiments "it's just a numbers game" and "nobody can find good engineers" can coexist. It seems like the people expressing the latter are trying to simultaneously be beggars and choosers.

I think "nobody can find good engineers" is a fallacy. Either the filtering is failing or they simply aren't paying enough to attract "good engineers". If they are paying an average wage they should expect average engineers to apply.
Software engineering covers is an increasingly wide range of skills. For me, it has been critically important to realize the things which I love doing in this field, and the things which I am genuinely particularly good at.

Overall I might not necessarily "talented," but I certainly enjoy my side projects, have looked for jobs in different areas of work, and try not to shy away from my opinions.

Your comments are varied and it is difficult to fully understand your perspective. Nonetheless, I greatly recommend finding two things: the things you love about software engineering, and the things you believe you have done well within the field.

Capitalize on those things!

For me, interviewing is the worst part of being a software developer. Now that I am a little more senior (5 years experience) I can see that its pretty miserable doing the interviews as well.

There are plenty of reasons that I haven't gotten a job that had nothing to do with me, for example, the CIO already had a third party ready to do the same work or they already had someone at my level of experience and focus.

The only thing that has worked for me is focusing on what I have done, and look for companies that also need those problems solved.

> Now that I'm a little more senior ... I can see that its pretty miserable doing the interviews as well.

I think part of this is that people too often view interviewing as an adversarial process.

It may help you to enjoy it more if you look at it as a collaborative game that you are playing with the applicant. Your role in the game is to guide them through the process without breaking any rules like asking questions that are too leading, etc. I find this mindset helps me to maximise the applicant's chance of success without compromising the goals of the process. I think it also helps you to subconsciously adopt a manner of speaking and body language that is a bit more friendly and approachable.

Why do you want to work at one of the big 4 tech companies? Software engineering is a very big field, you don't need to be really good at solving coding puzzles on a whiteboard to be a good developer. Hell, there are developers who do nothing but set up wordpress sites for their clients, and they're providing a needed, valuable service.

You can work as a web dev at a small company without being part of the mainstream silicon valley rat race. Sysadmin-type skills are pretty hard to hire for, and very useful at small companies. It sounds like you've got that going for you. I'd change your definition of success and focus on finding a job at a company with a culture you'd enjoy, and not worry so much about its perceived prestige.

Well, I agree with your contentions on "finding a job at a company with a culture [I'd] enjoy." However, I'm finding that even these companies put their applicants through all of the algorithmic hoops that the big guys do. At this point, I feel like not being good at check interviews seriously limits my options.
As someone who used to work for a not-so-technical large consulting firm, it pains me to hear newcomers wanting to work for the "Big 4" in tech.

The reason why accounting, banking, consulting need their Big Four / Big Three is because it's hard to measure what their people actually do, so they rely on joining a big firm to reflect their worth.

In software engineering, you should be able to describe to someone in tangible terms what you've worked on in the past 3-6 months and what value it's brought to the company (and if you can't, start writing that down because you should always be ready to discuss that with recruiters or your boss when you want a raise). Because of that, we don't need the prestige of a namebrand company when we jump to the next job.

You should ask yourself why you'd want to join a Big 4 and if it's actually necessary. If it's for potential entrepreneurial connections, I can assure you that there are plenty of startup founders that are doing fine without the Google name. If it's for technical challenges, all companies have their own issues. You may not be working at Google scale, but trust me even with 5000 customers, there are still scaling problems that need to be solved for that particular case. And if you just want to work with smart people, they're everywhere. The company I work at was bought an East Coast company (outside SV!) and their engineering team are doing infrastructure things heaps better than we were.

This is an extremely humbling field and regardless of where you work, there's always something to be learned.

As a counterpoint, the prestige of the big 4 can be helpful going from a software engineer to a technical co-founder role. Investors like seeing external validation with that kind of weight.
Yeah, I agree and briefly hinted at that with entrepreneurial connections. It's the same thing as going to a prestigious school. I'm not going to discredit the benefits; it just means you gotta hustle harder if you didn't get in.

Also the Big 4 are changing every few years. Is Twitter still considered part of that group?

Was Twitter ever part of that group? I thought it was Google, Facebook, Microsoft and Amazon.
+ Apple
Everyone always says four, yet swap Apple and Microsoft... This is apparently for historical reasons—there's always been a "big four" since the Great War. https://en.wikipedia.org/wiki/Big_Four

It's clearly currently five. In order of market cap: Apple, Alphabet, Microsoft, Facebook, Amazon. Note that these are now the five biggest publicly traded companies in the world, not merely in "tech" (a clearly archaic categorization).

I was about to write that you are wrong because how could Facebook and Amazon be on that list. But you are right. All oil and gas, conglomerates, pharmaceutical, financial services, electronics, retail, commodities, telecommunication, utility and automotive companies that crowded the list until recently have been displaced by IT companies. It is truly stunning.
The reason people typically don't include Apple is because they are diversified out of software, whereas Google/FB/Amazon/MS are all software tech companies.

This isn't exactly a strong line though, since all are at least diversified into things outside software.

Nevertheless, that was the original reasoning.

Last time I heard the expression it was Netscape, Oracle, IBM and Sun (vs Microsoft). I wonder how the OP would feel about working for one of them now.
While I can't speak about investors, I personally know of one highly-respected niche company that seriously favors candidates who have one of the "big 4" on their resume (AmaMagaGooBookSoft or whatever they're calling it these days). Ironically enough, a widely-recognized position at a major tech company unfortunately can be a stepping stone that gets you in the door at a place you actually want to work long-term. People are generally really bad at hiring.

It's kind of funny that a position at one of those companies is now the new mark of prestige instead of a college degree or something. Shows how far the university has fallen.

>While I can't speak about investors, I personally know of one highly-respected niche company that seriously favors candidates who have one of the "big 4" on their resume (AmaMagaGooBookSoft or whatever they're calling it these days).

Is it Valve?

I wonder why, since Valve's way of working is very different from the way big companies traditionally work
> Shows how far the university has fallen.

Does it? Unless things have changed, graduates of elite universities are disproportionately represented at the AppAmaGooBookSoft companies. It seems more accurate to say that those companies play a similar role to HBS and Yale Law.

When was that ever the case?

Even back before Google existed, having MS on your resume would open doors at software companies.

Google has always been a gold star.

But it isn't instead of universities, it is as well as. Stanford/MIT/etc will have the same effect.

The weird thing is not that working at big-name companies is impressive, it's that it's essentially a pre-requisite for some employers. The promise of higher education is that it will prepare you to take the best jobs in the industry. It's supposed to be the primary credential. That something is becoming the critical factor in employment means that universities are losing and/or have lost their status as the baseline qualification.

Maybe it shows how little I know, but I think Valve and other companies who do this are doing themselves a disservice by basically using Google's recruiting department as a passthrough (and, as an autodidact programmer, I feel essentially the same about people who put it all on educational pedigree -- this isn't an endorsement of the baseline credential, just an acknowledgement that what constitutes it is shifting). It feels like an admission that they don't know how to hire, so they're effectively offloading that responsibility onto companies whom they believe have thorough vetting processes.

You forgot one: for a steady and very large salary.
The other side of that is my experience: as a developer for a non-tech company, you're in a cost centre, constantly fighting for funding and (if you want it) recognition.
Is the benefit of big four not high salary and great benefits? Google consistently ranks as the top company to work for.
Salaries are definitely high in the big companies, but compensation isn't everything. And rankings for best workplaces don't include smaller companies who don't have time to apply for those rankings.

Your points are valid, but they're not the complete picture. Otherwise we'd all be clamoring for jobs at Googlezonsoft, but as sentiment shows in this thread; that's not the case.

My main point was to emphasize that it's possible to find job satisfaction outside of the big companies and that one has to question and determine if a big company would be a good fit, or is it purely an ego thing.

Couldn't have put this any better! Stop being hard on yourself and just focus on learning. You don't need to work at a "big 4" SV to amount to a lot. Look at glass door... Plenty of people leave them for similar reasons to why people leave "non-big 4" companies. Just focus on your own skills, build things you enjoy, and push on. Happy to talk more personally via email if you'd like.
I remember doing just this when first wanting to get a foot through the door... Offered to take on the task of building a website. I did just that and would go on to maintain, secure, and add new features for over a year.

The one thing I wish had been made clear to me beforehand was understanding just how little the non-tech and business savy people knew about what we do. As such, despite how much of a positive impact I had, my pay was not even close to what it should have been (first-year photographers were making more than me). It was a constant battle to explain why certain time was needed to complete various tasks, as well as why I was putting in the hours I had.

When I finally managed to get out of there, feeling underappreciated, it was THEN my once boss realized how lucky he had been. Nobody would come and work for the same pay while being asked to do all that I had done.

So be careful and at the very least prepare yourself if trying to go into smaller companies and businesses.

I think I made a mistake in specifying that I'd like to work at a big4 company. Sure, the prestige and the open doors that come with it are nice, but I'm much more interested in the type of people that these companies attract. I've found that I work best and learn the most when I'm around highly successful people in highly challenging environments. In my (admittedly limited) experience, some of the best engineers I know work at these companies. I want nothing more than to be able to work with people like this while solving interesting problems. If that means I work at a big4 company, great. If it means I get to work at a startup, even better; I've done a startup of my own and been a part of another that made a very successful exit.

The main point point I tried to get across (somewhat unsuccessfully) is that I need to work in an environment with a passionate, hard-working, highly-capable team in order to justify the time I have spent (and will spend) on software engineering.

The main impediment I've found in turning this goal into a reality is the technical interview. The way I see it, I either improve and make it happen, or I don't and move onto something else.

Judging from this comment, I would say you lack confidence. Recruiters and interviewers can see this coming from a mile away. Perhaps, you are trying to jump up the proverbial software engineering ladder to fast...

I would highly recommend you read the book: Decode and Conquer. I would also recommend Cracking the Coding Interview and Cracking the PM Interview. If you can solve those problems on a white board, you can pass a technical SE interview.

I would also suggest you:

1. Work on a problem for a few minutes and try to solve it. If you can't, look at the solution and understand how the solution was derived. Go back and solve the problem again. You are not finished here. Go back a few days later and work on the same problem - repeating this several times a week. Over time, you will grow more confident and can quickly recall concepts that are potentially causing you to perform poorly on your technical interviews.

GL

I know that there's a huge demand for software engineers, and just about everyone can think of the time their company inexplicably hired someone who couldn't do FizzBuzz. But if you've already been hired as an engineer and you've worked there for 1.3 years, at a level comfortable enough where you actually want to keep being an engineer and move on to a "better" company, and you're willing to put in 10-20 hours extra a week studying, then you aren't not cut out to be an engineer. You clearly have the mindset and tolerance of rigor that the job requires.

But it's possible that you aren't cut out for whatever benchmark/ideal you have in mind for software engineering. If a company is looking for the next Jeff Dean, sure, being not confident in algorithms is going to put you at a severe disadvantage. But there are plenty of valuable and important software engineering jobs -- even within the domain of just programming, nevermind design, planning, management, etc -- that aren't limited to those who can show a mastery of algorithms.

One well-known contemporary example: https://news.ycombinator.com/item?id=9695102

My main job is not software engineering right now, though I do a lot of it on my own (to be better at my actual job). I think I'm similar to you in that I was probably mediocre in comparison to the best of the class, though unlike you, I was probably in self-denial of how mediocre I was. But I eventually got into it much more after working in non-software jobs and understanding how the world works, and that there's plenty of uses for programming beyond the narrow scope of what's taught in CS curriculum. It's equivalent to thinking that you're not cut out to be a writer after feeling mediocre in a journalism news writing class, or technical writing, or poetry.

Heh. It took me a few months to be put into my proverbial place, but now I understand just how amazing some engineers are. I read that post a while back too. A few of my colleagues have actually done client work for Google (even though they clearly never had to go through their interviewing process).

The thing is, I'm trying to figure out whether if it is really worth my time to continue the grind. Are there other roles that I might be both more excited about and better equipped for? Perhaps. This thread is essentially the beginning of my research process.

Have you considered getting a software or web dev job in a non tech company? They generally don't put you through the algorithm tests and tend to have interesting problems to solve. Completely different vibe vs tech companies though but may appeal to you more.

Examples:

Warehouse shipping companies that have a need for shipping software, barcoding software, always need reports, etc.

Mail order or e-commerce companies who rely heavily on inbound orders and who need automation/streamlining.

Advertising agencies tend to need web devs too. Pay is generally lower but you get the opportunity to work on all types of projects.

This is an excellent point. I work at one of those companies. Actually, it qualifies as a tech company, but our main revenue source is not software. I think that the pace of work at a multidisciplinary company isn't as frenetic as a pure software shop, just because it can't be. And we don't conduct coding interviews.

I had a conversation with one of our developers recently. He could have been you. He told me that he had interviewed at the big software shops, and had flunked the coding interviews. Yet I know that he's a very bright and productive engineer, who is also a pleasure to work with. I asked him: After those interviews, would you really have wanted to work at one of those shops? He said that he wouldn't.

And I know that I wouldn't survive that atmosphere either. So you're in good company.

I'll take a young developer who understands where they are over someone who can solve tricky algorithm problems any day. You've got a good attitude and it will serve you well.

Here is my litmus test for developers. Writing software is a boring job that requires you to obsess about details and to concentrate heavily on minutia far beyond the tolerances of most people. It is also a thankless job. Users will hate you for the bugs. Management will hate your for how slow you are. Nobody will appreciate the effort you put in, all believing that what you do is trivial. Even your own team mates will view your work and universally declare it to be crap. Every time you try something new, someone else will tell you that you are doing it wrong and imply that you are an idiot. Every time you discover something truly complex that requires years of experimentation to even come close to getting good at it, someone will laugh at you and direct you to an ill considered blog post or framework that purports (and fails) to solve your problem. To be blunt, you will be criticised for virtually every keystroke you make for the next 45 years.

There are easier ways to make a living. But if programming still seems awesome after you have read the above, welcome to the club. Never give up.

Judging from my own experience, none of this is true or correct. In particular, programming is by far the easiest way to make a (good) living. The apparent fact that programming is not for everybody does not change that a bit. A lot of people who work as software engineers hate it and/or are not good at what they do, but if coding were taught in K-12, I am sure many more people would have liked it - simply because coding would have been a second nature, just like reading, writing, and counting.
And then there's manual labor...

All sarcasm aside, I don't think there is anything "exceptional" about being a programmer, just like how there is nothing exceptional about being a management consultant. I wouldn't say it's the most thankless job, nor would I say it's the job where you get the most praise. It's a spectrum.

Often times, when I have thoughts like these, exuding confidence that my job is the most in any dimension, I realize that they might be more about me than the field of software engineering. Put differently, I'd probably have the same thoughts about welding if I was a welder, or the same thoughts about monetary policy if I worked at the Federal Reserve.

To me, it looks like you're just having problems with algorithm interviews. I have a solution for you and it's much more effective than textbooks - go to websites like www.spoj.com, projecteuler.net, topcoder.com and many other similar online sites, I suggest www.spoj.com - start with the easiest ones (on most of these sites, problems are tagged by their difficulty level) and solve them - I mean code solutions to them in a language of your choice (But C, C++ and Java are popular in interviews) - these sites have online judges where you can submit your source code, have your code run against a large suite of test cases for each problem and get results back - all in a matter of seconds.

Solve 100s of these problems(start with easy ones and move into harder ones at your ease, learn new concepts and algos as you go) and try the interviews again in another 6 months. I promise, you'll improve a lot at this kind of problem solving. I've seen a number of people do this and succeed at algo interviewing game.

> Concentrated studying and mass interviewing haven’t led to positive results so far. I can solve most problems correctly given enough time (usually 2x+ longer than interviews).

You are probably here to get some hope. Politically correct it would be to give you that hope because we all know that "Everyone can do and be whoever he want if he work hard". Unfortunately reality is different. Sometimes false hope can make more evil than harsh truth. I am pragmatic that's why i will give you pragmatic answer. You have binary choice. You already know that you struggle with certain things. Give it more time, to the end of the year, so you can determine if the problem was not enough time to learn. If nothing will change then aim lower. If you solve software development problems as you mentioned then you can get into software development.You don't need to work for top 4 tech companies to be happy and solve interesting problems.

To add to this great advice: ask yourself why you pursued this path in the first place. Do you like what you do? It sounds like it's more of a job you struggle with more than you like, perhaps there are tangentially related roles you would enjoy more?
I would say this is the more important thing. I would argue that even if you are under-performing when held to a certain set of standards, if you _love_ doing it then whatever. If you _don't_ love doing it then you should switch careers even if you happen to be "really good" at computer science.
I've found it's a personal balance. I worked very hard to get to a job and a company that I enjoy but I had to suffer some very miserable/toxic environments to get there. Even now, obligations to my family prevent me from being free or starting a family of my own.

I have to include considerations about the survival of my clan which is more important than some aspects of my day-to-day happiness.

There are also many related roles like project management where some coding/technical skills are an advantage, but not the most important thing.
I think this is essentially true.

If you do not enjoy programming, and have a hard time struggling with analyzing and solving problems (writing algorithms) then I do not think you will enjoy your work.

I have seen plenty of developers that do not enjoy their work, and I would suggest that you avoid it, and stay with systems administration, or something else that you enjoy.

There is a considerate amount of stress and pressure in the job anyway, as there are always critical deadlines and urgent problems, and if that is added to a general negative baseline of stress and discomfort, there is a high risk of real problems - like developing a real depression or occupational burnout.

More Questions Than Answers :

1.) Why top-tier companies ? Have you considered joining a startup instead ?

2.) Ask the interviewer. Prep'ing for interviews will not prep you for the work at hand. Try working on your interpersonal skills and getting real world experience ( open source or side project demonstrating your skills )

3.) The recruitment process is broken. When you find that elusive efficient way - make sure to give back to the community.

Not only is it possible. but at a previous job I soon realized that every one of these people had decided to get together and take over the company.
It sounds like you're trying to go straight from ~zero to Google. Would you torment yourself over being unable to go straight from high school football to NFL superstardom? And have you considered the possibility that NFL superstardom may not be the only way in which you might satisfy your ambition?
(comment deleted)
Interviewing is a special skill. I would try practicing it with real people (if you haven't already), and to actually implement the algorithms you are struggling with in real-time with your friend that is "interviewing" you. Basic point is that you need to spend some time practicing like crazy where you have the ability to "fail" with friends. I have done a ton of technical interviews, done a qualification exam for my phd (twice :-) ), and its hard. You have to learn how to improve your speaking capabilities, and know the material well enough so that you can speak confidently. Basically if you feel like you are winging it, then you don't know the material well enough. If you feel like you know it, but then "suddenly" forget the info, then that is basically like stage-fright, and you need to practice with people like crazy. Another method is to create like 10 questions that are annoying questions that you can imagine somebody asking you. Then save them someplace. Then on a random Friday afternoon, pull out those questions, get a blank sheet of white paper and sit down and "answer" those questions without looking at a book, and time yourself as you do it. I would not give up, just keep trying.
I doubt I could get a job at one of the "big four". Their interviews seem mired in hard technical questions, the sort of problems I just don't encounter in the things I build. It doesn't interest me.

Doesn't mean I'm not cut out for software development nor that I can't deliver value to anyone else.

Nor does it mean I can't find a rewarding and interesting job that suits me and the lifestyle I want.

So what you can't get into the big 4? There are several companies with interesting problems AND a bigger chance for you to actually make a difference.

Rejections happen. I would try to see if there's a common thema (some area of knowledge that is missing) or if it's just being nervous/lack of experience

Not everybody is good at algorithm problems and there are other areas you might be better suited for

There's a lot of good feedback here for both sides. The only thing I want to reiterate is that success isn't defined by employed by the big four. There are companies that embark on more interesting engineering challenges or pay more. Big four is a measure of status, not success. I don't think you've defined what you want well enough to quit because you're not being hired by the big four.
Having trouble with interviews isn't a big deal, it's just a grinding process. What I do personally is think through issues I had myself while going through the problem. Not necessary but you could also see if with the post-interview results, you can get any possible feedback from the interviewers themselves.

Performance anxiety is just something you have to get used to dealing with in some way. You can always just ask questions during the interview.

At the end of the day "if you do what you love for living you'll never work a day in your life". I'm guessing you do love your career and seeing as you would put in 60-80 hours of work into school each week doesn't mean your lacking any motivation behind it. I look at it as baby steps, keep working at it with the same motivation and you will reach the goals you want. Anyone can who has the passion for it.

but perhaps you might want to do a bit more math + physics studies (online, books etc..) it helps you with formulas and thinking a different way which helps IMO with programming.

Lastly, use a rubber ducky when programming :).

Yes, some people are naturally bad at the big 4 style programming interviews. I know several great engineers who lead leads at startups who have had difficulties in such settings.

I myself had a terrible time with McKinsey style case interviews, which is sort of a cousin to tech interviews.

How did you get into technology? Did you choose a tech career or did it choose you? Why do you want to work for one of the big four? And what are you passionate about? Happenstance is not a reasonable way to manage a career. And it's probably unrealistic to keep up with those who grew up tinkering with code.

On the bright side, you might very well lead a more balanced life outside work. It's also not realistic for me to make an assessment of your choices but you should honestly answer these questions for yourself.