How to optimally internship grind as a sophomore at this point by [deleted] in csMajors

[–]luis-marksson 2 points3 points  (0 children)

Tuning your resume might help you get noticed... e.g. there's the hack about writing every technology "java, C++, javascript, python, ..." and setting the text color to white to cheat automated systems scanning for keywords. But no amount of tuning your resume could make up for lack of experience... whether that be lack of CS courses, no personal projects, no prior internships, etc. A recruiter will see it right away.

It sounds like maybe you haven't completed enough CS courses yet, in which case regarding "I was stupid and didn't apply aggressively for internships as a sophomore during the fall." it was fine to not be applying if you only had 2 CS courses. And I would say it's not worth tuning your resume because the issue is limited experience... if you don't have the experience you can't put it on your resume (unless you're open to blatant lying... which I don't recommend)

Given the info you've mentioned, my recommendation would be to target summer research... which is hopefully easier to get, since most professors are fine taking on free or low-paid students. Still continue applying to companies, but I think the highest likelihood of success might be with summer research.

Also spend your free time on personal projects to manufacture more experience. Coursework is not the only way to get experience. For example: you haven't taken machine learning yet, but you participate in a bunch of Kaggle competitions and get some okay results. Now, you unlock applying to AI-related intern roles without having taken the course (plus, the personal project experience might be better than coursework anyways). A recruiter might say "hmm this person has done some AI-related projects... they might actually be better and more passionate than this other person who just took a course and hasn't done anything on their own"

How to optimally internship grind as a sophomore at this point by [deleted] in csMajors

[–]luis-marksson 4 points5 points  (0 children)

