Ishlab chiquvchi o'z ishlarining samarali kodini ko'rib chiqishni qanday rag'batlantirishi mumkin?

Men yaqinda bitirgan dasturiy ta'minot muhandisiman, 7 nafar xodim bilan kichik boshlang'ichda ishlayapman, ulardan 3 tasi dasturiy ta'minotda ishlaydi - CTO, o'zim va boshqa dasturiy ta'minot muhandisi. Men deyarli bir yil bo'ldim, va boshqa dasturiy ta'minot muhandisi bu erda bir necha oy bo'lgan. Men hech kimning xo'jayinim emasman, lekin men bir nechta ta'sirga egaman, chunki men dasturiy ta'minot guruhining uchdan bir qismini vakillik qilaman va boshqa ikkita ishlab chiqaruvchilardan ko'ra kodlash me'yorlarini bilaman.

Mening tavsiyamda biz yaqinda boshqa loyihalar bog'liq bo'lgan bir nechta asosiy kutubxonalarga joylashtiriladigan kod uchun kodni baholashni boshladik. Boshqa jamoa a'zolarining kodlari ko'rib chiqilganidan xursand. Kodni tekshirish uchun ( bu

8
Sizning beshta taklifingizga kelsak, ular butunlay noto'g'ri. siz izlayotgan jumla "Bu kodni tekshirish etarli darajada emas." yoki "bu yomon kodni tekshirish edi, uni to'g'ri bajarish kerak" yoki "Kodeksingiz bo'yicha sharhlar qabul qilinmaydi, bizga sanoat standarti bo'yicha to'liq baholash kerak."
qo'shib qo'ydi muallif scronide, manba
O'qish kodi uni yozishda bir xil mahoratga ega emas. Juda yaxshi professional ishlab chiquvchilar ko'pchilik boshqa birovning kodini o'qiy olmaydi va xatolarni tuzatuvchida ishlatmasdan nima qilishini chindan ham tushuna olmaydi. Sizning kodingizni o'qib, odamlarni xatoga yo'l qo'ymasliklarini kutish mumkin emas.
qo'shib qo'ydi muallif Hohmannfan, manba
Bitbaqadagi so'rovlarimizni topshiramiz. Odatda biz har birimiz bir-birimizga juda yaqin o'tirganimiz uchun kodli sharhlarni shaxsan muhokama qilamiz.
qo'shib qo'ydi muallif koverman47, manba
Kodni qanday tekshirish mumkin? Misol uchun, ular github kabi manba nazoratida bo'ladilarmi? Ular sizning oldingizga kelib, kodni qanday yozib qo'yishlarini izohlaydilarmi?
qo'shib qo'ydi muallif Dan, manba

6 javoblar

Dasturiy ta'minotni ishlab chiqish jarayonida o'zgarishlar qilish qiyin bo'lishi mumkin. Ayniqsa, siz o'zingizning "o'zingiz" egalik qiladigan shaxs emasligingizda (men sizning tashkilotingizning strukturasini tasvirlab beradigan tarzda emasligingizni taxmin qilaman).

Etakchilikning madaniyati va strategiyasiga qarang. Dastur sifati haqida g'amxo'rlik qilyaptimi? bormi? Men bu savolga javob berishning qiyin savolini bilaman, ammo agar siz sifatni qabul qilish madaniyati bo'lmasa, sifatga bog'liq bo'lgan tashabbusni kuchaytira olmaysiz.

O'zgarishlarni taklif qilish yoki ishlash ko'rsatkichini yoki metrikani oshirishni istagan vaqtimda, men taklifni bajarish yoki qilmaslik haqida qaror qabul qilishga yordam beradigan uchta narsani qidiraman:

  1. U amal qilishi mumkinmi? Kodni qayta ko'rib chiqish aslida maxsus o'zgarishlariga olib kelishi uchun o'rtacha taxmin bormi? Sizning jamoangiz do'stlari nima izlayotganlarini biladimi? Jamoada qarshi ishlaydigan dasturlar standarti bormi?
  2. Siz taklif qilayotgan jarayonlar natijasida aniq o'zgarishlar bo'lishi mumkinmi?

  3. Bu o'lchov mumkinmi? Tadqiqdan so'ng dasturiy ta'minotni "yaxshi" bo'lishini xohlaysizmi? Yoki sizda xatolar kamroq bo'lishini xohlaysizmi? Siz xatolar izlayapsizmi?
  4. Strategikmi? Kompaniyaga dasturiy ta'minot sifatli mahsulotini (o'lchash mumkin bo'lgan darajada yaxshilanib boradimi)? Etakchilikdan aniq yoki ravshan kutish mumkinmi yoki aniq aniqlangan maqsad yoki yo'lni oldinga yo'naltirasizmi?

    Har bir qancha tez tekshirilgandan so'ng, bu juda tez ekanligiga ishora qilar edi.

    Yuqoriga qarang

    Tadqiq uchun kod yuborish vaqtida noma'lum narsalarga diqqat qaratganim

    Ehtimol, sizning eng yaxshi fikringiz!

    Men ularni o'rganishga majbur qiladigan kod haqida savollar berishni

    Kodning sifatini yaxshilash bilan bog'liq bo'lgan savollarni to'g'rimi yoki kodni o'qish uchun ularni aldashga urindingizmi? Yuqorida aytib o'tilgan uchta testdan o'tishga yordam bermaydigan ikkinchi narsa ekanligingizni his qilyapman.

    O'z kodini menda ko'rib chiqishni kutadigan me'yorlarga muvofiq ko'rib chiqish.

    Qaysi standartlar? Haqiqiy, hujjatlashtirilgan standart mavjudmi? Yoki ularni o'z kodida topayotgan narsalarni ushlab turishni kutasizmi?

    Shuningdek, aytmoqchimanki, haqiqiy dunyoga salom! Men so'nggi paytlarda (ko'pincha vakuum ishlab chiqishda foydalaniladigan va ularning ishlarini tekshirish uchun ishlatiladigan), haqiqiy dunyoda rasmiyatchilikning etishmasligi bilan kurashish uchun, ayniqsa, kichik guruhlar ustida ish olib boradigan va tez orada yangi kompaniyalar.

