ನಾನು 6 ತಿಂಗಳ ಕಾಲ ನನ್ನ ತಪ್ಪುಗಳನ್ನು ಮರೆಮಾಚಿದೆ
ನನ್ನ error handling ಚೆನ್ನಾಗಿದೆ ಎಂದು ನಾನು ಭಾವಿಸಿದ್ದೆ.
ನಾನು try/catch ಬ್ಲಾಕ್ಗಳನ್ನು ಬಳಸುತ್ತಿದ್ದೆ. ನಾನು console ಗೆ log ಮಾಡುತ್ತಿದ್ದೆ. ನಾನು Sentry dashboard ಅನ್ನು ಬಳಸುತ್ತಿದ್ದೆ.
ಆದರೂ ನನ್ನ ಬಳಕೆದಾರರು ದೋಷಪೂರಿತ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು (broken flows) ಎದುರಿಸುತ್ತಿದ್ದರು. ಫೈಲ್ಗಳು ಮಾಯವಾಗುತ್ತಿದ್ದವು. ದೃಢೀಕರಣವಿಲ್ಲದೆ ಪಾವತಿಗಳು ಪೂರ್ಣಗೊಳ್ಳುತ್ತಿದ್ದವು. ಫಾರ್ಮ್ಗಳು ಯಾವುದೇ ಸೂಚನೆ ಇಲ್ಲದೆ ವಿಫಲವಾಗುತ್ತಿದ್ದವು.
ಸಮಸ್ಯೆಯೆಂದರೆ ತಪ್ಪುಗಳನ್ನು ಪತ್ತೆಹಚ್ಚದಿರುವುದಲ್ಲ. ತಪ್ಪುಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಿ ಅವುಗಳ ಬಗ್ಗೆ ಏನನ್ನೂ ಮಾಡದಿರುವುದು ದೊಡ್ಡ ಸಮಸ್ಯೆಯಾಗಿತ್ತು.
ನನ್ನ ಕೋಡ್ನಲ್ಲಿ ಈ ರೀತಿಯ ಕಾಮೆಂಟ್ಗಳಿದ್ದವು: // TODO: handle this better
ಆ ಕಾಮೆಂಟ್ 6 ತಿಂಗಳ ಕಾಲ ಅಲ್ಲೇ ಉಳಿದಿತ್ತು.
ಅಪ್ಲೋಡ್ ವಿಫಲವಾದಾಗ, ಬಳಕೆದಾರರಿಗೆ ನಿಲ್ಲದ ಲೋಡಿಂಗ್ ಸ್ಪಿನರ್ (loading spinner) ಮಾತ್ರ ಕಾಣಿಸುತ್ತಿತ್ತು. ಏನೋ ತಪ್ಪಾಗಿದೆ ಎಂಬ ಅರಿವು ಅವರಿಗೆ ಇರುತ್ತಿರಲಿಲ್ಲ. ಅವರು ಪದೇ ಪದೇ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರು. ನಂತರ ಅವರು ಪ್ರಯತ್ನಿಸುವುದನ್ನೇ ಬಿಟ್ಟುಬಿಡುತ್ತಿದ್ದರು.
ಒಬ್ಬ ಗ್ರಾಹಕರು ದೂರು ನೀಡಿದ ನಂತರ ನಾನು ನಮ್ಮ ಅನಾಲಿಟಿಕ್ಸ್ (analytics) ಪರಿಶೀಲಿಸಿದೆ. ನನಗೆ ಈ ಅಂಕಿಅಂಶಗಳು ಕಂಡುಬಂದವು:
• 23% ಫೈಲ್ ಅಪ್ಲೋಡ್ಗಳು ಯಾವುದೇ ಸೂಚನೆ ಇಲ್ಲದೆ ವಿಫಲವಾದವು. • ಬಳಕೆದಾರರು ಸರಾಸರಿ 2.7 ಬಾರಿ ಮರುಪ್ರಯತ್ನ ಮಾಡಿದರು. • ನಾವು ಎಲ್ಲಾ ತಪ್ಪುಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಿದ್ದರಿಂದ ನಮ್ಮ ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಉತ್ತಮ ಸ್ಥಿತಿಯಲ್ಲಿ (healthy status) ಕಾಣಿಸುತ್ತಿತ್ತು.
ನಾವು ಒಂದು ಮೌನ ವಿಕೋಪವನ್ನು ಎದುರಿಸುತ್ತಿದ್ದೆವು. ನಮ್ಮ ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಹಸಿರಾಗಿದ್ದವು (green), ಆದರೆ ನಮ್ಮ ಬಳಕೆದಾರರು ಅಸಮಾಧಾನಗೊಂಡಿದ್ದರು.
ನಾನು ಪ್ರತಿಯೊಂದು 'silent catch' ಅನ್ನು ಹೊಸ ಮಾದರಿಯಿಂದ ಬದಲಾಯಿಸಿದೆ. ಈಗ ನಾನು ತಪ್ಪುಗಳನ್ನು ಅವುಗಳ ಪ್ರಕಾರ ವರ್ಗೀಕರಿಸುತ್ತೇನೆ:
• Network errors ಮರುಪ್ರಯತ್ನಿಸಲು (retry) ಡೈಲಾಗ್ ಪ್ರದರ್ಶಿಸುತ್ತವೆ. • Permission errors ಮಾರ್ಗದರ್ಶಿಯನ್ನು ತೋರಿಸುತ್ತವೆ. • Unknown errors ಸ್ಪಷ್ಟ ಸಂದೇಶವನ್ನು ತೋರಿಸುತ್ತವೆ ಮತ್ತು context ಅನ್ನು log ಮಾಡುತ್ತವೆ.
ಫಲಿತಾಂಶಗಳು ಎಲ್ಲವನ್ನೂ ಬದಲಿಸಿದವು:
• ಯಾವುದೇ ಸೂಚನೆ ಇಲ್ಲದ ಅಪ್ಲೋಡ್ ವಿಫಲತೆಗಳು 23% ರಿಂದ 0.4% ಕ್ಕೆ ಇಳಿದವು. • ಬಳಕೆದಾರರಿಂದ ವರದಿಯಾದ ಅಪ್ಲೋಡ್ ಸಮಸ್ಯೆಗಳು 89% ರಷ್ಟು ಕಡಿಮೆಯಾದವು. • ಕಾಣೆಯಾದ ಫೈಲ್ಗಳ ಬಗ್ಗೆ ಬರುವ ಸಪೋರ್ಟ್ ಟಿಕೆಟ್ಗಳು ವಾರಕ್ಕೆ 15 ರಿಂದ 1 ಕ್ಕೆ ಇಳಿದವು.
ಅತಿದೊಡ್ಡ ಗೆಲುವು ಎಂದರೆ ದೃಶ್ಯೀಕರಣ (visibility). ನಮ್ಮ ತಂಡವು ವಿಫಲತೆಗಳ ಬಗ್ಗೆ ತಕ್ಷಣವೇ ತಿಳಿಯುತ್ತದೆ. ನಾವು ಕೋಪಗೊಂಡ ಇಮೇಲ್ಗಳಿಗಾಗಿ ಕಾಯುವುದಿಲ್ಲ.
Error handling ಎಂದರೆ ಕ್ರಾಶ್ಗಳನ್ನು (crashes) ತಡೆಯುವುದಲ್ಲ. ಬದಲಾಗಿ ವಿಫಲತೆಗಳನ್ನು ಬಳಕೆದಾರರಿಗೆ ಮತ್ತು ತಂಡಗಳಿಗೆ ಸ್ಪಷ್ಟವಾಗಿ ತೋರಿಸುವುದಾಗಿದೆ.
ಕ್ರಾಶ್ (crash) ಪ್ರಾಮಾಣಿಕವಾದುದು. ಮೌನ ವಿಫಲತೆ (silent failure) ಸುಳ್ಳು.
ನೀವು catch ಬ್ಲಾಕ್ ಬರೆಯುವಾಗ, ನಿಮ್ಮನ್ನು ನೀವು ಎರಡು ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳಿಕೊಳ್ಳಿ:
- ಇದು ವಿಫಲವಾದರೆ ಯಾರು ತಿಳಿಯಬೇಕಿದೆ?
- ಅವರು ಮುಂದೆ ಏನು ಮಾಡಬೇಕು?
ನಿಮ್ಮ ಉತ್ತರ "ಯಾರೂ ಇಲ್ಲ" ಎಂದಾದರೆ, ನಿಮಗೆ ಸಮಸ್ಯೆ ಇದೆ ಎಂದರ್ಥ.
ಐಚ್ಛಿಕ ಕಲಿಕಾ ಸಮುದಾಯ: https://t.me/GyaanSetuAi
