Lessons Learned Garden of Life Magento Build
@FullStackDave
Lessons Learned Garden of Life Magento Build
@FullStackDaveLessons LearnedAbout me
I’m David Cabrera, a Jupiter, Florida-based creative, full-stack dev with over 16 years of experience as a web and mobile developer. I’ve led information systems projects on a global scale. I’m a fan of working agile, using rapid iterative prototyping to continually improve on MVPs.
Whether designing for the web, iOS, Android, or other native platforms, I’m driven by a passion for User Experience.
Web & Mobile developer from Jupiter, FL
02
Lessons Learned Garden of Life Magento Build
@FullStackDaveLessons LearnedAbout the Client
By combining the best of nature and science, the Garden of Life brand offers a path to healthy living with premium products that are supported by education and innovation.
Great people, great products, great mission
03
Lessons Learned Garden of Life Magento Build
@FullStackDaveLesson #1Don’t sacrifice user experience for business requirements
There were some major limitations to what addresses are kosher with our fulfillment system. As a result, a pass/fail
approach was taken for address validation. If a customer typo’s their street name, we reply: “Address not valid”.
When a customer wants to place an order, get out of their way.
CSR team swamped with call-ins & our abandonment rate is hot garbage.
IMPACT
Use type-ahead to reduce customer input errors. Allow customers to override, and place their orders on hold for manual review.
RESOLUTION
Lessons Learned Garden of Life Magento Build
@FullStackDave
05
Our auto-ship vendor said they were compatible with tokenization.
Turns out they were only compatible with Authorize.NET CIM. Our
payment gateway said they were compatible with PayPal. Turns
out they were “working on” that customization.
If you don’t know what questions to ask, find an SME that does.
Pricey contract terminations and/or lots of dev hours to work around issues.
IMPACT
In our case, code shims to make them work together. Ugh.
RESOLUTION
Lesson #2Confirm vendor compatibility before signing contracts
Lessons Learned Garden of Life Magento Build
@FullStackDave
06
Lesson #3Decouple integrations wherever possible
Any time an address was added or edited for a customer in Magento, that change was being echoed back to our Oracle
stack, real-time. This is totally unnecessary, because fulfillment should only care about what address they are shipping too.
Systems can be interoperable without being synchronized.
Every new feature requires extensive regression testing and increased likelihood of refactoring.
IMPACT
Pull this complex logic out into a middleware layer. Use SOAP API to communicate with Magento, and SOA to communicate with Oracle.
RESOLUTION
Lessons Learned Garden of Life Magento Build
@FullStackDave
07
Magento does things differently than Oracle EBS. We wanted to
outright cancel backordered products. In order to do so, we added
a ton of custom logic to allow editing of existing orders, rather than
just cancelling them and creating a new one, or capturing the
whole order and issuing a refund for the non-shipped product.
Simplify business processes & implement them in the least intrusive way possible.
These customizations aren’t portable and they’re keeping us from modifying other aspects of our platform.
IMPACT
Don’t deliver line item cancellation messages until all possible line items are fulfilled.
RESOLUTION
Lesson #4Don’t blindly automate complicated business processes
Lessons Learned Garden of Life Magento Build
@FullStackDaveLesson #5Square pegs shouldn’t be made to fit round holes
Magento was a clear choice for ecomm, but our vendor was struggling to accomplish some of our content requirements. In
all, we had 12 unique entities and as many taxonomies to be accounted for (recipes, ambassadors, etc.) They opted for a tandem WordPress install using Fishpig to integrate.
Use the best tool for the job.
Increased security scope, poor utilization of system resources, Fishpig taking over feed templates.
IMPACT
Move the WordPress site to another server & use reverse proxy to preserve URL structure. Replace product & content discovery features with A JAX on the client-side.
RESOLUTION
@FullStackDave FullStackDave.com
Top Related