uz O'zbekcha (✅) en English
Eng kam hayratlanish tamoyili
Prinsiplar +3 06.08.2023 209

Eng kam hayratlanish tamoyili - Wikipedia

Odamlar tizimning bir qismidir. Dizayn foydalanuvchi tajribasi, taxminlari va aqliy modellariga mos kelishi kerak.

Frans Kaashoek

Ushbu tamoyil tizimlar va interfeyslarni xususiyatlar va funksionallik osongina topiladigan va foydalanuvchi kutganlariga mos keladigan tarzda ishlab chiqilishini taklif qiladi. Foydalanuvchilarni "hayratlantiruvchi" xususiyatlardan intuitiv ravishda mavjud naqsh va amaliyotlarga asoslanib fikr yuritish mumkin bo'lgan xususiyatlar foydasiga to'sqinlik qilish kerak.

Ko'pgina misollar foydalanuvchi interfeyslarida mavjud, masalan, kontentni yangilash uchun mobil ilovada "pastga tortish" ishorasi. Boshqa bir misol buyruq qatori vositalari bo'lishi mumkin, bu erda parametrlar qanday nomlanishi, mavjud bo'lishi kerak bo'lgan umumiy parametrlar va boshqalar uchun ko'plab standartlar mavjud.

Shuningdek qarang:

The Principle of Least Astonishment
Prinsiplar +3 06.08.2023 209

The Principle of Least Astonishment on Wikipedia

People are part of the system. The design should match the user's experience, expectations, and mental models.

Frans Kaashoek

This principle proposes that systems and interfaces should be designed in a way that features and functionality is easily discovered and matches users expectations. Features that 'surprise' users should be discouraged in favour of features that can be intuitively reasoned about based on existing patterns and practices.

Many examples are present in user interfaces, such as a 'pull down' gesture on a mobile appliation to refresh content. Another example would be command line tools, where many standards exist for how parameters are named, common parameters that should be available and so on.

See also:

Taqsimlangan hisoblashning xatolari
Prinsiplar +2 06.08.2023 327

Taqsimlangan hisoblash xatolari - Wikipedia

Tarmoqli hisoblash xatolari nomi bilan ham tanilgan, xatoliklar tarqatilgan hisoblashlar haqidagi taxminlar (yoki eʼtiqodlar) roʻyxati boʻlib, bu dasturiy taʼminotni ishlab chiqishda nosozliklarga olib kelishi mumkin. Taxminlar quyidagilardan iborat:

  1. Tarmoq ishonchli
  2. Kechikish nolga teng
  3. Tarmoqli kengligi cheksizdir
  4. Tarmoq xavfsiz
  5. Topologiya o'zgarmaydi
  6. Bitta administrator bor
  7. Transport narxi nolga teng
  8. Tarmoq bir hil

Dastlabki to'rtta element Bill Joy va Tom Lyon tomonidan 1991 yilda ro'yxatga olingan va birinchi bo'lib Jeyms Gosling tomonidan "Tarmoqli hisoblash xatolari" sifatida tasniflangan. L. Peter Deutsch 5, 6 va 7-noto'g'rilarni qo'shib qo'ydi. 90-yillarning oxirida Gosling 8-chi xatoni qo'shdi.

Guruh o'sha paytda Sun Microsystems ichida sodir bo'layotgan voqealardan ilhomlangan.

Bardoshli kodni loyihalashda ushbu xatolarni diqqat bilan ko'rib chiqish kerak; Agar ushbu noto'g'ri tushunchalarning har biri tarqalgan tizimlarning haqiqatlari va murakkabliklari bilan shug'ullana olmaydigan noto'g'ri mantiqqa olib kelishi mumkin.

Shuningdek qarang: Taqsimllangan hisoblash xatolarini qidirish (1-qism) - Vaidehi Joshi Medium

The Fallacies of Distributed Computing
Prinsiplar +2 06.08.2023 327

The Fallacies of Distributed Computing on Wikipedia

Also known as Fallacies of Networked Computing, the Fallacies are a list of conjectures (or beliefs) about distributed computing, which can lead to failures in software development. The assumptions are:

  1. The network is reliable
  2. Latency is zero
  3. Bandwidth is infinite
  4. The network is secure
  5. Topology doesn't change
  6. There is one administrator
  7. Transport cost is zero
  8. The network is homogeneous

The first four items were listed by Bill Joy and Tom Lyon around 1991 and first classified by James Gosling as the "Fallacies of Networked Computing". L. Peter Deutsch added the 5th, 6th and 7th fallacies. In the late 90's Gosling added the 8th fallacy.

The group was inspired by what was happening at the time inside Sun Microsystems.

These fallacies should be considered carefully when designing code which is resilient; assuming any of these fallacies can lead to flawed logic which fails to deal with the realities and complexities of distributed systems.

See also:

YAGNI
Prinsiplar +1 06.08.2023 146

YAGNI tamoyili Wikipedia

Bu "You Ain't Gonna Need It" (Sizga kerak bo'lmaydi) so'zining qisqartmasi.

Har doim narsalarni sizga haqiqatan ham kerak bo'lganda amalga oshiring, hech qachon ularga muhtojligingizni oldindan bilganingizda.

(Ron Jeffries)  (XP hammuassisi va "O'rnatilgan ekstremal dasturlash" kitobining muallifi)

Ushbu Extreme Programming (XP) tamoyilini ishlab chiquvchilarga faqat bevosita talablar uchun zarur bo'lgan funksionallikni amalga oshirishi va keyinchalik kerak bo'lishi mumkin bo'lgan funksiyalarni amalga oshirish orqali kelajakni bashorat qilishga urinishlardan qochish kerakligini taklif qiladi.

Ushbu tamoyilga rioya qilish kodlar bazasida foydalanilmagan kod miqdorini kamaytirishi va hech qanday qiymat keltirmaydigan funksionallikka vaqt va kuch sarflanishiga yo'l qo'ymaslik kerak.

Shuningdek qarang: O`qishingiz kerak:  Exstrimal Dasturlash o`rnatilgan

YAGNI
Prinsiplar +1 06.08.2023 146

YAGNI on Wikipedia

This is an acronym for You Ain't Gonna Need It.

Always implement things when you actually need them, never when you just foresee that you need them.

(Ron Jeffries) (XP co-founder and author of the book "Extreme Programming Installed")

This Extreme Programming (XP) principle suggests developers should only implement functionality that is needed for the immediate requirements, and avoid attempts to predict the future by implementing functionality that might be needed later.

Adhering to this principle should reduce the amount of unused code in the codebase, and avoid time and effort being wasted on functionality that brings no value.

See also: Reading List: Extreme Programming Installed

KISS tamoyili
Prinsiplar +1 06.08.2023 209

KISS tamoyili Wikipedia

Oddiy tuting, ahmoq.

KISS tamoyili shuni ko'rsatadiki, ko'pchilik tizimlar, agar ularni murakkablashtirgandan ko'ra oddiy bo'lsa, yaxshi ishlaydi; shuning uchun dizaynda soddalik asosiy maqsad bo'lishi kerak va keraksiz murakkablikdan qochish kerak. 1960 yilda AQSh dengiz flotida paydo bo'lgan bu ibora samolyot muhandisi Kelli Jonson bilan bog'langan.

Bu tamoyilini Jonsonning dizaynerlar guruhiga bir nechta asboblarni topshirganligi haqidagi hikoya eng yaxshi misol qilib ko'rsatadi, chunki ular loyihalashtirgan reaktiv samolyotni jangovar sharoitlarda faqat shu asboblar bilan ta'mirlash mumkin bo'lishi kerak. Demak, "ahmoq" muhandislarning o'z imkoniyatlarini emas, balki narsalarni buzish usuli va ularni ta'mirlash uchun mavjud vositalarning murakkabligi o'rtasidagi munosabatni anglatadi.

Shuningdek qarang: Gall qonuni

The KISS principle
Prinsiplar +1 06.08.2023 209

KISS on Wikipedia

Keep it simple, stupid

The KISS principle states that most systems work best if they are kept simple rather than made complicated; therefore, simplicity should be a key goal in design, and unnecessary complexity should be avoided. Originating in the U.S. Navy in 1960, the phrase has been associated with aircraft engineer Kelly Johnson.

The principle is best exemplified by the story of Johnson handing a team of design engineers a handful of tools, with the challenge that the jet aircraft they were designing must be repairable by an average mechanic in the field under combat conditions with only these tools. Hence, the "stupid" refers to the relationship between the way things break and the sophistication of the tools available to repair them, not the capabilities of the engineers themselves.

See also: Gall's Law

Bog’liqlik Inversiyasi tamoyili
Prinsiplar +1 06.08.2023 210

 Bog'liqlik Inversiyasi tamoyili - Wikipedia

Yuqori darajadagi modullar past darajadagi ilovalarga bog'liq bo'lmasligi kerak.

"SOLID" tamoyillarining beshinchisi. Ushbu tamoyil yuqori darajadagi orkestrlash komponentlari o'zlarining bog'liqliklari tafsilotlarini bilishlari shart emasligini bildiradi.

Misol tariqasida, bizda veb-saytdagi metama'lumotlarni o'qiydigan dastur borligini tasavvur qiling. Biz asosiy komponent veb-sahifa tarkibini yuklab olish uchun komponent, so'ngra metama'lumotlarni o'qiy oladigan komponent haqida bilishi kerak deb taxmin qilamiz. Agar biz qaramlik inversiyasini hisobga oladigan bo'lsak, asosiy komponent faqat bayt ma'lumotlarini oladigan mavhum komponentga, keyin esa bayt oqimidan metama'lumotlarni o'qiy oladigan mavhum komponentga bog'liq bo'ladi. Asosiy komponent TCP/IP, HTTP, HTML va boshqalar haqida bilmaydi.

Bu tamoyil murakkab, chunki u tizimning kutilayotgan bog'liqliklarini (shuning uchun nomini) «invertatsiya qilish» kabi ko'rinishi mumkin. Amalda, bu, shuningdek, alohida orkestrlash komponenti mavhum turlarning to'g'ri bajarilishini ta'minlashi kerakligini anglatadi (masalan, oldingi misolda, metadata o'quvchi komponentini hali ham HTTP faylni yuklab oluvchi va HTML meta tegini o'quvchi bilan ta'minlashi kerak). Keyin bu Boshqaruvning Inversiyasi va Qaramlik in'ektsiyasi kabi naqshlarga to'g'ri keladi.

Shuningdek qarang:

The Dependency Inversion Principle
Prinsiplar +1 06.08.2023 210

The Dependency Inversion Principle on Wikipedia

High-level modules should not be dependent on low-level implementations.

The fifth of the 'SOLID' principles. This principle states that higher-level orchestrating components should not have to know the details of their dependencies.

As an example, imagine we have a program which read metadata from a website. We would assume that the main component would have to know about a component to download the webpage content, then a component which can read the metadata. If we were to take dependency inversion into account, the main component would depend only on an abstract component which can fetch byte data, and then an abstract component which would be able to read metadata from a byte stream. The main component would not know about TCP/IP, HTTP, HTML, etc.

This principle is complex, as it can seem to 'invert' the expected dependencies of a system (hence the name). In practice, it also means that a separate orchestrating component must ensure the correct implementations of abstract types are used (e.g. in the previous example, something must still provide the metadata reader component a HTTP file downloader and HTML meta tag reader). This then touches on patterns such as Inversion of Control and Dependency Injection.

See also:

Interfeyslarga bo`lish tamoyili
Prinsiplar +2 06.08.2023 197

Interfeyslarga bo`lish tamoyili - Wikipedia

Hech bir mijoz o'zi ishlatmaydigan usullarga qaram bo'lishga majburlanmasligi kerak.

"SOLID" tamoyillarining to'rtinchisi. Ushbu printsip komponentning iste'molchilari aslida foydalanmayotgan komponentning funktsiyalariga bog'liq bo'lmasligi kerakligini bildiradi.

Misol tariqasida, bizda faylni ifodalovchi tuzilmadan XML hujjatini o'qish usuli borligini tasavvur qiling. U faqat baytlarni o'qishi, faylda oldinga yoki orqaga siljishi kerak. Agar fayl tuzilmasining bog'liq bo'lmagan xususiyati o'zgarganligi sababli ushbu usulni yangilash kerak bo'lsa (masalan, fayl xavfsizligini ifodalash uchun foydalaniladigan ruxsatlar modelining yangilanishi), u holda printsip bekor qilingan. Fayl uchun "seekable-stream" interfeysini amalga oshirish va XML o'quvchi uchun undan foydalanish yaxshiroq bo'lar edi.

Ushbu tamoyil ob'ektga yo'naltirilgan dasturlash uchun alohida ahamiyatga ega, bu erda interfeyslar, ierarxiyalar va mavhum turlar turli komponentlar orasidagi bog'lanishni minimallashtirish uchun ishlatiladi. Duck typing - bu aniq interfeyslarni yo'q qilish orqali ushbu printsipni amalga oshiradigan metodologiya.

Shuningdek qarang:

The Interface Segregation Principle
Prinsiplar +2 06.08.2023 197

The Interface Segregation Principle on Wikipedia

No client should be forced to depend on methods it does not use.

The fourth of the 'SOLID' principles. This principle states that consumers of a component should not depend on functions of that component which it doesn't actually use.

As an example, imagine we have a method which reads an XML document from a structure which represents a file. It only needs to read bytes, move forwards or move backwards in the file. If this method needs to be updated because an unrelated feature of the file structure changes (such as an update to the permissions model used to represent file security), then the principle has been invalidated. It would be better for the file to implement a 'seekable-stream' interface, and for the XML reader to use that.

This principle has particular relevance for object-oriented programming, where interfaces, hierarchies and abstract types are used to minimise the coupling between different components. Duck typing is a methodology which enforces this principle by eliminating explicit interfaces.

See also:

Liskovning o'rin almashtirish tamoyili
Prinsiplar 0 06.08.2023 219

Liskovning o'rin almashish tamoyili on Wikipedia

Tizimni buzmasdan turni pastki turga almashtirish mumkin bo'lishi kerak.

"SOLID" tamoyillarining uchinchisi. Ushbu tamoyil shuni ko'rsatadiki, agar komponent bir turga tayansa, u tizimning ishlamay qolishi yoki ushbu kichik turning tafsilotlarini bilmasdan turib, ushbu turdagi kichik turlardan foydalanish imkoniyatiga ega bo'lishi kerak.

