Assignment 3 Reflection

13 May 2022

1) Briefly desribe your system.

My system is a store selling various types of shoes. Customers can browse through lifestyle shoes, walking shoes, and sandals. They can then check out with the items they placed in their cart, receive an invoice, and have this invoice emailed to them.

2) Any notable shortcomings, bugs, problems, or additional features not implemented?

In terms of major requirements, there were no bugs or notable shortcomings.

3) Describe what you are most proud of about your system.

What I’m most proud of about my system is the functionality. It’s very user-friendly and all the major requirements are implemented well. One thing specifically I’m very proud of is how my individual requirement turned out. I was able to do it without referencing any code, which really showed me how far I’m come in my coding skills.

4) Describe what you are least happy with in your system.

What I’m least happy with is the lack of simplicity and elegance in my code. I knew Assignment 3 would be very tough in general, so I decided to stick with the foundation code I understood from previous assignments. This meant having multiple product json files and a lot of repeated code. I know this isn’t great and hope to improve on this in the future. However, I’m still happy that I was able to complete the assignment fully.

5) How was developing this assignment different than assignment #2?

Developing this assignment was different than the previous one because of the focus on using cookies and sessions. Learning how to implement these features made passing data a lot easier, and it made me realize there was many different ways to do the same things. Using sessions was much easier than passing a query string in Assignment 2.

6) When you ran into a problem, what did you do to address it?

When I ran into problems, I would first read the error and think through my code to see what could be causing it. Half of the time, I would be able to find the error myself and fix it. If I could not fix it myself, I’d search up the problem and try to fix it this way. However, this would rarely yield anything useful so I’d try to change to methodology. If I couldn’t figure the problem out after doing all of this, I would go to Professor Port for help.

7) Describe what worked well in doing this assignment.

In this assignment, I was much more intentional with my code. I wouldn’t write anything without having a clear idea of what it was meant to do and commenting its purpose. This helped me keep my thoughts and logic clear, which was vital for me to complete this assignment.

8) Describe what did not work well in doing this assignment.

The thing that did not work well in doing this assingment was how it was organized. Since I had my product data separated into separate json files for each product page, it made me have to repeat a lot of code so that each page would have the same functionality. This also made me run into a lot of problems with keeping things consistent and not throwing undefined errors.

9) What did you learn from doing this assignment?

I learned that simplicity of code is very important. It will save a lot of time in long run and make things much easier to keep track of. I also learned that writing programs take a lot of patience. Things will usually never work on the first try, but if you slow down and think, you’ll usually be able to work things out.

10) If you could go back in time and do things differently, what would you change?

If I could go back, I would definitely change how I organized my product data. I would’ve started earlier so I could figure out how it was done in the Assignment 3 examples, and apply this to my code. This would’ve made coding the rest of my program a lot easier. However, I did not do this because I could not get it to work in time, and I knew I needed to start making progress so I just decided to work with what I had and understood.

11) Estimate the percent of time you spent (a) thinking about how to do something, (b) writing code (but do not include testing), and (c) testing and debugging.

I would say I spent 15% of my time thinking about how to do something, 25% of my time writing code, and 60% testing and debugging. Testing and debugging always took the longest because of how tedious it was, and I usually had a lot of errors in my initial code that I would have to work through before it functioned properly.

12) Assign an estimated percentage on the amount each team member contributed.

I did not work with a team.