የእርስዎ Repo ታሪኩን ሙሉ በሙሉ አልነገረም

ኮድ ያለውን ያሳያል። ምክንያቶቹ ግን በspecs፣ incidents፣ data እና decisions ውስጥ ይኖራሉ።

የእርስዎ Repo ታሪኩን ሙሉ በሙሉ አልነገረም

አንድ feature ከተለቀቀ ስድስት ወር በኋላ repository ከፍተው ብዙ ነገሮችን መልሰው ማቀናበር ይችላሉ። architectureን መከታተል፣ schemaን መመርመር፣ testsን ማንበብ እና በትክክል የተቀየሩትን መስመሮች ማየት ይችላሉ።

ነገር ግን ብዙ ጊዜ መልሰው ማቀናበር የማይችሉት እነዚያን መስመሮች አስፈላጊ ያደረገውን ውይይት ነው።

ኮዱ አንድ የvalidation rule ስለሚኖር አይነግርዎትም፤ ምክንያቱም አንድ ደንበኛ malformed exports ስለሚልክ ነው። እንዲሁም አስገራሚ የretry policy በdownstream system ውስጥ የተደጋጋሚ ግብይቶችን እንደሚከላከል አያብራራም። ከaccessibility test በኋላ የበለጠ ንጹህ የሆነ interface እንደተቀበለ አያሳይም፣ ወይም የservice boundary የengineering ምርጫ ሳይሆን የውል ገደብን እንደሚያንጸባርቅ አያሳይም።

Git የcode historyን ለማስቀመጥ እጅግ ጥሩ ነው። intentን የሚያስቀምጠው ግን ቡድን ያንን intent በግልጽ ሁኔታ ሲጽፈው እና ከimplementation ጋር ተያይዞ ሲጠብቀው ብቻ ነው።

ይህ ክፍተት ሁልጊዜም የsoftware engineering አካል ነበር። የAI coding tools ግን ይህን የበለጠ ግልጽ አድርገውታል። አንድ system በrepository ውስጥ ያለውን እያንዳንዱን file ሊያነብ፣ እያንዳንዱን symbol ሊከተል እና በቴክኒክ አሳማኝ patch ሊፈጥር ይችላል፤ ነገር ግን አሁንም የተሳሳተውን ችግኝ ሊፈታ ይችላል።

ችግኙ ኮዱ አሳሳች መሆኑ አይደለም። ኮዱ የሚመልሰው ይበልጥ የተገደበ ጥያቄ ነው።

አምስት የengineering እውነት ንብርብሮች

አብዛኛዎቹ ትርጉም ያላቸው የሶፍትዌር ለውጦች በአምስት የተለያዩ የevidence ንብርብሮች ላይ ይመሰረታሉ።

  1. Intent — ተጠቃሚው፣ ደንበኛው ወይም ንግዱ የሚጠይቀው ውጤት ምንድን ነው? ይህ በspecification፣ ticket፣ support conversation ወይም meeting note ውስጥ ሊኖር ይችላል።
  2. Constraints — ምን ነገር መሰበር የለበትም? የcompatibility ቃል ኪዳኖች፣ የsecurity ድንበሮች፣ ደንቦች፣ ውሎች፣ በጀቶች እና deadlines ብዙ ጊዜ ከrepository ውጭ ይገኛሉ።
  3. Implementation — system ዛሬ እንዴት ይሰራል? ኮዱ፣ tests፣ schemas፣ dependencies እና deployment configuration ይህን ንብርብር ይሰጣሉ።
  4. Runtime evidence — በእውነተኛው system ውስጥ ምን እየተከሰተ ነው? Logs፣ traces፣ metrics፣ production data እና incident reports በኮድ ውስጥ ምክንያታዊ የሚመስሉ ግምቶችን ሊቃረኑ ይችላሉ።
  5. Decision history — አሁን ያለው አቀራረብ ለምን ተመረጠ? Pull requests፣ design discussions፣ የተቀበሉ አማራጮች እና ያለፉ incidents መልሱን ይይዛሉ።