Misol tariqasida, bizda faylni ifodalovchi tuzilmadan XML hujjatini o'qish usuli borligini tasavvur qiling. Agar usul asosiy turdagi "fayl" dan foydalansa, u holda "fayl" dan kelib chiqadigan har qanday narsa funktsiyada ishlatilishi kerak. Agar "fayl" teskari qidirishni qo'llab-quvvatlasa va XML tahlilchisi bu funktsiyadan foydalansa, lekin teskari qidirishga urinishda olingan "tarmoq fayli" turi muvaffaqiyatsiz bo'lsa, "tarmoq fayli" printsipni buzgan bo'ladi.

Ushbu tamoyil ob'ektga yo'naltirilgan dasturlash uchun alohida ahamiyatga ega, bunda tizim foydalanuvchilarini chalkashtirib yubormaslik uchun tip ierarxiyasini diqqat bilan modellashtirish kerak.

Shuningdek qarang:

The Liskov Substitution Principle
Prinsiplar 0 06.08.2023 219

The Liskov Substitution Principle on Wikipedia

It should be possible to replace a type with a subtype, without breaking the system.

The third of the 'SOLID' principles. This principle states that if a component relies on a type, then it should be able to use subtypes of that type, without the system failing or having to know the details of what that subtype is.

As an example, imagine we have a method which reads an XML document from a structure which represents a file. If the method uses a base type 'file', then anything which derives from 'file' should be usable in the function. If 'file' supports seeking in reverse, and the XML parser uses that function, but the derived type 'network file' fails when reverse seeking is attempted, then the 'network file' would be violating the principle.

This principle has particular relevance for object-oriented programming, where type hierarchies must be modeled carefully to avoid confusing users of a system.

See also:

Ochiq/Yopiqlik tamoyili
Prinsiplar +1 06.08.2023 185

Ochiq yopiqlik tamoyili Wikipedia

Ob'ektlar uzaytirish uchun ochiq va o'zgartirish uchun yopiq bo'lishi kerak.

"SOLID" tamoyillarining ikkinchisi. Ushbu tamoyil ob'ektlar (sinflar, modullar, funktsiyalar va boshqalar bo'lishi mumkin) o'zlarining xatti-harakatlarini kengaytirish imkoniyatiga ega bo'lishlari kerakligini, lekin ularning mavjud xatti-harakatlarini o'zgartirib bo'lmasligini bildiradi.

Gipotetik misol sifatida Markdown hujjatini HTMLga aylantira oladigan modulni tasavvur qiling. Endi tasavvur qiling-a, Markdown spetsifikatsiyasiga matematik tenglamalarni qo'llab-quvvatlaydigan yangi sintaksis qo'shildi. Yangi matematik sintaksisni amalga oshirish uchun modul kengaytmalarga ochiq bo'lishi kerak. Biroq, mavjud sintaksis ilovalari (masalan, paragraflar, o'qlar va boshqalar) o'zgartirish uchun yopilishi kerak. Ular allaqachon ishlaydi, biz odamlar ularni o'zgartirishini xohlamaymiz.

Ushbu printsip ob'ektga yo'naltirilgan dasturlash uchun alohida ahamiyatga ega, bunda biz osongina kengaytiriladigan ob'ektlarni loyihalashimiz mumkin, lekin ularning mavjud xatti-harakatlari kutilmagan tarzda o'zgarishi mumkin bo'lgan ob'ektlarni loyihalashdan qochamiz.

Shuningdek qarang:

The Open/Closed Principle
Prinsiplar +1 06.08.2023 185

The Open/Closed Principle on Wikipedia

Entities should be open for extension and closed for modification.

The second of the 'SOLID' principles. This principle states that entities (which could be classes, modules, functions and so on) should be able to have their behaviour extended, but that their existing behaviour should not be able to be modified.

As a hypothetical example, imagine a module which is able to turn a Markdown document into HTML. Now imagine there is a new syntax added to the Markdown specification, which adds support for mathematical equations. The module should be open to extension to implement the new mathematics syntax. However, existing syntax implementations (like paragraphs, bullets, etc) should be closed for modification. They already work, we don't want people to change them.

This principle has particular relevance for object-oriented programming, where we may design objects to be easily extended, but would avoid designing objects which can have their existing behaviour changed in unexpected ways.

See also:

Yagona javobgarlik tamoyili
Prinsiplar 0 06.08.2023 278

Yagona javobgarlik tamoyili - Wikipedia

Har bir modul yoki sinf faqat bitta mas'uliyatga ega bo'lishi kerak.

"SOLID" tamoyillarining birinchisi. Ushbu tamoyil modullar yoki sinflar bir narsani va faqat bitta narsani bajarishi kerakligini ko'rsatadi. Amaliy ma'noda, bu dasturning xususiyatiga bitta, kichik o'zgartirish faqat bitta komponentni o'zgartirishni talab qilishini anglatadi. Masalan, parolni murakkablik uchun tekshirish usulini o'zgartirish dasturning faqat bitta qismini o'zgartirishni talab qilishi kerak.

Nazariy jihatdan, bu kodni yanada mustahkam va o'zgartirishni osonlashtirishi kerak. O'zgartirilayotgan komponentning yagona mas'uliyati borligini bilish, bu o'zgarishni sinab ko'rish osonroq bo'lishi kerakligini anglatadi. Oldingi misoldan foydalanib, parol murakkabligi komponentini o'zgartirish faqat parol murakkabligi bilan bog'liq xususiyatlarga ta'sir qilishi mumkin. Ko'p mas'uliyatli tarkibiy qismga o'zgartirishning ta'siri haqida fikr yuritish ancha qiyin bo'lishi mumkin.

Shuningdek qarang:

The Single Responsibility Principle
Prinsiplar 0 06.08.2023 278

The Single Responsibility Principle on Wikipedia

Every module or class should have a single responsibility only.

The first of the "SOLID" principles. This principle suggests that modules or classes should do one thing and one thing only. In more practical terms, this means that a single, small change to a feature of a program should require a change in one component only. For example, changing how a password is validated for complexity should require a change in only one part of the program.

Theoretically, this should make the code more robust, and easier to change. Knowing that a component being changed has a single responsibility only means that testing that change should be easier. Using the earlier example, changing the password complexity component should only be able to affect the features which relate to password complexity. It can be much more difficult to reason about the impact of a change to a component which has many responsibilities.

See also:

SOLID
Prinsiplar +1 06.08.2023 182

Bu qisqartma bo'lib, u quyidagilarga ishora qiladi:

Bular Ob'ektga yo'naltirilgan dasturlashning asosiy tamoyillari. Bu kabi dizayn tamoyillari ishlab chiquvchilarga yanada barqaror tizimlarni yaratishga yordam berishi kerak.

SOLID
Prinsiplar +1 06.08.2023 182

This is an acronym, which refers to:

These are key principles in Object-Oriented Programming. Design principles such as these should be able to aid developers build more maintainable systems.

Barqarorlik tamoyili
Prinsiplar 0 06.08.2023 194

Barqarorlik tamoyili Wikipedia

Qilayotgan ishlaringizda konservativ bo'ling, boshqalardan qabul qilgan narsada liberal bo'ling.

Ko'pincha server ilovalarini ishlab chiqishda qo'llaniladigan ushbu tamoyil siz boshqalarga yuborgan narsangiz imkon qadar minimal va mos bo'lishi kerakligini ta'kidlaydi, lekin agar uni qayta ishlash mumkin bo'lsa, mos kelmaydigan kiritishga ruxsat berishni maqsad qilishingiz kerak.

Ushbu tamoyilning maqsadi mustahkam tizimlarni yaratishdir, chunki agar niyat hali ham tushunilsa, ular noto'g'ri shakllangan ma'lumotlarni boshqarishi mumkin. Biroq, noto'g'ri kiritilgan ma'lumotlarni qabul qilish, ayniqsa, bunday kirishni qayta ishlash yaxshi sinovdan o'tkazilmagan bo'lsa, xavfsizlikka ta'sir qilishi mumkin. Ushbu ta'sirlar va boshqa masalalar Erik Allman tomonidan "Qayta ko'rib chiqilgan mustahkamlik printsipi" kitobida tasvirlangan.

Vaqt o'tishi bilan mos kelmaydigan kiritishga ruxsat berish, protokollarning rivojlanish qobiliyatini buzishi mumkin, chunki amalga oshiruvchilar oxir-oqibat o'z xususiyatlarini yaratish uchun ushbu liberallikka tayanadilar.

Shuningdek qarang: Hyrum qonuni

