1. Briefly describe your system
My website is an e-commerce store that sells Japanese beers (cheap and craft) for international buyers.
Any notable shortcomines, bugs, problems, or additional features not implemented?
Overall, I am disappointed with my final product. Although I left the assignment with a better understanding of the concepts learned in class, I didn't understand the workload of completing the assignment solo until it was too late. Although I was able to get many core components of the website down, I was not able to fully implement user customization (such as dark mode enabling), a payment page, and email. Unfortunately due to over-extending myself this semester, I was not able to commit the time needed for this assignment when trying to balance final projects for 5 classes and two jobs. However, I did the best that I could with the time that I had and learned that coding is best done as a team. I tried to complete this assignment on my own and faced many shortcomings because of it. Had I choosen to work with a partner, I could have spent less time trying to debug my code having a second set of eyes.
Describe what your are most proud of about your system
I am very happy with the website's UI. I always thought that building a website from scratch was a waste when given services such as Wix, but I have a new appreciation for website design now and utilizing HTML/CSS to the full extent supplemented by JavaScript. Partially the reason I was not able to finish the whole assignment, I get very absorbed into the design aspect of HTML/CSS. In fact, I jumped on Wix this last week for our school club's website to only get frustrated with how little control I had over the design. I am definitely happy with how my website looks in general after completing this assignment.
Describe wwhat you are least happy with your system
I am least happy with the incomplete cookies/sessions implementation. Although I am able to generate successful invoices, my shopping cart still displays items from previous orders which I was not able to resolve. Also, my impelmentation of a dark mode was haulted due to issues of utilizing the correct variable in the session. Although I am more confident in these areas, I definitely think I need more practice to make this something that is second nature.
How was developing this assignment different that assignment #2?
Compared to assignment #2, this was much more difficult. I felt that assignment #2 directly built off of assignment #1 whereas assignment #3 required me to completely restructure different parts of my webpages and server. I probably spent the majority of my time trying to shift from using query strings to sessions over implementing the new methods need for assignment #3. However, I see value in going through this. Sometimes you may need to completely change systems at work and it will be very time-consuming. At my internship, we are migrating to a different database system and it has been a nightmare to say the least. I think getting practice in this area is very useful as it shows you how to adapt, or in my case reminds me that you should never assume the next step will require the same effort as the previous.
When you ran into a problem, what did you do to address it?
For debugging, I heavily relied on console.log. For example, I was having trouble redirecting the user from the shopping cart to either the invoice or login page depending on whether they were logged in. After making a bunch of changes, I decided to add a console.log when I loaded the cart page to check the session value. It turns out that I was resetting this value after the user left the login page making an endless loop. By using the console log, I was able see what the problem was and address it. After this, I implemented this debugging solution much more often. Also, I tried the method of taking a step back. I spent as much time as I had on this project over the past week and often would hit roadblocks. By simply stepping away from the computer and going outside for a few minutes, I found that I came back with more motivation.
Describe what worked well in doing this assignment
I think using MVC server was very helpful for this assignment. As I started expanding my website and creating multiple different product pages, it was very useful having a template file for all product pages that would render differently based on the filtered product category. Also, I think my usage of cookies to store cart data was useful to a certain point. Not having to use query strings, I was able to add products to the cart and hold them until checkout with ease. However, as I touched on earlier, I had trouble removing the items from the cart after checkout (although they did not show up on the invoice itself).
Describe what did not work well in doing this assignment
I've talked about this already, but my implementation of cookies left a major inconsistency in my code. When viewing the shopping cart, it retained items from previous purchasing althoug they were never added to the invoice. Also, my checks on product quantities could be vastly improved. I feel that I relied heavily on the function that we creating in class, but this meant that I did not fully grasp how to use it as I didn't write it myself. In hindsight, during Assignment #1 I should have built the website from scratch using to make sure I had a good understanding of the basic workings of the website. This would have make subsequent assignments much easier.
What did you learn from this assignment?
I learned that coding takes a ton of time and doing it on your own is not the best option. I get frustrated with group work because every class requires it nowadays. So naturally, when an opportunity arose where I didn't have to work with another student who was 50% likely to contribute nothing, I jumped on the opportunity. However, this was a situation where I should have thought differently. Coding is best done collaboratively with another person and their outside perspective. Had I worked in a team, not only could I have split the workload, but I could have had immediate outside input which may have solved my issues much quicker. I also learned that I should try to reference outside sources more when coding. I'm stubborn in the fact that I didn't want to copy code from someone else. I wanted to design everything from scratch. However, having about a year's worth of Java programming experience meant I should have humbled myself a little more. I'm learning that most programmers utilize the work of others and this is something that is encouraged by the industry. I need to shift my mindset in this area.
If you could go back in time and do things differently, what would you change?
For a start, I would not have taken six classes in one semester, but that is a different life lesson. I already mentioned that I would have worked with a partner and I still stand by this. Also, as mentioned, I would have been more open to using outside sources in my own code. Finally, I think I would have approaced the assignment differently. I went straight into the design which made it very difficult to navigate my code once I needed to implement functionality. Had I focused on the operations first, I could have easily added the design aspects later. This also meant that when I made one change to the design, I had to implement it in every other page which was time consuming. This was probably the main thing I would do differently.
Estimate the % of time you spent (a) thinking about how to do something, (b) writing code, and (c) testing and debugging
Considering how I decided to design my website and the massive changes that I needed to make from assignment #2 to assignment #3, I would say that I spent roughly 30% of my time on debugging/testing alone. I kept hitting walls and having to think of solutions. So in that regard, I would say that 50% was spent thinking of solutions leaving only 20% of time for actual coding. I found that when I first tried to implement a new concept such as cookies, it took a very, very long time. However, once I used it successfully, subsequent implementaitons went much smoother.
Assign an estimated percentage on the amount each team memember contributed to the assignment
Myself = 100%