I’m really happy to hear everything is going well Before I follow with my exploration. I hope you don’t mind my many thoughts - it’s actually really helpful for me to explore my own experiences and your push back helps me a lot Giving advice is the best way to receive the advice you need, if you know what I mean…
You should definitely post on reddit btw - it’s more popular than here. Some places you could ask would be r/haskell, r/scala, r/programminglanguages, r/rust. I would also consider the FP discord channel and the haskell foundation slack channel. Each of those spots is always very welcoming and responsive.
I think I probably oversold the “15 tries” - while I only emailed say 20 people, I threw out a bunch of linkedin applications! I also put a good chunk of time into cover letters. The key that I’ve learned from my experience was that many companies need to be “poked” into hiring for some reason. As I say, of the 4 screening calls, 3 of them wanted to hire but didn’t have the time to set up a careers page entry, and so I got “first dibs” just by asking and emailing directly to companies and employees that I just read about online (open source, old blogs, reddit stalking etc)
Yeah it really is a little philosophical. For me, in the past, I used to feel super awkward about messaging and emailing people out of the blue. It really felt invasive to me to do so! Plus I’m English - so I was always hesitant to do the American “reach out”… But I’ve learned that coming across friendly and inquisitive in the work gets me a reply 90% of the time (often after a good delay), without a resume. It’s amazing how helpful and friendly people are LOL. It’s funny how jumping off the cliff of cold-emails was just a one time thing (my Dad pushed me to stop being a baby about it…) and now I feel totally chill about it.
You know that’s a really good point about the competitionist view. I think you’re right - I’m undervaluing the experience aspect of things… Maybe you can focus your time and go deep into a topic that interests you. Perhaps you can split your time? Maybe 30% generalist studying and 70% reading papers on one topic to become intimate. That would be a good optimum so that you sound generally knowledgeable and research-area-aware, whilst also being able to talk deeply on a topic.
On the other hand, while you have a weakness in terms of background, you can gain a strength in terms of soft skills. Some things that would come across really well would be communication, confidence, passion, friendliness. As I said before, these professors are ultimately going to have to deal with you for 3-6 years. That’s a big commitment! My point being that catching up in technical areas is very important, but I expect that many candidates might forgo the soft-skills aspect of the application process. In particular, let’s say hypothetically that you have some grades in technical and soft skills, say C for technical and C for soft skills (I have no idea - these are just random grades). It can be really hard to grow into an B/A in technical - that can take months, but thinking about narrative and how you talk about your experience can quickly make you stand out as a thoughtful and introspective student. Especially in your situation, this could be a way to get ahead where others might falter or neglect. For example, none of your competition is meditating or journalling on where they want to be in five years, and not everyone is asking themselves why they are pursuing research like you are. These kinds of things will take at most 5-10 hours of your time, and won’t eat into your technical work time (they would likely augment your technical work!). Just that time will get you an A/A+ in soft-skills.
I think you’re right, spend the vast majority time catching up on research, but also spend the effort into soft skills and thinking about your “story” - it’s an incredibly efficient (it takes little time!) way to catch up lost time, and to surpass the competition in interviews. I think you can come across as very thoughtful and self-aware: “This is where I want to be in 5 years. This is what I’m doing to get there. This is why your research specifically aligns with my goals.” At the end of the day, the people looking for students are people, and people hire people, not resumes - the resume just gets you through the door.
Thinking about other people is really tough. I struggle with this so much… I think it’s so important to remember when comparing yourself to others that everyone feels they are worse than those around them… For example, I have no internships, no published research of any kind, no provably-correct lambda calculus projects, graduated in 4.5 yrs, but two of the roles I am looking at would be joining the teams as a junior on teams with academics. I think framing is everything. My projects look exactly like yours. For example, for me I pulled two college projects that were research-like (but absolutely unrelated to PL) and then my side interests that were related to PLs, and combined them to make me a “researcher interested in PLs” - no lies, just framing. Maybe you can do something like the following:
- I have done such-and-such research in college. This can be as boring as a final paper for a class, perhaps unrelated to computer science even.
- I have done such-and-such work with PL techniques for engineering problems. For example, I think your two projects are super interesting - you can make them incredibly interesting.
- Tie these two things together, and don’t undersell the engineering effort
“I used Haskell’s Servant library, which uses type-level programming to ensure that server-client serialisation is more accurate and maintainable. I also found out xxx about using Haskell for chat bots. In particular I learned that type-level programs can ensure xxx in real-world programs. I am writing blog posts in the hopes that I can share this knowledge.”
“One aspect of PLs research that I feel is neglected is user-experience, particularly the ability to design systems that allow non-academically minded people to engage with PLs without having to crawl through the recent dependent types literature. I wrote an interactive guide… it allows users to learn… I think such projects are critical in tying together the boundary between academic research and the end-user experience of the products of research.”
each applicant should not worry about how other people are doing?
I’ll give a quick anecdote of something I experienced recently. I was talking to a college friend who is really smart and talented (certainly far more than I). This guy is 2 years ahead of me in the PLs world, and he’s on top of his shit. When I checked his github, it was awesome: he had two years of research experience with fully fledged typing rules and latex galore and was recently writing a very cool type checker with liquid haskell. I was immediately jealous. But after some jealous digging, things started to demystify (with some emotional self-soothing LOL) - some of the papers were incomplete, or written in a cohort; it turned out the liquid haskell was following a blog series (it was still awesome and creative - but he didn’t start from scratch). The point being, that when we criticise our work, we can do so with ease because we see all the laziness, all the shortcuts, all the countless wasted hours, the copy-pasting. But then when you see your friend’s Rust compiler contributions and proofs you see none of that. Now my college friend is more qualified than I for a graduate degree - but it’s nowhere near as drastic as you think. Ultimately, if you have completely self-motivated work and you can tie it clearly and concisely to your research interests (show you can write well!) then you’re a big winner. Try to think about how your projects can “win” over hers, even for a professor you can make engineering work be research related:
I wanted to explore new educational tools for exposing non-programmers to FP, particularly throw a web UI. I did this ON MY OWN
I contribute to the community with blogs because I think that modern PLs research should focus more on outreach. I want to contribute to educational work that can tie together [insert cool PL topic] and practical industry application.
Like that Elm project is awesome, that’s research if you think through what you learned and write a blog post about it!
I want to really point out how silly this thought is for example:
Plus, it’s not like others cannot, or haven’t done those before.
I don’t mean to offend but you literally said “plan to write a blog on using websockets with Servant (there currently doesn’t seem to be one)”! Also, if we want to compete with your friend (playing into the self-abusive thoughts game - I think competing is silly but I want to point out that even the competition has no clear winner)… your friend is contributed to a compiler that as of right now on github has 3514 contributors… Now think about how many compilers there are… I hope you realise that there’s probably fewer people that have written an interactive UI for a compiler with a tutorial guide than there are contributors to major compilers!
Just remember that smart people suck at marketing, and humans fall for marketing. If a dunce like Donald Trump can sell himself as a president, you can sell yourself as a candidate for a graduate program.