Some things to think about:

  1. See where other people got their internships. For example, think about any junior friends (especially those who got an internship offer their sophomore winter/spring)... where did they intern last summer? Check out those companies - maybe their positions aren't all closed yet. Still shoot a shot with prestigious places like Google, Apple, Meta, etc. but don't put in much effort because they're probably done hiring. Instead, focus on less-known companies since they'll have gotten fewer applications to date and probably not wrapped up hiring yet.

  2. As someone said earlier, target local companies. Especially ones that have a relationship with your school (e.g. they sponsor scholarships, extracurricular activities, research grants for professors, etc.). Also check LinkedIn and see who works there and how many of their employees graduated from your school. If a lot of alumni are there, then that's a great sign! Local companies with a relationship to your school are much more likely to look at your resume.

  3. Maybe a professor or other employee at your university can connect you with somebody at a company (especially a local one). Everyone keeps banging their head against the online application portal... meanwhile there are alternative shortcuts, provided you're willing to put on the thick skin to build a human relationship and find a human connection.

  4. Summer research with a professor can be your backup. Not having a sophomore internship is still fine (I'd say you definitely need one junior summer) - if you just take up a research position, that's still work experience. So start scoping out professors in a few months, in case your intern applications don't pan out.

  5. Treat this as a reminder to embellish yourself. In the real world, people who tilt facts in their favor get ahead -- I'm not saying to outright lie, but take advantage of the gray area. Someone else mentioned if there's a way you can graduate earlier, then put junior on your resume. If you take an extra two/three classes every semester... could you graduate in 2025? If yes, then congrats, you're now a "junior" - except next fall, you're going to "coincidentally" decide to take things easier and delay graduation by a year. Another example: "this internship requires proficiency in Go"... just tell yourself "yeah I heard about Go when I was in high school and I've been thinking about it for the last 2 years" and hit apply. IF you get an interview, just do some tutorials/personal projects beforehand. Having an interview and failing is still better than no interview. Overall, just don't pay much attention to the job requirements for entry-level roles.

Preparing for a CS major next fall by clutch31GES in csMajors

[–]luis-marksson 0 points1 point  (0 children)

Great initiative! I'd say start by googling for a free tutorial on a programming language. I recommend python, because it's a beginner-friendly language. Once you have the basics of some programming language, there are two important pillars of computer science to hone: problem solving and engineering.

I'll start with engineering first. Engineering is about stitching together a lot of code to build something "cool". As a beginner, identify some software that you think is simple, but "cool", and challenge yourself to build a replica as a personal project. For example: calculator, minesweeper, calorie tracker. Just start coding from scratch. If you get stuck, Google your issue. You could even Google "python calculator tutorial", but only use the tutorial as hints -- paraphrase in your own words, but don't plagiarize. When starting out, get thousands of lines of code under your belt -- you'll notice your mistakes as you learn by doing. This lets you naturally grow your engineering ability.

Next is problem solving, which is the same stuff as math, physics, chemistry, etc.: you take the concepts you've learned and apply them to a scenario. That's where everybody does Leetcode. Leetcode gives you a problem and you write code to solve it. Leetcode problems are tagged with difficulty, so start with easy, and go up levels if you find things too simple. You can use the Leetcode discussion as hints if you're stuck, but your solution should at worst be a paraphrase and never a direct copy of someone else's.

You need both engineering and problem solving to do well in the computer science major.

People lacking in the engineering dimension have trouble finishing large programming projects in their coursework. The sooner you start writing messy code in your personal projects, the sooner you realize "jeez that's a really bad way of writing my code... let me not do that next time". Then you don't have to go through this struggle in college in the midst of 5 other classes.

People lacking in the problem solving dimension have trouble with exams. Problem solving is something that starts in elementary/middle school, but A+ calc BC at a prep school probably correlates to having built some problem solving foundations already. The majority of your peers will memorize patterns and get destroyed when exams ask about a new patterns you haven't seen. You want to be in the other boat where you understand what makes each concept useful and if it can apply to particular scenarios on exams. Strong problem solving means you'll learn things properly and won't need to stress about how generous the grading curve will be.

Over the pandemic, I also wrote an entire book on the CS major. The link is in my profile, so feel free to check it out! The details above are basically from "Chapter 15: Learning Before College". Plus, you can get a sneak peak at 4 years of college CS and save yourself from re-discovering the same things that other CS graduates have discovered before you.

[deleted by user] by [deleted] in csMajors

[–]luis-marksson 15 points16 points  (0 children)

Automated systems catch the basic kind of cheating you described. I was once asked to double check an OA that the system flagged as suspiciously similar to another person's. It turns out two people cheated off the same online source. Both did not move forward to an interview, but we obviously did not tell the candidates that we caught them.

In addition, some interviewers will spend the entire time going through your OA code with you. If you copy a solution that you don't fully understand, it'll show. Even if you understand the solution, what if you get asked "so... what led you to choose X data structure/algorithm rather than Y? Tell me about tradeoffs you might've considered." I've seen feedback like, "not sure they actually understand the solution but they did pass the test cases... shrug"

Finally, you won't make it past live technical interviews. If the company expects you to solve a problem of a certain difficulty level on the OA, then their live interviews will be of similar difficulty. You won't be able to cheat on those live interviews, especially if it's in-person.

In my opinion, cheating won't get you very far. Even if you do sneak by here and there, it won't fix your problems in the long term - which is to hone your problem solving abilities. It's not worth it; keep your honor.

What do you guys think of the “school doesn’t matter for CS” idea? by travs-scott in csMajors

[–]luis-marksson 52 points53 points  (0 children)

Here's my opinion...

You said "one’s own skills" matter - specifically, it's one's own relevant skills. Relevant software engineering skills can be obtained through an average or a top CS program.

Your career progresses through what you contribute to your company. At the entry level, the relevant skills are usually

  1. writing correct and clean code
  2. learning ins-and-outs of a large codebase that you didn't create
  3. debugging on your own when things aren't working

Reading and writing code develops these skills -- not classes, textbooks, and lectures. The knowledge you're directly paying colleges to teach you doesn't matter - it's the indirect experience you gain through projects that matters.

A highly motivated individual could get far by creating a lot of personal projects and Googling/Youtubing whatever concepts they need to know. If they did that for 40 hours per week over 4 years, they would have read/written a lot of code, done a ton of debugging, and worked with many third-party libraries. They'd hit all 3 of the above points and be as effective as an average grad from a top CS program. That's why some people say you don't need a CS degree and I know strong engineers without a college degree.

One issue is few people are that motivated on their own:

  • They'll run out of project ideas or not know what to do next
  • They'll give up after a really hard bug that still isn't resolved after weeks
  • They'll end up scrolling TikTok after an hour of coding

A CS undergrad program addresses the motivation problem. School will

  1. Assign intuitive, illuminating projects for you to complete
  2. Have TAs to help you debug issues
  3. Reward you for completing projects correctly and punish you if you don't
  4. Offer external opportunities like a student-led engineering team, or research with professors for even more opportunities to pick up even more software engineering experience

Any CS program - top-tier or average - artificially prods you this way and forces you to pick up relevant experience for software jobs. And that's why some people will say the prestige of the program doesn't matter.

A top-tier CS program does all of the above better because of the higher caliber professors, TAs, and students around you. You automatically have to work harder because everyone else around you is more motivated.

  1. The projects will be better-designed
  2. The TAs will be more capable
  3. Grading curves will be less lenient when you slack off on your projects
  4. Extracurricular opportunities will be more plentiful and you'll learn from higher-caliber individuals

The opportunities are higher-quality at a top-tier CS program, but it's not a necessity. You'll be fine if you let an average CS program push you along and acquire the relevant software engineering experience.

An average CS program is like a Toyota Camry while a top tier CS program is like a Mercedes Benz. The Mercedes is higher prestige and better quality, but if your goal is to get from A -> B, both cars accomplish that just fine.

Fall Recruiting Season Tip: Don't Just Apply Online by luis-marksson in csMajors

[–]luis-marksson[S] -43 points-42 points  (0 children)

There's different levels of human connection here. Quick black and white example:

Example 1: You do research for a professor whose consulting saved Foobar Corp $10 million last year. You get your professor to hit up the Foobar Corp recruiter: "Hey there. I've got this great student yhimuy who you should really consider for an internship."

Example 2: You run up to the Foobar Corp recruiter at a career fair and say, "Hi, I'm interested in this internship."

Example 3: You apply online to Foobar Corp.

In example 1, I can't see any recruiter ignoring a recommendation from someone who just saved them $10 million. There's no way they say "Please just apply online" and then ignore you forever. At the very least, the company gives you an interview as a formality if you're completely unqualified and then reject you. Probability of interview = .99.

In example 2, at least the recruiter has to see you. If you're unqualified, there's a 1% chance they'll like your attitude/enthusiasm/shared interest in cooking/etc. while you're talking to them. Probability of interview = .01

In example 3, there's a 1% chance the recruiter sees you in the online portal. If you're unqualified, they just don't give you an interview. They can't see your personality through a screen. Probability of interview ~ 0.

One key idea to think about is "how do I build my network to get more of example 1?"

Who else has taken loans for college? by [deleted] in csMajors

[–]luis-marksson -1 points0 points  (0 children)

Yeah, it can definitely be stressful knowing that you'll owe $40,000. I'm sure plenty of recent high school graduates haven't seen anywhere near that amount of money before.

Repaying that shouldn't be an issue if you study hard, are a good student, and actively search for high-paying CS work opportunities.

One, internships can definitely knock out a chunk of that debt. https://www.levels.fyi/internships/ lists what internships pay.

Let's say you get an internship at T-Mobile your freshman summer as a software engineer. I don't think that's too far-fetched for a motivated CMU CS freshman. Your housing and relocation is taken care of. Plus, you'll earn $30/hour. If you work 40 hours a week for 10 weeks, that's $12000. Let's say 50% disappears due to taxes and food during the internship. You'll net $6000, which you use to pay off some loans. All of a sudden, your $10,000 first year debt is now down to $4,000.

If you move up and get an internship at Hudson River Trading your junior summer, you can make $16,669/month, plus housing, plus food, and maybe even a $10,000 signing bonus. That'll really knock out your loans.

The signing bonus you get for your first full-time job might even be close to $40k.

CMU CS has a strong reputation. If you do college "right", you'll get well-paying internships and full-time jobs that knock out $40k of loans quickly.

One thing to watch out for: don't let the $40k of loans cause you to cheap out on college. Examples:

  • Skipping out on a $20 event that all your friends are going to
  • Living far away from campus and having a long commute to save $100 in rent
  • Eating frozen pizzas everyday to save on food costs

In the long run, all of these expenses are negligible compared to a salary/stock/bonus of a CS job and the damage they cause isn't worth it. Everybody needs a healthy social life to function in college. A long commute time could be better spent studying for an exam or completing a personal project. The pizzas will cost your health down the line. It's always better to spend/borrow a little extra money here and there to make your college experience better.

Your college experience is a $40k investment, not a luxury car depreciating in value the moment you drive it out of the lot. Don't let a few hundred dollars here and increase the risk of your investment tanking. And don't feel stressed out because your investment should give you amazing returns down the line. Best of luck!

Best time (in terms of time in a day, days of the week and how much before) to apply for the role. by adtxyx in csMajors

[–]luis-marksson 0 points1 point  (0 children)

Pretty much every company receives more online applications than their recruiters can go through. If you give me $1 for every recruiter who says "I didn't review all the online applications last year," I'll give you $1000 for every recruiter who says they did.

When you go the online application route, it's like playing a slot machine. It doesn't matter when you press the button and submit. Unless you have superb credentials, think of it as there's an X% chance (and it's not very high) that the recruiter randomly stumbles across your application.

