Welcome back to my guide to NYU CAS CS! Hope you enjoyed the last post. Here’s a few other topics that I feel are important for CS majors to know.
Go to class
Go to class
Go to class
Seriously. Nobody has ever gotten a better grade in a class by not attending. Yeah yeah, I know you have a “reason” you’re not going to class. The professor sucks. You’re just too far behind. You don’t want to wake up early1. You’ll just end up more confused by going to class. You can just teach yourself with YouTube.
Sorry, but no. All of those excuses are bullshit. Professor sucks? Alright, so you may not get a lot pedagogically out of the class, but you can learn a lot about how they grade, how they think and what they’re planning on putting on the exam. Plus even if a professor isn’t great, going to class is still better than nothing.
Too far behind? Going to class will at least give you a roadmap of what you need to learn. Class isn’t just about learning new material. It’s about learning what you don’t know. Getting confused is a sign that you don’t know something that you should know. Which is great! Better to be confused in class than on an exam.
And if you don’t have the willpower to show up to two classes a week, something tells me you’re not gonna have the willpower to sit through 8 online lectures cause you skipped out on a month’s worth of classes.
Going to class is especially important in CS because professors don’t always follow the textbook carefully. It’s easy to get tempted because professors usually don’t take attendance but without a textbook or guidance, it’s really hard to make up the knowledge.
You’ve heard this a million times and honestly this advice isn’t gonna stop most people from skipping class. But at least I can say I told ya so.
I’m always amazed at how few students take advantage of NYC tech events. There’s always something cool happening in New York. Whether it’s Brooklyn JS, React NYC, Rust NYC, DigitalOcean NYC (best food), there’s always some sort of cool tech meetup going on.
But why attend non NYU meetups? After all, NYU has plenty of tech clubs and non NYU people are scary. For one, you get to interact with bona-fide software developers. Which can be a really great thing if you’re looking for work. Or just getting a feel for what programming is like as an everyday job. Or want to find someone who can mentor/teach you.
Another great benefit are the talks. Meetup talks aren’t always consistent since they’re done completely on a volunteer basis, but when they’re on point, they’re on point. A great meetup talk can be fun, interesting, and remarkably informative. Definitely read the talk descriptions before you go, but even if they aren’t great, consider attending just for the people.
Also there’s every college student’s favorite thing: free food. And sometimes it’s good free food—catered stuff with soda, beer and wine. Definitely a boon.
There’s also a few other events that are useful for CS majors. Hackathons are a big one. They’re an excellent way to force yourself to write code, planning, skill or quality be damned. This is wonderful, as the biggest barrier in programming is just getting started. You can get out of your head and just write the damn code.)
But at the same time, hackathons have their limits. For one, they’re not often conducive to long term projects. You can and should take your hackathon projects and work on them after the event, but unfortunately it’s not very common. Especially since the code in a hackathon is generally not fantastic, since it’s being written extremely quickly and without too much care.
Another limitation of hackathons is the lifestyle they encourage. Part of the joy of a hackathon is staying up all night, cramming junk food and pounding coffee. Which is fun for the first few times. Then, at least for me, it gets old. Maybe I’m just getting grumpy in my old age, but sitting all night in a plastic chair, feeling progressively worse from the lack of sleep, the caffeine and the junk food, just doesn’t sound great. And it doesn’t really reflect the reality of programming. Jobs (hopefully) don’t require desperately programming on little to no sleep in order to make a deadline.
But hey, don’t let my grumpy kvetching stop you from enjoying hackathons. They’re truly fun, memorable experiences for a lot of people. If they sound interesting to you, I have a whole post outlining everything you need to know about hackathons.
Finally, there’s conferences. Conferences are tricky cause they tend to cost money to attend. Often lots of money. On occasion the organizers will offer discounted or even free tickets to students. One opportunity I had that I really appreciated was Racket School. I was able to attend for free including my flight out and accommodation. I got to learn about Racket and language oriented programming from the creators of Racket. A very awesome opportunity for (basically) free.
You should, of course, attend meetings at any/all of these clubs. More importantly, you should get involved in running these clubs! Each and every person I know who helps run the tech clubs at NYU wants more people who can contribute. Whether it’s figuring out the logistics of room reservations or helping teach a workshop on front end development, every bit is appreciated.
BUGS in particular has some very cool projects that they’re working on, such as an Albert API. If you want some stuff to put on your resume, hit them up.
Learn git. This is a rehash of my CSO advice, but really it’s applicable to every single CS student. You can have a job that doesn’t use your data structures knowledge. You can have a job that doesn’t use Java or C or Python. You basically can’t find a job that doesn’t use git2.
And yeah, it is a pain at first. And you will run into complications where your git repo gets mangled or has to be rebuilt. But in the long run it’s certainly worth it.
Another benefit of learning git is that you can start to participate in open source! Open source is great because it allows you to build a portfolio and contribute to some major projects. You can work on anything from the internals of programming languages to front end frameworks to other people’s personal projects. This is an amazing way to practice contributing to large codebases. Which, ultimately, is going to be a lot of your work if you program for a living. Knowing how to write code is great. Learning to read code is arguably as important.
Plus it’s a great way to get your name out there. If you can get some recognition in the open source community, then you could easily parlay some of those contacts into a job.
Email: Use It
I’ve found that people don’t use email to its fullest. For one, you should email as many people as possible. Met someone cool at an event and want to keep in touch? Shoot them an email? A conference costs too much? Send them an email asking about scholarship tickets. Want a job? Write an email asking for one3.
The important part is to be utterly shameless about email. Send emails to everybody. I mean I’ve sent emails to CEOs of billion dollar companies. I’ve sent emails to the creators of Python, of C#/TypeScript and of Swift/Clang. Send emails asking for jobs. Send emails asking for money (for your club, obviously not for yourself). And definitely send follow up emails. Chances are the person who didn’t respond to you just forgot about your email. Or the email got buried in their inbox. Think about all the emails you forget about in your inbox. Unless you’ve sent two or three follow up emails, you haven’t done enough.
Once again, there’s an entire post on email
That’s all for now. If I come up with more general topics to write about for CS majors (or if someone emails me with other topic ideas), I’ll write a third part. But until then, I hope this advice is useful and that you make the best of your time at NYU, studying CS or otherwise.