HW1 - Reflection

Coding

  1. How long did you spend on this assignment? If you don't remember, give a rough estimate. It's okay if you spent very little/a lot of time on the assignment — answering this question honestly will help us figure out how to balance out this course.
  2. I spent around 8 hours on this assignment.

  3. Where did you spend the most time? Fixing configuration, figuring out Typescript, designing your API, writing tests, debugging your request handlers, etc.?
  4. I spent the most time debugging request handlers and database interactions. A lot of time went into correctly validating inputs, matching the tests’ expected HTTP statuses and JSON shapes, and dealing with subtle issues around how pub_year is stored and compared in SQLite.

  5. What did you struggle with the most? What would've improved your experience on this assignment?
  6. I struggled the most with setting up the initial project structure and ensuring that all dependencies were correctly installed. A more detailed starter guide or template could have improved my experience.

Typescript

  1. Keep track of the bugs Typescript helped you catch and the ones it didn't catch. What are some of the issues Typescript helped you prevent? What are some of the holes in the type system?
  2. Typescript helped me catch issues related to type mismatches, such as passing incorrect types to functions or accessing properties that didn't exist on certain objects. However, it didn't catch some runtime errors, such as logic errors in my request handlers where the code would run but give incorrect results.

  3. What kinds of values did you struggle to type correctly? Are there any Typescript topics that are still confusing you?
  4. I had to be careful typing the SQLite Database and asynchronous operations that return rows vs arrays of rows.

Testing

  1. What was your experience writing tests? Was it boring, soothing, rewarding? How did they affect your development process?
  2. Writing tests was a rewarding experience as it helped me ensure that my code was functioning as expected. It made the development process easier and ensured that I caught bugs early on.

  3. Did your tests help you find any bugs? If so, which ones?
  4. Yes, my tests helped me find a few bugs related to incorrect handling of edge cases in my request handlers, such as missing parameters and invalid input types.

  5. How would you structure your testing differently in the future? What did you learn while testing?
  6. In the future, I would've started writing tests earlier in the development process as I wrote them afterwards which lead to have to refactor some bits of my code. I learned the importance of writing tests early in the development process to catch issues sooner and ensure my code targeted the proper requirements.

LLMs

  1. Did you use LLMs to help you write your code? If yes, explain how you used them.
  2. Yes, I used an LLM as a coding assistant to review failing tests, propose fixes, and suggest small refactors.

  3. If you used LLMs, reflect on how they changed your experience of coding. Did they make it more or less fun? Did they save you time? How do you think they affected what you learned from this assignment?
  4. Using LLMs made coding more enjoyable and efficient. They saved me time by providing quick suggestions and solutions to problems I encountered because looking at code for long periods of time I found myself overlooking easy errors that LLMs spots for me. However, I made sure to understand the suggestions fully to ensure I learned from the assignment rather than relying solely on the LLM. LLMs are very helpful when working with existing code and not to write code from scratch.

Back to home