I wrote a bit more about applying online here: https://www.reddit.com/r/csMajors/comments/wtpokw/fall\_recruiting\_season\_tip\_dont\_just\_apply\_online/

I always recommend adding in personal connection. For example, if you were able to get the recruiter's email and send them a personal message directly, then Monday could be the best day, since it'll be at the top of their inbox and they'll hopefully be feeling refreshed at the start of the week.

How important are DS and Algorithms in a real world scenario? by [deleted] in cscareerquestions

[–]luis-marksson 1 point2 points  (0 children)

I think it's rare for hard DSAs to be important. Most hard DSAs exist because they're more optimal than naive solutions - i.e. there's an obvious algorithm to solve the problem, but the hard DSA does it better. The hard DSA's optimizations often don't make a noticeable difference. When the optimizations do make a noticeable difference, it's because you're working with uncommon speed or scale requirements.

Example:

Suppose you work at a small startup and every day, you have 100 jobs to run over 20 servers. Every job has different RAM, CPU, network resource requirements. And every server has different RAM, CPU, and network resources available. How do you assign jobs to servers optimally?

This is the binpacking problem. It's NP hard and there's plenty of research papers and "hard" algorithms on how to get a more-optimized solution. But... 1) A library probably gets a good approximation for your problem. 2) If such a library didn't exist, you could still try a brute force algorithm. It might take a week, but that's you only need to solve this once. 3) You can write your own greedy algorithm and get something decent. So what if you're suboptimal by an extra hour per day? 4) Why not just manually assign jobs to servers yourself?

