Coding
I spent around 4 days on this assignment, probably 4+ hours a day, but I didn’t keep track exactly. A lot of my time went into fixing configuration issues and writing tests. Once I had the tests written, writing the actual routes became a lot easier, but I still spent time figuring out TypeScript and making decisions about how I wanted the API to behave. The thing I struggled with the most was TypeScript. I was kind of learning it as I went. I think having a required intro or short activity on TypeScript (like what we did early on in CS375) would’ve helped a lot.
TypeScript
I honestly don’t feel fully comfortable with TypeScript yet. It helped catch some issues, especially around types not matching what I expected (like request bodies or database results), but there were still a lot of moments where I wasn’t sure how to type something correctly. Express routes and error handling were probably the hardest parts to type. There were also times where TypeScript couldn’t really help, like database errors or runtime issues. I still ended up needing to rely on testing and debugging for those. Overall, TypeScript feels helpful, but also kind of confusing right now, and I think it’s something I’ll understand better over time rather than all at once.
Testing
Testing was actually fine. Writing the tests first helped me think through how I wanted my API to work, especially for error cases. After writing the tests, implementing the routes felt way easier, since I already knew what each endpoint was supposed to do. I don’t think my tests found any big bugs, but they definitely made me feel more confident that my code worked and that I wasn’t breaking anything when I changed stuff. At this point, I wouldn’t really change how I approached testing. Writing tests before the routes worked really well for me.
LLMs
I used LLMs mostly when I didn’t understand something and needed help thinking it through. I didn’t use them to just generate the assignment for me, but more to ask questions, understand TypeScript errors, or sanity-check how I was approaching something. They helped me learn faster when I was stuck, but I still made sure I understood and wrote the final code myself.