Chris Jarocha cj658 Reflection for HW2


1. Node
a. Keep track of any changes you made to your back end as you implemented your front end. What changes did you need to make and why? If you could go back in time, is there anything you would change about the way you approached making your back end for HW1?
I did not actually have to make that many changes to the backend, other than exposing types to the frontend, changing the backend to be hosted at the api endpoint and adding a couple of tests. If there is anything I wish I did differently it would be to make sure that I refactored the tests so that my book and author tests don't end up being 90% of the same code that I copy and pasted back and forth.
b. When adding books and authors, did you only use server-side validation, or did you also use client-side validation? What are the pros/cons of making either choice?
I did pure server side validation because I already spent a lot of time making sure that my abckend could handle any input properly. The benefit of server side validation is it ensures that no bad actor can sneak bad data into your server. However adding client side validation helps a legimately user make a successful request.
2. React
a. What was your general experience using React? What did you struggle with? What did you enjoy?
I already had extensive experienceusing React and I enjoy it quite a bit. I think it's much cleaner and more scalable for bigger proejcts than simple vanilla JS/HTML programming (aka CS 375 stuff). I think that the one downside of react is when you get long type errors where the problem is quite simple but the error message for a type is really long and ambigous. Also accidentally getting infinite refreshes sucks but that is kind of a skill issue.
b. Compare and contrast writing React versus writing plain JS DOM manipulation code as you did in CS375. How was your experience different? Which do you prefer and why?
As I already mentioned above, using useState and useEffect feels a lot cleaner and easier than plain JS DOM manipulation. I love being able to create reusable components and the fact that I can type my code, it really makes a difference in terms of DevX. The one part where vanilla JS is nicer is the lesser reliance on these giant libraries but who actually cares about JS bloat in 2026?
c. What was your experience using types with the front-end? Did they catch any bugs? Did you struggle to type things correctly? Did they feel helpful, useless, tedious?
Types definitely helped me feel more confidnet that my code would be working and helped me catch event handler bugs as I knew what parts of an onClick event I needed to use to retrieve data from the event. I think sometimes typing, especially for tiny things, is a bit tedious but its definitely worth the effort.
3. LLMs
a. Did you use LLMs to help you write your code? If yes, explain how you used them.
I used LLMs mostly for debugging, I think a larger usage than that of LLMs for this assignment just inhibits my learning and isn't in my best interest. I could definitely see Claude Code Opus 4.5 one shotting all of these changes from assignment 1 but I am here to learn and not churn out code. I think I also used it to debug a bug I had with the sortTo function when I was trying to sort my items, but that's really it.
b. 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?
I think my limited use of LLMs for this assignment made the tedious bgs you can get with frontends much easier to resolve and the assignment more fun. Also whenever I had a code style or function question the LLM could tell me the answer and show me the best way to do something, I really liked that. So overall, it didn't transform my experience significantly but it was a nice to have.