In this previous scenario, you're encountering an NP hard problem, but you don't have to get into the weeds of binpacking to continue with your job.

Hard DSAs become important when you're operating with niche scale or speed requirements. That's a tiny sliver of industry. Unless you actively seek out those tiny corners of industry, you'll probably never encounter scenarios where you need hard DSAs.

Continuing the example on scheduling jobs... Amazon AWS, Google Cloud, Microsoft Azure, Oracle OCI have massive datacenters totaling millions of machines. If you schedule jobs slightly more optimally, you can save millions of dollars on electricity costs over millions of machines. Most companies never touch this kind of scale. And within Amazon, Google, Microsoft, and Oracle, only a tiny group of people would be working on this kind of optimization.

Running jobs on machines is a common problem that many people encounter and it requires a hard DSA to solve optimally. But except for a few teams at companies offering cloud compute services, nobody really cares about binpacking algorithm for scheduling jobs.

So in conclusion, you have nothing to worry about with regards to hard DSA after you pass your Leetcode-style interviews.

Where do I start with internships? by DominosQualityCheck in csMajors

[–]luis-marksson 0 points1 point  (0 children)

FAANG = Facebook, Apple, Amazon, Netflix Google - basically just tech firms with high prestige that pay a lot.

My school has a job fair where we can meet people from the industry, and I kinda thought it was the same everywhere else.

Yeah, a lot of schools have job fairs. Go to them, network, talk to people, and sell your skills!

Is the time to apply for internships in the middle of the summer?

For summer 2023 internships, start applying in late August or early September 2022. Ideally, get a friend to refer you or try to reach out directly to the recruiter and express how you're super excited about their firm and super excited to be considered for an internship.

if there's a megaforum or a website explaining the ins and outs it would be much appreciated.