7
qo'shib qo'ydi
idk. kimdir meni har hafta uchrashuvga sudrab yubordi va "Men kod yozgan bo'lsam, nima qilishimni bilmayman, iltimos tekshirib ko'rsangiz bo'ladi", dedi. "nima uchun oldindan tekshirmading?" deb o'ylardim. oldin kodi yozilgandan keyin emas, balki butun "yordamga muhtojman".
qo'shib qo'ydi muallif Bigbio2002, manba
Sizning savolingiz qaysi (agar mavjud bo'lsa) ritorik emasligiga ishonchim komil emas, lekin biz hozirda biz bajarishimizga qaramay, haqiqiy standartlarga ega ekanligimni anglab etdim, chunki men kodni tekshiruv ushbu standartni amalga oshirishga yordam berishi va umuman olganda umid bog'lashning yomon ishi bo'lishi kerak. Kompaniya madaniyatiga kelsak, bizda faqat uchtamiz, shuning uchun men o'smay turib madaniyatni rivojlantirishga harakat qilyapman (?), Bu haqda g'amxo'rlik qilmaydigan madaniyat.
qo'shib qo'ydi muallif koverman47, manba
@walrus Menimcha, siz to'g'ri ish qilyapsiz, faqat aniqroq bo'lishi kerak va qabul qilinadigan yo'nalishga o'tishingiz kerak. Hamkasblaringizni kompyuter sifatida tasavvur qiling. Agar kompyuter siz xohlagan narsani qilmasa, siz u erda o'tirmaymiz va "qattiqroq harakat qiling" deb ayting. Buning o'rniga, kompyuterga kerakli ko'rsatmalar berasiz. Ko'pincha, siz ham "dastur" bilan ishlashingiz kerak. "ko'proq harakat qiling!" ishlamaydi. Muammo shundaki, kompyuterlar nima bo'lishidan qat'i nazar, siz ularga aytadigan gapingizni bajaradi, faqat odamlar uni maqsadi bo'lsa, buni amalga oshirishadi - strategiya va madaniyat muhim ahamiyatga ega.
qo'shib qo'ydi muallif dwizum, manba
Bundan tashqari, agar bu aniq bo'lmasa, javobimning boshqa qismi ba'zan "yaxshi" g'oya "to'g'ri" fikr emas edi. Siz har qanday dasturiy ta'minot do'koniga kirib, jarayonni yaxshiroq qilish uchun o'nlab usullarni topishingiz mumkin, ammo bu qanday taktikadan foydalanmasangiz ham, u mumkin bo'lgan o'zgarishlarning hech biriga bog'liq bo'lmaydi. Sizning asosiy maqsadingiz - sifatni ta'minlash muhim bo'lgan madaniyatni yaratishdir. Kodni o'rganish, ehtimol, bu birinchi o'yin emas, balki, madaniyatni o'zgartirishning so'nggi o'yinida. Sifatni takomillashtirishdan oldin, odamlar sifatni qadrlashini va uni qanday o'lchash yoki kuzatishni bilishingiz kerak.
qo'shib qo'ydi muallif dwizum, manba

One point - things are different for all teams, so if something doesn't work try it a different way

Ikki nuqta </​​strong>

  • turli odamlar turli xil narsalarni qilayotganda yaxshi. Siz odamlarni narsalar qilishingiz mumkin, lekin bu ularning iste'dodlarini yo'qotishdir.
  • Siz kodni sharhlardan foydalanmoqdasiz, lekin ular uchun maqsad yo'q

One

Birinchi holatda siz kodni tekshirishni qanday bajarish haqida o'ylashingiz kerak. O'tmishda, men buni o'z stolidagi odamlar tomonidan alohida amalga oshirilganini ko'rdim va ular faqatgina "OK" yoki "rad etish" uchun ba'zi kodlarni to'g'ri deb hisoblaydilar. Bu yanada samaralidir, biroq u kamroq aloqa borligini anglatadi. Bundan tashqari, odamlar bu vazifani "yakkaxon" qilishlari mumkin, va keyin haftada bir/ikki marta muloqotni yaxshilash uchun guruh sifatida kodni ko'rib chiqiladi.

Ikki

Ikkinchi nuqta savolga javob beradi: Nega jamoa do'stlaringiz kodni tekshirishda xatolaringizni ushlab turishni kutmoqdasiz? Men bularni juda yaxshi ko'rgan ekanman, buni hech qachon ko'rmaganman.

Ular sinov uchun muvaffaqiyatsizlikka ega emas (bu sizning xatolaringiz qanday tekshirilishi kerak, kodni tekshirishdan oldin ham), bu ko'proq

  • ma'lumot almashish
  • uslubiy izchillik

Men nima uchun muvaffaqiyatsizlikka duch kelganingizni bilmayman, "siz aniq bir maqsadga erishmaysiz" degan gapga tushib qoladi, lekin shuni ta'kidlayman:

  • Reviewing their code according to the standards which I would expect them to review mine
    • Sure. This might work - if you annoy someone, they'll annoy you back the same way, because implicitly they're trying to show you how annoying you are (show, don't tell). But I don't think this is an ideal way to get code reviews working.

Sizning muvaffaqiyatsizligingiz jamoada hech kimning kodni tekshirish uchun nimani anglatishini, nima maqsadda ekanligini va nima uchun ular buni qilayotganini tushunmaydi.

Biroq, ular ni amalga oshiradi, shuning uchun bu muhim ahamiyatga ega ekanligini tushunishadi. Bu sizning eng katta to'siq va siz o'tmishda qolasiz. Keling, ularga kodni o'rganish bilimlarni almashish uchun tushunish kerak.

Ammo ehtimol sizning komandangiz o'zlarining alohida maydonlarini egallashlari mumkin, shuning uchun ma'lumotlar bazasiga egalik qilasiz, Danny old tomonga egalik qiladi va Sham orqa uchini boshqaradi. Siz ushbu tizimda kod tekshiruvlarini olish uchun kurashasiz, chunki hech kim haqiqatdan ham boshqa kishining nima qilayotganini bilmaydi yoki bilmaydi.

Shunday qilib, siz buning o'rniga ishni o'zaro almashtirishni boshlashingiz kerakmi?

Siz kodni tekshirmoqchi bo'lgan nima uchun deb o'ylashingiz kerak. Agar uni xatoga yo'l qo'yadigan bo'lsa, unda siz birinchi navbatda to'g'ri testga muhtoj bo'lasiz. Agar jamoaviy muloqotni yaxshilasa, unda ular tabiiy ravishda ko'proq vaqt sarflaydilar va ko'proq muloqot qilishadi.

Kodni o'rganib chiqish "chunki u blogda o'qiganim uchun" foydali emas, yoki ishonchli emas. Ularni bajarish "kodning ravshanligini yaxshilash uchun", lekin agar o'lchashni amalga oshirolmasangiz kodni aniqligini aniqlay olmasangiz, ular ishlayotganini ko'rsatish qiyin, shunday emasmi?

  • Uzr so'raymiz! Siz buni yo'qotgansiz.
4
qo'shib qo'ydi
Mening fikrlarim aniq. Kodni tekshiruv versiyasida keng zarbalarni tekshirib ko'raman: hech qanday ochiq qarshi zaifliklari, birlik sinov kodlari qamrovi, hech qanday yomon naqshlar yo'q, singan birlik sinovlari va boshqalar. Men odatda kodni bajarolmayman - Men bu masalani chuqurroq topish uchun kutmoqdamiz. O'Sh kabi tovushlar ko'plab kutilgan natijalarga ega.
qo'shib qo'ydi muallif bvoyelr, manba

Kodni tekshirishda xatoliklarni topish qiyin. Tadqiqotchi, ba'zi bir noto'g'ri xatoliklarni topish uchun kodning barcha mantiqlari orqali ishlashi kerak - hech qanday xatolik yo'qligi haqida aniqlik yo'q.

Izohlar oqilona, ​​agar nomlar mantiqiy bo'lsa va kod yaxshi tuzilgan bo'lsa, tekshirish oson. Statik kodni tahlil qilish vositasi ham buni amalga oshirishi mumkin bo'lsa-da, boshlanmagan parametrlarga o'xshash xatolarni ham aniqlab olishingiz mumkin.

Agar siz xatolar topmoqchi bo'lsangiz, ko'proq sinovdan o'ting va yaxshiroq sinovdan o'ting. Odamlarni ijodiy ishlarni bajarish uchun saqlang.

2
qo'shib qo'ydi

It's not high school, say these words:

Ushbu kodni ko'rib chiqish etarli darajada emas.

Eslatma - bu so'zlarni menejerga yoki hamkasblariga ayting.

Ular aytganidek, siz "o'rta maktabda emassiz".

Bu ish joyi, kompaniyaning va xodimlarning yagona maqsadi, qat'iyat bilan pul topishdir. Aniq gapiring.


BTW sizga yordam berishi mumkin:

Men doimo tavsiya qilaman.

Richard Branson nima demoqchi?

(Siz o'zingizning mamlakatingizda yoki madaniyatida milliy biznes-qahramonni o'rnini egallashingiz mumkin.

Keling, bu Richard Brenson bilan yuz bergani aniq (u gipotetik, u yosh dasturchi). Uning hamkasbiga nima dedi?

Ushbu kodni ko'rib chiqish etarli darajada emas. Keling, buni qayta ko'rib chiqamiz.

Uning xo'jayiniga nima dedi?

Jek kodini tekshirish etarli darajada emas. Keling, buni qayta ko'rib chiqamiz.

Oddiy bo'lishi mumkin emas. Yarim sanoqli vaqtdan beri ...... boshqa narsalar haqida o'ylashni vaqt sarflashni o'ylayapsizmi? Yo'q, yuqoridagi jumlalarni aytardi.

Siz ham mumkin!

1
qo'shib qo'ydi

Kodni tekshirishda kerak bo'lgan narsalarni aniqlaydigan ariza bor (Word doc). Quyidagi kabi narsalar:

  • Tegishli nomlash qoidalari va fikrlar ishlatilgan
  • O'lgan manba kodining borligini kamaytirish
  • Kuchli ma'lumot turlari imkoni boricha foydalaniladi.
  • NULL parametrlari yoki noldan qat'i nazar, to'g'ri ishlov berilmagan hisoblashlar, noto'g'ri qiymat qaytarish imkonini beradi
  • Katıştırılmış SQL yoki JB ulanishining oldini olish
  • Chiqarish, funksiyalar nomini o'zgartirish, ma'lumotlar oqimi uchun
  • manba kodining o'qilishi.
  • va shunga o'xshash (ro'yxatdagi 40+ ta maqola)

Har bir element uchun bu elementga sharhlar uchun bo'sh joy mavjud bo'lgan Pass/Fail/NA katakchasi mavjud. Keyin umumiy o'tish, istisnolar bilan o'tish yoki sharhlar maydoni bilan bo'linishni rad etish.

Biz uchun regulyatsiya sanoati sifatida har qanday kod - web, SQL skriptini va hokazolarni ko'chirishdan avval ishlab chiqarish muhitiga to'g'ri kodni tekshirish talab qilinadi. Bu hujjatning bir qismi. Agar biz bu ozod paketining bir qismi hisoblanmagan bo'lsak audit olib borilsa, jarimalar va/yoki ishlarni yo'qotgan odamlar bo'lishi mumkin.

Bunga omad tilaymiz. Kodni o'rganish ayrim ishlab chiquvchilar yoqmasligi va ayrim rahbarlar ta'kidlamasliklari kerak. Ular etarli darajada tekshirilmagan kod bilan bog'liq muammolarga duch kelgandan keyingina nuqta olishadi.

1
qo'shib qo'ydi

Men sizning maslahatingiz githubni ishlatish uchun xo'jayinga yuboradi. Bu erda sharhlar va sharhlarni rag'batlantiradigan yaxshi jamoa xususiyati bor. Ularda korporativ hisob mavjud.

Amal qilishingiz mumkin bo'lgan narsalar (bu github bo'lganida ishlagan):

  1. Tekshirish so'rovlarini tasdiqlovchi bir kishi bor, lekin faqat ikkita barmoqlari bo'lsa va barchasi «TODO» yoki savollarga javob bersa
  2. olish so'rovlarini ko'rib chiqqan bir yoki bir nechta shaxsni belgilang. Bu tasodifiy yoki hudud mutaxassislari bo'lishi mumkin.
  3. Pulni magistral filialga qabul qilishdan oldin barcha savollar javob berilishi kerak.

Bundan tashqari, kod qo'llanmasini tayyorlash muvofiqlikni rag'batlantiradi. Funktsiya nomlari, tabbing, o'zgarmaydigan nomlar, ramkalar, if-else darajadagi cheklovlar, funktsional darajada cheklashlar va boshqalar. Shunday qilib, har bir kishi hech bo'lmaganda qabul qilinadigan kod haqida fikr bildirishi mumkin va buning ustiga har bir kishi oson o'qiladigan formatga mos keladi. Github buni ko'p jihatdan amalga oshirishi mumkin.

0
qo'shib qo'ydi