From Business Goals to Technical Solutions: How We Built a Custom Single-Page E-Commerce Website
Web Development, Software Quality Testing
Angular 7, .NET Core, NoSQL, Cosmos DB, Azure
San Diego, CA, United States | Cairo, Egypt
We were introduced to this family run, small business focused in manufacturing in 2018. This customer's CEO was in the beginning stages of his dream project and looking for an e-commerce software solution to allow customers to fully customize one of their manufactured products. This was not our customer's first pursuit of the project. In their first attempt, after investing a lot of resources into a software vendor, they did not receive the final result they were hoping for. The pressure was on for us to deliver.
With any project, there are twists and turns. Although our customer was a great partner throughout this project, new discoveries or unexpected roadblocks occurred required us to re-evaluate, change course, and manage expectations accordingly. Below are some key challenges that ultimately led to the success of this custom e-commerce development project.
It Starts with Trust
Our customer was extremely cautious--and with good reason. This was a sizable custom e-commerce website, which meant a large investment. Their previous experience with a software vendor was not positive and delayed bringing their dream to fruition. We needed to prove that we were different and, given the chance, our dedication to their success would be unparalleled.
Requirements, Requirements, Requirements
Our customer had been dreaming of this e-commerce software idea and contemplating different aspects of it for a long time. They didn't have a large technical team, so we dove deep into their goals and business, understood the intended functionality, and then translated that for our engineers to easily digest. At the onset, there was no clear roadmap and several new questions and desired features came up along the way.
Computerizing Over 5 Million SKUs of Uncomputerized Data
Our technical project lead studied a phonebook-sized catalog to understand the products and amount of data we needed to computerize. The only information available was printed or in the brains of the company's salespeople.
Our experience using Agile was critical for this project that started with high-level business requirements, a large dataset, and a lot of unknowns. Here's how we tackled these challenges.
Actions Speak Louder Than Words
We wanted to demonstrate to our customer that they had made a great decision by putting all of their eggs in Integrant's basket. We found ways to show them they could trust us with an important project that had been in the works for so long. We were so convinced we were the right team to work on this project that we immediately had our technical lead onsite and ready to work with the client team.
During his first visit to kick-off the project, our technical project lead spent time getting to know the business, building relationships with the client team, and earning their trust inch by inch. For example, our technical project lead asked specific questions that indicated we were covering all of our bases and involving their expertise of their business into our solution.
Our technical project lead knew how important this project was to the client and fully invested himself and our team to get the job done right.
He learned the business inside out, studying their product catalog and thoroughly interviewing each of the sales staff as needed. He amassed a mountain of information in order to make sure he had all the pieces to orchestrate the project successfully.
Throughout the project, he kept in constant communication with our customer, usually touching base daily. We consistently assessed the state of the project and communicated the impact of any desired modifications and providing solution options.
This attention to detail, understanding of the goal and business, explanation of technical options and solutions, and relationship building with all members of the customer team positively reinforced to our client that we were the right people to entrust with this project.
Keepin' it Agile
In our experience, more things go right when you have crystal clear requirements. If you want to hit a home run on a project, it means rolling with the punches and providing a seamless and positive experience with change.
To hone in on those requirements, our technical project lead, who needed to put on his business analyst hat, was able to convert our customer's business requirements (read: dreams) into technical requirements that our engineering team could then execute. We identified the user story descriptions and acceptance criteria.
But Agile helped us build the best e-commerce software for our customer. We drilled down at the beginning, took feedback each sprint, showed impact analysis for newly desired features based on how the web app was shaping up, and modified as needed.
We constantly asked if our goal was still the goal. Yes? Great. We showed the impact of adding in specific features that were related to the goal and how that would affect what was already backlogged. If items didn't match the goal, we put those items on a "nice-to-have" list to revisit later or add to our plan once the core features were complete.
Last minute changes or roadblocks were no problem with this approach. Our technical project lead presented the impact of each decision so our customer could make the most informed choices.
For example, in the last sprint of the project, we discovered from our customer that a required tax calculation was more complicated than originally anticipated. Our technical project lead presented the solutions with the effect of each decision, and the customer decided to complete the agreed upon features during the project period and extend a separate contract dedicated to the tax calculation.
Due to the lack of uniformity of the dataset, our team felt that a NoSQL database was the way to go. To condense five-million SKUs down into just 33 NoSQL documents, they used CosmosDB, a schema-agnostic, document database.
Did we mention that this information was uncomputerized so there was no digital source? Our customer had to manual catalog each item digitally.
To understand and design the dataset, our technical project lead dedicated the majority of his first three weeks onsite interviewing the sales team to understand the attributes and identify any anomalies.
Each of the 33 documents contained common attributes for the product. For example, all of the products for document one has the common attribute of the material: steel. From that attribute, the remaining products on that document are all permutations based on other factors such as size, type, color, etc.
Once we had our data schema set, we needed to find out if it would hold up against the ultimate test, the experts who know the product better than anyone: the sales team. They relentlessly racked their brains--and the catalog--for the most obscure and unique products during the validation process.
In the end, our data schema prevailed, but not without trial and error. After three weeks onsite and several iterations later, we were happy to report we out-customized the sales team.
A Data Schema from Scratch and a Case for NoSQL
This was truly a one-team approach. Despite needing to build and document requirements, change requirements, and architect a whole data schema, we were able to stay within budget and meet our deadlines.
This single-page e-commerce web application is officially in use and our customer couldn't be happier. Using their new data schema, a patron selected--and our customer manufactured--a product that had never been sold before! The customization of this dataset and website allowed our customer's clientele to discover products they didn't even know they had in their own catalogs.
We look forward to continuing a great partnership with this awesome team.
If you're looking for a custom e-commerce solution to your e-commerce challenges, use the form to contact us below!
Ready to see what kind of solutions we can create for you?
Contact us today!
Copyright © 2020. All rights reserved.