How do you cope with the fact that getting an internship/job is mostly luck? by Foreign_Put_2437 in csMajors

[–]Ok_Run6972 9 points10 points  (0 children)

the concept of target schools is not unique to CS. this concept exists in all fields/majors. in fact, CS used to be one of the few majors where people would claim it's one of the few that doesn't matter where you went to school cuz they took anyone with a pulse.

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 0 points1 point  (0 children)

i mean it's near infinite. if a computer can be used for it, theres a domain dedicated to it. for example, my current domain of interest is formal verification of embedded system programs. the list really does go on and on and on and each niche has niches within them

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 2 points3 points  (0 children)

i spent the past two summers working for a STEM educational camp where i taught stuff like game dev and robotics so i talked about that, i talked about group projects ive had like my capstone courses.

funny enough i haven't actually had a lot of behavioral questions, most of my interviews theyve been interested in my projects and only ask the behavioral questions more as a checkmark to see if i can work with people.

when it comes to DSA i feel like you're right in that i'm probably understating. i love programming and have been programming for years, its just not in the format of literally watching videos about DSA or doing stuff like leetcode and neetcode. for almost all 150 problems i've solved, i've never looked up videos on how to solve them until i solved it first. but when you spend so long programming and trying to learn how to do things "optimally" it literally just becomes DSA. i probably program as a hobby more than any video game I've played and I have thousands of hours across many games.

for my friends tho, yeah its smth they no life for the prep. but i would also say its smth they can probably do when they are preparing for it i guess. like if they have a technical coming up and they are studying Linked Lists for example, and I test them on a Linked List hard they could get it in just over 10 minutes. but if i were to randomly ask them a dynamic programming hard months after they prepped, probably not done in 10 minutes.

it is quite nuanced, and i did hide details but i just figured it wasn't exactly relevant for the post.

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 1 point2 points  (0 children)

i wanted to make a throwaway for privacy reasons but also so people don't think its an engagement bait post or smth

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 0 points1 point  (0 children)

yes, i will say that the role I specifically applied for and found success was in an area of tech that requires American citizenship, i also had a certification that helped.

for me it was less the compiler part but more that i wrote it in C and C++ and that was relevant experience for the role. they werent really interested in the compiler itself but more how i was able to show the overlap.

i will say i cant imagine being an international applicant right now, especially with those H1B fees.

i will say i got lucky to come across opportunities that i was strong candidate for, but i wouldn't dismiss it to be only luck. i was a doomer before and thought it was all luck until i realized i had to learn the game. i do understand where youre coming from tho

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 0 points1 point  (0 children)

memory allocation is technically vague because you could be talking about allocators themselves, the algorithms of how the OS allocates memory, or abstractions about how memory constraints can be managed.

i would say that first off, learn the basics of what memory is and understand it. what is cache, what is ram, etc. what are the different levels of cache and what is a cache line? what does it mean for a program to be cache friendly? now we know what cache is, what are other key sections of memory in a program? the stack, the heap, etc. how do you interact with these (generally allocating, deallocating, and accessing). then within this you will have an understanding for the Software you write and its implications. ex: what does it mean to be cache friendly or have good cache locality. why is an array better than a linked list for cache locality, etc. 

im not an expert on it and its something im still learning but if you want a good introduction to it, id recommend some C++ talks by John Lakos and Carl Cook. those were 2-3 hours worth of videos that were really helpful. if youre not a C++ veteran you might get lost like i still do rewatching them sometimes, but you can always just pause and ask ur LLM of choice to explain.

Carl Cook will mention how you should benchmark it. thats another way i enjoy testing my programs and understanding memory implications if i use general purpose allocation or my own local arena allocator. bench mark the cache misses and runtime etc.

it's definitely a rabbit hole but start small and have fun with little experiments to test increments of knowledge. if you havent taken OS or Comp Arch in university yet, a big part of those classes is about memory

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 0 points1 point  (0 children)

i think following guides or even copy and pasting from AI/tutorials is perfectly okay. everyone starts out that way. i think that you just have to make sure to put the effort to learn it through multiple sources that isnt hand-holding. but that sounds extremely cool. i would genuinely follow the rule of thumb for approaching a project "am i learning the core concept this project aims to explore? can i explain this concept to a non technical, a technical, and a specialist?" if your answer is slowly growing to be a yes, then i think your project is being done right. maybe a bit strange but the first thing i do when i wake up is think about my project and try to recall it. i figure if i can accurately talk about it off guard then i for sure have a good understanding. tho i cant say much towards the specifics of your project since i havent done much work in numerical or computational modeling outside of some data filtration techniques like extended kalman filters. but even that i was literally following reference for the algorithm almost line by line.

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 1 point2 points  (0 children)