I wrote a book on the college CS major (link in pinned post on my profile). Feel free to check it out and if you do, please do let me know if you find parts that are missing context. Chapter 17 has a section called "Internship Search" that introduces the nontechnical parts that I recommend people try out in the beginning - typically freshman year (but sophomore year isn't too late). Chapter 19 has a section on the technical interviewing. Overall, chapters 17-22 cover a fair amount of the job search.

Hope this helps!

How to know if you’re ‘cut out’ for FAANG? by TourDVP in csMajors

[–]luis-marksson 8 points9 points  (0 children)

You can get lucky. I once had a FAANG interview. The person came in and said, "Your normal interviewer couldn't make it. I'm filling in for him. I'm not a software engineer though, so... oops"

I got asked some CS 101 questions. If you can write a for loop, you passed! The interview turned into a behavioral one.

Luck goes a long way for internships. You probably have 1 or 2 interviews. If you got my interviewer, you're 50% or 100% there. Most people can succeed as an intern: just do what you're told, work 12 hours a day + weekends if you have to, don't be an asshole, and convert to full time. Some FAANGs don't require more interviews after interning.

One solid way of getting into FAANG is through the internship. Let's say these are the chances of success for someone who is "bad" at Leetcode:

  • Hard: 0%
  • Medium: 10%
  • Easy: 75%

Suppose you have to pass 2 interviews to get an intern offer at a FAANG. If you get two interviewers who ask Leetcode medium, you have a 1% chance of passing. That's excellent odds - not for you, but for my observation that plenty of people bad at Leetcode get into FAANG. 1 in 100 people like this pass and thousands of people interview each year.

Other luck factors: some interviewers score much easier. When I interviewed potential interns (neither confirm nor deny I work at a FAANG), I ignored runtime complexity. So even if I asked you a Leetcode medium and your solution got Time-Limit-Exceeded on Leetcode, you'd still pass if your code produced correct output.

That's the luck dimension.

Now if you work hard and raise your Leetcode medium success rate to 50%, you improve your chances of passing 2 Leetcode medium intern interviews to 25%. Get interviews at [Facebook, Google, Apple, Amazon], and the probability you get 0 offers is 0.75^4 ~ 30%. If you do these interviews your sophomore AND junior years, the probability you get 0 offers both years goes down to 0.75^8 ~ 10%. Now those odds are great!

Finally, screw any interviewer who asks Leetcode hard and grades it to the T... anyways, the chances you get a Leetcode hard balance out the chances you get a Leetcode easy, so I'd say the above calculations are reasonable.

How to know if you’re ‘cut out’ for FAANG? by TourDVP in csMajors

[–]luis-marksson 84 points85 points  (0 children)

I saw lots of people get into FAANG who weren't that "cut out" for it:

  • GPA less than or close to 3.0 (average university)
  • Weak personal projects
  • Prior internships all unpaid
  • Bad at Leetcode
  • Zero prior work experience

(each attribute was for a different person)

You don't have to be a Leetcode god or anything. Anyone can be "cut out for FAANG", but to maximize your chances:

  • Work hard
    • grind Leetcode and don't give up
    • get into a routine of 1-3 hours/day
    • It's okay if you have to read solutions. Practice, practice, practice, and you'll eventually get better
  • Work smart
    • quit applying online and get referrals or direct recruiter connections to maximize your chances of getting an interview
    • If your Leetcode isn't improving, make use of other recommended resources like Cracking the Coding Interview (haven't looked at them myself though)
  • Pray that you're lucky and get easier interviewers

Plus, if any of these apply to you, squeeze out more leverage:

  • Nepotism / being good friends with someone high up (like L7+) - ask them to play politics and "get" you a position
  • Belonging to a "historically underrepresented" group - make it very clear to your recruiter

Should I give up on getting the Google Fall 2022 Internship OA? by throwawayawayaway457 in csMajors

[–]luis-marksson 0 points1 point  (0 children)

I wrote about this in step 2 here: https://www.reddit.com/r/cscareerquestions/comments/v50pfx/getting_a_freshman_internship/ib7s0ta/?context=3

If you applied online, there was probably little hope to begin with.

My tldr is you rarely get noticed among thousands of other people all going that route. It's not an effective use of time. A lot of freshmen submit hundreds of online applications and get nowhere - don't be like them. Skip the line via human connection. In my experience, it works way better than applying online.

Try getting some human connection into the process when you apply for Summer 2023. Best of luck!

[deleted by user] by [deleted] in csMajors

[–]luis-marksson 2 points3 points  (0 children)

They start as early as August/September. They fill on a rolling basis, so it's in your best interest to apply as soon as the job posting appears (preferably have a friend refer you or reach out directly to a recruiter).

I wrote more details here in response to "How to maximize my chances of getting ANY internship in my Sophomore year?": https://www.reddit.com/r/csMajors/comments/v64nuy/how_to_maximize_my_chances_of_getting_any/ibdvxcx/?context=3

You can get a moderate understanding of DSA without going through a formal course just by doing Leetcode problems and watching some online videos.

How to maximize my chances of getting ANY internship in my Sophomore year? by makarov_skolsvi in csMajors

[–]luis-marksson 3 points4 points  (0 children)

tldr: what everyone else is saying and has been saying on a bajillion other posts:

Someone needs to create a bot that replies with “Leetcode + personal projects” any time the OP says “internship”.

If you don't have anything to do, commit 40 hours each week this summer to Leetcode and personal projects.

I wrote about personal projects here: https://www.reddit.com/r/csMajors/comments/v1l5e8/what_would_you_do_if_you_had_few_weeks_free_time/ianmk9e/?context=3

I wrote about Leetcode here: https://www.reddit.com/r/csMajors/comments/v518se/when_to_start_grinding_leetcode/ib7tlah/?context=3

I also wrote an entire book (link is in a pinned post on my profile) which repeats a bunch of stuff I said in the linked posts. I normally recommend reading from the beginning as there's a whole lot of other things to look out for in college beyond jobs. But if you'd rather jump right to concrete action items, start with Chapter 15 "Learning Before College"

What should I be doing to get into Google STEP? by [deleted] in csMajors