repository በሦስተኛው ንብርብር ላይ በጣም ጠንካራ ነው። ከሌሎቹ ክፍሎች አንዳንዶቹን ይይዛል፣ ነገር ግን ሙሉ በሙሉ ለመወከል ብዙ ጊዜ በቂ አይሆንም።

ይህ አስፈላጊ ነው፤ ምክንያቱም የሶፍትዌር ውድቀቶች ብዙ ጊዜ በንብርብሮች መካከል ባሉ ድንበሮች ላይ ይታያሉ። implementation ከዘመኑ ያለፈ specification ጋር ይጣጣማል። fix ቲኬቱን ያሟላል ነገር ግን የoperational constraint ይጥሳል። tests የሚያልፉት የትናንት ግምቶችን ስለሚያካትቱ ነው። ኮዱ በውስጡ የተጣጣመ ሲሆን production data ግን ማንም ያልመዘገበውን ንድፍ ይከተላል።

በአካባቢው ትክክል የሆነ patch እንኳን አሁንም የተሳሳተ ለውጥ ሊሆን ይችላል።

ማከማቻው ብቻውን መመለስ የማይችለው

አንድ ተጠቃሚ ሰነድ አርትዖት ካደረገ በኋላ የተዘመነውን ሐረግ ሲፈልግ በውጤቶቹ ውስጥ አሮጌውን ስሪት ብቻ እንደሚያይ አስቡ። “ፍለጋው ወዲያውኑ እንዲዘመን አድርጉ” የሚለው ግልጽ ጥያቄ ይመስላል። ማከማቻው ለመጀመር የሚቻሉ በርካታ ቦታዎችን ያሳያል፣ ግን ትክክለኛውን መፍትሔ በራሱ ሊወስን አይችልም።

ጥያቄ ሊሆን የሚችለው ምንጭ
የትኛው የሰነዱ ስሪት ባለሥልጣን ያለው ነው? የምንጭ ሰነድ እና የክለሳ ታሪክ
አሮጌው ጽሑፍ የት እንደቀረ ነው? የማመሳሰል ሎጎች፣ የማውጣት ውጤት፣ የፍለጋ ኢንዴክስ፣ ወይም ካሽ
ለዚህ ምርት “ወዲያውኑ” ማለት ምን ማለት ነው? የምርት ቃል ኪዳን ወይም የአገልግሎት ግብ
የሰነዱ ፈቃዶች ከይዘቱ ጋር አብረው ተቀይረዋልን? የምንጭ ፈቃዶች እና የኦዲት ታሪክ
ያረጀው ውጤት በአንድ ተጠቃሚ፣ ምንጭ ወይም ክልል ብቻ የተገደበ ነውን? የጥያቄ ክትትሎች እና የፕሮዳክሽን መለኪያዎች

የፍለጋ ኮዱ ውጤቶች እንዴት እንደሚመለሱ ሊያብራራ ይችላል። ነገር ግን እውነተኛው ችግር የማመሳሰል መዘግየት፣ ያረጀ ማውጣት፣ የካሽ ማስወገድ፣ የፈቃድ ስርጭት፣ ወይም ምርቱ ፈጽሞ ያልገለጸው ተስፋ መሆኑን ሊነግርዎት አይችልም።

ይህ ልዩነት በበሰሉ ስርዓቶች ውስጥ የበለጠ አስፈላጊ ይሆናል። ያረጀ የሚመስል አንድ መስክ አሁንም የቆየ ደንበኛን ሊደግፍ ይችላል። ተደጋጋሚ የሚመስል አገልግሎት የተለያዩ የፈቃድ መስፈርቶች ያላቸውን ውሂቦች ለመለየት ሊኖር ይችላል። ከልክ በላይ የሚመስል ምርመራ ደግሞ አሁን ያለው ቡድን ፈጽሞ ያላየው የፕሮዳክሽን ክስተት በኮድ ደረጃ የቀረው ብቸኛ ምልክት ሊሆን ይችላል።

ውስብስብነትን መሰረዝ ዋጋ አለው። ነገር ግን እንደ ውስብስብነት ተሸፍኖ ያለ ታሪክን መሰረዝ ውድ ነው።

