ஒரு ஸ்டார்ட்அப்பில் (startup) உங்கள் முதல் மாதம் ஒரு தாக்கத்தை ஏற்படுத்தும். அங்கு மெதுவான தொடக்கம் இல்லை, ஐடி (IT) குழு லேப்டாப் தயார் செய்து தரும் வரை காத்திருந்து அறிமுக வீடியோக்களைப் பார்த்துக் கொண்டிருக்க வேண்டிய வாரமும் இல்லை. முதல் நாளிலேயே, நிஜமான மனிதர்கள் பயன்படுத்தக்கூடிய விஷயங்களை உருவாக்கவும், அவற்றைச் சிதைக்கவும் மற்றும் சரிசெய்யவும் நீங்கள் எதிர்பார்க்கப்படுகிறீர்கள். வேலை தேடுபவர்கள் தங்கள் விண்ணப்பங்களை ஒழுங்கமைக்க உதவும் கருவிகளை உருவாக்கும் Treevah நிறுவனத்தில் சேர்ந்த பிறகு இதை நான் விரைவாகக் கற்றுக்கொண்டேன். ஒரு ஆரம்பக்கட்ட சூழலில் கழித்த முப்பதாட்கள், எந்தவொரு வகுப்பறையோ அல்லது போட்டியோ கற்பித்ததை விட மென்பொருள் மேம்பாடு (software development) பற்றி எனக்கு அதிகம் கற்பித்தன.

இடைவிடாத வேகம்

Treevah-இல், நீங்கள் வேலையில் ஒன்றிணையப் போகிறீர்கள் என்று வேலை காத்திருக்காது. குழுவினர் தயாரிப்பை (product) alpha நிலையிலிருந்து beta நிலைக்கு, இறுதியில் production நிலைக்குக் கொண்டு செல்லத் துடித்துக்கொண்டிருக்கிறார்கள், அதாவது ஒவ்வொரு பணியும் முக்கியத்துவம் வாய்ந்தது. வெறும் பெயரளவில் செய்யும் வேலைகளுக்கோ அல்லது ஒரு பேராசிரியரின் மின்னஞ்சல் பெட்டியில் தங்கிவிடும் பணிகளுக்கோ அங்கு இடமில்லை. நீங்கள் ஒரு வசதியை (feature) வெளியிடும்போது, அது நேரடியாகத் தங்கள் அடுத்த வேலையைத் தேடிக்கொண்டிருக்கும் பயனர்களிடம் சென்றடைகிறது; அவர்கள் காலக்கெடு, நேர்காணல்கள் மற்றும் தொடர் நடவடிக்கைகளைக் கண்காணிக்க முயற்சித்துக் கொண்டிருப்பார்கள்.

அந்த வேகம் சோர்வடையச் செய்கிறது. நீங்கள் ஒவ்வொரு நாளும் மிக வேகமாகச் செயல்பட வேண்டியுள்ளது, மேலும் வேலைப்பளு நீங்கள் எதிர்பார்ப்பதை விட வேகமாகத் திரட்டுகிறது. காலக்கெடு என்பது வெறும் கற்பனையானது அல்ல; அது நிறுவனம் அதிக வேலை தேடுபவர்களுக்குச் சேவை செய்ய முடியுமா அல்லது தற்போதைய அனுபவத்தில் உள்ள இடைவெளிகளைச் சரிசெய்ய முடியுமா என்பதைத் தீர்மானிக்கும் மைல்கற்களுடன் பிணைக்கப்பட்டுள்ளது. அந்தப் பொறுப்புச் சுமை உங்களைச் சோர்வடையச் செய்யும். ஆனால் அது பெரிய நிறுவனங்களில் கிடைப்பதற்கரிய ஒரு தெளிவையும் உருவாக்குகிறது. நான் ஒரு பணியை முடிக்கும்போது, நான் உருவாக்கியவற்றுக்கும், இப்போது தங்கள் வேலைத் தேடலை எளிதாக நிர்வகிக்கும் ஒரு நபருக்கும் இடையே ஒரு நேரடித் தொடர்பை என்னால் காண முடிகிறது. அந்த உரிமையுணர்வு (ownership) அரிதானது, அது சோர்வை அர்த்தமுள்ளதாக மாற்றுகிறது.