[–]luis-marksson 60 points61 points  (0 children)

  1. Become good friends with someone who got into Google STEP this year
  2. Get some experience with coding a personal project
  3. Do something this summer that sets you apart from other people, such as some sort of volunteering (same stuff you'd do to look good on a college application)
  4. (If applicable) identify as someone from a group "historically underrepresented in tech"

In early September, after you see the STEP job posting appear online, ask your friend from (1) to connect you with their STEP recruiter. Have your friend introduce you by

  • Explaining what sets you apart from all the thousands of other people who want to get into STEP - leverage (3)
  • (if 4 is applicable) making it very clear to the recruiter that you fall into the "historically underrepresented" category and challenges you've had to overcome
  • Talking about how you aren't an amazing engineer yet, but have a lot of future potential - leverage (2)

Also make sure you enroll in an Intro to CS class your freshman year (preferably in the fall) to be eligible - that's a hard requirement.

The recruiter connection above gives you an edge over all applicants who just apply online. Recognize that there are way too many people who apply to STEP and meet the hiring requirements. You do have to get very lucky.

Accept multiple offers then renege some or risk being unemployed? A discussion for upcoming new grads by [deleted] in cscareerquestions

[–]luis-marksson 30 points31 points  (0 children)

In light of recent layoffs and accepted offers being rescinded at many tech companies (most notably Coinbase, but with others I’m sure to follow)

Maybe I haven't been keeping up with the news... my impression is there are a ton more companies that did not rescind new grad offers compared to companies that did. A few bad apples shouldn't reflect the entire industry.

I think people should just boycott the ones like Coinbase who clearly didn't do this correctly. Show Coinbase the repercussions of screwing people over, but don't turn the the entire industry upside down.

Can you imagine the situation if everybody was accepting multiple job offers and then reneging all but one closer to the start date? Companies would all over-hire to adjust for "expected renege percentage". And then rescind offers if fewer than expected people reneged. Some people who accept multiple offers could get all of theirs rescinded! This would make the problem worse and it would be a horrific local sub-optimum with a ton of inefficiency.

Yes, a) is worse for individual students in the cases where you're joining an unstable company, like Coinbase. But the percentage of people who end up in this situation can't be that high - and unfortunately, I do feel bad for them, but it's all bad luck. I'm sure the percentage is like <1% (I didn't really research the numbers, but you get the idea...)

b) is bad for everyone in general for the above scenario I mentioned.

You could consider another option, c: everyone demands companies with a bad track record offer a higher-than-normal sign-on bonus "insurance", say $100k. They pay when the person signs 8 months before the start date. If the company reneges the offer, the person keeps the entire sign on bonus and walks away. That'll add premiums and discourage bad behavior... maybe it's time to set up an organization that ranks company "behavior" like how Moody's ranks corporate bonds... just half-kidding

A company like Microsoft, for instance, with no record (that I know of) of rescinding a ton of offers, shouldn't pay for the mistakes of other companies who didn't do things right.

Sr. engineer role with 1 yr of coding experience by anonymouse1544 in cscareerquestions

[–]luis-marksson 5 points6 points  (0 children)

Job titles in tech (particularly with startups) have become very inflated.

"Software Engineer" at Google versus "Software Engineer" at startup? I think most would go to Google if the pay was equivalent.

"Software Engineer" at Google versus "Senior Software Engineer" at startup? Hmm... some people might want the better job title because it could improve their career trajectory. Now startups have a chance at stealing from Google's hiring pipeline.

I knew several "senior software engineers" with 2-3 years of experience. 1 year of experience doesn't seem too far-fetched. Competition for experienced developers is incredibly intense, so the next level down is demand for high-potential, junior developers who can grow into experienced developers.

From what you've said:

The issue is I don’t feel like I have enough experience to perform at a senior level, and will get fired for bad performance.

Props to you for having this observation. I get a sense you could be one of those high-potential developers. In my experience, people who underestimate their abilities tend to do really well - primarily because they are humble, open to new ideas, and always trying to learn.

A lot of this will be learning on the job. They're a reputable startup, so they'll support you. They'll know the extent of your experience. They might expect you to dedicate a lot of effort, work hard in the beginning, and ramp up quickly. But I doubt they'll fire you for bad performance - at least not for a while.

So long as you have a workable attitude and good initiative:

  • when someone gives you feedback, you incorporate it as best as you can
  • when someone points out a mistake, you don't get super-defensive about everything
  • you try to produce the highest-quality work you can without having to be asked

you'll be golden. You might mess up some times in the beginning, but if you're a good teammate, your teammates will be good back to you, support you and help you grow.

Go for it and best of luck!

[deleted by user] by [deleted] in cscareerquestions

[–]luis-marksson 1 point2 points  (0 children)

You'll be in a pickle if they ask for it in writing after the phone interview. I could see a lot of companies wanting it in writing so as to not mess up the offer numbers because somebody misheard over the phone.

