𝗚𝗶𝘃𝗲 𝗬𝗼𝘂𝗿 𝗖𝗼𝗱𝗲𝗯𝗮𝘀𝗲 𝗮 𝗖𝗼𝗻𝘀𝘁𝗶𝘁𝘂𝘁𝗶𝗼𝗻

લોકોના મગજમાં રહેલી આર્કિટેક્ચર કોડિંગ એજન્ટ્સ (coding agents) સામે ટકી શકતી નથી.

વર્ષો સુધી, કોડબેઝના નિયમો માત્ર 'ટ્રાઇબલ નોલેજ' (પરંપરાગત જ્ઞાન) તરીકે રહ્યા છે. સિનિયર એન્જિનિયરો જાણતા હતા કે કયા લેયર્સ એકબીજા સાથે વાત કરી શકે છે. તેઓ જાણતા હતા કે કયા ડિપેન્ડન્સીઝ (dependencies) પ્રતિબંધિત છે. નવા એન્જિનિયરો વસ્તુઓ તોડીને અને રિવ્યુમાં સુધારો મેળવીને શીખતા હતા.

આ માણસો માટે કામ કરે છે કારણ કે માણસો સમય જતાં સંદર્ભ (context) બનાવે છે. એજન્ટ્સ સંદર્ભ બનાવતા નથી. તેઓ ફક્ત એટલું જ જાણે છે જે તેઓ જોઈ શકે છે.

જો કોઈ નિયમ લખવામાં ન આવ્યો હોય, તો એજન્ટ વિચારે છે કે તે નિયમ અસ્તિત્વમાં જ નથી. મેં એજન્ટ્સને ઇનર લેયર્સને આઉટર લેયર્સ સાથે જોડતા જોયા છે. તેઓ એવી ડિપેન્ડન્સીઝ લાવે છે જેને આપણે ખાસ કરીને ટાળી હતી. કોડ કામ કરે છે, પરંતુ આર્કિટેક્ચર ખોરવાઈ જાય છે.

તમારે તમારી આર્કિટેક્ચરને લોકકથામાંથી કાયદામાં બદલવી પડશે.

બંધારણ એ ડોક્યુમેન્ટેશન (documentation) નથી. ડોક્યુમેન્ટેશન સમજાવે છે કે સિસ્ટમ આજે કેવી રીતે કામ કરે છે. બંધારણ વ્યાખ્યાયિત કરે છે કે સિસ્ટમ શું બનવા માટે મંજૂર છે.

તમારું બંધારણ એવી બાબતો પર ધ્યાન કેન્દ્રિત કરવું જોઈએ જે મોટા રિફેક્ટર (refactor) પછી પણ ટકી રહે. તેમાં નીચેની બાબતોનો સમાવેશ થવો જોઈએ:

  • કાયદાઓ અને ઇનવેરિયન્ટ્સ (invariants)
  • સિસ્ટમની સીમાઓ (system boundaries)
  • પાયાની ધારણાઓ (foundational assumptions)

શ્રેષ્ઠ બંધારણો ટૂંકા, પ્રતિબંધિત અને બદલાવામાં ધીમા હોય છે.

આર્કિટેક્ચરને ડિરેક્ટરી સ્ટ્રક્ચર સાથે ન જોડો. ડિરેક્ટરીઓ બદલાતી રહે છે. આર્કિટેક્ચરને જવાબદારીઓ (responsibilities) સાથે જોડો. ડોમેન મોડેલ (domain model) તેના ફોલ્ડરને ધ્યાનમાં લીધા વિના પણ ડોમેન મોડેલ જ રહે છે.

દરેક કાયદા પાછળ એક કારણ હોવું જોઈએ. તર્ક વગરનો નિયમ એવા વ્યક્તિ દ્વારા કાઢી નાખવામાં આવે છે જે તેને સમજી શકતી નથી. નિયમ વર્તણૂક શીખવે છે. કારણ નિર્ણય લેવાની ક્ષમતા (judgment) શીખવે છે.

સૌથી મહત્વનું એ છે કે, તમારે તમારા કાયદાઓનો અમલ કરવો જ જોઈએ.

સૂચનાઓ માર્ગદર્શન છે. અમલીકરણ એ વાસ્તવિકતા છે. એજન્ટ અથવા માણસ આખરે લેખિત સૂચનાની અવગણના કરશે જ.

જો કોઈ નિયમ નિર્ણાયક હોય, તો માત્ર લખાણ પર આધાર રાખશો નહીં. તેને તમારા CI માં મૂકો. તેને લિન્ટર (linter) માં મૂકો. તેને વેલિડેટર (validator) માં મૂકો.

દરેક મહત્વપૂર્ણ નિયમ માટે બે સ્વરૂપો હોવા જોઈએ:

  • માનવ સંસ્કરણ (human version): આ હેતુ સમજાવે છે.
  • મશીન સંસ્કરણ (machine version): આ પાલન (compliance) ની ખાતરી આપે છે.

આ પ્રક્રિયા ઉમેરવા વિશે નથી. આ લીવરેજ (leverage) ઉમેરવા વિશે છે. જ્યારે આર્કિટેક્ચરનો અમલ કરી શકાય તેવું હોય, ત્યારે તમારે દરેક નિર્ણયની તપાસ કરવાની જરૂર નથી. મશીન તે તમારા માટે કરી દેશે.

જ્યારે તમે સીમાઓ (boundaries) પર વિશ્વાસ કરી શકો છો, ત્યારે તમે વધુ કામ સોંપી શકો છો.

કેવી રીતે શરૂ કરવું:

તમારા રિવ્યુઝ પર ધ્યાન આપો. જ્યારે પણ તમે કહો છો કે "અમે તે નથી કરતા કારણ કે," ત્યારે તમે એક કાયદો શોધી લીધો છે.

થોડા નિયમોથી શરૂઆત કરો:

  • ડિપેન્ડન્સીની દિશા (Dependency direction)
  • સિક્રેટ હેન્ડલિંગ (Secret handling)
  • નિર્ણાયક કોન્ટ્રાક્ટ્સ (Critical contracts)
  • બાઉન્ડરી ઓનરશિપ (Boundary ownership)

નિયમ લખો. કારણ લખો. પછી એવો કોડ ચેક ઉમેરો જે તેને તોડવો અશક્ય બનાવે.

અમલીકરણ વગરનો કાયદો માત્ર એક સૂચન છે.

સ્ત્રોત: https://dev.to/miteshethos/give-your-codebase-a-constitution-3k4h

વૈકલ્પિક લર્નિંગ કોમ્યુનિટી: https://t.me/GyaanSetuAi