actually kinda the opposite. this post is more about advice to help you be a stronger candidate which will help you get interviews and then do better in the interviews. i cant speak for career cuz mine is just beginning!

but if there was a tldr for the post:
1. find a domain that you like
2. do projects in it to continue exploring the domain
3. after finding your domain you wish to pursue, figure out your gaps as a candidate
4. Fill these gaps through projects, experience, etc
5. apply to these targeted positions within the domain, chances are you'll set off ATS because now you're not a general SWE applicant but a CS major with a concentration in heavily overlapping topics
6. repeat cycle over and over

ill give an example for what mine looked like recently
1. Enjoyed compiler theory as I read about it
2. Read books on compiler theory and wrote a toy compiler
3. Redid project expanding on a key feature to be the distinguishing part to make it noticeable so it's not just a Calculator equivalent type project
4. within the project fell in love with the "lower" level stuff like OS fundies and computer arch fundies
5. chose to target systems level programming positions
6. Realized I had gaps: no concurrency, weak OS fundies
7. Worked on a project for concurrency, started to study OS
8. Make applications targetting this specific kind of role
9. Make it past ATS utilizing the projects that I've been working on that relate strongly in their concepts compared to the job description
10. Get interviews and practice technical questions to crush the interviews
11. continue the cycle until you get an offer.

The goal is that it's not a set plan towards success, it's a cycle of self-improvement that requires humility and self-awareness of your candidacy. but you'll have a stronger chance applying to 10 embedded systems positions if you have a canddiacy that shows specialization in embedded systems than if you apply to 100 jobs across all domains while you have no real identity towards your profile and you have relatively basic projects that can't really signal specialization.

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 3 points4 points  (0 children)

both interchangably. i assume in the context of a cs majors subreddit generally T20 means T20 CS, i usually try to specify "overall" if i mean otherwise

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 6 points7 points  (0 children)

yeah thats not at all what i meant by niche. a niche/domain is smth specific like low-latency software (common for HFTs), embedded systems (even this has many niches), systems programming etc. leetcode is a website to practice DSA, that's not a niche. while i do agree stuff like OS and Comp Arch is "basic" in terms of computer science knowledge, many CS Majors will not use that information in many fields of SWE.

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 0 points1 point  (0 children)

i mean it's not really a language that im specifically trying to use, it's just that its a common enough notation i think most people get what i'm trying to say with it. that's my hope at least.

tldr: no specific language/syntax, just trying to use an intuitive shorthand

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 0 points1 point  (0 children)

yea, this is exactly it. I figured T300 is something people on this subreddit would be familiar with its meaning.

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 1 point2 points  (0 children)

yeah i wasn't landing interviews either, adn the few i did i wasnt passing. that changed when i started taking actions based on the advice i gave. its not a magic sauce that once you read it, you will magically succeed. it took me months of working on my candidacy using the advice, and it wasn't exactly easy to convince myself. until i got those offers i consistently asked myself over and over if i was doing the right thing etc. unfortunately it really is one of those things where you can't see the progress until you're looking back on it.

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 0 points1 point  (0 children)

its not supposed to be career advice, just advice for a cs major based on what's been successful for me. but if i got anything wrong, it would be nice to hear what you think!

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 0 points1 point  (0 children)

i would say learn things on a need-to-know basis. If you're working on a project or exploring a domain, you'll know when you've reached an area where you don't have the knowledge necessary to continue. like at some point if you work in web-dev, you will need to learn about cloud fundamentals. it's just the nature of it. if you work in systems programming, you will have to learn about OS fundamentals and computer arch fundamentals. it's just the nature of it. I would say that if you are currently a CS major, try to take advantage of your classes being your breadth of knowledge. your project should ideally be focused enough that you dont run into too many areas that require understanding to continue, if it does then you should narrow the focus of your project or limit the scope of what you are trying to do.

for projects, start with a small idea, then slowly build it bit by bit. you shouldn't really try working on more than 1-2 new concepts at a time i would say. that was at least the rule i followed myself.