ተጨማሪ አውድ ቢኖርም እንኳ የተሳሳተ መልስ ሊያመጣ ይችላል

ግልጽ የሚመስለው መፍትሔ AI-ን ተጨማሪ ቁሳቁስ መስጠት ነው፦ ሙሉ ማከማቻውን፣ እያንዳንዱን ቲኬት፣ እያንዳንዱን ሰነድ፣ እያንዳንዱን መልዕክት፣ እና እያንዳንዱን ሎግ።

ይህ የሚፈጥረው መዳረሻ ነው፣ ግን ግንዛቤ አይደለም።

ምንጮች ያረጁ፣ የሚጋጩ፣ ግምታዊ፣ ወይም ለተለያዩ ተመልካቾች የተጻፉ ሊሆኑ ይችላሉ። የሐሳብ ማፍለቂያ ከጸደቀ መግለጫ በላይ ክብደት ሊኖረው አይገባም። የስድስት ወር ዕድሜ ያለው መስፈርት የትናንቱን የምርት ውሳኔ በዝምታ ሊሽር አይገባም። የፕሮዳክሽን ሎግ ከሪሊዙ፣ አካባቢው እና ከፈጠረው የኮድ መንገድ ጋር መያያዝ አለበት። የደንበኛ ጥያቄ ወሰኑን ሳይመረምሩ እንደ ሁሉን አቀፍ መስፈርት መወሰድ የለበትም።

ስለዚህ ጠንካራ የአውድ ስርዓት ከመመለስ በላይ ነገር ያስፈልገዋል። ስለሚከተሉት ማመዛዘን የሚችል መንገድ ያስፈልገዋል፦

  • ባለሥልጣንነት: መስፈርቱን ለመወሰን የተፈቀደለት ምንጭ የትኛው ነው?
  • ወቅታዊነት: የትኛው መረጃ አሁን ወቅታዊ ነው፣ እና የትኛው ተተክቷል?
  • ምንጭነት: እያንዳንዱ ጥያቄ፣ ገደብ ወይም መደምደሚያ ከየት መጣ?
  • ግንኙነቶች: የትኛው ጉዳይ፣ ሪሊዝ፣ ደንበኛ፣ የውሂብ ስብስብ እና የኮድ መንገድ እርስ በርሳቸው ይዛመዳሉ?
  • ፈቃዶች: ለዚህ ተግባር ሊጠቀሙባቸው የሚችሉ እና ለዚህ ሰው ሊታዩ የሚችሉ ምንጮች የትኞቹ ናቸው?

አውድ የቶከኖች ክምር አይደለም። ጊዜ፣ ባለሥልጣንነት እና ወሰኖች ያሉት ግራፍ ነው።

ተጨማሪ አውድ ተጨማሪ ማስረጃ ማምጣት አለበት፣ ማስረጃ ሳይኖር ተጨማሪ እርግጠኝነት አይደለም።

እውነተኛው የሥራ ክፍል ለውጡ ነው

አርታኢዎች እና የኮድ መሣሪያዎች በፋይሎች ዙሪያ የተደራጁ ናቸው ምክንያቱም የምንቀይራቸው እነሱን ስለሆነ ነው። የምህንድስና ቡድኖች ግን በለውጦች ዙሪያ የተደራጁ ናቸው።

ለውጥ በምክንያት ይጀምራል። ወደ መስፈርት ይቀየራል፣ ኮድን እና ውሂብን ይነካል፣ በግምገማ ያልፋል፣ ወደ ፕሮዳክሽን ይደርሳል፣ እና አዲስ ማስረጃ ይፈጥራል። እነዚህ ደረጃዎች ከተለያዩ ቢቀሩ፣ ማንኛውም የወደፊት ተግባር በሌላ ዙር የቅርስ ቁፋሮ ይጀምራል።

በእውነተኛ ሶፍትዌር ላይ የሚሰራ AI ስርዓት ይህን የሕይወት ዑደት መከተል አለበት።

