🔕 Design Guidelines For Better Notifications UX (https://lnkd.in/eAUuMVGw), with practical techniques on how to make notifications more useful and less annoying — with snooze mode, by exploring how and when they are triggered and measuring their use. Notifications Decision Tree (Slack): https://lnkd.in/eunw_VFX 🚫 High frequency of notifications is a very frequent complaint. ✅ Not all notifications are equal: some are more useful than others. ✅ Users value updates from close contacts, transactions, insights. 🤔 Users ignore automated, irrelevant, promotional notifications. ✅ Sending fewer messages can improve long-term product use. ✅ Let users choose notification modes (silent, regular, power). ✅ Suggest switching from push notification to email digests. ✅ Let users snooze, pause, mute if high volume is expected. ✅ Track how often notifications are ignored and acted upon. 🚫 Avoid disruption and notification fatigue by sending less. In many products, setting notification channels on mute is a default, rather than an exception. The reason for that is their high frequency which creates disruptions and eventually notifications fatigue, when any popping messages get dismissed instantly. But not every notification is equal. The level of attention users grant to notifications depends on their nature, or, more specifically, how and when they are triggered. People care more about new messages from close friends and relatives, bank transactions and any actionable and awaited confirmations. To design better notifications UX, we break down notification design across 3 levels of severity: high, medium, and low attention. And then, we define notification types by specific attributes on those levels — e.g. alerts, warnings, confirmations, errors, success messages, or status indicators. Most importantly, we scrutinize the decision tree to find the right timing to send the right types of notifications. The timing is really everything, so you might end up designing notification profiles — frequent users, infrequent users, one-week-experience users, one-month-experience users etc. In fact, Facebook has been experimenting with the notification frequency and learned that both user satisfaction and app usage improve by sending fewer notifications (link in the comments). And: whenever possible, allow your users to snooze and mute notifications *for a while*, and eventually you might even want to suggest a change of medium used to consume notifications. And when in doubt, postpone, rather than sending through. 🌳 UI Decision Trees → https://lnkd.in/eXr7nZdE 🍣 Interface Design Patterns → https://lnkd.in/eZv7EfMU 🔮 How To Measure UX → https://measure-ux.com 🎢 Upcoming UX workshops → https://web-adventures.com Happy designing, everyone! 🎉🥳 #ux #design
Building A Mobile App For Ecommerce
Explore top LinkedIn content from expert professionals.
-
-
Boosting API Performance: Best Practices and Techniques Improving API performance often involves a combination of strategies and techniques. Here are some methods to enhance API performance, focusing on pagination, asynchronous logging, connection pooling, caching, load balancing, and payload compression: 1. Pagination: Implement server-side pagination to limit the amount of data transferred in a single request/response. Allow clients to request a specific page or range of data. Use query parameters like `page` and `pageSize` to control the pagination, and ensure your API documentation is clear on how to use it. 2. Asynchronous Logging: Log asynchronously to avoid introducing latency to API responses. Use a message queue or a dedicated logging service to process logs in the background. This decouples the logging process from the request/response cycle, improving API responsiveness. 3. Connection Pooling: Use connection pooling for database and other resource intensive operations. Connection pooling helps efficiently manage and reuse database connections, reducing overhead. 4. Caching: Implement caching mechanisms to store frequently requested data. Consider using in memory caching systems like Redis or Memcached to speed up data retrieval. Utilise HTTP caching headers (e.g., `CacheControl`, `ETag`) to instruct clients and intermediaries to cache responses, reducing the load on your API. 5. Load Balancing: Set up load balancers to distribute incoming traffic across multiple API servers or instances. This ensures even load distribution and redundancy. Consider using dynamic load balancing algorithms to adapt to changing server loads. 6. Payload Compression: Compress API responses before sending them to clients. Use popular compression algorithms like GZIP, Brotli, or Zstandard to reduce data transfer times. Ensure that clients support decompression of compressed payloads. Remember that the effectiveness of these methods depends on the specific requirements of your API and the technologies you are using. Monitoring and performance testing are crucial to fine tune and optimise your API further. Additionally, consider using content delivery networks (CDNs) to distribute static content, and use API gateways to manage and secure your API endpoints effectively.
-
API performance issues can silently erode user experience, strain resources, and ultimately impact your bottom line. I've grappled with these challenges firsthand. Here are the critical pain points I've encountered, and the solutions that turned things around: 𝗦𝗹𝘂𝗴𝗴𝗶𝘀𝗵 𝗥𝗲𝘀𝗽𝗼𝗻𝘀𝗲 𝗧𝗶𝗺𝗲𝘀 𝗗𝗿𝗶𝘃𝗶𝗻𝗴 𝗨𝘀𝗲𝗿𝘀 𝗔𝘄𝗮𝘆 𝗣𝗿𝗼𝗯𝗹𝗲𝗺: Users abandoning applications due to frustratingly slow API responses. 𝗦𝗼𝗹𝘂𝘁𝗶𝗼𝗻: Implementing a robust caching strategy. Redis for server-side caching and proper use of HTTP caching headers dramatically reduced response times. 𝗗𝗮𝘁𝗮𝗯𝗮𝘀𝗲 𝗤𝘂𝗲𝗿𝗶𝗲𝘀 𝗕𝗿𝗶𝗻𝗴𝗶𝗻𝗴 𝗦𝗲𝗿𝘃𝗲𝗿𝘀 𝘁𝗼 𝗧𝗵𝗲𝗶𝗿 𝗞𝗻𝗲𝗲𝘀 𝗣𝗿𝗼𝗯𝗹𝗲𝗺: Complex queries causing significant lag and occasionally crashing our servers during peak loads. 𝗦𝗼𝗹𝘂𝘁𝗶𝗼𝗻𝘀: Strategic indexing on frequently queried columns Rigorous query optimization using EXPLAIN Tackling the notorious N+1 query problem, especially in ORM usage 𝗕𝗮𝗻𝗱𝘄𝗶𝗱𝘁𝗵 𝗢𝘃𝗲𝗿𝗹𝗼𝗮𝗱 𝗳𝗿𝗼𝗺 𝗕𝗹𝗼𝗮𝘁𝗲𝗱 𝗣𝗮𝘆𝗹𝗼𝗮𝗱𝘀 𝗣𝗿𝗼𝗯𝗹𝗲𝗺: Large data transfers eating up bandwidth and slowing down mobile users. 𝗦𝗼𝗹𝘂𝘁𝗶𝗼𝗻: Adopting more efficient serialization methods. While JSON is the go-to, MessagePack significantly reduced payload sizes without sacrificing usability. 𝗔𝗣𝗜 𝗘𝗻𝗱𝗽𝗼𝗶𝗻𝘁𝘀 𝗕𝘂𝗰𝗸𝗹𝗶𝗻𝗴 𝗨𝗻𝗱𝗲𝗿 𝗛𝗲𝗮𝘃𝘆 𝗟𝗼𝗮𝗱𝘀 𝗣𝗿𝗼𝗯𝗹𝗲𝗺: Critical endpoints becoming unresponsive during traffic spikes. 𝗦𝗼𝗹𝘂𝘁𝗶𝗼𝗻𝘀: Implementing asynchronous processing for resource-intensive tasks Designing a more thoughtful pagination and filtering system to manage large datasets efficiently 𝗣𝗲𝗿𝗳𝗼𝗿𝗺𝗮𝗻𝗰𝗲 𝗕𝗼𝘁𝘁𝗹𝗲𝗻𝗲𝗰𝗸𝘀 𝗙𝗹𝘆𝗶𝗻𝗴 𝗨𝗻𝗱𝗲𝗿 𝘁𝗵𝗲 𝗥𝗮𝗱𝗮𝗿 𝗣𝗿𝗼𝗯𝗹𝗲𝗺: Struggling to identify and address performance issues before they impact users. 𝗦𝗼𝗹𝘂𝘁𝗶𝗼𝗻: Establishing a comprehensive monitoring and profiling system to catch and diagnose issues early. 𝗦𝗰𝗮𝗹𝗮𝗯𝗶𝗹𝗶𝘁𝘆 𝗖𝗵𝗮𝗹𝗹𝗲𝗻𝗴𝗲𝘀 𝗮𝘀 𝗨𝘀𝗲𝗿 𝗕𝗮𝘀𝗲 𝗚𝗿𝗼𝘄𝘀 𝗣𝗿𝗼𝗯𝗹𝗲𝗺: What worked for thousands of users started to crumble with millions. 𝗦𝗼𝗹𝘂𝘁𝗶𝗼𝗻𝘀: Implementing effective load balancing Optimizing network performance with techniques like content compression Upgrading to HTTP/2 for improved multiplexing and reduced latency By addressing these pain points head-on, we can significantly improve user satisfaction and reduce operational costs. What challenges have you faced with API performance? How did you overcome them? Gif Credit - Nelson Djalo
-
4 out of 5 CRO agencies I've worked with usually relied on 'best practices' to increase conversion rate. These practices include: - Adding badges like 'few left', 'bestseller' - Making reviews more prominent - Creating urgency with timers - Adding key product USPs - Leveraging offers While these strategies do give results, many tend to overlook a critical aspect. Which is UX/UI design. That’s likely the least spoken topic at a CRO agency. Despite its significant potential to increase conversion rates. In this example, using Nourish You India's PDP, I've implemented UX/UI and other changes that can increase conversion rates. Below are the 8 changes I recommend a/b testing - 1. Move the product name above the product image along with reviews+price. That way, the space between the images and the add-to-cart CTA is reduced, increasing the chances of adding to cart. 2. The primary product image should highlight key USPs. This would help the user to quickly understand why to buy this product and why from you. 3. Consider adding product image thumbnails. If your product requires education then use the image slider to provide that. Most important in consumables, personal care industry, and tech. 4. Consider adding 3 quick bullet points or USPs about the product before the user goes to add to cart. This way, they are educated about the product before they consciously think about purchasing from you. 5. Motivate users to add more quantity, increasing the AOV. Do this by highlighting savings when they buy in bulk or highlighting the cost per item if they buy a bundle. 6. Optimize the area around the add-to-cart CTA. Highlight the estimated delivery time, free shipping threshold and return policy. 7. Highlight key USPs to differentiate your product and brand from the others. 8. Add accordions that the user can click on to read more. This way they can find the answers to their questions quickly. Other 2 CRO changes I did: 1. Added 'Few left' once the user selected the pack they want to buy. This creates urgency. 2. Re-iterated price near the pack selection so the user doesn't have to scroll back up to see the price. Success lies in attention to detail. Found this useful? Let me know in the comments! P.S. The learning curve for UX/UI design is quite different from that of CRO. Some great resources to explore are Baymard Institute and Nielsen Norman Group to get started. #conversionrateoptimization #uxdesign
-
How do you design an Event Notification System for a user base of 220 Million active users ? Netflix has more than 220 million active members who perform a variety of actions throughout each session, ranging from renaming a profile to watching a title. Reacting to these actions in near real-time to keep the experience consistent across devices is critical for ensuring an optimal member experience. This is not an easy task, considering the wide variety of supported devices and the sheer volume of actions our members perform. Netflix created a system called "RENO" (Rapid Event Notification System) System Requirements: Providing a seamless and consistent Netflix experience across various platforms (iOS, Android, smart TVs, Roku, Amazon FireStick, web browser) and various device types (mobile phones, tablets, televisions, computers, set top boxes) requires more than the traditional request-response model. Use cases 1. Viewing Activity When a member begins to watch a show, their “Continue Watching” list should be updated across all of their devices to reflect that viewing. 2. Personalized Experience Refresh Netflix Recommendation engine continuously refreshes recommendations for every member. The updated recommendations need to be delivered to the device timely for an optimal member experience. 3. Membership Plan Changes Members often change their plan types, leading to a change in their experience that must be immediately reflected across all of their devices. 4. Member “My List” Updates When members update their “My List” by adding or removing titles, the changes should be reflected across all of their devices. 5. Member Profile Changes When members update their account settings like add/delete/rename profiles or change their preferred maturity level for content, these updates must be reflected across all of their devices. 6. System Diagnostic Signals In special scenarios, we need to send diagnostic signals to the Netflix app on devices to help troubleshoot problems and enable tracing capabilities. Design Decisions : 1. Single Events Source(all events coming to one place) 2. Event Prioritization(Some events are important than the other) 3. Hybrid Communication Model(some devices may be offline when we push notifications so they need to fetch their notifications when they come online) 4. Targeted Delivery(Distribute sending notifications based on devices to different systems like ios, android, smart tv etc.) 5. Managing High RPS(requests per second) More on the official blog here : https://lnkd.in/ghBUnSNS PS: This is an awesome read ! I like the push and pull model being combined here :)
-
In SAP (Systems, Applications, and Products in Data Processing), in-app extensibility refers to the ability to customize or extend SAP applications to meet specific business requirements without modifying the core codebase. SAP provides various tools and technologies to achieve this, allowing businesses to tailor SAP applications to their unique needs. Here's a simple example of in-app extensibility in SAP: Let's say a company is using SAP's Enterprise Resource Planning (ERP) system to manage its business processes, including sales orders. The standard SAP ERP system provides basic functionality for creating and processing sales orders. However, the company has specific requirements that are not covered by the standard functionality, such as additional fields to capture customer-specific data. With in-app extensibility in SAP, the company can customize the sales order process to include the required additional fields without modifying the standard SAP code. Here's how they could do it: 1. Custom Fields : Using tools like SAP Fiori, SAPUI5, or the SAP Cloud Platform, the company can add custom fields to the sales order entry screen. These fields can be tailored to capture the specific information needed, such as customer preferences or special instructions. 2. Business Logic : If the company requires custom business logic to be applied to the sales order process, they can use SAP's Business Rules Framework (BRF+) or Business Process Management (BPM) tools to define and implement the logic without changing the standard SAP code. 3. Integration : In some cases, the company may need to integrate external systems or third-party applications with SAP. SAP provides integration tools such as SAP Process Integration (PI) or SAP Cloud Platform Integration (CPI) to facilitate seamless communication between SAP and other systems. 4. User Interface Enhancements : The company can also enhance the user interface of SAP applications using SAP Fiori apps or SAPUI5 to improve usability and productivity for end users. By leveraging in-app extensibility in SAP, the company can tailor the SAP ERP system to its specific business requirements, ensuring a better fit for its processes and workflows without the need for extensive customization or modification of the core SAP codebase.
-
Creating a E2E Automation Framework for ECommerce application like Amazon 🔰 Start Phase: Laying the Foundation 1) API Automation Layer -> User Management: Auto-create test accounts, assign roles & preferences. -> Product Setup: Spin up catalogs, inventory, pricing & promos via POST APIs. -> Order & Payment: Mock cart retrieval, order placement & payment flows. 2) Data‑Driven Testing Layer -> Test Data Sources: CSV for simple tables, JSON for nested objects, direct DB queries for live data. -> Payment Scenarios: Valid cards, expired cards, low‑fund edge cases. -> User Personas: New vs. returning vs. premium shoppers, single vs. bulk orders, domestic & international journeys. 3) Framework Architecture -> Tech Stack: Selenium + TestNG/JUnit for UI, REST Assured for APIs, Maven/Gradle for builds. -> Design Patterns: Page Object Model, Factory, Strategy & Builder for clean code. -> CI & Reporting: Dockerized Jenkins pipelines + Allure for polished test reports. ⚙️ Mid Phase: Building Out Core Scenarios 1) High‑Priority E2E Scenarios -> Registration & Login: Email format, password strength, “remember me,” invalid creds. -> Product Discovery: Search keywords, filters, sort; browse categories & recommendations. -> Shopping Cart: Add/remove items, quantity changes, variant selections. -> Checkout Flow: Address entry/validation; card validation & payment processing. -> Order Management: Confirmation page, email notification, status history & refunds. 2) Test Execution Flow -> Setup: Kick off API calls to prep users, products & promos. -> Data Load: Push test scenarios & persona data into system. -> UI Tests: Execute journeys—registration through order tracking. -> Validation: Cross‑check UI elements, DB states & API responses. -> Cleanup & Reporting: Tear down data, capture screenshots & generate metrics. Maintenance/Improvement Phase: Scaling & Enhancing 1) UX & Performance Automation -> Load Times: Measure navigation & DOM ready metrics. -> Visual Regression: Automated screenshot diffs across browsers. -> Accessibility: WCAG checks, keyboard navigation & screen‑reader tests. 2) Cross‑Platform Coverage -> Browsers: Chrome, Firefox, Safari, Edge across multiple versions. -> Devices: Desktop breakpoints, tablet viewports & mobile touch interactions. -> Mobile App (future): Extend same patterns to native/hybrid apps. 3) Continuous Improvement -> Shift‑left performance checks in CI pipeline. -> Enrich data‑driven scenarios with real customer insights. -> Integrate AI‑powered visual testing for faster UI comparisons. -x-x- Coding Interview Prep for Manual Testers & QA: https://lnkd.in/ggXcYU2s Become playWright typeScript pro and E2E framework: https://lnkd.in/gSDPSqeC #japneetsachdeva
-
"But we’re not a big company!" DPDP fines don’t care. "It’s just a small app update." That’s how it all starts. • You collect a bit more data. • Then a bit more. Before you know it, you’re storing sensitive information without proper protection. Ignoring user consent. Neglecting security. And you tell yourself - this is what innovation looks like, right? Growth. Data-driven decisions. No limits. WRONG. Companies think speed trumps structure - until it doesn’t. The DPDP Act doesn’t bend for innovation excuses. It demands accountability. That "small oversight" isn’t small anymore. Non-compliance can mean fines up to ₹250 crore. Now, Web and App development companies are uniquely impacted by the DPDP Act. Because you often serve as the frontline collectors and processors of personal data. And if you’re building something big for your clients, like a digital lending platform, you need structure. As for the companies, without privacy compliance, your business will crumble. And you’ll have nothing left for the users you’re trying to serve. But the good thing is that this is entirely preventable. So what I suggest here is: 1) Conduct a data audit every quarter. Identify what you collect and eliminate what’s not important. 2) Implement Privacy by Design. Merge data protection into your development process from day one. 3) Educate your team on the DPDP Act. Make sure everyone understands their role in compliance. 4) Stay updated on legal changes. Assign someone to monitor updates to data protection laws. 5) Put user trust first. Be transparent about data practices and give users control. The end goal here is to be intentional. It’s to protect your users. Because once their trust is gone, you don’t get it back. And remember, the DPDP Act isn’t here to slow you down - it’s here to make sure you last. --- 👉 TL;DR: Privacy compliance isn’t optional. Follow DPDP regulations now, or risk losing trust - and paying the price later.
-
🚀 Improving App Performance with Caching Recently, I focused on enhancing the performance of an application I’m working on. The app typically took 3-4 seconds to load, as it needed data immediately upon opening. To reduce this load time, I implemented caching, and I’d love to share the approach I used. Caching Requirements: 1️⃣ Data should be available as soon as the app opens. 2️⃣ The data isn’t frequently updated (minimal write operations). 3️⃣ It’s okay to show previous data until new data is fetched (not sensitive data). After some research, I found the Cache First - Network Second caching strategy to be a perfect fit for this use case. As Zsolt Bertalan explains: “For Cache First - Network Second, we go to the cache first, emit it, then we always do a network request, and if there is new data, we save and emit it.” (Reference: https://lnkd.in/g_XEqm7U) Technical Details: The app is built using Flutter, and I used the BLoC state management library. To implement caching, I leveraged Hydrated BLoC, which is specifically designed for caching BLoC states. This library made the process seamless. By managing the storage and retrieval of states from local storage, it allowed data to be cached and instantly available when the app reopened. As soon as a new state is emitted, it gets saved locally. Results: The app now loads significantly faster, providing a smoother user experience. Thanks for reading! I’m always learning and excited to share my journey. Let me know your thoughts or if you have other caching strategies to recommend. Until next time! 🙌 #Flutter #Caching #PerformanceOptimization #Bloc #HydratedBloc
-
End to End testing with real time example to make you understand in a practical way. Defnition: End-to-end testing is a software testing type that evaluates the entire system from start to finish. It involves testing the flow of data and functionality across different components, subsystems, etc to ensure that they work together correctly. Main Purpose: The purpose of end-to-end testing is to identify any issues that may occur in the system as a whole, such as integration problems or incorrect data transfer. Any example: Here's a real-time example to illustrate end-to-end testing: Let's consider an e-commerce website say "Your Shopping Fun." The website has various components, including a user interface, a product catalog, a shopping cart, and a payment gateway. E2E Scenario: End-to-end testing for this scenario would involve testing the entire buying process, from selecting a product to making a successful payment. User Registration: The testing would start by creating a test user account on the website. Product Selection: The tester would then navigate through the product catalog, select a product, and add it to the shopping cart. Shopping Cart Functionality: The tester would verify that the selected product is correctly displayed in the shopping cart, and the cart reflects the correct quantity and price. Checkout Process: The tester proceeds to the checkout process, entering the shipping address, selecting a shipping method, and providing payment details. Payment Gateway: The payment gateway integration is tested to ensure that the transaction is processed correctly and the appropriate response is received. Order Confirmation: After the payment is successfully processed, the tester verifies that an order confirmation page is displayed with the correct order details. Throughout this testing process, various components, such as the user interface, database, product catalog, shopping cart, and payment gateway, are evaluated to ensure they work seamlessly together. Any issues or bugs encountered during this end-to-end testing help identify potential problems that users might face when using the website. By conducting end-to-end testing, the goal is to simulate real user scenarios and ensure that the system functions correctly as a whole, providing a smooth user experience from start to finish. You can test the entire flow of data between all the connected components while performing end-to-end. You try to mimick user experience just like when we expect business user to do in uat. E2E environment could be different from your uat environment. It depends on how your project demands. You can manually test the flow as well as some areas can be automated Again, it totally depends on your test process. Are you manually testing endtoend flow in your project, or any automation is implemented ? Do let me know in comments. #softwareengineering #softwaretesting #testing #testers