One piece of software that I have enjoyed utilising is the Amazon website. It’s an extremely well designed full stack application that combines an intuitive, user-friendly UI with a tailored algorithm that suggests items based on your previous search history. Moreover, the search bar is extremely effective at finding items that meet your required specifications, as well as suggesting additional items that are similar to the original query with slight variances, offering a variety of quality vendors selling similar goods. As a whole, the Amazon website has a sleek, intuitive design that allows the browser to quickly find and purchase their desired items, as well as a quick and seamless payment process.
The Amazon Website is an excellent example of well designed software because it abides by the principles of “good” software design, given that the website effectively both addresses the “what” and “how” questions and excels at answering them. When Jeff Bezos first envisioned Amazon in 1994, he didn't picture the gargantuan tech giant that the company is today. Instead, he simply wanted to create a website that was capable of selling books online. By coming up with a precise vision of what gap in the marketplace his company would fill, Jeff was able to hone his vision to create a concise, streamlined website that quickly became a mainstay in the blooming internet vendor market. With a precise direction in mind, the emerging startup was able to secure capital investment, design the appropriate software to launch a working demo, and garner a loyal clientele. The success of Amazon demonstrates the significance of following the software design process, as it's a tried and true template utilised by fortune 500 companies.
The requirements gathering stage is an essential part of the software design process, and the first task in the software development process. Requirements gathering is imperative for a multitude of reasons, the first being that it allows the development team to be able to accurately assess the client's intentions for a product. Open communication between the client, especially at the start of the project, allows the development team to be able to accurately determine the scope of the project before them, as well as create a structured itinerary of project requirements. This is extremely important, as with a clear vision for the product, the development team will be able to stay focused throughout the duration of the project, eliminating the possibility of creating additional features that were not a part of the core vision of the project. Furthermore, with a dedicated list of project requirements, the development team will be able to easily divy up work amongst members whilst remaining focussed on the core product. The requirements stage is a foundational component of the software lifecycle, and is the backbone of all other stages that occur in the creation of a product for a client.
User stories: 1. As a buyer, I want to be able to search for items on the amazon website so that I can save time 2. As a seller, I want to be able to list products on the amazon website for people to buy so I can sell items on an online marketplace 3. As a stockholder, I want a algorithm that suggests items similar that users have previously purchased in order to maximize revenue 4. As a Seller, I want an option for users to be able view an online marketplace that I’ve created where I can list all of my items that I’m selling so that users who like my products have the opportunity to buy other items from me if they desire 5. As a buyer, I want the option to be able to quickly pay online through paypal so that I can have a seamless checkout experience
Software product: Amazon website The amazon website presents an intuitive and simplistic browsing experience, allowing the buying and selling of goods on an online marketplace
Persona: Devin Johnson
“For me, the beauty of online shopping lies in the ability to find quality products with ease. Minimizing the amount of time I spend walking aimlessly about in-person stores maximizes the amount of time I have for other things I love - like watching television!”
Dimensions:
Motivations:
Empathetic communication is an integral component of the software design throughout the entirety of the software lifecycle. This is highlighted particularly during the requirements gathering phase, in which effective communication is required to decipher the client's vision for their application and requirements bloat/crep from misunderstandings. Furthermore, active communication is indispensable in every step of the software lifecycle, from collaboratively coming up with an effective solution during the design stage and visualizing your collective team’s vision during the implementation stage, to validating and verifying your product during the testing stage and ultimately maintaining active support through open communication with the client for the software product after development is finished. In summation, effective communication is a key component throughout the entirety of the software lifecycle, and the lack thereof will inevitably lead to disastrous consequences.
Although non-exhaustive, here are four of the most essential parts of communication.
Empathy through active listening:
Non-Verbal Communication:
Overcoming Communication Barriers:
Practicing mindfulness throughout conversation:
The significance of effective communication cannot be overstated. In order to emphasize the gravity of unsuccessful communication, I’m going to share an unfortunate example from my life and what I learned from it and grew as a person.
When my church asked me to help brainstorm a quick and easy way to mass email the parents of kids in their Sunday school program, I quickly coded a program that utilized javascript through google apps script to add extra functionality to google sheets. However, through my own lack of foresight, I failed to ask about the scope of the product. The software I designed was rate limited to sending 100 emails per day, while the church leaders wanted a product that could robustly send 500+ emails on a whim. Ultimately, I ended up having to redesign the application from scratch, resulting in a solidification of the importance of effective communication and requirements gathering at the start of the design process.
Affordance is a fundamental, insurmountable design principle. Essentially, it means that the physical characteristics of an element, whatever it may be, should resemble or indiciate its functionality This is an imperative design principle, as if the user can intuitively understand a product based on its design, it minimizes the potential mishappenings and erorrs that arise Furthermore a misunderstanding of the product.
An example that demonstrates the effectiveness of following the design principles can be seen in push/pull door handles. The property of affordance can be utilized in this situation to add handles to doors that are meant to be pulled, and not adding them to doors that are meant to be pushed. Ultimately, affordance enhances the user experience by quickly non-verbally informing the user about how to open the door
Conversely, an example that demonstrates not implementing afforace into a product can lead to unintuitve products can be seen in underlined text... that isnt a hyperlink. Although this is perhaps not the most disastrous example, if the user is confused when trying to use your product, you have failed as a designer. In a more consequntial scenario, misunderstandings due to a poor implementation of affordance can lead to fatal errors, and as such, designers of every discipline should keep affordance in the upmost of their minds while designing products.