ከትግበራ በፊት፣ ጥያቄውን፣ ተዛማጅ ገደቦችን እና ማንኛውንም የሚጋጩ ምንጮች መለየት አለበት። ጉድለት እየጠገነ እንደሆነ፣ የሚጠበቀውን ባህሪ እየቀየረ እንደሆነ፣ ወይም አዲስ ውል እያስገባ እንደሆነ ማወቅ አለበት።

በትግበራ ወቅት፣ እያንዳንዱን ትርጉም ያለው ምርጫ ከማስረጃ ጋር ማገናኘት አለበት። ለምን ይህ ሞጁል? ለምን ይህ የማይግሬሽን ስትራቴጂ? ለምን ይህን ቅርንጫፍ ማቆየት? ማብራሪያው ኮዱን ከፈጠረው ውይይት በላይ መቆየት አለበት።

አፈጻጸሙ ከተከናወነ በኋላ, የማረጋገጫ ውጤቶችን፣ የግምገማ ውሳኔዎችን፣ እና አዲስ የተገኙ ገደቦችን ከለውጡ ጋር ማያያዝ አለበት። አለበለዚያ ቀጣዩ ሰው—ወይም ቀጣዩ AI ክፍለ-ጊዜ—እነዚህን እንደገና ማግኘት ይኖርበታል።

ይህ ማለት ሪፖዚቶሪን ማስተካከል ብቻ የሚችል መሣሪያ እና በምህንድስና ሥራ ውስጥ በእውነት መሳተፍ የሚችል ስርዓት መካከል ያለው ልዩነት ነው።

AI ፍርድን ማስወገድ ሳይሆን እንደገና የመገንባት ሥራን መቀነስ አለበት

የተሻለ ኮንቴክስት አንዳንድ ጊዜ ወደ ራስ-ሰር የሶፍትዌር ልማት የሚወስድ መንገድ እንደሆነ ይቀርባል። ወዲያውኑ የሚገኘው እሴት ከዚያ ያነሰ ድራማዊ ቢሆንም የበለጠ ጠቃሚ ነው፤ ለውጥ ከማድረግ በፊት እውነታን እንደገና ለመገንባት የሚያስፈልገውን ወጪ መቀነስ።

AI ዋናውን መስፈርት ከተዛማጅ ኮድ ጎን ሊያመጣ ይችላል። ያልተለመደ መከላከያን የሚያብራራውን ክስተት ሊያሳይ ይችላል። የሚወድቅ መለኪያን ያስቀየረው ሪሊዝ ጋር ሊያገናኝ ይችላል። አፈጻጸም ከመጀመሩ በፊት ሁለት ባለሥልጣን ምንጮች እንደማይስማሙ ሊያሳይ ይችላል።

እነዚህ ችሎታዎች የምህንድስና ፍርድን አያስወግዱም። ይልቁንም ፍርድን በተሻለ መረጃ የተደገፈ ያደርጉታል።

አሁንም አንድ ሰው የትኛው መለዋወጫ ተቀባይነት እንዳለው፣ መስፈርቱ የተሟላ መሆኑን ወይም አለመሆኑን፣ እና አንድ ሪሊዝ ምን ያህል አደጋ ሊሸከም እንደሚችል መወሰን አለበት። ስርዓቱ ማስረጃውን ግልጽ ማድረግ እና ምክንያታዊ ሂደቱ ሊመረመር የሚችል እንዲሆን ማድረግ አለበት። እርግጠኝነት እጥረትን ከተቀናበረ ፓች ጀርባ መደበቅ የለበትም።

መለኪያው “ኮድ ማመንጨት ይችላል?” የሚለው አይደለም።

መለኪያው “ለምን ይህ አሁን ትክክለኛው ለውጥ እንደሆነ ማብራራት ይችላል?” የሚለው ነው።

ከሪፖዚቶሪ-አዋቂነት ወደ ሥራ-አዋቂነት

