Introduction

In the summer of 2020, I completed a 2-month internship at APT Portfolio, an HFT firm which also develops special hardware for executing their stock transactions at insanely high speeds.

I had not heard of APT before it appeared on the internship blog. I spoke to a couple of seniors and they were quite happy with their experiences. Also, the EE224 Digital Systems course in my 4th semester and the EE309 core course on Microprocessors which I was pursuing in my 5th semester had piqued my interest in digital systems and computer hardware in general.

So, a hardware internship was a good choice to explore these fields in greater depth.

Selection Procedure

The selection procedure had 2 stages - a coding test followed by an interview. The questions asked in the coding test were simple and mainly tested basic algorithms and data structures. However, the catch was that each question had to be done in a specified programming language - either C++ or Python. One should revise basic concepts of graph traversal, sorting algorithms, string manipulation, etc. Practicing them on competitive coding sites such as HackerRank should suffice.

The interview was mainly about digital design. I was asked questions about state machines, counters, minimising logic circuits, etc. A good grasp over all the topics taught in EE224 will be helpful.

When I was finally selected, I was more relieved than ecstatic since I wouldn’t have to look for out new posts on the internship blog and put on my formals at 10 in the night and rush to the lecture hall complex for any more interviews.

The interviewer mentioned to me that almost everybody starts out in testing - interns are too young and inexperienced to work on design problems. Add to it the fact that the trading algorithms are proprietary which means that HFT firms are hesitant about exposing interns to RTL designs due to confidentiality reasons.

The Experience

IIT Bombay preponed the vacation due to the pandemic but APT was one of the first companies to begin the internship after just 15 days of notice. Luckily, they already had the required infrastructure to carry out the entire internship online. We could work from our own laptops - no special hardware had to be delivered to us.

We were sent a link to an online training program which covered SystemVerilog and UVM Fundamentals, a week before our internship officially began. We had a smooth weeklong onboarding experience. The person who interviewed us helped us navigate the codebase and explained to us the problems we’ll be working on.

Then, me and my co-intern were assigned different projects. Due to confidentiality reasons, I cannot elaborate on the exact nature of the project but in a nutshell, the work I did helped APT speed up their testing procedure.

I’d interact with my assigned mentor everyday - the timings were flexible and I could work whenever I wanted to. The only suggestion was to work whenever my mentor was online so that any doubts could be cleared up immediately. My daily routine was simple - wake up at 8.30 am, either continue working on whatever I was working on or have a short meet with my mentor to clear up some issues I was facing. An hour-long lunch break from 1 pm to 2 pm, followed by another coding session. At 5.30 pm, I used to switch off my laptop and call it a day. We did not have too many meetings, which helped me focus on the actual coding.

I was also asked to document my work side-by-side. Documenting your work is one of the most important but underrated skills. I was constantly reminded that poor documentation would render my work worthless since it will be difficult for someone to work on it in the future.

The WFH experience had its pros and cons. I did not end up wasting time in the crazy Bangalore traffic. I had the comfort of home-cooked food. Since I was mostly writing code, it did not affect me much. even in person, I would have spent most of the day in front of my laptop.

However, we missed out on the in-office experience. Meeting new people, those exciting talks during lunch, sharing ideas with my co-interns, etc. would have been fun! People at APT were friendly and open - we could randomly ping people and ask them about their profiles and their experiences, which we did on our last day. The hierarchy is almost flat. Since the company is relatively small (~70 employees spread across offices in Bangalore, Delhi and London), anybody can pitch an idea. It is almost akin to working at a startup. Which also means that the work we did was impactful. In fact, my mentor informed me on the last day that my code was already being pushed into production! It was so satisfying to hear that 2 months of an intern’s work was already being incorporated into the master branch of their codebase!

Conclusion

Whether you should opt for an internship at APT Portfolio depends on your goals. If you want to pursue hardcore analog/digital design, go for TI or Qualcomm. If you like coding but with a flavour of hardware to it, you will enjoy the work at APT. Of course, the extra $$$ counts too 😝.

Feel free to reach out to me for any further queries. Good luck!