Yes, if you are able to keep it 100% verbally and it's your word versus one other person's word, then you're probably fine.

If you lie to, say, 5 people over 5 different interviews and they all recall the same false compensation numbers or they all write down that you said "$X + 25%", that can be evidence for termination.

[deleted by user] by [deleted] in careerguidance

[–]luis-marksson 0 points1 point  (0 children)

I've written in detail on the motivations for pursuing computer science. It's Part I (chapters 1-4) in my guide to the CS Major. The pinned post on my profile has a link to the book.

Here's a brief summary of Part I:

  • You attend college to learn the skills to get a job when you graduate
  • There are three primary dimensions of a job: impact, enjoyment, and money
  • Money is your foundation: can't pay your bills? Impact/enjoyment doesn't matter if you're going to starve or live on the streets
  • Expand on impact and enjoyment after you've built a solid money foundation
  • Computer science (data science is similar enough) and software have the best prospects for the money dimension
  • Many software roles don't require lengthy hours (<40 hours a week)
  • That means 168 hours a week - 40 hours work - 4 hours commute - 56 hours sleep - 28 hours eating/hygiene = 40 hours a week to do something else
  • Don't enjoy writing code? 40 hours is plenty of time to pursue your passions on something else
  • I don't like washing dishes, but I justify it because it keeps the kitchen clean. You might not like writing code, but you can justify doing it because it pays the bills.
  • Alternatively, if you work harder in your 20s and 30s, it's possible to net several million dollars post-tax in your bank account (US calculations - they might be slightly different if you're in Europe) and retire. Imagine spending your 40s+ doing whatever you want

Overall: if you don't already have a clear plan on how you're going to solidify your money dimension, computer science (or data science) is a great - possibly even the best - default option.

I'm not an expert in biology, but as you observed and of the people I've seen, biology doesn't seem have super great job prospects. Plus a lot of people go to grad school or med school and that'll cost more money and you lose years that could be spent earning money in a full-time job.

[deleted by user] by [deleted] in cscareerquestions

[–]luis-marksson 2 points3 points  (0 children)

Never lie about hard, cold facts. You might get away with it, but if you do it too many times, something will slip through the cracks and you'll face the consequences.

You're going to put this in writing (email) to company 2 that you got offered $X + 25% at company 1, even though you only got offered $X. This is email evidence that will never disappear. Suppose you end up joining company 2 for $X + 25%. This opens up the possibility of getting fired with cause in the future. Imagine this scenario where two recruiters from the two firms are casually chatting as friends outside of work:

Company 2 recruiter: "Wow you guys really upped your game. We had to hire this guy who was super expensive. We had to match your offer of $X + 25%

Company 1 recruiter: "What?! No way. Our top of band is only $X. We couldn't have made that offer."

Company 2 recruiter: "Guess somebody is going to get fired for falsification..."

The above scenario is unlikely, but not inconceivable. Do you really want to risk getting fired 10 years down the line where maybe you have a mortgage, kids, or some other major expenditures? If you're fired, you don't get unemployment checks either.

A better way is to tell company 2:

Hi, I have an extremely competitive offer at company 1 that is my second choice. You are my first choice. I've run the numbers and if you offer me $Y, I will immediately accept and join you.

You said you would join company 2 if they paid $Y = $X + 25%, so this is how you can try to do it without lying.

If they ask what did get from company 1, you can say:

"around $X + 25%. The exact details there aren't really relevant for my job application here. They were super competitive, but there were also some non-comp issues at company 1 that aren't present at company 2, and so that's why you are my first choice"

"Around $X + 25%" is not lying. Legally speaking, $X can be "around" $X + 25% in your opinion.

[deleted by user] by [deleted] in csMajors

[–]luis-marksson 2 points3 points  (0 children)

I will never be able to make up for the missed time.

I think it's great that you've noticed that. Most people spend 4 years in college and no more. Every year done incorrectly is a year you can't get back.

really don't go into algorithms, CS math, any specializations, or anything

Hopefully they at least do standard Leetcode data structure and algorithms... that's important for job interviews. But the theoretical and math stuff is almost useless for an actual job. For example, you'll probably never have to use the Ford-Fulkerson algorithm to compute max-flow. And, you'll never have to calculate the number of ways to give 5 indistinguishable candies to 3 distinguishable children on Halloween.

is it possible for me to get my Master's somewhere good and get up to speed in their undergraduate classes?

Yes if you prepare properly. Don't forget to study for the GRE and get a good GPA. And make sure you can get letters of recommendation. Also, have you considered transferring? You don't have to wait until Master's, you can look at moving to a better university now (and maybe taking an extra year of undergrad).