የኮድ ረዳቶች መጀመሪያ ጠቃሚ የሆኑት በገንቢው ፊት ያለውን ፋይል በመረዳት ነበር። የሪፖዚቶሪ አዋቂነት ቀጣዩ ትልቅ እርምጃ ነበር፤ ተዛማጅ ኮድን መፈለግ፣ ምልክቶችን መከታተል፣ እና በአንድ ፕሮጀክት አቀፍ ለውጦችን መተግበር።

ቀጣዩ እርምጃ በሪፖዚቶሪው ዙሪያ ያለውን ሥራ ማወቅ ነው።

ይህ ማለት ኮድን ከጠየቀው ዝርዝር መግለጫ፣ ከገለጸው ውይይት፣ ከተፈታተነው የፕሮዳክሽን ማስረጃ፣ እና ከዚያ በኋላ ሊታወስ ከሚገባው ውሳኔ ጋር ማገናኘት ማለት ነው። እንዲሁም ግንኙነት የሌለውን፣ ጊዜው ያለፈበትን፣ ወይም ከተጠቃሚው ፈቃድ ውጭ የሆነውን ኮንቴክስት ማስወገድ ማለት ነው።

Dvina እየገነባን ሳለን፣ ደጋግመን የምንመለስበት ሀሳብ ከእነዚህ አንዱ ይህ ነው። ሥራ በአንድ ፋይል፣ መተግበሪያ ወይም ውይይት ውስጥ ብቻ አይከናወንም። ትርጉም የሚኖረው በእነሱ መካከል ባሉ ግንኙነቶች ውስጥ እና እነዚያ ግንኙነቶች በጊዜ ሂደት እንዴት እንደሚለወጡ ውስጥ ነው።

ሪፖዚቶሪው አሁንም መሠረታዊ ነው። ለስርዓት ባህሪ ሊፈጸም የሚችል የእውነት ምንጭ ነው። ብቻውን ግን ለምርት ዓላማ፣ ለኦፕሬሽናል እውነታ፣ ወይም ለድርጅታዊ ማስታወሻ የተሟላ የእውነት ምንጭ አይደለም።

ሙሉ ታሪኩ የሚገነባውን ነገር ይቀይራል

ኮዱ ብቻ ሲኖር፣ ተፈጥሯዊው ጥያቄ ይህ ነው፦

ይህን ስርዓት የሚስማማው ለውጥ ምንድን ነው?

ሰፊው ኮንቴክስት ሲኖር፣ ጥያቄው ወደዚህ ይቀየራል፦

ይህን ስርዓት፣ ይህን መስፈርት፣ ይህን ታሪክ፣ እና ይህን ወቅት የሚስማማው ለውጥ ምንድን ነው?

ያ ሁለተኛው ጥያቄ ገደቦች ወደ ኋላ መመለሶች ከመቀየራቸው በፊት ይይዛል። ለገምጋሚዎችም ከትግበራው ጀርባ ያለውን ምክንያታዊ መሠረት ያቀርባል። አዲስ የቡድን አባላት ስርዓቱ ለምን እንዲህ እንደሚመስል እንዲረዱ ይረዳል። AI የተመሠረተ ሚና እንዲኖረውም ያደርጋል፤ በኤዲተሩ ውስጥ ያለ ኦራክል ሳይሆን፣ በሥራው አጠቃላይ ላይ ማስረጃን ሰብስቦ ሊያቀርብ የሚችል ተሳታፊ እንዲሆን።

የእርስዎ repo ታሪኩን በሙሉ የሚነግር ነገር አልነበረም።

እድሉ ያለው የቀረውን ሁሉ ማንበብ የሚችሉ ስርዓቶችን በመገንባት ነው—እና እንዴት ወደ ውጤታቸው እንደደረሱ እንዲያሳዩ።

Dvinaን ይቀላቀሉ

በነጻ ይመዝገቡ እና ሁሉንም መሳሪያዎችዎን ወደ አንድ ቀላል workspace ያምጡ።

ተጨማሪ ያስሱ

አገልግሎቶቻችን ያለችግር እንዲሠሩ አስፈላጊ የሆኑ የትንታኔ መረጃዎችን ብቻ እንሰበስባለን።