Production சூழலில் திறன்கள் வேகமாக வளர்கின்றன

இந்தக் கோடைக்காலத்திற்கு முன்பு வரை, எனது ஆற்றல் பெரும்பாலும் பொது மேடைப் பேச்சு மற்றும் ஹேக்கத்தான்களுக்காகவே (hackathons) செலவிடப்பட்டது. இவை இரண்டும் நெருக்கடியான சூழலில் எவ்வாறு விரைவாகச் சிந்திக்க வேண்டும் மற்றும் கருத்துக்களை முன்வைக்க வேண்டும் என்பதைக் கற்றுக்கொடுத்தன. குறிப்பாக ஹேக்கத்தான்கள், சில மணிநேரங்களிலேயே ஒரு செயல்பாட்டு டெமோவை (demo) உருவாக்க உங்களுக்குப் பயிற்சியளிக்கின்றன. ஆனால் நடுவர்களைக் கவரும் ஒரு வார இறுதித் திட்டத்திற்கும் (weekend project), நூற்றுக்கணக்கான நிஜமான பயனர்களுடன் தொடர்பு கொள்ள வேண்டிய production கோடிற்கும் (production code) இடையே ஒரு வித்தியாசம் உள்ளது.

Treevah-இல் ஒரு மாதம் web development-இல் கவனம் செலுத்தியது அந்த இடைவெளியைக் குறைத்தது. பள்ளியில், திட்டங்கள் சில கட்டுப்பாடுகளுடன் (guardrails) வரும். அதன் நோக்கம் (scope) நிலையானது, தேவைகள் எளிதாகக் கொடுக்கப்படும், மேலும் உங்கள் database schema தோல்வியடைந்தால், அதை ஒரு விளக்கக்காட்சியில் (presentation slide) எளிதாகக் கூறிவிடலாம். ஆனால் ஒரு ஸ்டார்ட்அப்பிற்குள், உங்கள் schema உறுதியாக இருக்க வேண்டும், ஏனெனில் உண்மையான வேலை தேடுபவர்கள் அதில் உண்மையான விண்ணப்பத் தரவுகளைச் சேமிக்கிறார்கள். அங்கு கிடைக்கும் பின்னூட்டம் (feedback loop) உடனடியானது மற்றும் மன்னிக்காதது. ஒரு பக்கம் மெதுவாகத் திறந்தாலோ அல்லது ஒரு படிவம் (form) சேமிக்கத் தவறினாலோ, யாரும் உங்கள் மதிப்பெண்ணைப் பற்றி கவலைப்படுவதில்லை; அவர்கள் தங்களுக்குக் கிடைத்த ஒரு வாய்ப்பைத் தவறவிட்டார்களா என்பதையே கவலைப்படுகிறார்கள்.

அந்த அழுத்தம் வளர்ச்சியைத் தூண்டுகிறது. நீங்கள் சுத்தமான கோடை (cleaner code) எழுதக் கற்றுக்கொள்கிறீர்கள், அது ஒரு மதிப்பீட்டு முறை (rubric) கேட்பதாலோ அல்லது நள்ளிரவில் நீங்களே அதைச் சரிசெய்ய (debugging) வேண்டியிருக்கும் என்பதாலோ அல்ல. கோட் ரிவ்யூவின் (code review) போது நீங்கள் கூர்மையான கேள்விகளைக் கேட்கக் கற்றுக்கொள்கிறீர்கள், ஏனெனில் ஒரு பிழையுள்ள build-ஐ வெளியிடுவது என்பது நிஜமான பயனர்கள் ஒரு முட்டுக்கட்டையைச் சந்திப்பதற்கே வழிவகுக்கும். இங்குள்ள வாய்ப்புகள் பள்ளித் திட்டங்களை விடக் கடினமானவை. இங்குத் தவறுகளின் விலை அதிகம், எனவே பாடங்கள் ஆழமாகப் பதிகின்றன.

பிழைகளின் (Bugs) பணிவூட்டும் உண்மை

