ಸಾಫ್ಟ್ವೇರ್ ನಿರ್ಮಿಸುವುದು ಒಂದು ಸಾರ್ವಜನಿಕ ಪ್ರದರ್ಶನದಂತೆ ಅನಿಸಬಹುದು. ಇಂಟರ್ನೆಟ್ ಲಾಂಚ್ಗಳು, ಸ್ಕ್ರೀನ್ಶಾಟ್ಗಳು ಮತ್ತು ಚೇಂಜ್ಲಾಗ್ ಬುಲೆಟ್ ಪಾಯಿಂಟ್ಗಳಿಗೆ ಹೆಚ್ಚಿನ ಪ್ರಾಮುಖ್ಯತೆ ನೀಡುತ್ತದೆ. ಆದ್ದರಿಂದ, ಒಬ್ಬ ಡೆವಲಪರ್ ಇಡೀ ದಿನವನ್ನು ಒಂದು ಪ್ರಾಜೆಕ್ಟ್ಗಾಗಿ ಕಳೆದು, ತೋರಿಸಲು ಏನೂ ಇಲ್ಲದಿದ್ದಾಗ, ಆ ದಿನ ವ್ಯರ್ಥ ಎಂದು ಭಾವಿಸುವ ಪ್ರವೃತ್ತಿ ಇರುತ್ತದೆ. Food Blog Platform ನ ಇತ್ತೀಚಿನ ಡೆವ್ ಲಾಗ್ (dev log) ಇದಕ್ಕೆ ವಿರುದ್ಧವಾದ ಸಾಕ್ಷ್ಯ ನೀಡುತ್ತದೆ. ಅಲ್ಲಿ ಪ್ರದರ್ಶಿಸಲು ಯಾವುದೇ ಹೊಸ ರೆಸಿಪಿಗಳಿರಲಿಲ್ಲ, ಯಾವುದೇ ವಿನ್ಯಾಸ ಬದಲಾದ ಕಾರ್ಡ್ಗಳಿರಲಿಲ್ಲ ಅಥವಾ ಬಳಕೆದಾರರು ಕ್ಲಿಕ್ ಮಾಡಲು ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ಬಟನ್ಗಳಿರಲಿಲ್ಲ. ಕೇವಲ ಕೋಡ್ ಅನ್ನು ಹರಿದು, ಪರೀಕ್ಷಿಸಿ, ಮೊದಲಿಗಿಂತ ಉತ್ತಮವಾಗಿ ಮತ್ತೆ ಜೋಡಿಸಲಾಗಿತ್ತು.
ದೀರ್ಘಕಾಲದ ಪ್ರಾಜೆಕ್ಟ್ಗಳನ್ನು ಜೀವಂತವಾಗಿರಿಸುವ ಅದೃಶ್ಯ ಕೆಲಸವಿದು.
ವೈಶಿಷ್ಟ್ಯಗಳು ಕೀರ್ತಿಯನ್ನು ಪಡೆಯುತ್ತವೆ; ರಿಫ್ಯಾಕ್ಟರಿಂಗ್ ವ್ಯವಸ್ಥೆಯನ್ನು ಸುಗಮವಾಗಿರಿಸುತ್ತದೆ
ನೀವು ಫುಡ್ ಬ್ಲಾಗ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತಿರುವಾಗ, ಮೇಲ್ನೋಟಕ್ಕೆ ಅದು ಸರಳವಾಗಿ ಕಾಣುತ್ತದೆ. ಬಳಕೆದಾರರು ರೆಸಿಪಿಗಳನ್ನು ಪೋಸ್ಟ್ ಮಾಡುತ್ತಾರೆ, ಫೋಟೋಗಳನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡುತ್ತಾರೆ ಮತ್ತು ವರ್ಗಗಳ ಮೂಲಕ ಹುಡುಕುತ್ತಾರೆ. ಆದರೆ ಅದರ ಅಡಿಯಲ್ಲಿ, ನೀವು ಇಮೇಜ್ ಪೈಪ್ಲೈನ್ಗಳು, ಪದಾರ್ಥಗಳು ಮತ್ತು ಸೂಚನೆಗಳ ನಡುವಿನ ಡೇಟಾಬೇಸ್ ಸಂಬಂಧಗಳು, ಸರ್ಚ್ ಇಂಡೆಕ್ಸ್ಗಳು ಮತ್ತು ಕ್ಯಾಷಿಂಗ್ ಲೇಯರ್ಗಳನ್ನು ನಿಭಾಯಿಸುತ್ತಿರುತ್ತೀರಿ. ಕಾಲಾನಂತರದಲ್ಲಿ, ಸಣ್ಣ ಸಣ್ಣ ತಪ್ಪು ತಿದ್ದುಪಡಿಗಳು (quick fixes) ಶೇಖರಣೆಯಾಗುತ್ತವೆ. ಮೂರು ವಿಭಿನ್ನ ಫೈಲ್ಗಳಿಗೆ ಕಾಪಿ ಮಾಡಲಾದ ಹೆಲ್ಪರ್ ಫಂಕ್ಷನ್; ಹತ್ತು ಪೋಸ್ಟ್ಗಳಿಗೆ ಸರಿಯಾಗಿದ್ದ ಆದರೆ ಸಾವಿರ ಪೋಸ್ಟ್ಗಳಾದಾಗ ನಿಧಾನವಾಗುವ ಡೇಟಾಬೇಸ್ ಕ್ವೆರಿ; ಮತ್ತು ಐದು ತುರ್ತು ಪ್ಯಾಚ್ಗಳಿಂದ ಗೊಂದಲಮಯವಾದ CSS ಇತ್ಯಾದಿ.
ರಿಫ್ಯಾಕ್ಟರಿಂಗ್ ಎಂದರೆ ಆ ಅಸ್ತವ್ಯಸ್ತತೆಯನ್ನು ನೇರವಾಗಿ ಎದುರಿಸುವುದು ಎಂದರ್ಥ. ಇದು ಡೂಪ್ಲಿಕೇಟ್ ಲಾಜಿಕ್ ಅನ್ನು ಸಂಯೋಜಿಸುವುದನ್ನು ಸೂಚಿಸಬಹುದು, ಇದರಿಂದ ರೆಸಿಪಿ ಎಡಿಟಿಂಗ್ ಫಾರ್ಮ್ ಮತ್ತು ಅಡ್ಮಿನ್ ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಎರಡೂ ಒಂದೇ ವ್ಯಾಲಿಡೇಶನ್ ಲೇಯರ್ ಅನ್ನು ಬಳಸುತ್ತವೆ. ಅಥವಾ ಇಮೇಜ್ ಪ್ರೊಸೆಸಿಂಗ್ ಅನ್ನು ಸರಳಗೊಳಿಸುವುದು, ಇದರಿಂದ ಪ್ರತಿ ಬಾರಿ ಪೇಜ್ ರಿಲೋಡ್ ಆದಾಗಲೂ ಕಂಪ್ರೆಷನ್ ರೂಟೀನ್ ನಡೆಯುವ ಬದಲು ಒಮ್ಮೆ ಮಾತ್ರ ನಡೆಯುತ್ತದೆ. ಅಥವಾ ಕೋಡ್ಬೇಸ್ ಅನ್ನು ಮರುಸಂಘಟಿಸುವುದು, ಇದರಿಂದ ಮುಂದೆ ಹೊಸ ಕಂಟೆಂಟ್ ಟೈಪ್ ಅನ್ನು ಸೇರಿಸುವಾಗ ಆರು ವಿಭಿನ್ನ ಡೈರೆಕ್ಟರಿಗಳಲ್ಲಿ ಹುಡುಕುವ ಅಗತ್ಯವಿರುವುದಿಲ್ಲ.
ಇವೆಲ್ಲವೂ ಬಳಕೆದಾರರ ಇಂಟರ್ಫೇಸ್ನಲ್ಲಿ (user interface) ಕಾಣಿಸುವುದಿಲ್ಲ. ಸೈಟ್ಗೆ ಭೇಟಿ ನೀಡುವ ವ್ಯಕ್ತಿಗೆ "ಕ್ವೆರಿ ಆಪ್ಟಿಮೈಸ್ ಮಾಡಲಾಗಿದೆ" ಅಥವಾ "ಕಂಪೊನೆಂಟ್ ಡಿಕಪಲ್ ಮಾಡಲಾಗಿದೆ" ಎಂಬ ಬ್ಯಾನರ್ ಕಾಣಿಸುವುದಿಲ್ಲ. ಆದರೆ ಸೈಟ್ ವೇಗವಾಗಿ ಲೋಡ್ ಆದಾಗ ಅವರಿಗೆ ಅದು ತಿಳಿಯುತ್ತದೆ. ಹೊಸ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಕೇಳಿದ ಮೂರು ವಾರಗಳ ಬದಲಿಗೆ ಮೂರು ದಿನಗಳಲ್ಲಿ ಬಂದಾಗ ಅವರು ಅದನ್ನು ಗಮನಿಸುತ್ತಾರೆ. ಡೆವಲಪರ್ ಇಂದು ಹೊಸ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಸೇರಿಸಲಿಲ್ಲ. ಬದಲಾಗಿ, ಕೋಡ್ಬೇಸ್ನೊಂದಿಗೆ ಹೋರಾಡದೆ ಹೊಸ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಸೇರಿಸಲು ಅವರು ದಾರಿಯನ್ನು ಸುಗಮಗೊಳಿಸಿದರು.
ಕ್ಲೀನ್ ಕೋಡ್ ಎಂಬುದು ಭವಿಷ್ಯದ ವೈಫಲ್ಯದ ವಿರುದ್ಧದ ಹೂಡಿಕೆಯಾಗಿದೆ
ಒಂದು ತಿಂಗಳಿಗಿಂತ ಹೆಚ್ಚು ಕಾಲ ಬಾಳಿಕೆ ಬರುವ ಪ್ರತಿಯೊಂದು ಪ್ರಾಜೆಕ್ಟ್ ಕೂಡ ಅಡೆತಡೆಗಳನ್ನು ಅನುಭವಿಸುತ್ತದೆ. ನೀವು ಒಂದು ಐಡಿಯಾವನ್ನು ಪರೀಕ್ಷಿಸಲು ವೇಗವಾಗಿ ಪ್ರೊಟೊಟೈಪ್ ತಯಾರಿಸುತ್ತೀರಿ. ನಂತರ ಬಳಕೆದಾರರು ಬರುತ್ತಾರೆ. ನಂತರ ನಿಮಗೆ ಅಥೆಂಟಿಕೇಶನ್ ಲೇಯರ್, ಮಾಡರೇಶನ್ ಕ್ಯೂ ಮತ್ತು ಮೊಬೈಲ್ ಲೇಔಟ್ ಬೇಕಾಗುತ್ತದೆ. ಈ ಪ್ರತಿಯೊಂದು ಅಂಶವನ್ನು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ರಚನೆಯ ಮೇಲೆ ಜೋಡಿಸಲಾಗುತ್ತದೆ. ನಿಯಮಿತ ನಿರ್ವಹಣೆ ಇಲ್ಲದಿದ್ದರೆ, ಆರ್ಕಿಟೆಕ್ಚರ್ ಒಂದು ಮನೆಯಂತೆ ಕಾಣತೊಡಗುತ್ತದೆ, ಅಲ್ಲಿ ಪ್ರತಿಯೊಂದು ಹೊಸ ಕೋಣೆಯನ್ನು ಫ್ಲೋರ್ ಪ್ಲಾನ್ ನೋಡದ ಬೇರೆ ವ್ಯಕ್ತಿಯೇ ವಿನ್ಯಾಸಗೊಳಿಸಿದಂತೆ ಇರುತ್ತದೆ.
ತಾಂತ್ರಿಕ ಸಾಲ (Technical debt) ಎಂಬುದು ಶಿಸ್ತಿನ ವೈಫಲ್ಯವಲ್ಲ. ಇದು ಯಾವುದನ್ನಾದರೂ ವಾಸ್ತವಿಕವಾಗಿ ಬಿಡುಗಡೆ ಮಾಡಲು ಮಾಡುವ ಹೊಂದಾಣಿಕೆಗಳ (trade-offs) ನೈಸರ್ಗಿಕ ಪರಿಣಾಮವಾಗಿದೆ. ಅಪಾಯವಿರುವುದು ನಿಮ್ಮ ಕೋಡ್ ಪರಿಪೂರ್ಣವಾಗಿಲ್ಲ ಎಂಬುದಲ್ಲ. ಬದಲಾಗಿ, ಅದನ್ನು ಅಷ್ಟು ದೀರ್ಘಕಾಲದವರೆಗೆ ಪರಿಪೂರ್ಣವಲ್ಲದ ಸ್ಥಿತಿಯಲ್ಲೇ ಬಿಡುವುದು, ಇದರಿಂದ ಒಂದು ವೇರಿಯಬಲ್ ಬದಲಾಯಿಸಿದರೆ ಮೂರು ಸಂಬಂಧವಿಲ್ಲದ ವೈಶಿಷ್ಟ್ಯಗಳು ಹಾಳಾಗುವಂತಾಗುವುದು. ನೀವು ಸರ್ಚ್ ಬಾರ್ ಅನ್ನು ಮುಟ್ಟಲು ಹೆದರುತ್ತೀರಿ ಏಕೆಂದರೆ ಕಳೆದ ಬಾರಿ ಪ್ರಯತ್ನಿಸಿದಾಗ ಟ್ಯಾಗ್ ಸಿಸ್ಟಮ್ ಹಾಳಾಗಿತ್ತು. ಡೇಟಾಬೇಸ್ ಸ್ಕೀಮಾ ಒಂದು ಗಂಟಿನಂತೆ ಬೆಳೆದಿರುವುದರಿಂದ ನೀವು ಮೀಲ್-ಪ್ಲಾನರ್ ವಿಜೆಟ್ ಸೇರಿಸುವುದನ್ನು ಮುಂದೂಡುತ್ತೀರಿ.
ಒಂದು ದಿನವನ್ನು ರಿಫ್ಯಾಕ್ಟರಿಂಗ್ಗಾಗಿ ಕಳೆಯುವುದು ಎಂದರೆ ಬಡ್ಡಿ ನಿಮ್ಮನ್ನು ಮಂಡರಿಸುವ ಮೊದಲೇ ಆ ಸಾಲವನ್ನು ತೀರಿಸಿದಂತೆ. ಇದು ಸಣ್ಣ ಸಮಸ್ಯೆಗಳು ದೊಡ್ಡದಾಗದಂತೆ ತಡೆಯುತ್ತದೆ. Food Blog Platform ಅಂತಿಮವಾಗಿ ತನ್ನ ಮುಂದಿನ ಪ್ರಮುಖ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಸೇರಿಸಿದಾಗ, ಡೆವಲಪರ್ ದುರ್ಬಲ ಕೋಡ್ನ ಸುತ್ತ ಸುತ್ತುವ ಅಗತ್ಯವಿರುವುದಿಲ್ಲ. ಅವರು ಹೊಸ ಲಾಜಿಕ್ ಬರೆಯುತ್ತಾರೆ, ಅದನ್ನು ಕ್ಲೀನ್ ಇಂಟರ್ಫೇಸ್ಗೆ ಜೋಡಿಸುತ್ತಾರೆ ಮತ್ತು ಮುನ್ನಡೆಯುತ್ತಾರೆ. ಇದೇ ಹೂಡಿಕೆಯ ಮೇಲಿನ ಲಾಭ (return on investment).
ಸಣ್ಣ ಹೆಜ್ಜೆಗಳು, ನೈಜ ಕಲಿಕೆ
ಸಾಫ್ಟ್ವೇರ್ ಅಭಿವೃದ್ಧಿಯ ಬಗ್ಗೆ ಒಂದು ಪೌರಾಣಿಕ ಕಥೆಯಿದೆ - ಪ್ರಗತಿಯು ರಾತ್ರೋರಾತ್ರಿ ಎಲ್ಲವನ್ನೂ ಮರುಬರೆಯುವ ಅದ್ಭುತ ಸಾಧನೆ ಅಥವಾ ಮ್ಯಾರಥಾನ್ ಕೋಡಿಂಗ್ ಸೆಷನ್ಗಳಂತೆ ಕಾಣುತ್ತದೆ ಎಂದು. ಆದರೆ ಕೆಲಸ ಮಾಡುವ ಹೆಚ್ಚಿನ ಡೆವಲಪರ್ಗಳು ಇದು ಕೇವಲ ಕಲ್ಪನೆ ಎಂದು ಹೇಳುತ್ತಾರೆ. ನೈಜ ಪ್ರಗತಿಯು ಒಂದು ಮಂಗಳವಾರದ ಮಧ್ಯಾಹ್ನದ 'ಡಿಫ್' (diff) ನಂತೆ ಇರುತ್ತದೆ - ಅಲ್ಲಿ ಮೂರು ಫಂಕ್ಷನ್ಗಳು ಚಿಕ್ಕದಾಗುತ್ತವೆ, ಒಂದು ಅನಗತ್ಯ ಡಿಪೆಂಡೆನ್ಸಿ ತೆಗೆದುಹಾಕಲ್ಪಡುತ್ತದೆ ಮತ್ತು ಗೊಂದಲಮಯವಾದ ವೇರಿಯಬಲ್ ಹೆಸರನ್ನು ಬದಲಾಯಿಸಲಾಗುತ್ತದೆ, ಇದರಿಂದ ಮುಂದಿನ ಓದುಗರಿಗೆ ಅದು ಏನು ಮಾಡುತ್ತದೆ ಎಂಬುದು ಅರ್ಥವಾಗುತ್ತದೆ.
Food Blog Platform ನ ಡೆವ್ ಲಾಗ್ ಈ ಲಯವನ್ನು ಪರಿಪೂರ್ಣವಾಗಿ ಸೆರೆಹಿಡಿಯುತ್ತದೆ. ಸಾಫ್ಟ್ವೇರ್ ನಿರ್ಮಿಸುವುದು ಎಂದರೆ ಸಣ್ಣ, ಸ್ಥಿರವಾದ ಸುಧಾರಣೆಗಳ ಬಗ್ಗೆ. ನೀವು ಪ್ರತಿಯೊಂದು ಸವಾಲಿನಿಂದ ಕಲಿಯುತ್ತೀರಿ. ಬಹುಶಃ ಇಂದು ಸವಾಲು ಎಂದರೆ ಒಂದು ನಿರ್ದಿಷ್ಟ ಮಾಡ್ಯೂಲ್ ಇನ್ನೊಂದರ ಮೇಲೆ ಏಕೆ ಅಷ್ಟೊಂದು ಅವಲಂಬಿತವಾಗಿದೆ ಎಂದು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಇರಬಹುದು. ಅಥವಾ ಎರಡು ವಾರಗಳ ಹಿಂದೆ ತೆಗೆದುಕೊಂಡ ಶಾರ್ಟ್ಕಟ್ ಉಳಿಸಿದ ಸಮಯಕ್ಕಿಂತ ಹೆಚ್ಚು ಸಮಯವನ್ನು ಈಗ ವ್ಯಯಿಸುತ್ತಿದೆ ಎಂದು ಅರಿವಾಗಿರಬಹುದು. ಪ್ರತಿ ಕಮಿಟ್ (commit) ಪ್ರಾಜೆಕ್ಟ್ ಅನ್ನು ಉತ್ತಮಗೊಳಿಸುತ್ತದೆ, ಆ ಕಮಿಟ್ ಹೊಸದನ್ನು ಸೃಷ್ಟಿಸುವುದಕ್ಕಿಂತ ಹೆಚ್ಚು ಅಳಿಸಿಹಾಕಿದರೂ ಸಹ.
ಈ ವಿಧಾನವು ನಿಮ್ಮ ಪ್ರೇರಣೆಯನ್ನು ಸಹ ಕಾಪಾಡುತ್ತದೆ. ಬೃಹತ್ ಮಟ್ಟದ ಮರುಬರಹಗಳು ದಣಿವಿನಿಂದ ಕೂಡಿದ್ದವು ಮತ್ತು ಅಪಾಯಕಾರಿಯಾಗಿವೆ. ಹಳೆಯ ಬಗ್ಗಳನ್ನು ಪರಿಹರಿಸುವಾಗ ಇವು ಹೊಸ ಬಗ್ಗಳನ್ನು ಸೃಷ್ಟಿಸುತ್ತವೆ. ಹಂತ ಹಂತದ ರಿಫ್ಯಾಕ್ಟರಿಂಗ್, ಮಾಡಲಾಗಿದೆ
