ನನ್ನ README 80 tools ಇವೆ ಎಂದಾಗಿತ್ತು. ನನ್ನ ಕೋಡ್‌ನಲ್ಲಿ 96 ಇದ್ದವು. ವಾರಗಟ್ಟಲೆ ಯಾರೂ ಗಮನಿಸಲಿಲ್ಲ.

ನಾನು ಒಂದು ಓಪನ್-ಸೋರ್ಸ್ (open-source) ಯೋಜನೆಯನ್ನು ನಡೆಸುತ್ತಿದ್ದೇನೆ. ಇದು AI ಏಜೆಂಟ್‌ಗಳಿಗಾಗಿ ಬ್ರೌಸರ್ ಆಟೊಮೇಷನ್ ಅನ್ನು ಬಳಸುತ್ತದೆ.

ನನ್ನ README ಯೋಜನೆಯಲ್ಲಿ 80 tools ಇವೆ ಎಂದು ಹೇಳಿತ್ತು. ನಾನು ಆ ಸಂಖ್ಯೆಯನ್ನು ಟ್ಯಾಗ್‌ಲೈನ್ (tagline), ನ್ಯಾವಿಗೇಷನ್ (navigation) ಮತ್ತು ಸೋಶಿಯಲ್ ಮೀಡಿಯಾ ಪಠ್ಯದಲ್ಲಿ ಬಳಸಿದ್ದೆ.

ಕಳೆದ ವಾರ ನಾನು ಒಂದು ಆಡಿಟ್ (audit) ನಡೆಸಿದೆ. ನಾನು ನನ್ನ README ಅನ್ನು ನನ್ನ ನಿಜವಾದ ಕೋಡ್‌ನೊಂದಿಗೆ ಹೋಲಿಸಿ ನೋಡಿದೆ.

ಕೋಡ್‌ನಲ್ಲಿ 96 tools ದಾಖಲಾಗಿದ್ದವು.

ಒಂದೇ ಫೈಲ್‌ನಲ್ಲಿ ನನ್ನ ಬಳಿ ಮೂರು ವಿಭಿನ್ನ ಸತ್ಯಗಳಿದ್ದವು:

  • ಮಾರ್ಕೆಟಿಂಗ್ ಸಂಖ್ಯೆ: 80
  • ದಾಖಲಾದ ಪಟ್ಟಿ: 83
  • ನಿಜವಾದ ಕೋಡ್: 96

ಹದಿಮೂರು tools ಸಂಪೂರ್ಣವಾಗಿ ದಾಖಲಾಗಿರಲಿಲ್ಲ (undocumented). ಅವುಗಳ ಅಸ್ತಿತ್ವದ ಬಗ್ಗೆ ಬಳಕೆದಾರರಿಗೆ ತಿಳಿದಿರಲಿಲ್ಲ.

ಅತ್ಯಂತ ಅಪಾಯಕಾರಿ ವಿಷಯವೆಂದರೆ ಆ ವ್ಯತ್ಯಾಸ (gap). ಆ ದಾಖಲಾಗದ toolsಗಳಲ್ಲಿ ನಾಲ್ಕು ಹೈ-ಲೆವೆಲ್ ಸಿಸ್ಟಮ್ tools ಆಗಿದ್ದವು. ಅವು ಕೀಬೋರ್ಡ್ ಮತ್ತು ಮೌಸ್ ಅನ್ನು ನಿಯಂತ್ರಿಸಲು OS-level ಇವೆಂಟ್‌ಗಳನ್ನು ಬಳಸುತ್ತಿದ್ದವು. ಇದು ನನ್ನ ಯೋಜನೆಯ ಅತ್ಯಂತ ಶಕ್ತಿಯುತ ಮತ್ತು ಸೂಕ್ಷ್ಮವಾದ ಭಾಗವಾಗಿದೆ.

ಇದು ನನಗೆ 'ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಡ್ರಿಫ್ಟ್' (documentation drift) ಬಗ್ಗೆ ಕಠಿಣ ಪಾಠವನ್ನು ಕಲಿಸಿತು.

ಡ್ರಿಫ್ಟ್ ಎಂಬುದು ಯಾದೃಚ್ಛಿಕವಾಗಿ (random) ಆಗುವುದಿಲ್ಲ. ಅದು ಪೂರ್ವಾಗ್ರಹದಿಂದ ಕೂಡಿದೆ. ನೀವು ಸುಲಭವಾದ, ಬೇಸರ ತರಿಸುವ ವಿಷಯಗಳನ್ನು ದಾಖಲಿಸುತ್ತೀರಿ. ಆದರೆ ಅವಸರದಲ್ಲಿ ನೀವು ಬಿಡುಗಡೆ ಮಾಡುವ ಹೊಸ, ಶಕ್ತಿಯುತ ಅಥವಾ ಸೂಕ್ಷ್ಮವಾದ toolsಗಳನ್ನು ದಾಖಲಿಸಲು ಮರೆಯುತ್ತೀರಿ.

ನೀವು ಒಂದು ಯೋಜನೆಯ ಅತ್ಯಂತ ಅಪಾಯಕಾರಿ ಭಾಗವನ್ನು ಕಂಡುಹಿಡಿಯಬೇಕೆಂದರೆ, ಡಾಕ್ಯುಮೆಂಟ್‌ಗಳನ್ನು ಓದಬೇಡಿ. ಡಾಕ್ಯುಮೆಂಟ್‌ಗಳು ಮತ್ತು ಕೋಡ್ ನಡುವಿನ ವ್ಯತ್ಯಾಸವನ್ನು ಗಮನಿಸಿ.

