How do you work through being “stuck” on a problem?
The first step for me is usually Googling the problem. This frequently takes me to stack overflow, or possibly the documentation if I’m using a library. Talking to teammates can also be a big help.
How do you approach learning something new, like a new technology?
The first thing I’ll do is try to find a tutorial that will show me how to use the new technology. I also tend to look for longer references like books, but will bounce around through them rather than read them cover-to-cover.
Do you use chatGPT or other AI tools? In what way?
A little bit, but probably not as often as I could. I’ve tried the new Bing chat a few times, and find that it can be pretty helpful. We are working on an algorithmic trading strategy project, so I have tried ChatGPT to explain a few of the financial and algorithmic terms. However, I have not found the right prompts to get it to give me succinct answers that have the right amount of technical explanation. Sometimes it does pretty well though. For example, here is the start of an explanation of the NSGA-II algorithm, which we are using in our project:
What are some debugging methods you use. Do they usually work?
Generally the main debugging algorithm I use is the debugger. It can be helpful just stepping through the logic sometimes. For this project, we are also using a bit of Python. I have found myself using Jupyter notebooks a bit, which does not have a built-in debugger that I am aware of. What is really convenient with the Jupyter notebooks though is to get immediate feedback by executing cells, particularly with the dir() and help() methods. For example, we are using a library that builds off of Pandas. Seeing the list of methods and attributes from dir() helped me understand where the data I was using came from.
Anything project related. You choose.
We originally started using one open-source library as a backtesting tool, and took a long time to understand what it was doing and how to get it to work. Our mentor had provided us with some code from a previous group to build off that used this library.
Eventually, we figured out that the way the tool worked and how it was pieced together by the previous group was really inefficient.
This prompted us to find some simpler libraries, where we were able to implement our strategy in a much more efficient way, and gave us the flexibility to find better results much quicker. We even built a basic backtester from scratch.While the original library we were using has a lot of features, it didn’t give us the flexibility or the efficiency we needed to implement our project. We are still planning on using it to validate some of our results later though.
I think the moral of the story is that a bit more research up front can really pay off. We could have also benefitted from creating some simple prototypes early on, rather than diving into the complicated library.