ಒಂದು ಖಾಲಿ App.js ಮತ್ತು ಮಿಟುಕುತ್ತಿರುವ ಕರ್ಸರ್ ಶುದ್ಧ ಸಾಮರ್ಥ್ಯದಂತೆ ಭಾಸವಾಗುತ್ತದೆ. ಯಾವುದೇ ಮಿತಿಗಳಿಲ್ಲ. ನೀವು ಏನು ಮಾಡಬೇಕು ಎಂದು ಹೇಳುವ ಯಾವುದೇ ಬಾಯ್ಲರ್ ಪ್ಲೇಟ್ ಇಲ್ಲ. ಆದರೆ ಆ ಖಾಲಿ ಕ್ಯಾನ್ವಾಸ್ ಸ್ವಾತಂತ್ರ್ಯವಲ್ಲ. ಅದು ಮೊದಲಿನಿಂದಲೇ ಇಡೀ ವಿಶ್ವವನ್ನು ಮರುನಿರ್ಮಾಣ ಮಾಡಲು ನೀಡಿದ ಮುಕ್ತ ಆಹ್ವಾನವಾಗಿದೆ.
ಖಾಲಿ ಪರದೆಯ ತೆರಿಗೆ (The Blank Screen Tax)
ಕೇವಲ ಒಂದು ಕಂಪೈಲರ್ ಮತ್ತು ಟೆಕ್ಸ್ಟ್ ಎಡಿಟರ್ನೊಂದಿಗೆ ಒಂದು ಪ್ರಾಜೆಕ್ಟ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ. ಮೊದಲ ದಿನವು ಅತ್ಯಂತ ರೋಮಾಂಚನಕಾರಿಯಾಗಿರುತ್ತದೆ. ನೀವು ಫೋಲ್ಡರ್ ರಚನೆ, ಹೆಸರಿಸುವ ಕ್ರಮ (naming convention), ಮತ್ತು ಡಿಸೇಬಲ್ಡ್ ಬಟನ್ಗಳಿಗಾಗಿ ನಿಖರವಾದ ಬೂದು ಬಣ್ಣವನ್ನು ನೀವೇ ಆರಿಸಿಕೊಳ್ಳುತ್ತೀರಿ. ಮೂರನೇ ದಿನದ ಹೊತ್ತಿಗೆ, ಆ ರೋಮಾಂಚನ ಮಾಯವಾಗಿ ನಿಜವಾದ ಕೆಲಸ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ.
ಒಂದು ಸರಳ ಪಟ್ಟಿಯನ್ನು (list) ನಿರ್ಮಿಸುವುದು ಕೇವಲ ಒಂದು map ಫಂಕ್ಷನ್ ಬರೆಯುವುದಲ್ಲ ಎಂಬುದು ನಿಮಗೆ ಅರಿವಾಗುತ್ತದೆ. ಡೇಟಾ ಲೋಡ್ ಆಗುತ್ತಿರುವಾಗ ಸ್ಕೆಲೆಟನ್ ಹೇಗಿರಬೇಕು, ಅದು ಪಲ್ಸ್ ಆಗಬೇಕೇ ಅಥವಾ ಸ್ಲೈಡ್ ಆಗಬೇಕೇ ಮತ್ತು ಅದು ಕಾಣಿಸಿಕೊಳ್ಳುವ ಮೊದಲು ಎಷ್ಟು ವಿಳಂಬವಾಗಬೇಕು ಎಂಬುದನ್ನು ನೀವು ನಿರ್ಧರಿಸಬೇಕಾಗುತ್ತದೆ. ಸ್ಕ್ರೋಲ್ ಮಾಡುವ ಮಧ್ಯದಲ್ಲಿ ನೆಟ್ವರ್ಕ್ ವಿಫಲವಾದರೆ ಏನಾಗಬೇಕು ಎಂಬುದನ್ನು ನೀವು ನಿರ್ಧರಿಸಬೇಕಾಗುತ್ತದೆ. ಅದು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮರುಪ್ರಯತ್ನಿಸಬೇಕೇ? ಬಟನ್ ತೋರಿಸಬೇಕೇ? ಅಥವಾ ಹಿಂದಿನ ಪುಟವನ್ನು ಶಾಶ್ವತವಾಗಿ ಕ್ಯಾಶ್ (cache) ಮಾಡಬೇಕೇ? ಎರಡು ಸಕ್ರಿಯ ಫಿಲ್ಟರ್ಗಳು ಹೇಗೆ ಪರಸ್ಪರ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಮತ್ತು ಆ ಸಂಯೋಜನೆಯು ಶೂನ್ಯ ಫಲಿತಾಂಶಗಳನ್ನು ನೀಡಿದಾಗ 'ಎಂಪ್ಟಿ ಸ್ಟೇಟ್' (empty state) ಹೇಗಿರಬೇಕು ಎಂಬುದನ್ನು ನೀವು ನಿರ್ಧರಿಸಬೇಕಾಗುತ್ತದೆ. ಶೂನ್ಯ ಫಲಿತಾಂಶಗಳು ನಿಮ್ಮ ಬಳಕೆದಾರರಿಗೆ ಏನನ್ನು ಸೂಚಿಸುತ್ತವೆ ಎಂಬುದನ್ನು ಸಹ ನೀವು ನಿರ್ಧರಿಸಬೇಕಾಗುತ್ತದೆ.
ಇವು ಫಾರ್ಮಲೈಸೇಶನ್ (formalization) ಸಮಸ್ಯೆಗಳು. ಒಂದು ಅಸ್ಪಷ್ಟ ಪರಿಕಲ್ಪನೆಯನ್ನು ನಿರ್ದಿಷ್ಟವಾದ, ಸ್ಥಿರವಾದ ಮತ್ತು ಪುನರಾವರ್ತಿತ ವರ್ತನೆಯನ್ನಾಗಿ ಪರಿವರ್ತಿಸುವುದು ಸಾಫ್ಟ್ವೇರ್ ನಿರ್ಮಾಣದ ಅತ್ಯಂತ ಕಷ್ಟದ ಭಾಗವಾಗಿದೆ. ಕೋಡ್ ಎಂಬುದು ಕೇವಲ ಆ ಆಯ್ಕೆಗಳ ಪ್ರತಿರೂಪವಷ್ಟೇ. ಅದಕ್ಕಾಗಿಯೇ ಅನಂತ ಕಸ್ಟಮೈಸೇಶನ್ (customization) ಎಂಬುದು ಒಂದು ವೈಶಿಷ್ಟ್ಯವಲ್ಲ. ಅದು ಒಂದು ತೆರಿಗೆ, ಮತ್ತು ಅದರ ಇನ್ವಾಯ್ಸ್ ನೀವು ನಿರೀಕ್ಷಿಸುವುದಕ್ಕಿಂತ ವೇಗವಾಗಿ ಸಂಚಯವಾಗುವ ಮೈಕ್ರೋ-ನಿರ್ಧಾರಗಳ ರೂಪದಲ್ಲಿ ಬರುತ್ತದೆ.
ನಿರಂತರವಾಗಿ ತೆಗೆದುಕೊಳ್ಳಬೇಕಾದ ನಿರ್ಧಾರಗಳು
ಪ್ರತಿಯೊಂದು ಆರ್ಕಿಟೆಕ್ಚರಲ್ ಆಯ್ಕೆಯನ್ನು ಒಂದು ಸಬ್ಸ್ಕ್ರಿಪ್ಷನ್ನಂತೆ ಪರಿಗಣಿಸಿ. ನೀವು ಆರಂಭಿಕ ಇಂಪ್ಲಿಮೆಂಟೇಶನ್ ಬರೆಯುವಾಗ ಮೊದಲ ಕಂತನ್ನು ಪಾವತಿಸುತ್ತೀರಿ. ನಂತರ ನೀವು ತಿಂಗಳརತಿ ಪಾವತಿಸುತ್ತಲೇ ಇರಬೇಕಾಗುತ್ತದೆ.
ಒಬ್ಬ ಹೊಸ ಇಂಜಿನಿಯರ್ ಸೇರಿಕೊಂಡು, ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಲೈಬ್ರರಿಗಿಂತ ನೀವು ಯಾಕೆ ಕಸ್ಟಮ್ ರಿಟ್ರೈ ಲಾಜಿಕ್ (retry logic) ಅನ್ನು ಆರಿಸಿಕೊಂಡಿದ್ದೀರಿ ಎಂದು ಕೇಳಿದಾಗ ಮತ್ತು ಯಾರಿಗೂ ಅದು ನೆನಪಿಲ್ಲದಿದ್ದಾಗ ನೀವು ಪಾವತಿಸುತ್ತೀರಿ. ಬ್ರೌಸರ್ ಅಪ್ಡೇಟ್ನಿಂದಾಗಿ ನಿಮ್ಮ ಹ್ಯಾಂಡ್-ರೋಲ್ಡ್ ಟಚ್ ಹ್ಯಾಂಡ್ಲರ್ (hand-rolled touch handler) ಕೆಲಸ ಮಾಡದಿದ್ದಾಗ ಮತ್ತು ಆ ಥ್ರೆಶೋಲ್ಡ್ ಅನ್ನು 48 ಪಿಕ್ಸೆಲ್ಗೆ ಏಕೆ ನಿಗದಿಪಡಿಸಲಾಗಿತ್ತು ಎಂದು ಯಾರೂ ದಾಖಲಿಸದಿದ್ದಾಗ ನೀವು ಪಾವತಿಸುತ್ತೀರಿ. ಸೆಕ್ಯೂರಿಟಿ ಪ್ಯಾಚ್ ಒಂದರಿಂದ ನಿಮ್ಮ ಕಸ್ಟಮ್ ಅಥೆಂಟಿಕೇಶನ್ ಫ್ಲೋವನ್ನು (authentication flow) ಮರುರೂಪಿಸಲು (refactor)被迫 вынуತಾದಾಗ ಮತ್ತು ಅದು ರಿಫ್ರೆಶ್ ಟೋಕನ್ ರೊಟೇಶನ್ ಅನ್ನು ಮೊದಲೇ ನಿರೀಕ್ಷಿಸದಿದ್ದಾಗ ನೀವು ಪಾವತಿಸುತ್ತೀರಿ.
ನಿಮಗಾಗಿ ಏನನ್ನೂ ನಿರ್ಧರಿಸದಿದ್ದರೆ, ಎಲ್ಲವೂ ನಿಮ್ಮ ಸಮಸ್ಯೆಯಾಗುತ್ತದೆ. ನೀವು ಬಯಸಿದ್ದನ್ನು ನಿಖರವಾಗಿ ನಿರ್ಮಿಸುವ ಸ್ವಾತಂತ್ರ್ಯವು ಅದನ್ನು ಶಾಶ್ವತವಾಗಿ ಹೊರುವ ಹೊರೆಯೊಂದಿಗೆ ಅವಿಭಾಜ್ಯವಾಗಿದೆ. ಉದ್ಯಮವು ವರ್ಷಗಳ ಹಿಂದೆಯೇ ಪರಿಹರಿಸಿದ ಪ್ಯಾಟರ್ನ್ಗಳ ಬಗ್ಗೆ ನೀವು ಏಕೈಕ ಅಧಿಕಾರಿಯಾಗಿ ಉಳಿಯುತ್ತೀರಿ. ನೀವು ಮನೆ ಕಟ್ಟುವ ಬದಲು ಅಡಿಪಾಯವನ್ನು ನಿರ್ವಹಿಸುವುದರಲ್ಲೇ ನಿಮ್ಮ ಸಮಯವನ್ನು ಕಳೆಯುತ್ತೀರಿ.
AI, ವೇಗದ ಬಲೆ (Speed Trap)
ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆಯು (AI) ಈ ಪರಿಸ್ಥಿತಿಯನ್ನು ಕಡಿಮೆ ಮಾಡುವ ಬದಲು ಇನ್ನಷ್ಟು ಅಪಾಯಕಾರಿಯಾಗಿಸುತ್ತದೆ. ಒಂದು ಲಾರ್ಜ್ ಲ್ಯಾಂಗ್ವೇಜ್ ಮಾಡೆಲ್ (LLM) ಕೇವಲ ಮೂವತ್ತು ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಸಂಪೂರ್ಣ ಅಥೆಂಟಿಕೇಶನ್ ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಸೃಷ್ಟಿಸಬಲ್ಲದು. ನಿಮ್ಮ ಕಾಫಿ ತಣ್ಣಗಾಗುವ ಮೊದಲೇ ಅದು ಸ್ಟೇಟ್ ಲೇಯರ್ ಅನ್ನು ಸ್ಕ್ಯಾಫೋಲ್ಡ್ ಮಾಡಬಹುದು, ಕ್ಯಾಶಿಂಗ್ ಸ್ಟ್ರಾಟಜಿಯನ್ನು ಸಿದ್ಧಪಡಿಸಬಹುದು ಮತ್ತು ನ್ಯಾವಿಗೇಷನ್ ಗಾರ್ಡ್ಗಳನ್ನು ಬರೆಯಬಹುದು.
ಆದರೆ ಇಲ್ಲಿ ಒಂದು ಟ್ವಿಸ್ಟ್ ಇದೆ. AI ನಿರ್ಧಾರಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುವ ವೆಚ್ಚವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ, ಆದರೆ ಅವುಗಳನ್ನು ಹೊರುವ ವೆಚ್ಚವನ್ನು ಮೊದಲಿನಂತೆಯೇ ಎತ್ತರದಲ್ಲಿ ಇರಿಸುತ್ತದೆ. ಇತಿಹಾಸದಲ್ಲೇ ಯಾವುದೇ ತಂಡಕ್ಕಿಂತ ವೇಗವಾಗಿ ನೀವು ಈಗ ತಾಂತ್ರಿಕ ಸಾಲವನ್ನು (technical debt) ಸೃಷ್ಟಿಸಬಹುದು. ಡೆಮೊ ದಿನದಂದು ಕೋಡ್ ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಅದು ಸ್ಮೋಕ್ ಟೆಸ್ಟ್ ಅನ್ನು ಪಾಸು ಮಾಡುತ್ತದೆ. ಆರು ತಿಂಗಳ ನಂತರ, OAuth ಪ್ರೊವೈಡರ್ ಒಂದು ಎಂಡ್ಪಾಯಿಂಟ್ ಅನ್ನು ನಿಲ್ಲಿಸಿದಾಗ ಅಥವಾ ನಿಧಾನಗತಿಯ ಸಂಪರ್ಕದ ಸಮಯದಲ್ಲಿ ಕ್ಯಾಶ್ ಇನ್ವ್ಯಾಲಿಡೇಶನ್ ಲಾಜಿಕ್ ವಿಫಲವಾದಾಗ, ನೀವು ಯಂತ್ರಕ್ಕೆ ಹೊರಗುತ್ತಿಟ್ಟ (outsourced) ನಿರ್ಧಾರಗಳನ್ನು ಡಿಬಗ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ.
ಗುಪ್ತ ಬಿಲ್ ಯಾವಾಗಲೂ ಬರಲೇಬೇಕು. ಇದನ್ನು ಇಂಜಿನಿಯರಿಂಗ್ ಗಂಟೆಗಳು, ಕಾನ್ಟೆಕ್ಸ್ಟ್ ಸ್ವಿಚಿಂಗ್ (context switching) ಮತ್ತು ವೇಗದಲ್ಲಿನ ನಿಧಾನಗತಿಯ ಇಳಿಕೆಯ ಮೂಲಕ ಪಾವತಿಸಬೇಕಾಗುತ್ತದೆ.
ಬೋರಿಂಗ್ ವಿಷಯಗಳನ್ನು ದಶಕಗಳಿಗಾಗಿ ಖರೀದಿಸಿ
ಒಂದು ಉತ್ತಮ ಫ್ರೇಮ್ವರ್ಕ್ ಅಥವಾ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಎಂಬುದು ಸೆರೆಮನೆಯಲ್ಲ. ಅದು ಸಮಯವನ್ನು ಖರೀದಿಸಿದಂತೆ.
ಪ್ರತಿಯೊಂದು ಆಧುನಿಕ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಯಾವುದು ಪ್ರಮಾಣಿತವಾಗಿದೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ. ಬಳಕೆದಾರರು ಸೈನ್ ಇನ್ ಆಗಬೇಕಾಗುತ್ತದೆ. ಡೇಟಾ ಪರದೆಗಳ ನಡುವೆ ಚಲಿಸಬೇಕಾಗುತ್ತದೆ. ಇಂಟರ್ಫೇಸ್ ನಿಂತುಹೋಗದಂತೆ ದೂರದ ಮಾಹಿತಿಯನ್ನು ಸ್ಥಳೀಯವಾಗಿ ಸಂಗ್ರಹಿಸಬೇಕಾಗುತ್ತದೆ. ಜನರು ಕಾನ್ಟೆಕ್ಸ್ ಕಳೆದುಕೊಳ್ಳದೆ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಇವು ಕೇವಲ ಮೂಲಭೂತ ಅಗತ್ಯಗಳೇ ಹೊರತು ವಿಭಿನ್ನತೆಯನ್ನು ತೋರಿಸುವ ಅಂಶಗಳಲ್ಲ.
ಒಂದು ಪರಿಪಕ್ವ ಫ್ರೇಮ್ವರ್ಕ್ ಈ ಪ್ಯಾಟರ್ನ್ಗಳನ್ನು ಒಮ್ಮೆ ಫಾರ್ಮಲೈಸ್ ಮಾಡುತ್ತದೆ. ಅದು ನಿರ್ಧರಿಸುತ್ತದೆ:
- ಲೋಡಿಂಗ್ ಸ್ಟೇಟ್ಗಳು ಹೇಗಿರುತ್ತವೆ ಮತ್ತು ಅವು ಯಾವಾಗ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತವೆ
- ನೆಟ್ವರ್ಕ್ ದೋಷಗಳು ಇಂಟರ್ಫೇಸ್ಗೆ ಹೇಗೆ ತಲುಪುತ್ತವೆ
- ಎರಡು ನ್ಯಾವಿಗೇಷನ್ ಪ್ಯಾರಾಮೀಟರ್ಗಳು ಅಥವಾ ಸಕ್ರಿಯ ಫಿಲ್ಟರ್ಗಳು ಸಂಘರ್ಷಕ್ಕೊಳಗಾದಾಗ ಅವು ಹೇಗೆ ಪರಿಹರಿಸಲ್ಪಡುತ್ತವೆ
- ಮೂಲ ಸೇವೆ ಅಪ್ಡೇಟ್ ಆದಾಗ ಸ್ಥಳೀಯ ಡೇಟಾಗೆ ಏನಾಗುತ್ತದೆ
ನಂತರ ಅದು ಆ ವರ್ತನೆಯನ್ನು ದಾಖಲಿಸುತ್ತದೆ, ಎಡ್ಜ್ ಕೇಸ್ಗಳನ್ನು (edge cases) ಪರೀಕ್ಷಿಸುತ್ತದೆ ಮತ್ತು ನೀವು ಮಲಗಿರುವಾಗ ಪ್ಯಾಚ್ಗಳನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡುತ್ತದೆ. ನೀವು ನಿಮ್ಮ ಶಕ್ತಿಯನ್ನು ನಿಜವಾಗಿಯೂ ನಿಮ್ಮದಾದ ಕೊನೆಯ ಹತ್ತು ಪ್ರತಿಶತದ ಕೆಲಸಕ್ಕೆ ಬಳಸಬಹುದು. ಆ ವಿಶಿಷ್ಟ ಸಂವಹನ ಅಥವಾ ನಿರ್ದಿಷ್ಟ ವ್ಯವಹಾರದ ಅಗತ್ಯಗಳಿಗೆ.