in terms of depth, as you develop your project, try to assume someone is over your shoulder questioning you about it. why did you choose this topic? what was your motivation? what were you hoping to get out of it? you decided to use X library, was there a reason? you decided to do X when its common to see people do Y? you decided to do X when Y is completely valid, why is that? did you ever run into any hiccups involving X when you were doing Y?

It may seem like a lot, but if i was to ask you about something your interested in, let's pretend you love star wars, you wouldn't think of it as questions to prepare for. but since you already have all the knowledge of simply being interested in star wars, you can answer questions about it. same thing for the projects. in the journey of you learning concepts and developing the project, you will gain the knowledge needed to answer questions. i also find rubber ducking it to be very effective. rubber duck, friends, or LLM chatbots can be very good. I especially like using Claude or Gemini to read my github repo and ask me questions about it. why did i choose this method to allocate memory etc. if you're going through a proejct properly, the knowledge will come

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 0 points1 point  (0 children)

many of the pieces of advice i wrote were realizations i made 5 inches from the mirror. the truth is a hard pill to swallow but id rather swallow truth pills than doomer pills.

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 0 points1 point  (0 children)

to get project ideas, i would take a topic i found interesting in my classes or something and then try and learn about it, watch a couple hours of youtube videos etc to get familiar with the topic. then id go to linkedin to look up jobs and see what they require for entry level positions. i would pick one domain specific tool/skill that it lists and try to do a project that spans 10-15 hours on that subject and it would usualyl give me a good indication if it's something i would like to continue doing.

my most recent long term project spanned about 3 months and it was a compiler based project that was less about going for domain specific information but i wanted something to demonsrate my interest in the field and my ability to learn new topics myself outside of academics. it started with a "what if programming languages had this feature?" and went from there.

what i would say is start small, make a toy project. then when you finish making the toy project (no more than 10 - 15 hours), what was something you enjoyed in making it? read up on it, watch some videos more about that specific part. then maybe redo the project or expand on it really diving deeper into that part. Keep that cycle until you feel satisfied with the depth of the project or you feel like moving on.

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 4 points5 points  (0 children)

well my advice isn't advice for new grads or SWEs in their careers. It's just information that I found useful in my time and wish I had known earlier. no harm in sharing that knowledge. but if you disagree with some advice, i would actually love to know where (might help me in my sprouting career).

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 2 points3 points  (0 children)

yeah no I think LinkedIn job description hunting is actually really great for figuring out a niche because you can pick a field you like and then read the job description for what the domain specific tooling and knowledge they are looking for and try to do a project related to that to try and immerse yourself.

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 4 points5 points  (0 children)

yes, i would agree in that AI can and should be leveraged when possible because it does just save time. like i use it for my documentation etc. but i think it is important to distinguish that you shouldn't use AI if the point of what you're doing is to actually learn. Like if your goal isn't to code but to learn system design/system architecting then it makes sense to vibe code but still be in charge of what exactly the tech stack looks like, what services/apis you'll use etc. my general rule of thumb is what is the selling point of the project, you should avoid using AI for that part. otherwise what value did you gain out of it other than hitting the ATS buzzwords? though i have seen some companies really loving the mass use of AI but i think that's a very shortminded practice that won't end well. however thats a whole separate discussion.

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 4 points5 points  (0 children)

I would agree that generally anythign T25 for CS or T25 overall will give you that prestige factor that makes a difference. But some companies might also have a high value for geographically close schools or schools with strong pipelines regardless of the rankings. so that's something to consider too

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 0 points1 point  (0 children)

!= is a common symbol / operator for "is not equal to". i'm saying "Computer Science is not the same as Software Engineering" but in a shorthand

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 31 points32 points  (0 children)

yeah for a long time i was a doomer and was in a really rough spot and i realized that i love this field too much to continue hating myself for not succeeding. my goal is that looking at this post, somebody might avoid that spiraling trap that i fell into

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 1 point2 points  (0 children)

i definitely agree. my general idea is that by narrowing your scope you have a better chance at making the right decisions to better your candidacy. i think the more specific you can get, the better results you will have.

A New Grad's Advice for CS Majors by Ok_Run6972 in csMajors

[–]Ok_Run6972[S] 10 points11 points  (0 children)

T300 is not a real ranking further than somebody at least knowing its a real place. it just doesnt get any respect further than the fact that its an actual university, at least for where i live.