The Robustness Principle (Postel's Law)
Prinsiplar 0 06.08.2023 194

The Robustness Principle on Wikipedia

Be conservative in what you do, be liberal in what you accept from others.

Often applied in server application development, this principle states that what you send to others should be as minimal and conformant as possible, but you should aim to allow non-conformant input if it can be processed.

The goal of this principle is to build systems which are robust, as they can handle poorly formed input if the intent can still be understood. However, there are potentially security implications of accepting malformed input, particularly if the processing of such input is not well tested. These implications and other issues are described by Eric Allman in The Robustness Principle Reconsidered.

Allowing non-conformant input, in time, may undermine the ability of protocols to evolve as implementors will eventually rely on this liberality to build their features.

See Also: Hyrum's Law

Piter printsipi
Prinsiplar 0 06.08.2023 274

The Peter Principle on Wikipedia

Ierarxiyadagi odamlar odatda o'zlarining "qobiliyatsizlik darajasi" ga ko'tarilishadi.

Laurence J. Peter

Lorens J. Piter tomonidan ishlab chiqilgan boshqaruv kontseptsiyasi, Piter printsipi, o'z ishlarida yaxshi bo'lgan odamlar, ular endi muvaffaqiyatga erisha olmaydigan darajaga (ularning "qobiliyatsizlik darajasi") yetguncha ko'tarilishini kuzatadi. Ayni paytda, ular kattaroq bo'lganligi sababli, ular tashkilotdan chetlatilish ehtimoli kamroq (agar ular juda yomon ishlamasa) va o'zlarining ichki ko'nikmalariga ega bo'lmagan rolda yashashda davom etadilar, chunki ularni yaratgan asl qobiliyatlari Muvaffaqiyatli bo'lish ularning yangi ishlari uchun zarur bo'lgan ko'nikmalar emas.

Bu muhandislar uchun alohida qiziqish uyg'otadi - ular dastlab chuqur texnik rollarda boshlanadi, lekin ko'pincha boshqa muhandislarni boshqarishga olib keladigan martaba yo'liga ega - bu mutlaqo boshqacha mahorat to'plamini talab qiladi.

Shuningdek qarang:

The Peter Principle
Prinsiplar 0 06.08.2023 274

The Peter Principle on Wikipedia

People in a hierarchy tend to rise to their "level of incompetence".

Laurence J. Peter

A management concept developed by Laurence J. Peter, the Peter Principle observes that people who are good at their jobs are promoted, until they reach a level where they are no longer successful (their "level of incompetence"). At this point, as they are more senior, they are less likely to be removed from the organisation (unless they perform spectacularly badly) and will continue to reside in a role which they have few intrinsic skills at, as their original skills which made them successful are not necessarily the skills required for their new jobs.

This is of particular interest to engineers - who initially start out in deeply technical roles, but often have a career path which leads to managing other engineers - which requires a fundamentally different skill set.

See Also:

Shirkiy printsipi
Prinsiplar 0 06.08.2023 154

The Shirky Principle explained

Institutlar o'zlari hal qiladigan muammoni saqlab qolishga harakat qiladilar.

Clay Shirky

Shirkiy printsipi shuni ko'rsatadiki, murakkab echimlar - kompaniya, sanoat yoki texnologiya - ular hal qilayotgan muammoga shunchalik e'tibor qaratishlari mumkinki, ular beixtiyor muammoning o'zini davom ettirishi mumkin. Bu qasddan bo'lishi mumkin (muammoning yangi nuanslarini topishga intilayotgan kompaniya, bu muammoni hal qilishni davom ettirishni asoslaydi) yoki beixtiyor (muammoni to'liq hal qiladigan yoki uni bartaraf etadigan echimni qabul qila olmasligi yoki qurishni xohlamasligi).

Bog'liq bo'lgan:

  • Apton Sinklerning mashhur satri: "Odamning maoshi uning tushunmasligiga bog'liq bo'lsa, biror narsani tushunishga majbur qilish qiyin!"
  • Kley Kristensenning “Innovatorning dilemmasi”

Shuningdek qarang:

The Shirky Principle
Prinsiplar 0 06.08.2023 154

The Shirky Principle explained

Institutions will try to preserve the problem to which they are the solution.

Clay Shirky

The Shirky Principle suggests that complex solutions - a company, an industry, or a technology - can become so focused on the problem that they are solving, that they can inadvertently perpetuate the problem itself. This may be deliberate (a company striving to find new nuances to a problem which justify continued development of a solution), or inadvertent (being unable or unwilling to accept or build a solution which solves the problem completely or obviates it).

Related to:

  • Upton Sinclair's famous line, "It is difficult to get a man to understand something, when his salary depends upon his not understanding it!"
  • Clay Christensen's The Innovator's Dilemma

See also:

Pareto tamoyili (80/20 qoidasi)
Prinsiplar +1 06.08.2023 390

Pareto tamoyili - Wikipedia

Hayotdagi ko'p narsalar bir tekis taqsimlanmagan.

Pareto tamoyili shuni ko'rsatadiki, ba'zi hollarda natijalarning aksariyati ozchilikdan kelib chiqadi:

  • Muayyan dasturiy ta'minotning 80% umumiy ajratilgan vaqtning 20% da yozilishi mumkin (aksincha, kodning eng qiyin 20% 80% vaqtni oladi)
  • Harakatning 20 foizi natijaning 80 foizini beradi
  • Ishning 20 foizi daromadning 80 foizini tashkil qiladi
  • 20% xatolar 80% buzilishlarga olib keladi
  • Xususiyatlarning 20 foizi foydalanishning 80 foizini tashkil qiladi

1940-yillarda amerikalik-ruminiyalik muhandis doktor Jozef Juran sifat nazoratining otasi sifatida tanilgan, Pareto tamoyilini sifat masalalariga qo'llay boshladi.

Ushbu tamoyil, shuningdek, 80/20 qoidasi, Hayotiy Ozchilik Qonuni va Omillarning kamligi tamoyili sifatida ham tanilgan.

Haqiqiy dunyo misollari:

  • 2002 yilda Microsoft eng ko'p xabar qilingan xatolarning 20 foizini tuzatib, Windows va ofisdagi tegishli xatolar va ishdan chiqishlarning 80 foizini yo'q qilishini xabar qildi (Ma'lumotnoma).
The Pareto Principle (The 80/20 Rule)
Prinsiplar +1 06.08.2023 390

The Pareto Principle on Wikipedia

Most things in life are not distributed evenly.

The Pareto Principle suggests that in some cases, the majority of results come from a minority of inputs:

  • 80% of a certain piece of software can be written in 20% of the total allocated time (conversely, the hardest 20% of the code takes 80% of the time)
  • 20% of the effort produces 80% of the result
  • 20% of the work creates 80% of the revenue
  • 20% of the bugs cause 80% of the crashes
  • 20% of the features cause 80% of the usage

In the 1940s American-Romanian engineer Dr. Joseph Juran, who is widely credited with being the father of quality control, began to apply the Pareto principle to quality issues.

This principle is also known as: The 80/20 Rule, The Law of the Vital Few, and The Principle of Factor Sparsity.

Real-world examples:

  • In 2002 Microsoft reported that by fixing the top 20% of the most-reported bugs, 80% of the related errors and crashes in windows and office would become eliminated (Reference).
Dilbert printsipi
Prinsiplar +1 06.08.2023 245

The Dilbert Principle on Wikipedia

Kompaniyalar layoqatsiz xodimlarni ish jarayonidan olib tashlash uchun boshqaruvga muntazam ravishda ko'tarishga moyildirlar.

Scott Adams

Skott Adams (Dilbert komiks yaratuvchisi) tomonidan ishlab chiqilgan boshqaruv konsepsiyasi, Dilbert printsipi Piter printsipidan ilhomlangan. Dilbert printsipiga ko'ra, hech qachon malakali bo'lmagan xodimlar etkazilishi mumkin bo'lgan zararni cheklash uchun rahbarlikka ko'tariladi. Adams birinchi marta 1995 yilda Wall Street Journal maqolasida printsipni tushuntirgan va uni 1996 yilda "Dilbert printsipi" biznes kitobida kengaytirgan.

Shuningdek qarang: 

The Dilbert Principle
Prinsiplar +1 06.08.2023 245

The Dilbert Principle on Wikipedia

Companies tend to systematically promote incompetent employees to management to get them out of the workflow.

Scott Adams

A management concept developed by Scott Adams (creator of the Dilbert comic strip), the Dilbert Principle is inspired by The Peter Principle. Under the Dilbert Principle, employees who were never competent are promoted to management in order to limit the damage they can do. Adams first explained the principle in a 1995 Wall Street Journal article, and expanded upon it in his 1996 business book, The Dilbert Principle.

See Also:

O'lik dengiz effekti
Prinsiplar 0 06.08.2023 154

O'lik dengiz effekti Bruce F. Webster

"... [T] ko'proq iqtidorli va samarali IT muhandislari ketishlari mumkin bo'lganlar - bug'lanish uchun ... [qolganlar] ortda qoladiganlar [qoldiqlar] - eng kam qobiliyatli va samarali IT muhandislari. ."

Bryus F. Webster

"O'lik dengiz effekti" har qanday tashkilotda muhandislarning ko'nikmalari / iste'dodlari / samaradorligi ko'pincha ularning kompaniyadagi vaqtiga teskari proportsional ekanligini ko'rsatadi.

Odatda, yuqori malakali muhandislar boshqa joyda ish topishni oson topadilar va birinchi bo'lib buni amalga oshiradilar. Eskirgan yoki zaif ko'nikmalarga ega muhandislar kompaniyada qolishga moyil bo'ladi, chunki boshqa joyda ish topish qiyin. Bu, ayniqsa, agar ular kompaniyada ishlagan vaqtlari davomida qo'shimcha maoshni oshirgan bo'lsalar, yaqqol namoyon bo'ladi, chunki boshqa joylarda ekvivalent ish haqi olish qiyin bo'lishi mumkin.

The Dead Sea Effect
Prinsiplar 0 06.08.2023 154

The Dead Sea Effect on Bruce F. Webster

"... [T]he more talented and effective IT engineers are the ones most likely to leave - to evaporate ... [those who tend to] remain behind [are] the 'residue' — the least talented and effective IT engineers."

Bruce F. Webster

The "Dead Sea Effect" suggests that in any organisation, the skills/talent/efficacy of engineers is often inversely proportional to their time in the company.

Typically, highly skilled engineers find it easy to gain employment elsewhere and are the first to do so. Engineers who have obsolete or weak skills will tend to remain with the company, as finding employment elsewhere is difficult. This is particularly pronounced if they have gained incremental pay rises over their time in the company, as it can be challenging to get equivalent remuneration elsewhere.

Chesterton devori
Prinsiplar 0 06.08.2023 224

Chesterton devori Wikipedia

Mavjud vaziyatning sabablari tushunilmaguncha islohotlar o'tkazilmasligi kerak.

Ushbu tamoyil texnik qarzni bartaraf etishda dasturiy ta'minot muhandisligida dolzarbdir. Dasturning har bir satri dastlab kimdir tomonidan negadir yozilgan. Chesterton's Fence, birinchi qarashda ortiqcha yoki noto'g'ri ko'rinsa ham, kodni o'zgartirish yoki olib tashlashdan oldin uning konteksti va ma'nosini to'liq tushunishga harakat qilish kerakligini taklif qiladi.

Bu tamoyilning nomi G.K.Chestertonning hikoyasidan kelib chiqqan. . Bir kishi yo'lning o'rtasidan o'tib ketayotgan panjaraga duch keldi. Bu befoyda panjara to‘siq bo‘layotganidan hokimga shikoyat qiladi va uni olib tashlashni so‘raydi. Hokim birinchi navbatda nega panjara borligini so'raydi. Erkak bilmayman desa, shahar hokimi: "Agar uning maqsadini bilmasangiz, men uni olib tashlashingizga albatta ruxsat bermayman. Boring va undan foydalanishni bilib oling, keyin yo'q qilishingizga ruxsat beraman", deydi. u."

Chesterton's Fence
Prinsiplar 0 06.08.2023 224

Chesterton's Fence on Wikipedia

Reforms should not be made until the reasoning behind the existing state of affairs is understood.

This principle is relevant in software engineering when removing technical debt. Each line of a program was originally written by someone for some reason. Chesterton's Fence suggests that one should try to understand the context and meaning of the code fully, before changing or removing it, even if at first glance it seems redundant or incorrect.

The name of this principle comes from a story by G.K. Chesterton. A man comes across a fence crossing the middle of the road. He complains to the mayor that this useless fence is getting in the way, and asks to remove it. The mayor asks why the fence is there in the first place. When the man says he doesn't know, the mayor says, "If you don't know its purpose, I certainly won't let you remove it. Go and find out the use of it, and then I may let you destroy it."

Barcha modellar noto'g'ri (Jorj Box qonuni)
Prinsiplar +3 06.08.2023 155

Barcha modellar no'tg'ri WikiMedia

Barcha modellar noto'g'ri, lekin ba'zilari foydali.

George Box

Ushbu tamoyil tizimlarning barcha modellari nuqsonli ekanligini ko'rsatadi, ammo ular juda nuqsonli bo'lmasa, ular foydali bo'lishi mumkin. Ushbu tamoyil statistikada ildiz otgan, ammo ilmiy va hisoblash modellariga ham tegishli.

Ko'pgina dasturiy ta'minotning asosiy talabi qandaydir tizimni modellashtirishdir. Modellashtirilayotgan tizim kompyuter tarmog'i, kutubxona, ijtimoiy aloqalar grafigi yoki boshqa turdagi tizim bo'lishidan qat'i nazar, dizayner modellashtirish uchun tegishli tafsilotlar darajasini tanlashi kerak. Haddan tashqari tafsilotlar haddan tashqari murakkablikka olib kelishi mumkin, juda kam tafsilot modelning ishlashiga xalaqit berishi mumkin.

Shuningdek qarang: The Law of Leaky Abstractions

All Models Are Wrong (George Box's Law)
Prinsiplar +3 06.08.2023 155

All Models Are Wrong

All models are wrong, but some are useful.

George Box

This principle suggests that all models of systems are flawed, but that as long as they are not too flawed they may be useful. This principle has its roots in statistics but applies to scientific and computing models as well.

A fundamental requirement of most software is to model a system of some kind. Regardless of whether the system being modeled is a computer network, a library, a graph of social connections or any other kind of system, the designer will have to decide an appropriate level of detail to model. Excessive detail may lead to too much complexity, too little detail may prevent the model from being functional.

See also: The Law of Leaky Abstractions

Wheaton qonuni
Qonunlar 0 06.08.2023 167
  1. Havola
  2. The Official Day

Don't be a dick.

Wil Wheaton

Uil Uiton (Star Trek: Keyingi avlod, Katta portlash nazariyasi) tomonidan ishlab chiqilgan ushbu sodda, ixcham va kuchli qonun professional tashkilot ichida hamjihatlik va hurmatni oshirishga qaratilgan. U hamkasblar bilan gaplashganda, kodlarni ko'rib chiqishda, boshqa nuqtai nazarga qarshi turishda, tanqid qilishda va umuman olganda, odamlarning bir-biri bilan professional o'zaro munosabatlarida qo'llanilishi mumkin.

Wheaton's Law
Qonunlar 0 06.08.2023 167

The Link

The Official Day

Don't be a dick.

Wil Wheaton

Coined by Wil Wheaton (Star Trek: The Next Generation, The Big Bang Theory), this simple, concise, and powerful law aims for an increase in harmony and respect within a professional organization. It can be applied when speaking with coworkers, performing code reviews, countering other points of view, critiquing, and in general, most professional interactions humans have with each other.

Wadler qonuni
Qonunlar 0 06.08.2023 162

Wadler qonuni wiki.haskell.org

Har qanday til dizaynida ushbu ro'yxatdagi xususiyatni muhokama qilish uchun sarflangan umumiy vaqt uning pozitsiyasining kuchiga ko'tarilgan ikkiga proportsionaldir.

  1. Sematik
  2. Sintaksis
  3. Leksik sintaksis
  4. Izohlarning leksik sintaksisi

(Xulosa qilib aytganda, semantikaga sarflangan har bir soat uchun sharhlar sintaksisiga 8 soat sarflanadi).

"Triviality qonuni" singari, Uodler qonuni tilni loyihalashda til tuzilmalariga sarflangan vaqt miqdori ushbu xususiyatlarning ahamiyatiga nisbatan nomutanosib ravishda yuqori ekanligini aytadi.

Shuningdek qarang:  Triviality qonuni

Wadler's Law
Qonunlar 0 06.08.2023 162

Wadler's Law on wiki.haskell.org

In any language design, the total time spent discussing a feature in this list is proportional to two raised to the power of its position.

  1. Semantics
  2. Syntax
  3. Lexical syntax
  4. Lexical syntax of comments

(In short, for every hour spent on semantics, 8 hours will be spent on the syntax of comments).

Similar to The Law of Triviality, Wadler's Law states what when designing a language, the amount of time spent on language structures is disproportionately high in comparison to the importance of those features.

See also: The Law of Triviality

Ikkita pitsa qoidasi
Qonunlar 0 06.08.2023 170

Agar siz jamoani ikkita pitsa bilan to'ydira olmasangiz, bu juda katta.

(Jeff Bezos)

Ushbu qoida kompaniyaning kattaligidan qat'i nazar, jamoalar ikkita pitssa bilan oziqlanadigan darajada kichik bo'lishi kerakligini ko'rsatadi. Jeff Bezos va Amazonga tegishli bo'lgan bu e'tiqod katta jamoalar tabiatan samarasiz ekanligini ko'rsatadi. Bu shuni tasdiqlaydiki, jamoa hajmi chiziqli ravishda oshgani sayin, odamlar o'rtasidagi aloqalar kvadratik ravishda oshadi; Shunday qilib, muvofiqlashtirish va muloqot qilish narxi ham kvadratik tarzda oshadi. Agar ushbu muvofiqlashtirish xarajatlari asosan qo'shimcha xarajatlar bo'lsa, unda kichikroq jamoalarga ustunlik berish kerak.

Odamlar o'rtasidagi aloqalar soni n (n-1)/2 sifatida ifodalanishi mumkin, bu erda n = odamlar soni.

The Two Pizza Rule
Qonunlar 0 06.08.2023 170

If you can't feed a team with two pizzas, it's too large.

(Jeff Bezos)

This rule suggests that regardless of the size of the company, teams should be small enough to be fed by two pizzas. Attributed to Jeff Bezos and Amazon, this belief suggests that large teams are inherently inefficient. This is supported by the fact that as the team size increases linearly, the links between people increases quadratically; thus the cost of coordinating and communicating also grows quadratically. If this cost of coordination is essentially overhead, then smaller teams should be preferred.

The number of links between people can be expressed as n(n-1)/2 where n = number of people.

Spotify modeli
Qonunlar 0 06.08.2023 220

 Spotify Modeli - Spotify Labs

Spotify modeli - bu "Spotify" tomonidan ommalashtirilgan jamoa va tashkilot tuzilishiga yondashuv. Ushbu modelda jamoalar texnologiyalar emas, balki xususiyatlar bo'yicha tashkil etilgan.

Spotify modeli, shuningdek, tashkiliy tuzilmaning boshqa tarkibiy qismlari bo'lgan qabilalar, gildiyalar, bo'limlar tushunchalarini ommalashtiradi.

Tashkilot a'zolari ushbu guruhlarning haqiqiy ma'nosi o'zgarib, rivojlanib borayotganini va doimiy eksperiment ekanligini ta'kidladilar. Modelning sobit model emas, balki harakatdagi jarayon ekanligi, konferentsiyalarda xodimlar tomonidan taqdim etilgan taqdimotlarga asoslanishi mumkin bo'lgan tuzilmaning turli xil talqinlariga olib keladi. Bu shuni anglatadiki, "oniy suratlar" uchinchi shaxslar tomonidan qat'iy tuzilma sifatida "qayta qadoqlanishi" mumkin, chunki model dinamikligi yo'qoladi.

The Spotify Model
Qonunlar 0 06.08.2023 220

The Spotify Model on Spotify Labs

The Spotify Model is an approach to team and organisation structure which has been popularised by 'Spotify'. In this model, teams are organised around features, rather than technologies.

The Spotify Model also popularises the concepts of Tribes, Guilds, Chapters, which are other components of their organisation structure.

Members of the organisation have described that the actual meaning of these groups changes, evolves and is an on-going experiment. The fact that the model is a process in motion, rather than a fixed model continues to lead to varying interpretations of the structure, which may be based on presentations given by employees at conferences. This means 'snapshots' may be 're-packaged' by third parties as a fixed structure, with the fact that the model is dynamic being lost.

Skaut qoidasi
Qonunlar 0 06.08.2023 142

Scout Rule qoidasi O'Reilly

Har doim kodni topganingizdan ko'ra yaxshiroq qoldiring.

(Robert C. Martin (Uncle Bob))

"Skaut qoidasi"ga asoslanib, "lagerni har doim topganingizdan ko'ra tozaroq qoldiring", dasturlashda Skaut qoidasi shunchaki "kodni har doim topganingizdan ko'ra tozaroq qoldiring".

Bu Bob Martinning "Toza kod" kitobining birinchi bobida keltirilgan. Qoidaga ko'ra, ishlab chiquvchilar "optimistik refaktoring" ni amalga oshirishlari kerak, ya'ni kod ustida ishlayotganingizda uning umumiy sifatini yaxshilashga harakat qiling. Agar xatoni ko'rsangiz, uni tuzatishga yoki tozalashga harakat qiling. Biroq, kodga noto'g'ri ko'rinadigan o'zgartirishlar kiritilganda, Chestertonning panjarasini esga olish kerak!

Shuningdek qarang:

The Scout Rule
Qonunlar 0 06.08.2023 142

The Scout Rule on O'Reilly

Always leave the code better than you found it.

(Robert C. Martin (Uncle Bob))

Based on the "Scout Rule", which is "always leave the campground cleaner than you found it", the Scout Rule in programming is simply "always leave the code cleaner than you found it".

This was introduced in the first chapter of the book Clean Code by Bob Martin. The rule suggests that developers should perform 'optimistic refactoring', which means to endeavour to improve the overall quality of the code when you work on it. If you see a mistake, attempt to fix it or clean it up. However, when making changes to code which seems incorrect, it may be worth remembering Chesterton's Fence!

See also:

Unix falsafasi
Qonunlar 0 06.08.2023 224

Unix falsafasi Wikipedia

Unix falsafasi shundan iboratki, dasturiy ta'minot komponentlari kichik bo'lishi va aniq bir ishni yaxshi bajarishga qaratilgan bo'lishi kerak. Bu katta, murakkab, ko'p maqsadli dasturlardan foydalanish o'rniga kichik, oddiy, aniq belgilangan birliklarni birlashtirib, tizimlarni qurishni osonlashtirishi mumkin.

"Mikroservis arxitekturasi" kabi zamonaviy amaliyotlarni ushbu qonunning qo'llanilishi sifatida ko'rib chiqish mumkin, bu erda xizmatlar kichik, yo'naltirilgan va bitta aniq ishni bajaradi, bu murakkab xatti-harakatlar oddiy qurilish bloklaridan iborat bo'lishiga imkon beradi..

The Unix Philosophy
Qonunlar 0 06.08.2023 224

The Unix Philosophy on Wikipedia

The Unix Philosophy is that software components should be small, and focused on doing one specific thing well. This can make it easier to build systems by composing together small, simple, well-defined units, rather than using large, complex, multi-purpose programs.

Modern practices like 'Microservice Architecture' can be thought of as an application of this law, where services are small, focused and do one specific thing, allowing complex behaviour to be composed of simple building blocks.

Arzimaslik qonuni
Qonunlar 0 06.08.2023 226

Arzimaslik qonuni Wikipedia

Ushbu qonun guruhlar jiddiy va muhim masalalarga emas, balki ahamiyatsiz yoki kosmetik masalalarga ko'proq vaqt va e'tibor berishini ko'rsatadi.

Qo'llaniladigan umumiy xayoliy misol - atom elektr stantsiyasining rejalarini tasdiqlovchi qo'mita, ular ko'p vaqtlarini elektr stantsiyasining o'zi uchun muhimroq dizaynni emas, balki velosiped omborining tuzilishini muhokama qilishga sarflaydilar. Mavzu bo'yicha yuqori darajadagi tajriba yoki tayyorgarliksiz juda katta, murakkab mavzular bo'yicha munozaralarga qimmatli hissa qo'shish qiyin bo'lishi mumkin. Biroq, odamlar qimmatli hissa qo'shayotganini ko'rishni xohlashadi. Shunday qilib, osonlikcha mulohaza yuritish mumkin bo'lgan, ammo alohida ahamiyatga ega bo'lmagan mayda tafsilotlarga juda ko'p vaqt sarflash tendentsiyasi mavjud.

Yuqoridagi xayoliy misol arzimas tafsilotlarga vaqt sarflashning ifodasi sifatida "Velosipedni to'kish" atamasini ishlatishga olib keldi. Tegishli atama "Yak Shaving" bo'lib, u asosiy vazifani bajarish uchun zaruriy shartlarning uzoq zanjirining bir qismi bo'lgan ahamiyatsiz ko'rinadigan faoliyatni anglatadi.

The Law of Triviality
Qonunlar 0 06.08.2023 226

The Law of Triviality on Wikipedia

This law suggests that groups will give far more time and attention to trivial or cosmetic issues rather than serious and substantial ones.

The common fictional example used is that of a committee approving plans for nuclear power plant, who spend the majority of their time discussing the structure of the bike shed, rather than the far more important design for the power plant itself. It can be difficult to give valuable input on discussions about very large, complex topics without a high degree of subject matter expertise or preparation. However, people want to be seen to be contributing valuable input. Hence a tendency to focus too much time on small details, which can be reasoned about easily, but are not necessarily of particular importance.

The fictional example above led to the usage of the term 'Bike Shedding' as an expression for wasting time on trivial details. A related term is 'Yak Shaving,' which connotes a seemingly irrelevant activity that is part of a long chain of prerequisites to the main task.

Asbob qonuni
Qonunlar 0 06.08.2023 153

The Law of the Instrument

Men buni asbob qonuni deb atayman va u quyidagicha ifodalanishi mumkin: Kichkina bolaga bolg'a bering va u duch kelgan hamma narsani urish kerakligini bilib oladi.

Abraham Kaplan

Agar sizda bor narsa bolg'a bo'lsa, hamma narsa mixga o'xshaydi.

Abraham Maslow

Kompyuter dasturlash kontekstida ushbu qonun odamlar eng yaxshi vosita emas, balki tanish bo'lgan vositalardan foydalanishni taklif qiladi. Tanish vositaga haddan tashqari ishonish "oltin bolg'a" deb ataladigan anti-naqshdir.

Shuningdek qarang:

The Law of the Instrument
Qonunlar 0 06.08.2023 153

The Law of the Instrument

I call it the law of the instrument, and it may be formulated as follows: Give a small boy a hammer, and he will find that everything he encounters needs pounding.

Abraham Kaplan

If all you have is a hammer, everything looks like a nail.

Abraham Maslow

In the context of computer programming, this law suggests that people tend to use tools that are familiar with, rather than the best possible tool. This over-reliance on a familiar tool is an anti-pattern referred to as 'the golden hammer'.

See also:

Oqish abstraktsiyalar qonuni
Qonunlar 0 06.08.2023 213

The Law of Leaky Abstractions on Joel on Software

Barcha noaniq abstraktsiyalar, ma'lum darajada, sizib chiqadi.

(Joel Spolsky)

Ushbu qonunda aytilishicha, murakkab tizimlar bilan ishlashni soddalashtirish uchun odatda hisoblashda qo'llaniladigan abstraktsiyalar ma'lum holatlarda asosiy tizimning elementlarini "oqish" qiladi, bu esa abstraktsiyaning kutilmagan tarzda harakat qilishiga olib keladi.

Masalan, faylni yuklash va uning mazmunini o'qish. Fayl tizimining API-lari quyi darajadagi yadro tizimlarining mavhumligi bo'lib, ular magnit plastinada (yoki SSD uchun flesh-xotirada) ma'lumotlarni o'zgartirish bilan bog'liq jismoniy jarayonlarning abstraktsiyasidir. Ko'pgina hollarda, faylni ikkilik ma'lumotlar oqimi kabi ko'rib chiqishning mavhumligi ishlaydi. Biroq, magnit disk uchun ma'lumotlarni ketma-ket o'qish tasodifiy kirishga qaraganda sezilarli darajada tezroq bo'ladi (sahifadagi nosozliklar ko'payganligi sababli), lekin SSD diskida bu qo'shimcha yuk bo'lmaydi. Ushbu ishni hal qilish uchun asosiy tafsilotlarni tushunish kerak bo'ladi (masalan, ma'lumotlar bazasi indeks fayllari tasodifiy kirishning qo'shimcha xarajatlarini kamaytirish uchun tuzilgan), ishlab chiquvchi bilishi kerak bo'lgan abstraktsiyaning "oqish" amalga oshirish tafsilotlari.

Yuqoridagi misol ko'proq abstraktsiyalar kiritilganda yanada murakkablashishi mumkin. Linux operatsion tizimi fayllarga tarmoq orqali kirish imkonini beradi, lekin mahalliy sifatida "oddiy" fayllar sifatida taqdim etiladi. Agar tarmoqdagi nosozliklar bo'lsa, bu abstraktsiya "oqib ketadi". Agar ishlab chiquvchi ushbu fayllarni "oddiy" fayllar deb hisoblasa, ular tarmoqning kechikishi va nosozliklar bo'lishi mumkinligini hisobga olmagan bo'lsa, echimlar xato bo'ladi.

Qonunni tavsiflovchi maqolada aytilishicha, abstraktsiyalarga haddan tashqari ishonish, asosiy jarayonlarni yomon tushunish bilan birgalikda, ba'zi hollarda muammoni hal qilishni yanada murakkablashtiradi.

Shuningdek qarang: Hyrum qonuni

Haqiqiy dunyo misollari:

  • Photoshop-ni sekin ishga tushirish - o'tmishda duch kelgan muammo. Photoshop sekin ishga tushadi, ba'zan bir necha daqiqa vaqt oladi. Muammo shundaki, u ishga tushirilganda joriy standart printer haqida ba'zi ma'lumotlarni o'qiydi. Biroq, agar bu printer aslida tarmoq printeri bo'lsa, bu juda uzoq vaqt talab qilishi mumkin. Mahalliy printerga o'xshash tizimga taqdim etilgan tarmoq printerining mavhumligi ulanishning yomon holatlarida foydalanuvchilar uchun muammo tug'dirdi.
The Law of Leaky Abstractions
Qonunlar 0 06.08.2023 213

The Law of Leaky Abstractions on Joel on Software

All non-trivial abstractions, to some degree, are leaky.

(Joel Spolsky)

This law states that abstractions, which are generally used in computing to simplify working with complicated systems, will in certain situations 'leak' elements of the underlying system, this making the abstraction behave in an unexpected way.

An example might be loading a file and reading its contents. The file system APIs are an abstraction of the lower level kernel systems, which are themselves an abstraction over the physical processes relating to changing data on a magnetic platter (or flash memory for an SSD). In most cases, the abstraction of treating a file like a stream of binary data will work. However, for a magnetic drive, reading data sequentially will be significantly faster than random access (due to increased overhead of page faults), but for an SSD drive, this overhead will not be present. Underlying details will need to be understood to deal with this case (for example, database index files are structured to reduce the overhead of random access), the abstraction 'leaks' implementation details the developer may need to be aware of.

The example above can become more complex when more abstractions are introduced. The Linux operating system allows files to be accessed over a network but represented locally as 'normal' files. This abstraction will 'leak' if there are network failures. If a developer treats these files as 'normal' files, without considering the fact that they may be subject to network latency and failures, the solutions will be buggy.

The article describing the law suggests that an over-reliance on abstractions, combined with a poor understanding of the underlying processes, actually makes dealing with the problem at hand more complex in some cases.

See also: Hyrum's Law

Real-world examples:

  • Photoshop Slow Startup - an issue I encountered in the past. Photoshop would be slow to startup, sometimes taking minutes. It seems the issue was that on startup it reads some information about the current default printer. However, if that printer is actually a network printer, this could take an extremely long time. The abstraction of a network printer being presented to the system similar to a local printer caused an issue for users in poor connectivity situations.
Demeter qonuni
Qonunlar +1 06.08.2023 156

Demeter qonuni Wikipedia

Notanishlar bilan gaplashmang.

Demeter qonuni, shuningdek, "Eng kam bilim printsipi" sifatida ham tanilgan, dasturiy ta'minotni loyihalash printsipi, ayniqsa ob'ektga yo'naltirilgan tillarda tegishli.

Unda aytilishicha, dasturiy ta'minot birligi faqat o'zining bevosita hamkorlari bilan gaplashishi kerak. B ob'ektga havolasi bo'lgan A ob'ekti o'z usullarini chaqirishi mumkin, lekin agar B ob'ekt C ob'ektiga havolaga ega bo'lsa, A Cs usullarini chaqirmasligi kerak. Shunday qilib, agar C doThing() usuliga ega bo'lsa, A uni to'g'ridan-to'g'ri chaqirmasligi kerak; B.getC().doThis().

Ushbu printsipga rioya qilish o'zgarishlar doirasini cheklaydi, bu esa ularni kelajakda osonroq va xavfsizroq qiladi.

The Law of Demeter
Qonunlar +1 06.08.2023 156

The Law of Demeter on Wikipedia

Don't talk to strangers.

The Law of Demeter, also known as "The Principle of Least Knowledge" is a principle for software design, particularly relevant in object orientated languages.

It states that a unit of software should talk only to its immediate collaborators. An object A with a reference to object B can call its methods, but if B has a reference to object C, A should not call Cs methods. So, if C has a doThing() method, A should not invoke it directly; B.getC().doThis().

Following this principal limits the scope of changes, making them easier and safer in future.

Murakkablikning saqlanish qonuni (Tesler qonuni)
Qonunlar 0 06.08.2023 156

Murakkablikning saqlanish qonuni Wikipedia

Ushbu qonun tizimda kamaytirib bo'lmaydigan ma'lum miqdordagi murakkablik mavjudligini bildiradi.

Tizimdagi ba'zi bir murakkablik "ixtiyoriy". Bu noto'g'ri tuzilish, xatolar yoki muammoni hal qilish uchun noto'g'ri modellashtirish natijasidir. Noto'g'ri murakkablikni kamaytirish (yoki yo'q qilish) mumkin. Biroq, ba'zi bir murakkablik hal qilinayotgan muammoga xos bo'lgan murakkablik oqibati sifatida "ichki" bo'ladi. Bu murakkablik ko'chirilishi mumkin, lekin bartaraf etilmaydi.

Ushbu qonunning qiziqarli elementlaridan biri shundaki, butun tizimni soddalashtirganda ham, ichki murakkablik kamaymaydi, u o'zini yanada murakkabroq tutishi kerak bo'lgan foydalanuvchiga o'tkaziladi.

The Law of Conservation of Complexity (Tesler's Law)
Qonunlar 0 06.08.2023 156

The Law of Conservation of Complexity on Wikipedia

This law states that there is a certain amount of complexity in a system which cannot be reduced.

Some complexity in a system is 'inadvertent'. It is a consequence of poor structure, mistakes, or just bad modeling of a problem to solve. Inadvertent complexity can be reduced (or eliminated). However, some complexity is 'intrinsic' as a consequence of the complexity inherent in the problem being solved. This complexity can be moved, but not eliminated.

One interesting element to this law is the suggestion that even by simplifying the entire system, the intrinsic complexity is not reduced, it is moved to the user, who must behave in a more complex way.

Rid qonuni
Qonunlar 0 06.08.2023 136

Rid qonuni Wikipedia

Katta tarmoqlarning, xususan, ijtimoiy tarmoqlarning foydaliligi tarmoq hajmiga qarab eksponent ravishda o'zgaradi.

Ushbu qonun grafik nazariyasiga asoslanadi, bu erda yordamchi dastur ishtirokchilar sonidan yoki mumkin bo'lgan juft ulanishlar sonidan tezroq bo'lgan mumkin bo'lgan kichik guruhlar soni sifatida o'lchaydi. Odlyzko va boshqalarning ta'kidlashicha, Rid qonuni tarmoq ta'sirida inson idrokining chegaralarini hisobga olmagan holda tizimning foydaliligini oshirib yuboradi; Dunbar raqamiga qarang.

Shuningdek qarang:

Reed's Law
Qonunlar 0 06.08.2023 136

Reed's Law on Wikipedia

The utility of large networks, particularly social networks, scales exponentially with the size of the network.

This law is based on graph theory, where the utility scales as the number of possible sub-groups, which is faster than the number of participants or the number of possible pairwise connections. Odlyzko and others have argued that Reed's Law overstates the utility of the system by not accounting for the limits of human cognition on network effects; see Dunbar's Number.

See also:

Putt qonuni
Qonunlar 0 06.08.2023 215

Putt's Law on Wikipedia

Texnologiyada ikki turdagi odamlar hukmronlik qiladi: o'zlari boshqarmaydigan narsalarni tushunadiganlar va tushunmaydigan narsalarni boshqaradiganlar.

Putt qonunidan keyin ko'pincha Puttning xulosasi keladi:

Har bir texnik ierarxiya, vaqt o'tishi bilan, kompetentsiya inversiyasini rivojlantiradi.

Ushbu bayonotlar shuni ko'rsatadiki, turli tanlov mezonlari va guruhlarni tashkil etish tendentsiyalari tufayli, texnik tashkilotlarning ishchi darajalarida bir qator malakali odamlar va boshqaruv rolidagi bir qator odamlar murakkablik va qiyinchiliklardan bexabar bo'ladi. ular boshqarayotgan ish. Bunga Piter tamoyili yoki Dilbert tamoyili kabi hodisalar sabab bo'lishi mumkin.

Shu bilan birga, shuni ta'kidlash kerakki, bunday qonunlar katta umumlashma bo'lib, ba'zi turdagi tashkilotlarga nisbatan qo'llanilishi mumkin, boshqalarga nisbatan qo'llanilmaydi.

Shuningdek qarang:

Putt's Law
Qonunlar 0 06.08.2023 215

Putt's Law on Wikipedia

Technology is dominated by two types of people, those who understand what they do not manage and those who manage what they do not understand.

Putt's Law is often followed by Putt's Corollary:

Every technical hierarchy, in time, develops a competence inversion.

These statements suggest that due to various selection criteria and trends in how groups organise, there will be a number of skilled people at working levels of a technical organisations, and a number of people in managerial roles who are not aware of the complexities and challenges of the work they are managing. This can be due to phenomena such as The Peter Principle or The Dilbert Principle.

However, it should be stressed that Laws such as this are vast generalisations and may apply to some types of organisations, and not apply to others.

See also:

Vaqtdan oldin optimallashtirish effekti
Qonunlar 0 06.08.2023 136

Waqtdan oldin optimallashtirish effekti WikiWeb

Erta optimallashtirish barcha yomonliklarning ildizidir.

(Donald Knuth)

Donald Knutning "Structured Programming With Go To Statements" nomli maqolasida u shunday deb yozgan edi: "Dasturchilar o'z dasturlarining muhim bo'lmagan qismlarining tezligi haqida o'ylash yoki tashvishlanish uchun juda ko'p vaqtni behuda sarflashadi va samaradorlikka bo'lgan bunday urinishlar disk raskadrovkada jiddiy salbiy ta'sir ko'rsatadi. Biz kichik samaradorlik haqida unutishimiz kerak, aytaylik, taxminan 97% vaqt: muddatidan oldin optimallashtirish barcha yomonliklarning ildizidir. Shunga qaramay, biz o'z imkoniyatlarimizni o'ta muhim 3 foizda qo'ldan boy bermasligimiz kerak."

Biroq, muddatidan oldin optimallashtirish (kamroq yuklangan shartlarda) biz zarurligini bilishimizdan oldin optimallashtirish sifatida belgilanishi mumkin.

Premature Optimization Effect
Qonunlar 0 06.08.2023 136

Premature Optimization on WikiWeb

Premature optimization is the root of all evil.

(Donald Knuth)

In Donald Knuth's paper Structured Programming With Go To Statements, he wrote: "Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%."

However, Premature Optimization can be defined (in less loaded terms) as optimizing before we know that we need to.

Parkinson qonuni
Qonunlar 0 06.08.2023 254

Parkinson qonuni Wikipedia

Ish tugallanishi uchun mavjud vaqtni to'ldirish uchun kengayadi.

Asl mazmunida ushbu Qonun byurokratiyani o'rganishga asoslangan edi. Bu dasturiy ta'minotni ishlab chiqish tashabbuslariga pessimistik tarzda qo'llanilishi mumkin, nazariyaga ko'ra, jamoalar belgilangan muddatlar yaqinlashmaguncha samarasiz bo'ladi, so'ngra ishni belgilangan muddatgacha yakunlashga shoshiladi va shu bilan haqiqiy muddatni biroz o'zboshimchalik bilan amalga oshiradi.

Agar ushbu qonun Xofshtadter qonuni bilan birlashtirilgan bo'lsa, yanada pessimistik nuqtai nazarga erishiladi - ish uni yakunlash uchun mavjud bo'lgan vaqtni to'ldirish uchun kengayadi va kutilganidan ham ko'proq vaqt oladi.

Shuningdek qarang: Hofstadter's Qonuni

Parkinson's Law
Qonunlar 0 06.08.2023 254

Parkinson's Law on Wikipedia

Work expands so as to fill the time available for its completion.

In its original context, this Law was based on studies of bureaucracies. It may be pessimistically applied to software development initiatives, the theory being that teams will be inefficient until deadlines near, then rush to complete work by the deadline, thus making the actual deadline somewhat arbitrary.

If this law were combined with Hofstadter's Law, an even more pessimistic viewpoint is reached - work will expand to fill the time available for its completion and still take longer than expected.

See also: Hofstadter's Law

Occam's Razor
Qonunlar 0 06.08.2023 144

Occam's Razor Wikipedia

Ob'ektlar zaruratsiz ko'paytirilmasligi kerak.

William of Ockham

Occam's razorning ta'kidlashicha, bir nechta mumkin bo'lgan echimlar orasida eng ko'p ehtimolli yechim eng kam miqdordagi tushuncha va taxminlarga ega bo'lgan echimdir. Ushbu yechim eng sodda va tasodifiy murakkablik va yuzaga kelishi mumkin bo'lgan salbiy oqibatlarga olib kelmasdan, faqat berilgan muammoni hal qiladi.

Shuningdek qarang:

Namuna: Lean Software Development: Eliminate Waste

Occam's Razor
Qonunlar 0 06.08.2023 144

Occam's Razor on Wikipedia

Entities should not be multiplied without necessity.

William of Ockham

Occam's razor says that among several possible solutions, the most likely solution is the one with the least number of concepts and assumptions. This solution is the simplest and solves only the given problem, without introducing accidental complexity and possible negative consequences.

See also:

Example: Lean Software Development: Eliminate Waste

Merfi qonuni / Sod qonuni
Qonunlar 0 06.08.2023 275

Murphy's Law on Wikipedia

Noto'g'ri ketishi mumkin bo'lgan har qanday narsa noto'g'ri bo'ladi.

Eduard A. Merfi bilan bog'liq bo'lgan kichik Merfi qonunida aytilishicha, agar biror narsa noto'g'ri ketsa, u noto'g'ri bo'ladi.

Bu ishlab chiquvchilar orasida keng tarqalgan maqoldir. Ba'zan ishlab chiqish, sinovdan o'tkazish yoki hatto ishlab chiqarishda kutilmagan hodisalar yuz beradi. Bu, shuningdek, (Britaniya ingliz tilida keng tarqalgan) Sod qonuni bilan bog'liq bo'lishi mumkin:

Agar biror narsa noto'g'ri ketishi mumkin bo'lsa, u eng yomon vaqtda sodir bo'ladi.

Ushbu "qonunlar" odatda kulgili ma'noda qo'llaniladi. Biroq, tasdiqlovchi tarafkashlik va tanlov tarafkashligi kabi hodisalar odamlarni bu qonunlarga haddan tashqari e'tibor qaratishlariga olib kelishi mumkin (ko'p hollarda ishlayotganda, ular e'tiborga olinmaydi, muvaffaqiyatsizliklar ko'proq seziladi va ko'proq muhokamalarga sabab bo'ladi).

Shuningdek qarang:

Murphy's Law / Sod's Law
Qonunlar 0 06.08.2023 275

Murphy's Law on Wikipedia

Anything that can go wrong will go wrong.

Related to Edward A. Murphy, Jr Murphy's Law states that if a thing can go wrong, it will go wrong.

This is a common adage among developers. Sometimes the unexpected happens when developing, testing or even in production. This can also be related to the (more common in British English) Sod's Law:

If something can go wrong, it will, at the worst possible time.

These 'laws' are generally used in a comic sense. However, phenomena such as Confirmation Bias and Selection Bias can lead people to perhaps over-emphasise these laws (the majority of times when things work, they go unnoticed, failures however are more noticeable and draw more discussion).

See Also:

Mur qonuni
Qonunlar 0 06.08.2023 362

Moore's Law on Wikipedia

Integral mikrosxemadagi tranzistorlar soni taxminan har ikki yilda ikki barobar ortadi.

Ko'pincha yarimo'tkazgichlar va chiplar texnologiyasining takomillashgan tezligini tasvirlash uchun foydalanilgan Murning bashorati 1970-yillardan 2000-yillarning oxirigacha juda aniq bo'lgan. So'nggi yillarda bu tendentsiya qisman tarkibiy qismlarni kichiklashtirish darajasidagi jismoniy cheklovlar tufayli biroz o'zgardi. Biroq, parallellashtirishdagi yutuqlar va yarimo'tkazgichlar texnologiyasi va kvant hisoblashlaridagi potentsial inqilobiy o'zgarishlar Mur qonuni kelgusi o'nlab yillar davomida amalda bo'lishini anglatishi mumkin.

Moore's Law
Qonunlar 0 06.08.2023 362

Moore's Law on Wikipedia

The number of transistors in an integrated circuit doubles approximately every two years.

Often used to illustrate the sheer speed at which semiconductor and chip technology has improved, Moore's prediction has proven to be highly accurate over from the 1970s to the late 2000s. In more recent years, the trend has changed slightly, partly due to physical limitations on the degree to which components can be miniaturised. However, advancements in parallelisation, and potentially revolutionary changes in semiconductor technology and quantum computing may mean that Moore's Law could continue to hold true for decades to come.

Metkalf qonuni
Qonunlar 0 06.08.2023 236

Metcalfe's Law on Wikipedia

Tarmoq nazariyasida tizimning qiymati tizim foydalanuvchilari sonining taxminan kvadratiga teng ravishda o'sadi.

Bu qonun tizimdagi mumkin boʻlgan juft ulanishlar soniga asoslanadi va Rid qonuni bilan chambarchas bogʻliq. Odlyzko va boshqalar Rid qonuni ham, Metkalf qonuni ham tarmoq ta'sirida inson idrokining chegaralarini hisobga olmagan holda tizimning qiymatini oshirib yuboradi, deb ta'kidladilar; Dunbar raqamiga qarang.

Shuningdek qarang:

Metcalfe's Law
Qonunlar 0 06.08.2023 236

Metcalfe's Law on Wikipedia

In network theory, the value of a system grows as approximately the square of the number of users of the system.

This law is based on the number of possible pairwise connections within a system and is closely related to Reed's Law. Odlyzko and others have argued that both Reed's Law and Metcalfe's Law overstate the value of the system by not accounting for the limits of human cognition on network effects; see Dunbar's Number.

See also:

Linus qonuni
Qonunlar 0 06.08.2023 154

Linus's Law on Wikipedia

Qanchalik ko`p odam ko'rsa shunchalik muammolarga osonlashaveradi.

Eric S. Raymond

Bu qonun oddiygina shuni ta'kidlaydiki, muammoni qancha ko'p odam ko'ra olsa, kimdir muammoni oldin ko'rgan va hal qilgan bo'lishi yoki shunga o'xshash biror narsani ko'rish ehtimoli shunchalik yuqori bo'ladi.

U dastlab loyihalar uchun ochiq kodli modellarning qiymatini tavsiflash uchun ishlatilgan bo'lsa-da, u har qanday dasturiy ta'minot loyihasi uchun qabul qilinishi mumkin. U jarayonlarga ham kengaytirilishi mumkin - ko'proq kodlarni ko'rib chiqish, ko'proq statik tahlil va ko'p intizomli test jarayonlari muammolarni yanada ko'rinadigan va aniqlashni osonlashtiradi.

Ko'proq rasmiy bayonot bo'lishi mumkin:

Yetarlicha katta beta-tester va birgalikda ishlab chiquvchilar bazasini hisobga olgan holda, deyarli har bir muammo tezda tavsiflanadi va ilgari shunga o'xshash muammoga duch kelgan kishi tomonidan hal qilinishi mumkin.

This law was named in honour of Linus Torvalds in Eric S. Raymond's book "The Cathedral and the Bazaar".

Ushbu qonun Erik S. Raymondning "The Cathedral and the Bazaar" kitobida Linus Torvalds sharafiga nomlangan.

Linus's Law
Qonunlar 0 06.08.2023 154

Linus's Law on Wikipedia

Given enough eyeballs, all bugs are shallow.

Eric S. Raymond

This law simply states that the more people who can see a problem, the higher the likelihood that someone will have seen and solved the problem before, or something very similar.

Although it was originally used to describe the value of open-source models for projects it can be accepted for any kind of software project. It can also be extended to processes - more code reviews, more static analysis and multi-disciplined test processes will make the problems more visible and easy to identify.

A more formal statement can be:

Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and can be solved by someone who has encountered a similar problem before.

This law was named in honour of Linus Torvalds in Eric S. Raymond's book "The Cathedral and the Bazaar".

Kernighan qonuni
Qonunlar 0 06.08.2023 203

Nosozliklarni tuzatish birinchi navbatda kod yozishdan ikki baravar qiyin. Shuning uchun, agar siz kodni iloji boricha aqlli tarzda yozsangiz, ta'rifiga ko'ra, uni disk raskadrovka qilish uchun etarli darajada aqlli emassiz.

(Brian Kernighan)

Kernigan qonuni Brayan Kernigan sharafiga nomlangan va Kernighan va Plaugerning "Dasturlash uslubining elementlari" kitobidan olingan iqtibosdan olingan:

Har bir inson disk raskadrovka birinchi navbatda dastur yozishdan ikki baravar qiyin ekanligini biladi. Xo'sh, agar siz uni yozishda iloji boricha aqlli bo'lsangiz, uni qanday qilib tuzatasiz?

Shuningdek qarang:

Kernighan's Law
Qonunlar 0 06.08.2023 203

Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.

(Brian Kernighan)

Kernighan's Law is named for Brian Kernighan and derived from a quote from Kernighan and Plauger's book The Elements of Programming Style:

Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it?

While hyperbolic, Kernighan's Law makes the argument that simple code is to be preferred over complex code, because debugging any issues that arise in complex code may be costly or even infeasible.

See also:

Hyrum qonuni (ko'rinmas interfeyslar qonuni)
Qonunlar 0 06.08.2023 205

Hyrum's Law Online

API foydalanuvchilarining etarli soni bilan shartnomada nima va'da berishingiz muhim emas: tizimingizning barcha kuzatilishi mumkin bo'lgan xatti-harakatlari kimgadir bog'liq bo'ladi.

(Hyrum Wright)

Hyrum qonunida aytilishicha, agar sizda API iste'molchilari etarlicha ko'p bo'lsa, API ning barcha xatti-harakatlari (hatto jamoat shartnomasining bir qismi sifatida belgilanmaganlari ham) oxir-oqibat kimgadir bog'liq bo'ladi. Arzimas misol, API javob vaqti kabi funktsional bo'lmagan elementlar bo'lishi mumkin. Yana nozik misol, API xatosi turini aniqlash uchun xato xabariga regexni qo'llashga ishonadigan iste'molchilar bo'lishi mumkin. APIning ommaviy shartnomasida xabar mazmuni haqida hech narsa aytilmagan bo'lsa ham, foydalanuvchilar bog'langan xato kodidan foydalanishi kerakligini ko'rsatsa ham, ba'zi foydalanuvchilar xabardan foydalanishlari mumkin va xabarni o'zgartirish ushbu foydalanuvchilar uchun APIni buzadi.

Shuningdek qarang:

Hyrum's Law (The Law of Implicit Interfaces)
Qonunlar 0 06.08.2023 205

Hyrum's Law Online

With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviours of your system will be depended on by somebody.

(Hyrum Wright)

Hyrum's Law states that when you have a large enough number of consumers of an API, all behaviours of the API (even those not defined as part of a public contract) will eventually come to be depended on by someone. A trivial example may be non-functional elements such as the response time of an API. A more subtle example might be consumers who are relying on applying a regex to an error message to determine the type of error of an API. Even if the public contract of the API states nothing about the contents of the message, indicating users should use an associated error code, some users may use the message, and changing the message essentially breaks the API for those users.

See also:

Hype Cycle va Amara qonuni
Qonunlar 0 06.08.2023 153

Hype Cycle va Amara Qonuni Wikipedia

Biz texnologiyaning qisqa muddatda ta'sirini ortiqcha baholaymiz va uzoq muddatda ta'sirini kam baholaymiz.

(Roy Amara)

Hype Cycle - bu Gartner tomonidan ishlab chiqarilgan vaqt davomida texnologiyaning hayajonlanishi va rivojlanishining vizual tasviri. Bu eng yaxshi ingl.

(Image Reference: By Jeremykemp at English Wikipedia, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=10547051)

Muxtasar qilib aytganda, bu tsikl odatda yangi texnologiya va uning potentsial ta'siri atrofida hayajon portlashi borligini ko'rsatadi. Jamoalar tez-tez ushbu texnologiyalarga tezda kirishadi va ba'zida natijalardan hafsalasi pir bo'ladi. Buning sababi, texnologiya hali yetarlicha etuk emasligi yoki haqiqiy ilovalar hali to'liq amalga oshirilmaganligi bo'lishi mumkin. Muayyan vaqtdan so'ng texnologiyaning imkoniyatlari ortadi va undan foydalanishning amaliy imkoniyatlari ortadi va jamoalar nihoyat samarali bo'lishi mumkin. Roy Amaraning iqtiboslari buni eng qisqacha ifodalaydi - "Biz texnologiyaning qisqa muddatli ta'sirini ortiqcha baholaymiz va uzoq muddatda kam baholaymiz".

The Hype Cycle & Amara's Law
Qonunlar 0 06.08.2023 153

The Hype Cycle on Wikipedia

We tend to overestimate the effect of a technology in the short run and underestimate the effect in the long run.

(Roy Amara)

The Hype Cycle is a visual representation of the excitement and development of technology over time, originally produced by Gartner. It is best shown with a visual:

(Image Reference: By Jeremykemp at English Wikipedia, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=10547051)

In short, this cycle suggests that there is typically a burst of excitement around new technology and its potential impact. Teams often jump into these technologies quickly, and sometimes find themselves disappointed with the results. This might be because the technology is not yet mature enough, or real-world applications are not yet fully realised. After a certain amount of time, the capabilities of the technology increase and practical opportunities to use it increase, and teams can finally become productive. Roy Amara's quote sums this up most succinctly - "We tend to overestimate the effect of a technology in the short run and underestimate in the long run".

Hutber qunoni
Qonunlar 0 06.08.2023 168

Hutber qonuni Wikipedia

Yaxshilanish yomonlashishni anglatadi.

(Patrick Hutber)

Ushbu qonun tizimni takomillashtirish boshqa qismlarning yomonlashuviga olib kelishini yoki boshqa buzilishlarni yashirib, umuman tizimning hozirgi holatidan tanazzulga yuz tutishini ko'rsatadi.

Masalan, ma'lum bir so'nggi nuqta uchun javob kutish vaqtining pasayishi so'rovlar oqimida o'tkazuvchanlik va sig'im muammolarini yanada oshirishi mumkin, bu esa butunlay boshqa quyi tizimga ta'sir qiladi.

Hutber's Law
Qonunlar 0 06.08.2023 168

Hutber's Law on Wikipedia

Improvement means deterioration.

(Patrick Hutber)

This law suggests that improvements to a system will lead to deterioration in other parts, or it will hide other deterioration, leading overall to a degradation from the current state of the system.

For example, a decrease in response latency for a particular end-point could cause increased throughput and capacity issues further along in a request flow, affecting an entirely different sub-system.

Hofstadter qonuni
Qonunlar 0 06.08.2023 155

Hofstadter qonuni Wikipedia

It always takes longer than you expect, even when you take into account Hofstadter's Law.

(Douglas Hofstadter)

Biror narsa qancha davom etishi haqidagi taxminlarni ko'rib chiqayotganda ushbu qonunga murojaat qilishingiz mumkin. Dasturiy ta'minotni ishlab chiqishda haqiqatga o'xshab ko'rinadiki, biz biror narsani etkazib berish uchun qancha vaqt ketishini aniq hisoblashda unchalik yaxshi emasmiz.

Bu "Gödel, Escher, Bax: Abadiy oltin soch" kitobidan olingan.

Shuningdek qarang: Reading List: Gödel, Escher, Bach: An Eternal Golden Braid

Hofstadter's Law
Qonunlar 0 06.08.2023 155

Hofstadter's Law on Wikipedia

It always takes longer than you expect, even when you take into account Hofstadter's Law.

(Douglas Hofstadter)

You might hear this law referred to when looking at estimates for how long something will take. It seems a truism in software development that we tend to not be very good at accurately estimating how long something will take to deliver.

This is from the book 'Gödel, Escher, Bach: An Eternal Golden Braid'.

See also: Reading List: Gödel, Escher, Bach: An Eternal Golden Braid

Hik qonuni (Hik-Ximan qonuni)
Qonunlar 0 06.08.2023 193

Hick's law on Wikipedia

Decision time grows logarithmically with the number of options you can choose from.

William Edmund Hick and Ray Hyman

Quyidagi tenglamada T - qaror qabul qilish vaqti, n - variantlar soni va b - ma'lumotlar tahlili bilan aniqlanadigan doimiy.

Hicks law
(Image Reference: Creative Commons Attribution-Share Alike 3.0 Unported, https://en.wikipedia.org/wiki/Hick%27s_law)

Ushbu qonun faqat variantlar soni, masalan, alifbo tartibida tartiblanganida amal qiladi. Bu asosiy ikkita logarifmda nazarda tutilgan - bu qaror qabul qiluvchining asosan ikkilik qidiruvni amalga oshirishini anglatadi. Agar variantlar yaxshi tartiblanmagan bo'lsa, tajribalar olingan vaqtning chiziqli ekanligini ko'rsatadi.

Bu UI dizayniga sezilarli ta'sir ko'rsatadi; foydalanuvchilar variantlar bo'yicha osongina qidirishlarini ta'minlash tezroq qaror qabul qilishga olib keladi.

Shuningdek, Hik qonunida IQ va reaktsiya vaqti o'rtasidagi bog'liqlik "Axborotni qayta ishlash tezligi: rivojlanish o'zgarishi va aqlga havolalar" da ko'rsatilgan.

Shuningdek qarang: Fitts qonuni

Hick's Law (Hick-Hyman Law)
Qonunlar 0 06.08.2023 193

Hick's law on Wikipedia

Decision time grows logarithmically with the number of options you can choose from.

William Edmund Hick and Ray Hyman

In the equation below, T is the time to make a decision, n is the number of options, and b is a constant which is determined by analysis of the data.

Hicks law

(Image Reference: Creative Commons Attribution-Share Alike 3.0 Unported, https://en.wikipedia.org/wiki/Hick%27s_law)

This law only applies when the number of options is ordered, for example, alphabetically. This is implied in the base two logarithm - which implies the decision maker is essentially performing a binary search. If the options are not well ordered, experiments show the time taken is linear.

This is has significant impact in UI design; ensuring that users can easily search through options leads to faster decision making.

A correlation has also been shown in Hick's Law between IQ and reaction time as shown in Speed of Information Processing: Developmental Change and Links to Intelligence.

See also: Fitts's qununi

Hanlon's Razor
Qonunlar 0 06.08.2023 64

Hanlon's Razor Wikipedia

Hech qachon ahmoqlik bilan adekvat tushuntirilgan narsani yomonlikka bog'lamang.

Robert J. Hanlon

Ushbu tamoyil salbiy oqibatlarga olib keladigan harakatlar yomon iroda natijasi emasligini ko'rsatadi. Buning o'rniga, salbiy natija ko'proq ushbu harakatlar va/yoki ta'sirning to'liq tushunilmaganligi bilan bog'liq.

Hanlon's Razor
Qonunlar 0 06.08.2023 64

Hanlon's Razor on Wikipedia

Never attribute to malice that which is adequately explained by stupidity.

Robert J. Hanlon

This principle suggests that actions resulting in a negative outcome were not a result of ill will. Instead the negative outcome is more likely attributed to those actions and/or the impact being not fully understood.

Goodhart qonuni
Qonunlar 0 06.08.2023 160

Goodhart qonuni Wikipedia

Har qanday kuzatilgan statistik muntazamlik nazorat qilish maqsadida unga bosim o'tkazilgach, yiqilib ketadi.

Charles Goodhart

Shuningdek, odatda quyidagilarga murojaat qilinadi:

O'lchov nishonga aylanganda, u yaxshi o'lchov bo'lishni to'xtatadi.

Marilyn Strathern

Qonunda aytilishicha, o'lchovga asoslangan optimallashtirish o'lchov natijasining o'zini devalvatsiyaga olib kelishi mumkin. Jarayonga ko'r-ko'rona qo'llaniladigan haddan tashqari tanlangan chora-tadbirlar to'plami (KPI) buzilgan ta'sirga olib keladi. Odamlar o'z harakatlarining yaxlit natijalariga e'tibor berish o'rniga, muayyan ko'rsatkichlarni qondirish uchun tizimni "o'yin" qilish orqali mahalliy optimallashtirishga moyildirlar.

Haqiqiy dunyo misollari:

  • Tasdiqlashsiz testlar, metrik maqsad yaxshi sinovdan o'tgan dasturiy ta'minotni yaratish bo'lishiga qaramay, kodni qoplash kutilmasini qondiradi.
  • Developer performance score indicated by the number of lines committed leads to unjustifiably bloated codebase.

Shuningdek qarang:

Goodhart's Law
Qonunlar 0 06.08.2023 160

The Goodhart's Law on Wikipedia

Any observed statistical regularity will tend to collapse once pressure is placed upon it for control purposes.

Charles Goodhart

Also commonly referenced as:

When a measure becomes a target, it ceases to be a good measure.

Marilyn Strathern

The law states that the measure-driven optimizations could lead to devaluation of the measurement outcome itself. Overly selective set of measures (KPIs) blindly applied to a process results in distorted effect. People tend to optimize locally by "gaming" the system in order to satisfy particular metrics instead of paying attention to holistic outcome of their actions.

Real-world examples:

  • Assert-free tests satisfy the code coverage expectation, despite the fact that the metric intent was to create well-tested software.
  • Developer performance score indicated by the number of lines committed leads to unjustifiably bloated codebase.

See also:

Gall qonuni
Qonunlar 0 06.08.2023 227

Gall qonuni Wikipedia

Ishlaydigan murakkab tizim har doim ishlaydigan oddiy tizimdan evolyutsiyalashganligi aniqlangan. Noldan ishlab chiqilgan murakkab tizim hech qachon ishlamaydi va uni ishlashi uchun tuzatib bo'lmaydi. Ishlaydigan oddiy tizim bilan qaytadan boshlashingiz kerak.

(John Gall)

Gall qonuni shuni anglatadiki, juda murakkab tizimlarni loyihalashga urinishlar muvaffaqiyatsiz bo'lishi mumkin. O'ta murakkab tizimlar kamdan-kam hollarda bir vaqtning o'zida quriladi, lekin buning o'rniga oddiyroq tizimlardan rivojlanadi.

Klassik misol - butun dunyo bo'ylab tarmoq. Hozirgi holatida bu juda murakkab tizimdir. Biroq, bu dastlab ilmiy muassasalar o'rtasida tarkibni almashishning oddiy usuli sifatida aniqlangan. Bu maqsadlarga erishishda juda muvaffaqiyatli bo'ldi va vaqt o'tishi bilan yanada murakkablashdi.

Shuningdek qarang: KISS (Keep It Simple, Stupid)

Gall's Law
Qonunlar 0 06.08.2023 227

Gall's Law on Wikipedia

A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system.

(John Gall)

Gall's Law implies that attempts to design highly complex systems are likely to fail. Highly complex systems are rarely built in one go, but evolve instead from more simple systems.

The classic example is the world-wide-web. In its current state, it is a highly complex system. However, it was defined initially as a simple way to share content between academic institutions. It was very successful in meeting these goals and evolved to become more complex over time.

See also: KISS (Keep It Simple, Stupid)

Fitts qonuni
Qonunlar 0 06.08.2023 200

Fitts qonuni Wikipedia

Fitts qonuni, maqsadli hududga o'tish uchun zarur bo'lgan vaqtni nishongacha bo'lgan masofani nishonning kengligiga bo'lish funktsiyasi ekanligini taxmin qiladi.

asasas
(Image Reference: By Foobar628 at English Wikipedia, Creative Commons Attribution-Share Alike 3.0 Unported, https://en.wikipedia.org/wiki/Fitts%27s_law#/media/File:Fitts_Law.svg)

Ushbu qonunning oqibatlari shuni ko'rsatadiki, UX yoki UI-ni loyihalashda interaktiv elementlar imkon qadar katta bo'lishi kerak va foydalanuvchilarning diqqat markazida va interaktiv element o'rtasidagi masofa imkon qadar kichik bo'lishi kerak. Bu, odatda, bir-biriga yaqin ishlatiladigan vazifalarni guruhlash kabi dizaynga ta'sir qiladi.

Shuningdek, u "sehrli burchaklar" tushunchasini rasmiylashtiradi, foydalanuvchi sichqonchani osongina bosishi mumkin bo'lgan ekran burchaklari - bu erda asosiy UI elementlari joylashtirilishi mumkin. Windows Start tugmasi sehrli burchakda joylashgan bo'lib, uni tanlashni osonlashtiradi va qiziqarli kontrast sifatida MacOS 'oynasini yopish' tugmasi sehrli burchakda emas, bu esa xato bilan urishni qiyinlashtiradi.

Shuningdek qarang:

Fitts' Law
Qonunlar 0 06.08.2023 200

Fitts' Law on Wikipedia

Fitts' law predicts that the time required to move to a target area is a function of the distance to the target divided by the width of the target.

(Image Reference: By Foobar628 at English Wikipedia, Creative Commons Attribution-Share Alike 3.0 Unported, https://en.wikipedia.org/wiki/Fitts%27s_law#/media/File:Fitts_Law.svg)

The consequences of this law dictate that when designing UX or UI, interactive elements should be as large as possible and the distance between the users attention area and interactive element should be as small as possible. This has consequences on design, such as grouping tasks that are commonly used with one another close.

It also formalises the concept of 'magic corners', the corners of the screen to which a user can 'sweep' their mouse to easily hit - which is where key UI elements can be placed. The Windows Start button is in a magic corner, making it easy to select, and as an interesting contrast, the MacOS 'close window' button is not in a magic corner, making it hard to hit by mistake.

See also:

 

Dunning-Kruger effekti
Qonunlar +1 06.08.2023 191

Dunning-Kruger effekti Wikipedia

Agar siz qobiliyatsiz bo'lsangiz, qobiliyatsiz ekanligingizni bilolmaysiz ... To'g'ri javob berish uchun sizga kerak bo'lgan ko'nikmalar to'g'ri javob nima ekanligini tushunishingiz kerak bo'lgan ko'nikmalardir.

(David Dunning)

Dunning-Kruger effekti 1999 yilda Devid Dunning va Jastin Kruger tomonidan psixologik tadqiqot va maqolada tasvirlangan nazariy kognitiv tarafkashlikdir. Tadqiqot shuni ko'rsatadiki, vazifani bajarish qobiliyati past bo'lgan odamlar o'zlarining vazifani bajarish qobiliyatini ortiqcha baholashlari mumkin. Bunday noto'g'ri fikrlashning tavsiya etilgan sababi shundaki, odam o'zining ushbu sohada ishlash qobiliyati to'g'risida xabardor fikr bildira olishi uchun muammo yoki domenning murakkabligi haqida etarli darajada xabardor bo'lishi kerak.

Dunning-Kruger effekti ba'zan o'zaro bog'liq, ammo nazarda tutilmagan ta'sirni tasvirlash uchun ishlatilgan, uni quyidagicha ta'riflash mumkin: "Inson biror domenni qanchalik kam tushunsa, ular ushbu sohadagi muammolarni osongina hal qilishiga ishonishlari mumkin, chunki ular domenni oddiy deb bilish ehtimoli ko'proq". Ushbu umumiy ta'sir texnologiyada juda dolzarbdir. Bu shuni ko'rsatadiki, domen bilan kamroq tanish bo'lgan odamlar, masalan, texnik bo'lmagan jamoa a'zolari yoki kamroq tajribali jamoa a'zolari, bu sohadagi muammoni hal qilish uchun zarur bo'lgan sa'y-harakatlarni kam baholaydilar.

Biror kishining domendagi tushunchasi va tajribasi oshgani sayin, ular boshqa ta'sirga duch kelishi mumkin, ya'ni ular domenda juda tajribali bo'lganligi sababli, boshqalarning qobiliyatini ortiqcha baholaydilar yoki o'zlarining qobiliyatini kam baholaydilar. Barcha holatlarda bu ta'sirlar kognitiv tarafkashlikdir. Har qanday noto'g'ri nuqtai nazarda bo'lgani kabi, uning mavjudligini tushunish ko'pincha qiyinchiliklardan qochish uchun etarli bo'ladi - chunki noto'g'ri tushunchalar mavjud bo'lganda, ushbu noto'g'rilikni bartaraf etishga harakat qilish uchun ko'proq kirish va fikrlarni kiritish mumkin. Bir-biriga chambarchas bog'liq bo'lgan tarafkashlik - bu illyuziy ustunlik.

Haqiqiy dunyo misollari:

  • Apple va FQB: Nima uchun bu antiterror qirg'inchi tomonlarini almashtirdi - 2016-yilda senator Lindsi Grem Apple qurilmalarini shifrlashda “orqa eshik” yaratishga nisbatan o‘z nuqtai nazarini o‘zgartirdi. Dastlab Grexem Apple’ning “orqa eshik” yaratish so‘roviga e’tiroz bildirganini tanqid qilgan edi, bu esa ehtimoliy terrorchilik rejalarini tekshirish uchun zarur deb hisobladi. Biroq, Gremning o'zi tan olganidek, u domenning texnik murakkabligi haqida ko'proq ma'lumotga ega bo'lgach, u buni o'zi tushunganidan ancha sodda deb hisoblaganini va bunday orqa eshik jiddiy salbiy oqibatlarga olib kelishi mumkinligini tushundi. Buni Dunning-Kruger effektining misoli sifatida ko'rish mumkin - kiberxavfsizlik bo'yicha mutaxassis bunday orqa eshikdan qanday foydalanish mumkinligini darhol anglaydi, chunki ular domen haqida chuqur tushunchaga ega, oddiy odam telefon xavfsizligini o'xshash deb taxmin qilishi mumkin. huquqni muhofaza qilish organlari uchun "bosh kalit"ga ega bo'lish amaliyoti mumkin bo'lgan jismoniy xavfsizlikka, lekin bu o'xshashlik kiberxavfsizlikda zamonaviy shifrlashni tasvirlash uchun etarli darajada qo'llanilmaydi.
The Dunning-Kruger Effect
Qonunlar +1 06.08.2023 191

The Dunning-Kruger Effect on Wikipedia

If you're incompetent, you can't know you're incompetent... The skills you need to produce a right answer are exactly the skills you need to recognize what a right answer is.

(David Dunning)

The Dunning–Kruger effect is a theoretical cognitive bias which was described by David Dunning and Justin Kruger in a 1999 psychological study and paper. The study suggests that people with a low level of ability at a task are likely to overestimate their ability of the task. The proposed reason for this bias is that a sufficient awareness of the complexity of a problem or domain is required for a person to be able to make an informed opinion of their capability to work in that domain.

The Dunning-Kruger effect has sometimes been used to describe a related, but not necessarily implied effect which could be described as "The less a person understands a domain, the more they are likely to believe they can easily solve problems in that domain, as they are more likely to see the domain as simple". This more general effect is highly relevant in technology. It would suggest that people who are less familiar with a domain, such as non-technical team members or less experienced team members, are more likely to underestimate the effort required to solve a problem in this space.

As a person's understanding and experience in a domain grows, they may well encounter another effect, which is that they tend to overestimate the ability of others or underestimate their own ability, as they are have become so experienced in the domain. In all cases these effects are cognitive biases. As with any bias, an understanding that it may be present will often be sufficient to help avoid the challenges — as when there is awareness of a bias, more inputs and opinions can be included to attempt to eliminate these biases. A closely related bias is that of Illusory superiority.

Real-world examples:

  • Apple vs. FBI: Why This Anti-Terror Hawk Switched Sides - In 2016 Senator Lindsey Graham changed his stance on Apple creating a 'backdoor' in their encryption of devices. Initially Graham had been critical of Apple challenging a request to create a 'backdoor', which he saw as necessary to investigate potential terrorist plots. However, by Graham's own admission, as he learned more about the technical complexity of the domain, he realised that he had assumed it to be far more simple than he had realised, and that such a backdoor could have serious negative consequences. This could potentially be considered an example of the Dunning-Kruger effect - a cyber-security expert would likely understand immediately how such a backdoor could be exploited, as they have deep understanding of the domain, a layperson might assume that phone security is more similar to physical security where the practice of having a 'master key' for law enforcement is possible, but this analogy does not apply sufficiently well to describe modern encryption in cyber-security.
Dunbar raqami
Qonunlar 0 06.08.2023 230

Dunbar raqami Wikipedia

"Dunbarning soni barqaror ijtimoiy munosabatlarni saqlab qolishi mumkin bo'lgan odamlar sonining tavsiya etilgan kognitiv chegarasidir - bu munosabatlarda har bir inson kimligini va har bir kishi boshqa odam bilan qanday munosabatda bo'lishini biladi." Aniq raqam bo'yicha ba'zi bir kelishmovchiliklar mavjud. "... [Dunbar] odamlar bemalol faqat 150 ta barqaror munosabatlarni saqlab qolishlarini taklif qildi." U bu raqamni ko'proq ijtimoiy kontekstga qo'ydi, "agar siz barda tasodifan ular bilan to'qnashib qolsangiz, ichishga taklif qilinmasdan qo'shilishdan uyalmaysiz". Raqam uchun taxminlar odatda 100 dan 250 gacha.

Shaxslar o'rtasidagi barqaror munosabatlar singari, ishlab chiquvchining kodlar bazasi bilan aloqasi saqlab qolish uchun kuch talab etadi. Katta murakkab loyihalar yoki ko'plab loyihalarga egalik qilish bilan duch kelganimizda, biz konventsiyaga, siyosatga va modellashtirilgan protseduraga tayanamiz. Dunbarning raqami nafaqat ofis o'sib borishi bilan, balki jamoaviy sa'y-harakatlar doirasini belgilashda yoki tizim logistika xarajatlarini modellashtirish va avtomatlashtirishga yordam beradigan asboblarga qachon sarmoya kiritishi kerakligini hal qilishda ham muhimdir. Raqamni muhandislik kontekstiga qo'yadigan bo'lsak, bu qo'llab-quvvatlash uchun qo'ng'iroq bo'yicha rotatsiyaga qo'shilishga ishonchingiz komil bo'lgan loyihalar soni (yoki bitta loyihaning normallashtirilgan murakkabligi).

Shuningdek qarang: Conway's Law

Dunbar's Number
Qonunlar 0 06.08.2023 230

Dunbar's Number on Wikipedia

"Dunbar's number is a suggested cognitive limit to the number of people with whom one can maintain stable social relationships— relationships in which an individual knows who each person is and how each person relates to every other person." There is some disagreement to the exact number. "... [Dunbar] proposed that humans can comfortably maintain only 150 stable relationships." He put the number into a more social context, "the number of people you would not feel embarrassed about joining uninvited for a drink if you happened to bump into them in a bar." Estimates for the number generally lay between 100 and 250.

Like stable relationships between individuals, a developer's relationship with a codebase takes effort to maintain. When faced with large complicated projects, or ownership of many projects, we lean on convention, policy, and modeled procedure to scale. Dunbar's number is not only important to keep in mind as an office grows, but also when setting the scope for team efforts or deciding when a system should invest in tooling to assist in modeling and automating logistical overhead. Putting the number into an engineering context, it is the number of projects (or normalized complexity of a single project) for which you would feel confident in joining an on-call rotation to support.

See also: Conway's Law

Cunningham qonuni
Qonunlar 0 06.08.2023 175

Cunningham qonuni Wikipedia

Internetda to'g'ri javob olishning eng yaxshi usuli bu savol berish emas, balki noto'g'ri javobni joylashtirishdir.

Stiven MakGidining so‘zlariga ko‘ra, Uord Kanningem 1980-yillar boshida unga shunday maslahat bergan: “Internetda to‘g‘ri javob olishning eng yaxshi usuli bu savol berish emas, balki noto‘g‘ri javobni joylashtirishdir”. McGeady bu Kanningem qonunini deb atagan, ammo Kanningem uni "noto'g'ri iqtibos" deb atagan egalik huquqini rad etadi. Garchi dastlab Usenet-dagi o'zaro munosabatlarga ishora qilsa-da, qonun boshqa onlayn hamjamiyatlarning (masalan, Vikipediya, Reddit, Twitter, Facebook) qanday ishlashini tasvirlash uchun ishlatilgan.

Shuningdek qarang:

Cunningham's Law
Qonunlar 0 06.08.2023 175

Cunningham's Law on Wikipedia

The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.

According to Steven McGeady, Ward Cunningham advised him in the early 1980s: "The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer." McGeady dubbed this Cunningham's law, though Cunningham denies ownership calling it a "misquote." Although originally referring to interactions on Usenet, the law has been used to describe how other online communities work (e.g., Wikipedia, Reddit, Twitter, Facebook).

See also:

Conway qonuni
Qonunlar 0 06.08.2023 213

Conway qonuni Wikipedia

Ushbu qonun tizimning texnik chegaralari tashkilot tuzilishini aks ettirishini taklif qiladi. Tashkilotni takomillashtirishni ko'rib chiqishda u odatda tilga olinadi, Konvey qonuni shuni ko'rsatadiki, agar tashkilot ko'plab kichik, uzilgan birliklarga tuzilgan bo'lsa, u ishlab chiqaradigan dasturiy ta'minot bo'ladi. Agar tashkilot xususiyatlar yoki xizmatlarga yo'naltirilgan "vertikallar" atrofida ko'proq qurilgan bo'lsa, dasturiy ta'minot tizimlari ham buni aks ettiradi.

Shuningdek qarang: The Spotify Model

Conway's Law
Qonunlar 0 06.08.2023 213

Conway's Law on Wikipedia

This law suggests that the technical boundaries of a system will reflect the structure of the organisation. It is commonly referred to when looking at organisation improvements, Conway's Law suggests that if an organisation is structured into many small, disconnected units, the software it produces will be. If an organisation is built more around 'verticals' which are oriented around features or services, the software systems will also reflect this.

See also: The Spotify Model

CAP teoremasi (Brewer teoremasi)
Qonunlar 0 06.08.2023 151

CAP teoremasi (Erik Brewer tomonidan aniqlangan) taqsimlangan ma'lumotlar ombori uchun quyidagi uchta kafolatdan faqat ikkitasi (ko'pi bilan) berilishi mumkinligini aytadi:

  • Muvofiqlik: ma'lumotlarni o'qiyotganda, har bir so'rov eng so'nggi ma'lumotlarni oladi yoki xato qaytariladi
  • Mavjudligi: ma'lumotlarni o'qiyotganda, har bir so'rov xato bo'lmagan javob oladi, bu eng so'nggi ma'lumotlar ekanligiga kafolatsiz
  • Bo'limga tolerantlik: tugunlar orasidagi tarmoq so'rovlarining ixtiyoriy soni bajarilmasa, tizim kutilganidek ishlashda davom etadi.

Fikrlashning o'zagi quyidagicha. Tarmoq bo'limi sodir bo'lmasligiga kafolat berishning iloji yo'q (qarang: The Fallacies of Distributed Computing). Shuning uchun, bo'lim bo'lsa, biz operatsiyani bekor qilishimiz mumkin (bardoshlilikni oshirish va mavjudlikni kamaytirish) yoki davom etishimiz (mavjudlikni oshirish, lekin izchillikni kamaytirish).

Ism kafolatlarning birinchi harflaridan kelib chiqadi (Muvofiqlik, mavjudlik, bo'linish tolerantligi). Shuni esda tutingki, bu ACID  bilan bog'liq emasligini bilish juda muhim, bu izchillikning boshqa ta'rifiga ega. Yaqinda PACELC teoremasi ishlab chiqildi, bu tarmoq bo'linmaganda (ya'ni, tizim kutilganidek ishlayotganda) kechikish va izchillik uchun cheklovlar qo'shadi.

Ko'pgina zamonaviy ma'lumotlar bazasi platformalari ma'lumotlar bazasi foydalanuvchisiga yuqori darajada mavjud bo'lgan operatsiyani (bu "iflos o'qishni" o'z ichiga olishi mumkin) yoki juda izchil operatsiyani (masalan, "kvorum tomonidan tan olingan yozish") tanlash imkoniyatini taklif qilish orqali ushbu teoremani bilvosita tan oladi. ').

Haqiqiy dunyo misollari:

Inside Google Cloud Spanner and the CAP teoremasi - Cloud Spanner qanday ishlashi haqida batafsil ma'lumot beradi, bu dastlab CAPning barcha kafolatlariga ega bo'lgan platformaga o'xshab ko'rinadi, ammo kaput ostida CP tizimi mavjud.

Shuningdek qarang:

Klarkning uchta qonuni: Clarke's three laws on Wikipedia

Britaniyalik ilmiy fantastika yozuvchisi Artur C. Klark Klarkning uchta qonuni deb nomlanuvchi uchta iborani ishlab chiqdi. Uchinchi qonun eng mashhur va eng ko'p keltiriladigan qonundir.

Bu qonunlar deb ataladi:

  • Taniqli, ammo keksa olim biror narsa mumkin, deb aytsa, ular deyarli to'g'ri. Ular biror narsaning iloji yo'qligini aytishganda, ular noto'g'ri bo'lishi mumkin.
  • Imkoniyat chegaralarini kashf qilishning yagona yo'li - ulardan biroz o'tib, imkonsiz narsaga kirishishdir.
  • Har qanday etarlicha ilg'or texnologiyani sehrdan ajratib bo'lmaydi.
CAP Theorem (Brewer's Theorem)
Qonunlar 0 06.08.2023 151

The CAP Theorem (defined by Eric Brewer) states that for a distributed data store only two out of the following three guarantees (at most) can be made:

  • Consistency: when reading data, every request receives the most recent data or an error is returned
  • Availability: when reading data, every request receives a non error response, without the guarantee that it is the most recent data
  • Partition Tolerance: when an arbitrary number of network requests between nodes fail, the system continues to operate as expected

The core of the reasoning is as follows. It is impossible to guarantee that a network partition will not occur (see The Fallacies of Distributed Computing). Therefore in the case of a partition we can either cancel the operation (increasing consistency and decreasing availability) or proceed (increasing availability but decreasing consistency).

The name comes from the first letters of the guarantees (Consistency, Availability, Partition Tolerance). Note that it is very important to be aware that this does not relate to ACID, which has a different definition of consistency. More recently, PACELC theorem has been developed which adds constraints for latency and consistency when the network is not partitioned (i.e. when the system is operating as expected).

Most modern database platforms acknowledge this theorem implicitly by offering the user of the database the option to choose between whether they want a highly available operation (which might include a 'dirty read') or a highly consistent operation (for example a 'quorum acknowledged write').

Real world examples:

See also:

Clarke's three laws

Clarke's three laws on Wikipedia

Arthur C. Clarke, an british science fiction writer, formulated three adages that are known as Clarke's three laws. The third law is the best known and most widely cited.

These so-called laws are:

  • When a distinguished but elderly scientist states that something is possible, they are almost certainly right. When they state that something is impossible, they are very probably wrong.
  • The only way of discovering the limits of the possible is to venture a little way past them into the impossible.
  • Any sufficiently advanced technology is indistinguishable from magic.
Bruks qonuni
Qonunlar 0 06.08.2023 234

Brooks qonuni Wikipedia

Kechiktirilgan dasturiy ta'minotni ishlab chiqish loyihasiga inson resurslarini qo'shish uni keyinroq qiladi.

Ushbu qonun, ko'p hollarda, ko'proq odamlarni qo'shib, kechikib qolgan loyihani etkazib berishni tezlashtirishga urinish, etkazib berishni kechroq qilishini ko'rsatadi. Bruksning ta'kidlashicha, bu haddan tashqari soddalashtirilgan, ammo umumiy fikr shundan iboratki, yangi resurslarning ko'payishi va aloqa xarajatlarini hisobga olgan holda, qisqa muddatli tezlikda tezlik kamayadi. Bundan tashqari, ko'plab vazifalar bo'linmasligi mumkin, ya'ni ko'proq resurslar o'rtasida oson taqsimlanadi, ya'ni potentsial tezlikni oshirish ham past bo'ladi.

Tug'ilishdagi "To'qqiz ayol bir oyda bola tug'a olmaydi" degan keng tarqalgan ibora Bruks qonuni bilan bog'liq, xususan, ba'zi ish turlari bo'linib bo'lmaydigan yoki parallel bo'lishi mumkin emas.

Bu 'The Mythical Man Month' kitobining asosiy mazmuni.

Shuningdek qarang:

Brooks' Law
Qonunlar 0 06.08.2023 234

Brooks' Law on Wikipedia

Adding human resources to a late software development project makes it later.

This law suggests that in many cases, attempting to accelerate the delivery of a project which is already late, by adding more people, will make the delivery even later. Brooks is clear that this is an over-simplification, however, the general reasoning is that given the ramp-up time of new resources and the communication overheads, in the immediate short-term velocity decreases. Also, many tasks may not be divisible, i.e. easily distributed between more resources, meaning the potential velocity increase is also lower.

The common phrase in delivery "Nine women can't make a baby in one month" relates to Brooks' Law, in particular, the fact that some kinds of work are not divisible or parallelisable.

This is a central theme of the book 'The Mythical Man Month'.

See also:

The Broken Windows nazariyasi
Qonunlar 0 06.08.2023 220

The Broken Windows Theory on Wikipedia

The Broken Windows nazariyasi jinoyatning ko'zga ko'rinadigan belgilari (yoki atrof-muhitga g'amxo'rlik etishmasligi) keyingi va jiddiyroq jinoyatlarga (yoki atrof-muhitning yanada yomonlashishiga) olib keladi.

Ushbu nazariya dasturiy ta'minotni ishlab chiqishda qo'llanilgan bo'lib, sifatsiz kod (yoki Technical Debt) sifatni yaxshilashga qaratilgan harakatlar e'tibordan chetda qolishi yoki kam baholanishi mumkin degan fikrga olib kelishi mumkin, bu esa sifatsiz kodga olib keladi. Bu ta'sir vaqt o'tishi bilan sifatni sezilarli darajada pasayishiga olib keladi.

Shuningdek qarang: Technical Debt

Examples:

The Broken Windows Theory
Qonunlar 0 06.08.2023 220

The Broken Windows Theory on Wikipedia

The Broken Windows Theory suggests that visible signs of crime (or lack of care of an environment) lead to further and more serious crimes (or further deterioration of the environment).

This theory has been applied to software development, suggesting that poor quality code (or Technical Debt) can lead to a perception that efforts to improve quality may be ignored or undervalued, thus leading to further poor quality code. This effect cascades leading to a great decrease in quality over time.

See also: Technical Debt

Examples:

Amdahl qonuni
Qonunlar 0 06.08.2023 175

Amdahl qonuni Wikipedia

Amdahl qonuni - bu tizim resurslarini ko'paytirish orqali erishish mumkin bo'lgan hisoblash vazifasining potentsial tezligini ko'rsatadigan formula. Odatda parallel hisoblashda foydalaniladi, u protsessorlar sonini ko'paytirishning haqiqiy foydasini bashorat qilishi mumkin, bu dasturning parallellik qobiliyati bilan cheklangan.

Eng yaxshi misol bilan tasvirlangan. Agar dastur ikkita qismdan iborat bo'lsa, bitta protsessor tomonidan bajarilishi kerak bo'lgan A qismi va parallellashtirilishi mumkin bo'lgan B qismi bo'lsa, dasturni bajaruvchi tizimga bir nechta protsessorlarni qo'shish faqat cheklangan foyda keltirishi mumkinligini ko'ramiz. . Bu B qismining tezligini sezilarli darajada oshirishi mumkin, ammo A qismining tezligi o'zgarishsiz qoladi.

Quyidagi diagrammada tezlikni oshirishning ba'zi misollari ko'rsatilgan:

(Image Reference: By Daniels219 at English Wikipedia, Creative Commons Attribution-Share Alike 3.0 Unported, https://en.wikipedia.org/wiki/File:AmdahlsLaw.svg)

Ko'rinib turibdiki, hatto 50% parallelizatsiya qilinadigan dastur ham 10 ta ishlov berish birligidan juda kam foyda keltiradi, 95% parallelizatsiya qilinadigan dastur esa mingdan ortiq ishlov berish birliklari bilan tezlikni sezilarli darajada oshirishi mumkin.

Mur qonuni  sekinlashgani va individual protsessor tezligining tezlashishi sekinlashgani sababli, parallellashtirish ishlashni yaxshilash uchun kalit hisoblanadi. Grafik dasturlash ajoyib misol - zamonaviy Shader asosidagi hisoblash bilan individual piksellar yoki fragmentlar parallel ravishda ko'rsatilishi mumkin - shuning uchun zamonaviy grafik kartalar ko'pincha minglab ishlov berish yadrolariga (GPU yoki Shader Birliklari) ega.

Shuningdek qarang:

Amdahl's Law
Qonunlar 0 06.08.2023 175

Amdahl's Law on Wikipedia

Amdahl's Law is a formula which shows the potential speedup of a computational task which can be achieved by increasing the resources of a system. Normally used in parallel computing, it can predict the actual benefit of increasing the number of processors, which is limited by the parallelisability of the program.

Best illustrated with an example. If a program is made up of two parts, part A, which must be executed by a single processor, and part B, which can be parallelised, then we see that adding multiple processors to the system executing the program can only have a limited benefit. It can potentially greatly improve the speed of part B - but the speed of part A will remain unchanged.

The diagram below shows some examples of potential improvements in speed:

(Image Reference: By Daniels219 at English Wikipedia, Creative Commons Attribution-Share Alike 3.0 Unported, https://en.wikipedia.org/wiki/File:AmdahlsLaw.svg)

As can be seen, even a program which is 50% parallelisable will benefit very little beyond 10 processing units, whereas a program which is 95% parallelisable can still achieve significant speed improvements with over a thousand processing units.

As Moore's Law slows, and the acceleration of individual processor speed slows, parallelisation is key to improving performance. Graphics programming is an excellent example - with modern Shader based computing, individual pixels or fragments can be rendered in parallel - this is why modern graphics cards often have many thousands of processing cores (GPUs or Shader Units).

See also:

90–9–1 tamoyil (1% qoida)
Qonunlar 0 06.08.2023 156

90-9-1 printsipi shuni ko'rsatadiki, wiki kabi internet hamjamiyatida ishtirokchilarning 90% faqat tarkibni iste'mol qiladi, 9% tarkibni tahrirlaydi yoki o'zgartiradi va 1% ishtirokchilar kontent qo'shadi.

Misol uchun:

  • 2014 yilda to'rtta raqamli sog'liqni saqlash ijtimoiy tarmoqlarida o'tkazilgan tadqiqot shuni ko'rsatdiki, eng yaxshi 1% postlarning 73%, keyingi 9% o'rtacha ~ 25% va qolgan 90% o'rtacha 2% ni tashkil qiladi (Ma'lumotnoma)

Shuningdek qarang: Pareto tamoyili

90–9–1 Principle (1% Rule)
Qonunlar 0 06.08.2023 156

The 90-9-1 principle suggests that within an internet community such as a wiki, 90% of participants only consume content, 9% edit or modify content and 1% of participants add content.

Real-world examples:

  • A 2014 study of four digital health social networks found the top 1% created 73% of posts, the next 9% accounted for an average of ~25% and the remaining 90% accounted for an average of 2% (Reference)

See Also: Pareto principle