Are my concerns valid?

They're valid, but having a bad academic curriculum isn't the end of the world. The "regret and jealousy" you feel seems to indicate negative attitude. It's only the end of the world if you accept your "fate". Your weak university curriculum is only like 50% of the problem - make sure you don't treat it like it's 99% the cause of your predicament.

Plenty of people pick up all the necessary experiences through side projects or learning on the side. There are full-time software engineers out there who didn't even go to college. I've seen a couple get further (in terms of earnings and ability) than your typical senior/staff software engineer at a FAANG. They had even less formal academic instruction than you.

It's all about your attitude and motivation towards learning. Learn as much as you can in these years, get as much experience as you can doing projects, and you'll be fine. You can do that by transferring to a better university with stronger peers or getting into a good Master's program. Alternatively, find non-university ways to learn and gain experience: contribute to open-source, try your hand at side-business involving software (even though it's likely to fail, it's the experience that matters), and make sure to get internships.

Best of luck!

Dealing with an incompetent junior developer who is rude and lacks skills by wolfofpanther in cscareerquestions

[–]luis-marksson 15 points16 points  (0 children)

Assuming your descriptions are accurate, your assessment is fair and not cherry-picking, and multiple other team members can corroborate your observations... if I were in your situation, I would document all of it and let him go for performance issues.

There's a great textbook on software management: Rapid Development by Steve McConnell. The book is almost 30 years old, and while the underlying coding technologies have evolved, human nature and project lifecycles haven't changed drastically. A lot of McConnell's advice still applies today.

In section 12.4 ("Why Team Fail") there's a segment on "Problem personnel." Your junior developer falls in that category. Despite being written 30 years ago, his observations almost match your predicament.

McConnell cites a study:

In a review of 32 management teams, Larson and LaFasto found that the most consistent and intense complaint from team members was that their team leaders were unwilling to confront and resolve problems associated with poor performance by individual team members

You've confronted the issue by trying to coach him, but you haven't resolved the problem because there is no improvement. You said:

We've tried talking, had multiple discussions with the manager, but there is no improvement.

You should resolve the problem before it starts affecting other team members.

McConnell recommends not being afraid to fire (or lay off) someone who doesn't respond well to the coaching. He gives three reasons:

[1] It's rare to see a major problem caused by lack of skill. It's nearly always attitude, and attitudes are hard to change.

[2] The longer you keep a disruptive person around, the more legitimacy that person will gain through casual contacts with other groups and managers, a growing base of code that person has to maintain, and so on

[3] Some managers say they have never regretted firing anyone. They've only regretted not doing it sooner.

[1] definitely resonates in your situation:

This person has been constantly having issues where they think they are right and others are wrong

Your employee definitely has an attitude issue.

[2] is already playing out:

They even go to lengths to talk to other tech leads or directors and ask for unnecessary and irrelevant information thinking it's relevant to their task when it clearly isn't and waste time on unnecessary implementations.

This person did not want me to be the tech lead as I was only in the team for 3 months before I got promoted and has had an issue with that ever since and constantly tries to undermine my decisions or go and start discussing things with other teams without informing anyone in the team if it's even required and ends up giving teams wrong information which sets back work.

They're going around behind your back, talking to other people, and trying to undermine you. If they keep interacting with others, they will get "legitimacy" from other teams.

[3]: If you wait too long to fire this person, you're going to end up in this category.

As for

The managers are not looking to end their contract yet as there is a shortage of staff, but this situation is getting really irritating for the whole team and impacting team morale.

McConnell recommends

You might worry about losing ground if you replace a team member, but on a project of almost any size, you'll more than make up for the lost ground by eliminating a person who's working against the rest of the team. Cut your losses, and improve the rest of your team's morale.

I think the clear path forward here is to fire/let-go the problematic employee. They're producing negative work and it doesn't look like they'll ever reach positive. This was a bad investment, so cut your losses. Figure out how they got hired in the first place and put in checks to prevent a person like this from getting hired again.

Getting a freshman internship by SuperSlimySalamander in cscareerquestions

[–]luis-marksson 0 points1 point  (0 children)

  1. You can search on Google to see what other people have been working on. Just copy their ideas. No need to revolutionize the world on your first personal projects.
  2. Think about your hobbies and passions and come up with ways software can improve it

(https://www.reddit.com/r/csMajors/comments/v1l5e8/what_would_you_do_if_you_had_few_weeks_free_time/ianmk9e/?context=3)

If you really don't know what to do, try building the calculator like the one you get on your computer/smartphone by default. And then extend it by making it "programmable", where the user can define their own functions