மென்பொருள் பிழைகள் (bugs) அனைத்தும் ஒரு பெரிய தர்க்கரீதியான தோல்வி (logical failure) என்ற ஒரு கருத்தை நான் உடைக்க விரும்புகிறேன். சில பிழைகள் அப்படி இருக்கலாம், நிச்சயமாக. ஆனால் Treevah-இல் நான் சந்தித்த பல பிழைகள் எரிச்சலூட்டும் வகையில் மிகச் சிறியவை. அவை கண்ணெதிரே மறைந்திருந்து எனது வாழ்க்கையின் பல மணிநேரங்களை வீணடித்தன.

இரண்டு முறைகள் மீண்டும் மீண்டும் தோன்றின. முதலாவது, நகல் CSS விதிகள் (duplicate CSS rules). பல டெவலப்பர்கள் பல sprints காலப்பகுதியில் ஒரே கூறுகளைத் (component) தொடும்போது, stylesheets வீக்கமடைகின்றன. ஒருவர் ஒரு margin utility class-ஐச் சேர்க்கும்போது, மற்றொருவர் component கோப்பில் ஒரு மதிப்பை நேரடியாகக் குறிப்பிடுகிறார் (hardcodes). தனித்தனியாகப் பார்த்தால் இவை இரண்டும் தவறில்லை. ஆனால் அவை இணைந்து layout மாற்றங்களையோ அல்லது specificity போட்டிகளையோ உருவாக்குகின்றன, இதனால் ஒரு பட்டன் Chrome-இல் சரியாகத் தெரிவதும் Safari-இல் உடைந்து தெரிவதும் நிகழ்கிறது. அதைத் தேடிக் கண்டுபிடிப்பது என்பது நேர்த்தியான அல்காரிதமிக் லாஜிக்கைப் படிப்பதற்குப் பதிலாக, browser dev tools-ஐத் திறந்து, ஒவ்வொரு computed style வரியையும் ஒவ்வொன்றாகப் பார்ப்பதைக் குறிக்கும்.

இரண்டாவது, கூறுகளை (elements) அவற்றின் parent divs-க்கு வெளியே வரையறுப்பது. ஒரு modal trigger அல்லது ஒரு dropdown தவறான DOM நோடில் (node) இணைக்கப்படலாம். திரை கிட்டத்தட்ட சரியாகத் தெரிவதால், கட்டமைப்பு சரியாக இருப்பதாக நீங்கள் நினைக்கலாம். பின்னர் ஒரு z-index மோதல் அல்லது ஒரு click event தவறான இடத்திற்குச் செல்லும்போது, திடீரென்று ஒரு பயனர் தனது விண்ணப்பப் படிவத்தை மறைக்கும் ஒரு பாப்அப்பை (popup) மூட முடியாமல் போகலாம். இவை கணினி அறிவியல் புதிர்கள் அல்ல. நீங்கள் வேகமாகச் செயல்படும்போது இவை ஒன்றன் பின் ஒன்றாகத் தொடரும் இடஞ்சார்ந்த மற்றும் கட்டமைப்பு சார்ந்த தவறுகள் (spatial and structural slip-ups) ஆகும்.

இந்தத் பிழைகளில் சிலவற்றைத் தேட வாரக்கணக்கில் ஆனது. நான் குறியீட்டை உற்று நோக்குவேன், தர்க்கம் சரியாக இருப்பதாக என்னை நானே நம்பிக் கொள்வேன், மற்றும் எங்கும் செல்லாத பயனற்ற பாதைகளில் அலைந்து திரிவேன். அந்த விரக்தி உண்மையானது. ஏதோ ஒரு தெளிவான விஷயத்தை நீங்கள் தவறவிடுகிறீர்கள் என்று தோன்றும், உண்மையில் நீங்கள் தவறவிடுகிறீர்கள். ஆனால், இறுதியாக ஒரு நகல் விதியையோ அல்லது தவறான இடத்தில் உள்ள ஒரு மூடும் குறியீட்டையோ கண்டறிவதில் கிடைக்கும் திருப்தி ஆச்சரியப்படத்தக்க வகையில்