Rivojlanish jarayoni to'g'risida

  1. Kod faqat bajarilishi kerak emas. Kod, shuningdek, jamoada muloqot qilish vositasi va muammoni echimini boshqalarga tushuntirish usuli. O'qilishi mumkin bo'lgan kod bu yoqimli narsa emas, bu yozish kodining asosiy qismidir. Bunga aniq faktoring kodi, tushuntiriladigan o'zgaruvchan nomlarni tanlash va yashirin bo'lgan har qanday narsani izohlashni kiritish kiradi.
  2. Keyingi reklama uchun nima kerakligini so'ramang, foydalanuvchi so'rovingiz foydalanuvchilaringiz va sizning hamjamiyatingizga nima qilishi mumkinligini so'rang. Har qanday holatda ham "sezgir hissa" dan qoching. Agar mahsulotingiz maqsadiga aniq yordam bermasa, biron bir xususiyat qo'shilmasin.
  3. Taste kodga ham tegishli. Taste - bu oddiylik istagi bilan tartibga solinadigan cheklash-qoniqish jarayoni. Oddiylikka tarafkashlik qiling.
  4. Yo'q, yo'q deyish yaxshi, chunki kimdir biron bir xususiyatni so'rasa, buni qilish kerak degani emas. Har bir xususiyat boshlang'ich amalga oshirishdan tashqari xarajatlarga ega: texnik xizmat ko'rsatish qiymati, hujjatlar narxi va foydalanuvchilar uchun kognitiv narx. Har doim so'rang: Biz buni haqiqatan ham qilishimiz kerakmi? Ko'pincha, javob shunchaki yo'q.
  5. Yangi foydalanish holatini qo'llab-quvvatlash to'g'risidagi so'rovga "ha" deb aytganda, foydalanuvchi so'ragan narsani tom ma'noda qo'shish ko'pincha maqbul tanlov emasligini unutmang. Foydalanuvchilar o'zlarining shaxsiy foydalanish holatlariga e'tibor qaratishadi va siz bunga butun loyihani yaxlit va printsipial qarash bilan qarshi turishingiz kerak. Ko'pincha, to'g'ri javob mavjud xususiyatni kengaytirishdir.
  6. Uzluksiz integratsiyaga sarmoya kiriting va butun birlik sinovlarini qamrab oling. Siz ishonch bilan kodlashingiz mumkin bo'lgan muhitda ekaningizga ishonch hosil qiling; agar bunday bo'lmasa, to'g'ri infratuzilmani yaratishga e'tibor qarating.
  7. Hammasini oldindan rejalashtirmaslik yaxshi. Biror narsani sinab ko'ring va ular qanday bo'lishini ko'ring. Noto'g'ri tanlovlarni erta qaytaring. Mumkin bo'lgan muhitni yaratganingizga ishonch hosil qiling.
  8. Yaxshi dastur qiyin ishlarni osonlashtiradi. Muammo dastlab qiyin bo'lib ko'rinishi, bu murakkab yoki foydalanish qiyin bo'lishi kerakligini anglatmaydi. Ko'pincha, muhandislar istalmagan murakkablikni keltirib chiqaradigan refleksli echimlarni taklif qiladilar (ML-dan foydalanaylik! Iltimos, dastur yarataylik! Blockchain-ni qo'shaylik!) Alternativa ancha osonroq bo'lsa ham, osonroq bo'ladi. Har qanday kodni yozishdan oldin, sizning tanlovingiz soddalashtirilmasligiga ishonch hosil qiling. Hamma narsaga birinchi printsiplardan yondashing.
  9. Noqulay qoidalardan saqlaning. O'zingiz ishlab chiqayotgan aniq bo'lmagan qoidalar har doim aniq bo'lishi kerak va boshqalar bilan bo'lishishi yoki avtomatlashtirilgan bo'lishi kerak. Algoritmik takroriy, takrorlanuvchi ish oqimiga duch kelganingizda, uni boshqa hujjatlashtirilgan jarayonga rasmiylashtirishga harakat qilishingiz kerak, shunda boshqa guruh a'zolari tajribadan foyda olishadi. Bundan tashqari, dasturiy ta'minotda avtomatlashtirilishi mumkin bo'lgan bunday ish oqimining biron bir qismini avtomatlashtirishga harakat qilishingiz kerak (masalan, to'g'riligini tekshirish).
  10. Sizning tanlovingizning umumiy ta'sirini nafaqat daromadni yoki o'sish kabi diqqatni jalb qilishni istagan bitlarni emas, balki dizayn jarayonida ham hisobga olish kerak. Siz kuzatayotgan o'lchovlardan tashqari, sizning dasturiy ta'minotingiz uning foydalanuvchilariga va butun dunyoga qanday ta'sir qiladi? Qiymat taklifidan ustun bo'lgan istalmagan yon ta'sirlar bormi? Dasturiy ta'minotning foydaliligini saqlagan holda ularga murojaat qilish uchun nima qilish kerak?
Etika uchun dizayn. O'zingizning qadriyatlaringizni ijodingizda saqlang.

API dizaynida

  1. Sizning API-da foydalanuvchilar bor, shuning uchun u foydalanuvchi tajribasiga ega. Har bir qaroringizda, foydalanuvchini doimo yodda tuting. Boshlovchilar yoki tajribali dasturchilar bo'lishidan qat'i nazar, foydalanuvchilaringizga hamdard bo'ling.
  2. Har doim sizning API-dan foydalanish paytida foydalanuvchilarga yuklangan bilim yukini minimallashtirishga intiling. Avtomatlashtirilishi mumkin bo'lgan narsalarni avtomatlashtirish, foydalanuvchidan zarur bo'lgan harakatlar va tanlovlarni minimallashtirish, ahamiyatsiz bo'lgan variantlarni fosh qilmaslik, oddiy va izchil aqliy modellarni aks ettiradigan oddiy va izchil ish oqimlarini loyihalash.
  3. Oddiy narsalar sodda bo'lishi kerak, murakkab narsalar bo'lishi mumkin. Oddiy foydalanish holatlari uchun, hatto minimal bo'lsa ham, umumiy foydalanish holatlarining kognitiv yukini oshirmang.
  4. Agar ish oqimining kognitiv yuki etarlicha past bo'lsa, foydalanuvchi uni bir yoki ikki marta bajarganidan keyin xotiradan (darslik yoki hujjatlarni qidirmasdan) o'tishi mumkin.
  5. Domen mutaxassislari va amaliyotchilarining aqliy modellariga mos keladigan API-ga ega bo'lishga intiling. Domen tajribasiga ega, ammo sizning API bilan ish tajribasi bo'lmagan kishi, minimal hujjatlardan foydalanib, sizning API-ni intuitiv ravishda tushunishga qodir bo'lishi kerak, asosan, bir nechta kod namunalarini ko'rib chiqib, qanday ob'ektlar mavjudligini va ularning imzolari nimadan iboratligini ko'rib chiqadi.
  6. Dalilning ma'nosi tushunarli bo'lishi kerak, bunda asosiy amalga oshirish haqida hech qanday ma'lumot bo'lmaydi. Foydalanuvchilar tomonidan belgilanishi kerak bo'lgan argumentlar sizning kodingizdagi amalga oshirish tafsilotlari bilan emas, balki foydalanuvchilar muammoga duch keladigan aqliy modellarga tegishli bo'lishi kerak. API bu dasturning fonda ishlashi haqida emas, balki uni hal qiladigan muammo haqida.
  7. Eng kuchli aqliy modellar modulli va ierarxik: yuqori darajadagi sodda, ammo aniqroq ma'lumotga kirishingiz kerak. Xuddi shu tarzda, yaxshi API modulli va ierarxik: yondashish oson, ammo ifodali. Kamroq ob'ektlarga murakkab imzolar qo'yish va sodda imzolar bilan ko'proq ob'ektlarga ega bo'lish o'rtasida muvozanat mavjud. Yaxshi API yaxshi imzolarga ega bo'lgan o'rtacha miqdordagi ob'ektlarga ega.
  8. Sizning API muqarrar ravishda amalga oshirishingiz, xususan ma'lumotlar tuzilmalarini tanlashingizni aks ettiradi. Intuitiv API-ga erishish uchun siz domen mutaxassislarining aqliy modellariga mos keladigan ma'lumotlarning tuzilishini tanlashingiz kerak.
  9. Atom xususiyatlarining to'plamini emas, balki ataylab ish oqimlarini ataylab loyihalash. Ko'pgina ishlab chiquvchilar API dizayniga murojaat qilishadi: qanday imkoniyatlar mavjud bo'lishi kerak? Keling, ular uchun sozlash parametrlarini olaylik. Buning o'rniga, savol bering: ushbu vositadan foydalanish holatlari qanday? Har bir foydalanish holati uchun foydalanuvchi harakatlarining maqbul ketma-ketligi qanday? Ushbu ish jarayonini qo'llab-quvvatlaydigan eng oson API nima? Sizning API-dagi atom variantlari yuqori darajadagi ish oqimida yuzaga keladigan aniq ehtiyojga javob berishi kerak - ularni qo'shmaslik kerak, chunki "kimdir kerak bo'lishi mumkin."
  10. Xato haqidagi xabarlar va umuman, foydalanuvchi bilan sizning API bilan o'zaro aloqa paytida berilgan har qanday fikrlar API qismidir. Interfaollik va fikr-mulohaza foydalanuvchi tajribasining ajralmas qismidir. API xato xabarlarini ataylab tuzing.
  11. Chunki kod - bu aloqa, ya'ni loyihani yoki o'zgaruvchini nomlash muhim ahamiyatga ega. Ismlar muammo haqida qanday fikrda ekaningizni ko'rsatadi. Haddan tashqari umumiy nomlardan (x, o'zgaruvchan, parametr) saqlaning, haddan tashqari LongAndSpecificNamingPatternlardan saqlaning, keraksiz ishqalanishni keltirib chiqaradigan atamalardan saqlaning (master, qul) va ismlarni tanlashda izchil ekaningizga ishonch hosil qiling. Nom berishning uyg'unligi ichki nomlashning izchilligini (boshqa joylarda "o'q" deb ataladigan "xira" deb nomlamang) va muammoli domen uchun belgilangan konventsiyalarga muvofiqlikni anglatadi. Nomni belgilashdan oldin domen mutaxassislari (yoki boshqa API) foydalanadigan mavjud nomlarni qidirishga ishonch hosil qiling.
  12. Hujjatlar sizning API foydalanuvchi tajribangiz uchun muhimdir. Bu qo'shimcha emas. Yuqori sifatli hujjatlarni investitsiyalash; ko'proq funktsiyalarni investitsiyalashdan ko'ra ko'proq daromad ko'rasiz.
  13. Ko'rsatmang, aytmang: hujjatlaringiz dasturiy ta'minot qanday ishlashi haqida gapirmasligi kerak, undan qanday foydalanishni ko'rsatishi kerak. Ish oxirida ishlash uchun kod namunalarini ko'rsating; har bir odatiy foydalanish holati va API uchun asosiy xususiyat uchun kod namunalarini ko'rsatish.
