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.
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 wiki.haskell.org
Har qanday til dizaynida ushbu ro'yxatdagi xususiyatni muhokama qilish uchun sarflangan umumiy vaqt uning pozitsiyasining kuchiga ko'tarilgan ikkiga proportsionaldir.
- Sematik
- Sintaksis
- Leksik sintaksis
- 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 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.
- Semantics
- Syntax
- Lexical syntax
- 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
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.
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 - 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 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.
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:
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 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 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.
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 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.
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:
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:
The Law of Leaky Abstractions on Joel on Software
Barcha noaniq abstraktsiyalar, ma'lum darajada, sizib chiqadi.
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 on Joel on Software
All non-trivial abstractions, to some degree, are leaky.
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.
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 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 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 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.
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:
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:
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:
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:
Waqtdan oldin optimallashtirish effekti WikiWeb
Erta optimallashtirish barcha yomonliklarning ildizidir.
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 on WikiWeb
Premature optimization is the root of all evil.
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.
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
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
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:
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:
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:
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:
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.
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.
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:
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:
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.
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".
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:
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:
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:
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 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.
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".
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:
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".
Yaxshilanish yomonlashishni anglatadi.
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.
Improvement means deterioration.
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.
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
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
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.
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
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.
(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
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.
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.
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:
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:
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.
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)
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.
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, maqsadli hududga o'tish uchun zarur bo'lgan vaqtni nishongacha bo'lgan masofani nishonning kengligiga bo'lish funktsiyasi ekanligini taxmin qiladi.
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 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.
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 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.
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 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.
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.
"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 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
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:
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:
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
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 (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.
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:
- Inside Google Cloud Spanner and the CAP Theorem - Goes into the details of how Cloud Spanner works, which appears at first to seem like a platform which has all of the guarantees of CAP, but under the hood is essentially a CP system.
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.
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:
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 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 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 - 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:
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 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:
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 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
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