> A Note for Prospective Graduate Students <
You are interest in a Graduate Research Assistant (GRA) role in my team. Please read this note carefully, and if you think you qualify and you would enjoy being on my team, please fill out the form.
What is this for? It has always been a joy for me to work with graduate students. However, I've been receiving an overwhelming number of emails requesting RA positions. To be frank, many of these emails are just generic expressions of passion and interest in my research, leading me to treat them as spam. To minimize my false-negative rate, however, I am trying to build a bridge for those who are a good fit for my projects to reach me more easily. I hope that this effort also makes your life a little easier.
So, please do not take any part of this note as discouragement, but only as clarification.
My projects are often code-intensive. What does it mean for you?
You are singing up to work on development of complex* software products. If you are skilled in and feel passionate about programming, Software and Data Engineering, this is where you can build a rich resume. In contrast, if you do not feel confident in those areas, these interesting challenges will overwhelm you and therefore, very quickly turn into annoying deadlines. Students who end up in such situations, do not learn much during their RA-ship. That would be a bad investment for both of us.
If you are not proficient in programming, a simple experiment design may take weeks for you before you even come close to a relatively descent solution. Over time, this would be a huge disappointment for you, and even worse, may leave you with crushed confidence. You don't want that, and I don't want to be the reason for that!
* complex by academic standards and not by industry standards
So, how do you know you are a good fit then?
You are a good fit if you can turn a task into a well-formulated problem, decide what pieces you need to build, code those pieces using classes and methods, design experiments and implement them. For example, imagine you are asked to investigate the probability of pressing each key on your keyboard. Where would you start? What classes and methods would you need to implement? What would be the class variables? What experiments would you design to measure the probability of pressing each key? Is there any dataset that help you in solving this problem?
You are a good fit if you hate being spoon fed! Large projects won't work with micro-management. Although I do not mind guiding new RAs with baby steps and micro-managing them for a while, the idea is that after a month, you claim responsibility for your role in the team; i.e., you can come up with answers for your own questions, point out potential risks, and prepare the team for upcoming challenges down the road.
What are the red flags!
Consider it a red flag for joining my team if . . .
your previous projects never went beyond Jupyter notebooks (Google Colabs, etc.),
so far you've managed to solve problems by scripting (POP) as opposed to using OOP and FOP concepts,
you need to google the basic syntax (such as declaring a class, updating a dictionary, etc); you do not know the difference between mutable and immutable data structures; a triple nested for-loop does not concern you; preliminary things of that sort,
you never used virtual environments for your Python projects,
you always managed to get things done but you could not explain your approach to others,
you code to solve a problem but not to produce a reusable product that is well written and well documented.
What to expect as my RA?
It is often said that data science is 20% ML, and 80% everything else that make ML to be even an option. I believe that is still optimistic. You can expect <10% ML on my projects! The "remaining" 90% covers all other exciting challenges, from data collection, integration, and curation, and preparing data for a specific ML task, as well as building appropriate custom evaluation measures and methodologies, to stay clear of nonsensical comparisons and claims like "my model beats others"! Also, probably you already know that ML is not model.fit() and model.predict().
You would be responsible for building pipelines which can take care of all the things mentioned above. In my team, you would be using Bitbucket, Jira Software, Confluence, and whatever else that comes handy for managing collaborative projects. For computation-heavy tasks, you may be given access to our server to use our CPUs and GPUs through Docker Containers.
You would be asked to find solutions for problems which - although not very complex - are certainly different from the well-defined assignments you have had in school. These are real-world problems which often branch into smaller problems, and it should not surprise you that I do not know the solution for; it is research after all. So, it would be your job to (1) understand the potential challenges of each problem, (2) devise a well-thought solution, (3) communicate your understanding with the team, (4) implement them, and (4) programmatically validate them.
Your biggest expectation from this opportunity should be building a strong resume to become a valuable resource for the CS/DS market. So, you should be working to satisfy your own criteria (which hopefully aligns with mine and advances the projects). Therefore, I do not ask RAs to work a certain number of hours or to get a certain number of tasks done. That would be futile anyway. What I can tell you about the workload, however, is that my most successful students (who secured competitive jobs after graduation) worked on their RA projects non-stop, with the exception of the time they needed to prepare for an exam or for meeting a course project's deadline.
I read the entire note and I feel like I am a good fit. What's next?
There will be three simple steps:
Form: Fill out the form on the right and submit it. (I will get notified when you do so; no need to email me.)
Technical Interview: If your application matches my team's demand, I will contact you and set up a technical (coding) interview with you. To pass this you will need proficiency at Python; knowing algorithms (search, sort, etc) by heart is not expected. Online search is allowed.
Decision: I will send you an email if you cleared the technical interview.