Hosildorlik yuqori tezlikda qarorlar qabul qilishga va harakat qilish tarafdori bo'lishga olib keladi.

Dasturiy ta'minot bo'yicha ish

  1. Karyera muvaffaqiyati bu qancha odamni boshqarishingiz emas, bu sizning ta'siringiz qancha: o'zingizning ishingizsiz va bo'lmagan dunyo o'rtasidagi tafovut.
  2. Dasturiy ta'minotni ishlab chiqish - bu jamoaviy ish; Bu texnik imkoniyatlar kabi, munosabatlarga ham taalluqlidir. Yaxshi jamoadosh bo'ling. Yo'lda ketayotib, odamlar bilan aloqada bo'ling.
  3. Texnologiya hech qachon betaraf bo'lmaydi. Agar sizning ishingiz dunyoga ta'sir qilsa, unda bu ta'sir axloqiy yo'nalishga ega. Dasturiy ta'minot mahsulotlarida biz g'ayrioddiy ko'rinadigan texnik tanlovlar texnologiyadan foydalanish shartlari, undan foydalanish imtiyozlari, kimga foyda keltirishi va kimga ziyon etkazishi mumkinligini modulyatsiya qiladi. Texnik tanlovlar ham axloqiy tanlovdir. Shunday qilib, har doim o'zingizning tanlovlaringiz qo'llab-quvvatlashini istagan qadriyatlar haqida aniq va ravshan bo'ling. Etika uchun dizayn. O'zingizning qadriyatlaringizni ijodingizda saqlang. Hech qachon o'ylamang, men shunchaki imkoniyatni rivojlantiryapman; bu o'z-o'zidan neytral. Sababi, uni qanday qurish kerakligi uning qanday ishlatilishini aniqlamaydi.
  4. O'z-o'zini boshqarish - sizning ishingiz va sharoitlaringizga bog'liqlik - bu hayotdan qoniqish garovidir. Atrofingizdagi odamlarga etarlicha o'z-o'zini yo'naltirishga va martaba tanlashingiz o'zingiz uchun katta agentlikka olib kelishiga ishonch hosil qiling.
  5. Dunyo nima kerak bo'lsa shuni yarating - nafaqat o'zingiz xohlagan narsaga. Ko'pincha texnologlar kamyob hayot kechirishadi va o'z ehtiyojlarini qondiradigan mahsulotlarga e'tibor berishadi. Sizning hayotiy tajribangizni kengaytirish uchun imkoniyatlarni qidirib toping, bu sizga dunyoga nima kerakligini yaxshiroq ko'rish imkonini beradi.
  6. Uzoq muddatli ta'sir qilish bilan har qanday tanlovni amalga oshirayotganda, qadriyatlaringizni qisqa muddatli qiziqish va ochko'zlik yoki qo'rquv kabi hissiyotlardan ustun qo'ying. Sizning qadriyatlaringiz nima ekanligini bilib oling va ularga sizni yo'naltirishga ruxsat bering.
  7. Agar biz to'qnashuvga duch kelsak, umumiy qadriyatlarimizni va mushtarak maqsadlarimizni tan olishni to'xtatib turish va biz deyarli bir tomonda ekanligimizni eslatish yaxshi.
  8. Hosildorlik yuqori tezlikda qarorlar qabul qilishga va harakat qilish tarafdori bo'lishga olib keladi. Buning uchun a) tajribadan kelib chiqadigan yaxshi sezgi kerak, qisman ma'lumot berilgan odatda to'g'ri qaror qabul qilish uchun; b) qachon ehtiyotkorlik bilan harakat qilish kerakligi va qo'shimcha ma'lumotni kutish kerakligini bilish, chunki noto'g'ri qarorning qiymati ko'proq bo'ladi. kechiktirish narxiga qaraganda. Optimal tezlikni / sifatli qarorlarni qabul qilish jarayoni turli muhitlarda juda farq qilishi mumkin.
  9. Tezroq qaror qabul qilish sizning martaba davomida ko'proq qarorlar qabul qilishingizni anglatadi, bu sizga mavjud variantlarning to'g'riligi haqida kuchli sezgi beradi. Tajriba unumdorlikning kalitidir va katta samaradorlik sizni ko'proq tajriba bilan ta'minlaydi: fazilatli tsikl.
  10. Sizning sezgiingiz etishmayotganini bilgan holatlarda, mavhum printsiplarga amal qiling. Ishingiz davomida sinab ko'rilgan va haqiqiy printsiplar ro'yxatini tuzing. Printsiplar - bu odatdagi holatni aniqlashdan ko'ra kengroq vaziyatlarni umumlashtiradigan rasmiy sezgi (bu shunga o'xshash vaziyatlarning bevosita va keng tajribasini talab qiladi).