ನಾನು ಆ ಸಂಖ್ಯೆಯನ್ನು ಸರಿಪಡಿಸಲು ಪ್ರಯತ್ನಿಸಿದೆ. ಅದು ತಪ್ಪು. ಸಂಖ್ಯೆಯನ್ನು ಸರಿಪಡಿಸುವುದು ಕೇವಲ ಲಕ್ಷಣವನ್ನು (symptom) ಮಾತ್ರ ಗುಣಪಡಿಸುತ್ತದೆ.

ಸಮಸ್ಯೆ ಎಂದರೆ ಮ್ಯಾನುಯಲ್ ಮೇಂಟೆನೆನ್ಸ್ (manual maintenance). ಒಬ್ಬ ಮನುಷ್ಯ ಒಂದು ಸತ್ಯವನ್ನು ಟೈಪ್ ಮಾಡಿದರೆ, ಆ ಸತ್ಯವು ಅಂತಿಮವಾಗಿ ತಪ್ಪಾಗುತ್ತದೆ.

ಸಂಖ್ಯೆ ತಪ್ಪಾಗುವುದನ್ನು ಅಸಾಧ್ಯವಾಗಿಸುವುದೇ ಏಕೈಕ ನಿಜವಾದ ಪರಿಹಾರ.

ನೀವು ಸತ್ಯದ ಮೂಲದಿಂದ (source of truth) ಸತ್ಯಾಂಶಗಳನ್ನು ಪಡೆಯಬೇಕು.

ನನ್ನ ಯೋಜನೆಯಲ್ಲಿ ಈಗಾಗಲೇ ಒಂದು ಪರಿಹಾರವಿತ್ತು: ಸ್ಮೋಕ್ ಟೆಸ್ಟ್ (smoke test). ಈ ಟೆಸ್ಟ್ ಸರ್ವರ್ ಬಳಿ ಎಷ್ಟು tools ಇವೆ ಎಂದು ಕೇಳುತ್ತದೆ ಮತ್ತು ಸಂಖ್ಯೆಯನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಇದು ಹಾರ್ಡ್-ಕೋಡೆಡ್ (hardcoded) ಸಂಖ್ಯೆಯನ್ನು ಬಳಸುವುದಿಲ್ಲ. ಈ ಟೆಸ್ಟ್ ಎಂದಿಗೂ ಡ್ರಿಫ್ಟ್ ಆಗುವುದಿಲ್ಲ ಏಕೆಂದರೆ ಇದು ಎಂದಿಗೂ ಸ್ಥಿರವಾದ (static) ಸಂಖ್ಯೆಯನ್ನು ಸಂಗ್ರಹಿಸುವುದಿಲ್ಲ.

ನಿಮ್ಮ ಬರವಣಿಗೆಯಲ್ಲಿ ಹೆಚ್ಚು ಶಿಸ್ತನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳಲು ಪ್ರಯತ್ನಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿ. ಶಿಸ್ತು ವಿಫಲವಾಗುತ್ತದೆ. ಬದಲಾಗಿ, ನಿಮ್ಮ ಸತ್ಯಾಂಶಗಳನ್ನು ಆಟೊಮೇಟ್ (automate) ಮಾಡಿ:

  • ಬಿಲ್ಡ್ ಸಮಯದಲ್ಲಿ (build time) ಸ್ಕ್ರಿಪ್ಟ್ ಬಳಸಿ ಸಂಖ್ಯೆಗಳನ್ನು ತಯಾರಿಸಿ.
  • ನಿಮ್ಮ ಕೋಡ್ ರಿಜಿಸ್ಟ್ರಿಯಿಂದ ನೇರವಾಗಿ tool ಪಟ್ಟಿಗಳನ್ನು ತಯಾರಿಸಿ.
  • ಗದ್ಯ ಮತ್ತು ವಿವರಣೆಗಳಿಗಾಗಿ ಮಾತ್ರ ಮನುಷ್ಯರನ್ನು ಬಳಸಿ.

ಒಂದು ಸತ್ಯಾಂಶವನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಿದ್ದರೆ, ಅದನ್ನು ಕೈಯಿಂದ ಟೈಪ್ ಮಾಡಬೇಡಿ. ಅದು ಕೇವಲ ಡ್ರಿಫ್ಟ್ ಆಗಲು ಕಾಯುತ್ತಿರುವ ಒಂದು ಪ್ರಕ್ರಿಯೆ.

ಇಂದು ನಿಮ್ಮ ಸ್ವಂತ ಯೋಜನೆಯ ಮೇಲೆ ಈ ಆಡಿಟ್ ಅನ್ನು ನಡೆಸಿ:

  1. ನಿಮ್ಮ ಕೋಡ್‌ನಲ್ಲಿರುವ ನಿಜವಾದ ಐಟಂಗಳನ್ನು ಎಣಿಸಿ.
  2. ನಿಮ್ಮ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಏನು ಹೇಳುತ್ತಿದೆಯೋ ಅದನ್ನು ಎಣಿಸಿ.
  3. ಅವುಗಳ ನಡುವೆ ವ್ಯತ್ಯಾಸವಿದ್ದರೆ, ಆ ವ್ಯತ್ಯಾಸದಲ್ಲಿ ಏನಿದೆ ಎಂದು ಪತ್ತೆಹಚ್ಚಿ.

ಆ ವ್ಯತ್ಯಾಸದಲ್ಲಿರುವ ಐಟಂಗಳು ಸಾಮಾನ್ಯವಾಗಿ ನಿಮ್ಮ ಯೋಜನೆಯ ಅತ್ಯಂತ ಪ್ರಮುಖ ಭಾಗಗಳಾಗಿರುತ್ತವೆ.

Source: https://dev.to/achiya-automation/my-readme-said-80-tools-my-code-had-96-nobody-noticed-for-weeks-1f3e

Optional learning community: https://t.me/GyaanSetuAi