­čĺ╗­čôľ hacker-laws

Programc─▒lar─▒n faydal─▒ bulaca─č─▒ yasalar, teoriler, prensipler ve desenler.

├çeviriler: ­čç«­čçę ­čçž­čçĚ ­čçĘ­čç│ ­čçę­čç¬ ­čçź­čçĚ ­čçČ­čçĚ ­čç«­čç╣ ­čç▒­čç╗ ­čç░­čçĚ ­čçĚ­čç║ ­č笭čçŞ ­čç╣­čçĚ ­čç»­čçÁ

Bu projeyi sevdiniz mi? Sevdiyseniz projenin sahibine sponsor olabilirsiniz ya da ├ževiri yapanlara sponsor olabilirsiniz.


Giri┼č

─░nsanlar─▒n geli┼čtirme hakk─▒nda konu┼čurken tart─▒┼čt─▒klar─▒ bir├žok yasa var. Bu depo, en yayg─▒n olanlardan baz─▒lar─▒n─▒n referanslar─▒n─▒ ve ├Âzetini bar─▒nd─▒r─▒r. Katk─▒da bulunmak i├žin PR a├ž─▒p g├Ânderebilirsiniz!

ÔŁŚ: Bu depo yasalar─▒n, prensiplerin ve modellerin bilgi vermek ama├žl─▒ a├ž─▒klamalar─▒n─▒ i├žerir ve hi├žbirini savunma amac─▒ g├╝tmez. Bunlar─▒n hangisinin uygulan─▒p uygulanmayaca─č─▒ tamamen tart─▒┼čma konusudur ve yap─▒lan i┼če ba─čl─▒d─▒r..

Yasalar

Tek tek ba┼člayal─▒m!

90ÔÇô9ÔÇô1 Prensibi (1% Kural─▒)

WikipediaÔÇÖda 1% Kural─▒

90-9-1 prensibi der ki; bir internet toplulu─čunda (├Ârne─čin bir wiki toplulu─ču) ├╝yelerin %90ÔÇÖ─▒ sadece i├žeri─či okur, %9ÔÇÖu i├žeri─či d├╝zenleme ya da d├╝zeltme yapar ve %1ÔÇÖi ise yeni i├žerik ekler.

Ger├žek d├╝nyadan ├Ârnekler:

Ek kaynaklar:

Amdahl Yasas─▒

Wikipedia Amdahl Yasas─▒

Amdahl Yasas─▒ kaynaklar─▒ art─▒rarak bir hesaplama i┼čleminin olas─▒ h─▒zlanma miktar─▒n─▒ hesaplayan bir form├╝l├╝ tan─▒mlar. Genellikle paralel i┼čleme hesaplar─▒nda kullan─▒l─▒r ve i┼člemci say─▒s─▒n─▒n art─▒r─▒lmas─▒n─▒n program─▒n paralelle┼čtirilebilme kapasitesine ba─čl─▒ olarak etkisinin do─čru ┼čekilde hesaplanmas─▒n─▒ sa─člar.

En g├╝zel ┼ču ├Ârnekle anlat─▒labilir. Bir program─▒n iki b├Âl├╝mden olu┼čtu─čunu d├╝┼č├╝nelim. B├Âl├╝m A sadece tek i┼člemci ile ├žal─▒┼čt─▒r─▒labilir. B├Âl├╝m B ise paralelle┼čtirilebilecek ┼čekilde yaz─▒lm─▒┼č. Bu durumda bu program─▒ ├žok i┼člemci ile ├žal─▒┼čt─▒rd─▒─č─▒m─▒zda B├Âl├╝m BÔÇÖde olu┼čacak kadar bir kazan─▒m sa─člayabiliriz. B├Âl├╝m AÔÇÖda herhangi bir katk─▒ olamayacakt─▒r.

A┼ča─č─▒daki diyagram baz─▒ olas─▒ h─▒z geli┼čtirmelerine ├Ârnekler i├žeriyor:

Diagram: Amdahl's Law

(Diyagram─▒n kayna─č─▒: Daniels220 taraf─▒ndan ─░ngilizce WikipediaÔÇÖda, Creative Commons Attribution-Share Alike 3.0 Unported, https://en.wikipedia.org/wiki/File:AmdahlsLaw.svg)

Diyagramdaki ├Ârneklerden g├Âr├╝ld├╝─č├╝ ├╝zere, e─čer bir program─▒n sadece %50ÔÇÖsi paralelle┼čtirilebiliyorsa 10 i┼člemciden sonra i┼člemci eklemek h─▒zda g├Âzle g├Âr├╝n├╝r bir art─▒┼č sa─člam─▒yor ama %95 paralelle┼čtirilebilen bir programda 1000 i┼člemciden sonra bile i┼člemci eklemenin h─▒z─▒ art─▒rd─▒─č─▒ g├Âzlenebilir.

Moore Yasas─▒nda s├Âylenen art─▒┼č─▒n azalma e─čiliminde olmas─▒ ve ayn─▒ zamanda i┼člemci h─▒z─▒n─▒n art─▒┼č─▒nda da ivme kayb─▒ olmas─▒, paralelle┼čtirilebilme ├Âzelli─čini performans art─▒┼č─▒nda anahtar duruma getirdi. Grafik programlama bu konuda en belirgin ├Ârnek. Shader tabanl─▒ modern i┼čleme ile pixel ve fragmanlar─▒n paralel olarak render edilebilmesi sayesinde modern grafik kartlar─▒nda binlerce i┼člemci ├žekirde─či olabiliyor.

Ek kaynaklar:

K─▒r─▒k Camlar Teorisi

WikipediaÔÇÖda K─▒r─▒k Camlar Teorisi

K─▒r─▒k Camlar Teorisi, g├Âzle g├Âr├╝lebilir su├ž belirtilerinin (ya da ortam─▒n bak─▒ms─▒zl─▒─č─▒n─▒n) daha ciddi su├žlara (ya da ortam─▒n daha da bozulmas─▒na) yol a├žt─▒─č─▒n─▒ g├Âstermektedir.

Bu teori, yaz─▒l─▒m geli┼čtirmeye ┼ču ┼čekilde uygulanabilir; d├╝┼č├╝k kalite kodun (veya Teknik Borcun) varl─▒─č─▒ kaliteyi geli┼čtirme ├žabalar─▒n─▒n g├Âz ard─▒ edilebilece─či veya ├Ânemsenmeyece─či alg─▒s─▒na yol a├žabilece─či ve dolay─▒s─▒yla d├╝┼č├╝k kalite koda sebep olabilece─čidir. Bu etki zamanla kalitenin daha ├žok azalmas─▒na neden olur.

Ek kaynaklar:

├ľrnekler:

Brooks Yasas─▒

WikipediaÔÇÖda Brooks Yasas─▒

Gecikmesi kesinle┼čmi┼č projeye yeni insan kayna─č─▒ eklemek projeyi daha da geciktirir.

Bu yasa, gecikmi┼č bir projeyi h─▒zland─▒rmak i├žin ek insan kayna─č─▒ koyman─▒n projeyi daha geciktirece─čini iddia ediyor. BrookÔÇÖa g├Âre bunun gereksiz bir sadele┼čtirme oldu─ču kesin. Yeni kat─▒lanlar─▒n adapte edilmesi ve ileti┼čim karma┼čas─▒ hemen etkisini g├Âstererek h─▒z─▒n yava┼člamas─▒na sebep olur. Ayr─▒ca, yap─▒lacak i┼člerin bir├žo─ču genellikle daha k├╝├ž├╝k par├žalara b├Âl├╝nemez ve birden fazla kaynak bu i┼člerin yap─▒lmas─▒ i├žin kullan─▒lmaz. Bu durum beklenen art─▒┼č─▒n sa─članmamas─▒ ile sonu├žlan─▒r.

Me┼čhur ÔÇťDokuz kad─▒n ile 1 ayda do─čum sa─članamazÔÇŁ deyimi bu yasan─▒n en pratik anlat─▒m─▒d─▒r. Baz─▒ i┼člerin b├Âl├╝nemedi─či veya paralelle┼čtirilemedi─či ger├že─čini unutmamak laz─▒m.

ÔÇśThe Mythical Man MonthÔÇÖ adl─▒ kitab─▒n ana konular─▒ndan biri budur.

Ek kaynaklar:

CAP Teorisi (Brewer Teorisi)

CAP Teoremi (Eric Brewer taraf─▒ndan tan─▒mlanm─▒┼čt─▒r) da─č─▒t─▒lm─▒┼č bir veri deposu i├žin a┼ča─č─▒daki ├╝├ž garantiden sadece ikisinin (en fazla) sa─članabilece─čini belirtmektedir:

Tart─▒┼čman─▒n ├Âz├╝ ┼č├Âyledir. Bir a─č payla┼č─▒m─▒n─▒n olmayaca─č─▒n─▒ garanti etmek imkans─▒zd─▒r (bkz. Da─č─▒t─▒k Sistemlerin Yan─▒lg─▒lar─▒ ). Bu nedenle bir payla┼č─▒ml─▒ yap─▒ s├Âz konusu oldu─čunda, i┼člemi iptal edebilir (tutarl─▒l─▒─č─▒ art─▒rabilir ve kullan─▒labilirli─či azaltabiliriz) veya devam edebiliriz (kullan─▒labilirli─či art─▒rabilir, tutarl─▒l─▒─č─▒ azaltabilir).

Teorinin ismi, garanti edilmeye ├žal─▒┼č─▒lan kavramlar─▒n ilk harflerinden (Consistency, Availability, Partition Tolerance) olu┼čturulmu┼čtur. Bunun ACID ile alakal─▒ olmayan farkl─▒ bir tan─▒m─▒ oldu─čunu bilmenin ├žok ├Ânemli oldu─čunu unutmay─▒n. Daha g├╝ncel olarak, a─č─▒n payla┼č─▒ml─▒ olmad─▒─č─▒ yap─▒larda (sistem beklendi─či ├žal─▒┼čmaya devam ederken) gecikmeye ve tutarl─▒l─▒─ča baz─▒ k─▒s─▒tlamalar getiren PACELC teoremi geli┼čtirilmi┼čtir.

├ço─ču modern veritaban─▒ platformu, veritaban─▒ kullan─▒c─▒lar─▒na y├╝ksek d├╝zeyde kullan─▒labilirlik (ÔÇśkirli okumaÔÇÖ i├žerebilir) veya y├╝ksek d├╝zeyde tutarl─▒k (├Ârne─čin ÔÇśyeterli ├žo─čunlukla onaylanm─▒┼č yazmaÔÇÖ) aras─▒nda se├žim yapma se├žene─či sunarak bu teoremi ├Ârt├╝k olarak kabul eder.

Ger├žek d├╝nyadan ├Ârnekler:

Ek kaynaklar:

Conway Yasas─▒

WikipediaÔÇÖda Conway Yasas─▒

Conway yasas─▒ der ki; ├╝retilen sistemler kendilerini ├╝reten organizasyonun teknik s─▒n─▒rlar─▒n─▒ yans─▒t─▒r. Bu yasa daha ├žok organizasyon de─či┼čiklikleri s─▒ras─▒nda dikkate al─▒n─▒r. E─čer bir organizasyon birbirinden ba─č─▒ms─▒z k├╝├ž├╝k birimlerden olu┼čuyorsa ├╝retilen yaz─▒l─▒mlar da buna uygun olacakt─▒r. E─čer bu organizasyon servis odakl─▒ dikey yap─▒land─▒r─▒lm─▒┼čsa, yaz─▒l─▒mlar bunu yans─▒tacakt─▒r.

Ek kaynaklar:

Cunningham Yasas─▒

WikipediaÔÇÖda Cunningham Yasas─▒

─░nternette do─čru cevab─▒ alman─▒n en iyi yolu bir soru sormak de─čil, yanl─▒┼č cevab─▒ kullanarak aramakt─▒r.

Steven McGeady, Ward CunninghamÔÇÖ─▒n 1980ÔÇÖlerin ba┼č─▒nda kendisine tavsiye olarak ÔÇť─░nternette do─čru cevab─▒ alman─▒n en iyi yolu, soru sormak de─čil, yanl─▒┼č olan cevab─▒ yazmakt─▒rÔÇŁ dedi─čini aktar─▒yor. McGeady bunu Cunningham kanunu olarak adland─▒rd─▒, ancak Cunningham bu sahipli─či bunun ÔÇťyanl─▒┼č bir al─▒nt─▒ÔÇŁ oldu─čunu nitelendirerek reddetti. Her ne kadar orjinalinde UsenetÔÇÖteki etkile┼čimlerle ilgili olsa da, yasa di─čer ├ževrimi├ži topluluklar─▒n nas─▒l ├žal─▒┼čt─▒─č─▒n─▒ a├ž─▒klamak i├žin kullan─▒lm─▒┼čt─▒r (├Ârne─čin, Wikipedia, Reddit, Twitter, Facebook).

Ek kaynaklar:

Dunbar Say─▒s─▒

WikipediaÔÇÖda Dunbar Say─▒s─▒

ÔÇťDunbarÔÇÖ─▒n say─▒s─▒, bir ki┼činin istikrarl─▒ bir sosyal ili┼čkide bulunabilece─či ki┼čilerin say─▒s─▒n─▒n kavramsal s─▒n─▒r─▒d─▒r - bu ili┼čki bireyin ili┼čkide oldu─ču her bir ki┼činin kim oldu─čunu ve her bir ki┼činin di─čer bir ki┼čiler ile ili┼čkisini bildi─či ili┼čkidir.ÔÇŁ Say─▒n─▒n tam de─čeri konusunda bir anla┼čmazl─▒k vard─▒r. ÔÇťÔÇŽ Dunbar insanlar─▒n ancak 150 ki┼čilik ili┼čkiler istikrarl─▒ bir ┼čekilde bulunabilece─čini s├Âylemi┼č.ÔÇŁÔÇŽ Dunbar say─▒y─▒ daha sosyal bir ba─člam i├žine koydu, ÔÇťsay─▒y─▒ bir barda i├žki i├žmeye davet edildi─činizde s─▒k─▒lmadan ya da utanmadan kabul edebilece─činiz ki┼či say─▒s─▒ olarak de─čerlendirdiÔÇŁ. Bu da 100 ile 250 aras─▒ndaki bir say─▒ olarak d├╝┼č├╝n├╝lebilir.

Ki┼čiler aras─▒ insani ili┼čkilerde oldu─ču gibi, insanlarla kod aras─▒ndaki ili┼čki de s├╝r├╝d├╝r├╝lebilmek i├žin ├žaba gerektirir. Karma┼č─▒k projelerle kar┼č─▒la┼čt─▒─č─▒m─▒zda ya da bu projeleri y├Ânetmek sorunda kald─▒─č─▒m─▒zda, projeyi ├Âl├žekleyebilmek i├žin e─čilimlere, politikalara ve modellenmi┼č prosed├╝rlere yaslanmaya ├žal─▒┼č─▒r─▒z. Dunbar say─▒s─▒n─▒ sadece ├žal─▒┼čan say─▒s─▒ b├╝y├╝d├╝─č├╝nde de─čil, tak─▒m─▒n harcayaca─č─▒ eme─čin kapsam─▒n─▒ belirlerken ya da sistemdeki lojistik ek y├╝k├╝n modellenmesine ve otomatikle┼čtirilmesine yard─▒mc─▒ olmak i├žin tak─▒mlara yat─▒r─▒m yaparken de g├Âz ├Ân├╝nde bulundurulmal─▒d─▒r. Bir ba┼čka m├╝hendislik ba─člam─▒nda d├╝┼č├╝n├╝rsek, bu say─▒ m├╝┼čteri destek sisteminde n├Âbet├ži olunurken sorumlulu─čunu alabilece─činiz proje/├╝r├╝n say─▒s─▒n─▒ belirlerken de rehber olabilir.

Ek kaynaklar:

Fitt Yasas─▒

WikipediaÔÇÖda Fitt Yasas─▒

Fitts yasas─▒, bir hedef alana gitmek i├žin gereken s├╝renin hesaplanmas─▒nda, hedefe olan mesafenin hedefin geni┼čli─čine b├Âl├╝nmesinin bir i┼člevi oldu─čunu ├Âng├Âr├╝r.

Diagram: Fitts Law

Bu yasan─▒n sonu├žlar─▒, UX veya UI tasarlan─▒rken etkile┼čimli ├Â─čelerin m├╝mk├╝n oldu─čunca b├╝y├╝k olmas─▒ ve kullan─▒c─▒lar─▒n dikkat alan─▒ ile etkile┼čimli ├Â─če aras─▒ndaki mesafenin m├╝mk├╝n oldu─čunca k├╝├ž├╝k olmas─▒ gerekti─čini ortaya ├ž─▒kar─▒r. Bunun tasar─▒m ├╝zerinde sonu├žlar─▒ vard─▒r, ├Ârne─čin birbirleriyle yak─▒n kullan─▒lan i┼člevlerin gruplanmas─▒ gibi.

Ayr─▒ca, ekran─▒n k├Â┼čeleri i├žin temel kullan─▒c─▒ aray├╝z├╝ ├Â─čelerinin yerle┼čtirilebilece─či ÔÇśsihirli k├Â┼čelerÔÇÖ (bir kullan─▒c─▒n─▒n farelerini kolayca vurabilece─či ya da s├╝p├╝rebilece─či) kavram─▒n─▒ resmile┼čtiriyor. Windows Ba┼člat d├╝─čmesi sihirli bir k├Â┼čede, se├žmeyi kolayla┼čt─▒r─▒yor ve ilgin├ž bir kontrast olarak, MacOSÔÇÖun ÔÇśpencereyi kapatÔÇÖ d├╝─čmesi sihirli bir k├Â┼čede de─čil, yanl─▒┼čl─▒kla t─▒klanmay─▒ zorla┼čt─▒r─▒yor.

Ek kaynaklar:

Gall Yasas─▒

WikipediaÔÇÖda Gall Yasas─▒

├çal─▒┼čan karma┼č─▒k bir sistemin her zaman i┼če yarayan daha basit bir sistemden evrimle┼čti─či kesinlikle s├Âylenebilir. Ba┼člang─▒├žtan itibaren karma┼č─▒k tasarlanm─▒┼č bir sistemin asla ├žal─▒┼čmayaca─č─▒ ve sonradan da d├╝zeltilemeyece─či kesindir. ├çal─▒┼čan daha basit bir sistem ile ba┼člaman─▒z gerekir.

(John Gall)

Gall Yasas─▒ der ki; ├žok karma┼č─▒k sistemleri tasarlamaya ├žal─▒┼čmak her zaman ba┼čar─▒s─▒zl─▒kla sonu├žlan─▒r. Bu t├╝r sistemlerin ilk denemede ba┼čar─▒l─▒ olmalar─▒ ├žok nadir g├Âr├╝l├╝r ama genellikle basit sistemlerden evrilirler.

En klasik ├Ârnek g├╝n├╝m├╝zdeki internettir. ┼×u an ├žok karma┼č─▒k bir sistemdir. Asl─▒nda ba┼člang─▒├žta sadece akademik kurumlar aras─▒ i├žerik payla┼č─▒m─▒ olarak tan─▒mlanm─▒┼čt─▒. Bu tan─▒m─▒ kar┼č─▒lamada ├žok ba┼čar─▒l─▒ oldu ve zamanla geli┼čerek bug├╝nk├╝ karma┼č─▒k halini ald─▒.

Ek kaynaklar:

Goodhart Yasas─▒

WikipediaÔÇÖda Goodhart Yasas─▒

G├Âzlemlenen herhangi bir istatistiksel d├╝zenlilik, kontrol ama├žlar─▒ i├žin ├╝zerine bask─▒ uyguland─▒─č─▒nda ├ž├Âkme e─čiliminde olacakt─▒r.

Charles Goodhart

Ayr─▒ca ┼ču ┼čekilde de ifade edilir:

Bir ├Âl├ž├╝m hedef haline geldi─činde, iyi bir ├Âl├ž├╝m olmaktan ├ž─▒kar.

Marilyn Strathern

Bu yasa, ├Âl├ž├╝me dayal─▒ optimizasyonlar─▒n, ├Âl├ž├╝m sonucunun kendisinin anlams─▒zla┼čmas─▒na yol a├žabilece─čini belirtmektedir. Bir prosese k├Âr bir ┼čekilde uygulanan a┼č─▒r─▒ se├žici tedbirler (TPGÔÇÖler) ├žarp─▒k bir etkiye neden olur. ─░nsanlar, eylemlerinin b├╝t├╝nsel sonu├žlar─▒na dikkat etmek yerine belirli metrikleri tatmin etmek i├žin sistemle ÔÇťoynayarakÔÇŁ yerel olarak optimize etme e─čilimindedir.

Ger├žek d├╝nyadan ├Ârnekler:

Ek kaynaklar:

HanlonÔÇÖun Usturas─▒

WikipediaÔÇÖda HanlonÔÇÖun Usturas─▒

Aptall─▒kla lay─▒k─▒yla a├ž─▒klanabilecek bir ┼čeyi, asla k├Ât├╝ niyete ba─člamay─▒n.

Robert J. Hanlon

Bu prensip, olumsuz sonu├žlara yol a├žan eylemlerin, ├žo─čunlukla k├Ât├╝ niyetin sonucu olmad─▒─č─▒n─▒ savunmaktad─▒r. Aksine, olumsuz sonu├ž daha b├╝y├╝k olas─▒l─▒kla bu eylemlerin ve/veya etkinin tam olarak anla┼č─▒lamamas─▒na ba─čl─▒d─▒r.

Hick Yasas─▒ (Hick-Hyman Yasas─▒)

WikipediaÔÇÖda Hick Yasas─▒

Karar verme s├╝resi, se├žebilece─činiz se├ženeklerin say─▒s─▒ ile logaritmik orant─▒l─▒ olarak b├╝y├╝r.

William Edmund Hick and Ray Hyman

A┼ča─č─▒daki denklemde, T karar verme zaman─▒d─▒r, n se├ženek say─▒s─▒d─▒r ve b verilerin analizi ile belirlenen bir sabittir.

Hicks law

(Diagram─▒n Kayna─č─▒: Creative Commons Attribution-Share Alike 3.0 Unported, https://en.wikipedia.org/wiki/Hick%27s_law)

Bu yasa yaln─▒zca se├ženeklerin say─▒s─▒ s─▒raland─▒─č─▒nda (├Ârne─čin alfabetik olarak) ge├žerlidir. Bu, temel iki logaritmada ima edilir - bu, karar vericinin asl─▒nda bir ikili arama ger├žekle┼čtirdi─čini ima eder. Se├ženekler iyi s─▒ralanmam─▒┼čsa, deneyler ge├žen s├╝renin do─črusal oldu─čunu g├Âsterir.

Bunun UI tasar─▒m─▒nda ├Ânemli bir etkisi vard─▒r; kullan─▒c─▒lar─▒n se├ženekleri kolayca arayabilmelerini sa─člamak daha h─▒zl─▒ karar almay─▒ sa─člar.

Hick Yasas─▒nda IQ ile reaksiyon s├╝resi aras─▒nda Bilgi ─░┼čleme H─▒z─▒: Geli┼čimsel De─či┼čim ve ─░stihbarat Ba─člant─▒lar─▒ makalesinde bahsedildi─či gibi bir korelasyon da g├Âsterilmi┼čtir.

Ek kaynaklar:

Hofstadter Yasas─▒

WikipediaÔÇÖda Hofstadter Yasas─▒

Bir i┼č her zaman umdu─čundan daha uzun s├╝rer, Hofstadter yasas─▒n─▒ g├Âz ├Ân├╝nde bulundursan bile.

(Douglas Hofstadter)

Bu yasay─▒ bir i┼čin ne kadar s├╝rece─čini tahminlenirken hat─▒rlat─▒ld─▒─č─▒ i├žin duymu┼č olabilirsiniz. Herkesin kabul etti─či bir ger├žek var ki, yaz─▒l─▒m geli┼čtirmede en k├Ât├╝ oldu─čumuz alan i┼čin ne kadar s├╝rede bitece─čini tahmin etmektir.

ÔÇśG├Âdel, Escher, Bach: An Eternal Golden BraidÔÇÖ adl─▒ kitaptan bir al─▒nt─▒.

Ek kaynaklar:

Hutber Yasas─▒

WikipediaÔÇÖda Hutber Yasas─▒

─░yile┼čtirme, bozulma anlam─▒na da gelir.

(Patrick Hutber)

Bu yasa der ki; sistemde yap─▒lan bir iyile┼čtirme sistemin di─čer taraflar─▒nda bozulmaya sebep olabilir ya da ba┼čka bozukluklar─▒ gizleyebilir, bu da sistemin mevcut durumunun daha da bozulmas─▒na sebep olabilir.

├ľrne─čin, bir servisin cevap verme zaman─▒nda bir geli┼čtirme yap─▒l─▒p h─▒zland─▒r─▒l─▒rsa bu durum s├╝re├žteki di─čer a┼čamalarda kapasite ve ├ž─▒kt─▒ art─▒┼č─▒na sebep olabilir. Bu da sistemin di─čer taraflar─▒n─▒ olumsuz etkileyebilir.

Hype D├Âng├╝s├╝ ve Amara Yasas─▒

WikipediaÔÇÖda Hype D├Âng├╝s├╝

Bir teknolojinin k─▒sa vadede olu┼čacak etkisini abart─▒p, uzun vadede olu┼čacak etkisini hafife al─▒yoruz.

(Roy Amara)

Hype D├Âng├╝s├╝ bir teknolojinin zamanla yaratt─▒─č─▒ heyecan ve geli┼čiminin g├Ârsel olarak sunumudur ve Gartner taraf─▒ndan ilk olarak olu┼čturulmu┼čtur. En g├╝zel anlat─▒m a┼ča─č─▒daki bir g├Ârsel ile yap─▒labilir:

The Hype Cycle

(Resmin Kayna─č─▒: Jeremykemp taraf─▒ndan ─░ngilizce WikipedaÔÇÖda, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=10547051)

K─▒saca anlatmak gerekirse, bu d├Âng├╝ her yeni teknolojinin ilk zamanlar─▒nda teknolojinin kendisi ve olas─▒ etkisi ├╝zerinde bir heyecan dalgas─▒ olu┼čtu─čunu iddia ediyor. Ekipler yeni teknolojiler hemen kullanmaya ├žal─▒┼č─▒yorlar ve genelde kendilerini sonu├žtan memnun olmam─▒┼č bir halde buluyorlar. Bu ya teknolojinin hen├╝z olgunla┼čmam─▒┼č olmas─▒ndan, ya da uygulaman─▒n tam anlam─▒yla ger├žekle┼čmemi┼č olmas─▒ndan olabilir. Belirli bir s├╝re ge├žtikten sonra, teknolojinin yeterlili─či ve pratik kullan─▒m alanlar─▒ artar ve ekipler daha ├╝retken olmaya ba┼člar. Roy AmaraÔÇÖn─▒n s├Âz├╝ bu durumu en ├Âzl├╝ ┼čekilde toparl─▒yor diyebiliriz - ÔÇťBir teknolojinin k─▒sa vadede olu┼čacak etkisini abart─▒p, uzun vadede olu┼čacak etkisini hafife al─▒yoruzÔÇŁ.

Hyrum Yasas─▒ (Arabirimlerin ├ľrt├╝l├╝ Hukuku)

Hyrum Yasas─▒ Web Sitesi

Belli say─▒da kullan─▒c─▒ya ula┼čt─▒─č─▒nda, servis s├Âzle┼čmesinde ne demi┼č oldu─čunuzdan ba─č─▒ms─▒z olarak ├╝r├╝n├╝n├╝z├╝n ya da sisteminizin b├╝t├╝n g├Âzlemlenebilir davran─▒┼člar─▒ art─▒k ├╝├ž├╝nc├╝ ki┼čilere g├Âre ┼čekillenecektir.

(Hyrum Wright)

Hyrum Yasas─▒ g├Âre, e─čer bir APIÔÇÖnin olduk├ža b├╝y├╝k say─▒labilecek say─▒da kullan─▒c─▒s─▒ oldu─čunda, art─▒k b├╝t├╝n sonu├žlar ve davran─▒┼člar (API s├Âzle┼čmesinde belirtilmemi┼č olsalar bile) kullan─▒c─▒lara g├Âre ┼čekillenecektir. Buna bir ├Ârnek olarak bir APIÔÇÖnin tepki s├╝resi olabilir. Daha kapsaml─▒ bir ├Ârnek olarak kullan─▒c─▒lar─▒n bir regex ile d├Ânen cevap metninin i├žinden hatan─▒n tipini ay─▒klad─▒klar─▒ bir senaryoyu d├╝┼č├╝nelim. API s├Âzle┼čmesinde bu cevap metinleri ile ilgili bir ┼čey belirtilmemi┼č olmas─▒na ve kullan─▒c─▒lar─▒n hata kodunu kullanmalar─▒n─▒ belirtilmesine ra─čmen, cevap metnini de─či┼čtirmeniz baz─▒ kullan─▒c─▒lar─▒n metni kullanmalar─▒ndan dolay─▒ hata ile kar┼č─▒la┼čmalar─▒na sebep olacakt─▒r.

Ek kaynaklar:

Kernighan Yasas─▒

Kodda hata ay─▒klama yapmak, o kodun s─▒f─▒rdan yaz─▒lmas─▒ndan iki kat daha zordur. Dolay─▒s─▒yla, yazd─▒─č─▒n bir kodu hatas─▒z yazd─▒─č─▒n─▒ d├╝┼č├╝n├╝yorsan, tan─▒m olarak o koddaki hatay─▒ ay─▒klayacak kadar zeki de─čilsin demektir.

(Brian Kernighan)

Kernighan Yasas─▒ ad─▒n─▒ Brian KernighanÔÇÖdan alm─▒┼čt─▒r ve ÔÇťThe Elements of Programming StyleÔÇŁ adl─▒ Kernighan ve Plauger taraf─▒ndan yaz─▒lan kitaptaki bir c├╝mleden t├╝retilmi┼čtir:

Herkes hata ay─▒klaman─▒n kodu s─▒f─▒rdan yazmaktan iki kat─▒ daha zor oldu─čunu bilir. Dolay─▒s─▒yla, kodu yazarken b├╝t├╝n zekan─▒z─▒ kullan─▒p elinizden gelenin en iyisini yapt─▒─č─▒n─▒zda o koddaki hatay─▒ daha sonra nas─▒l ay─▒klayabilirsiniz?

Abart─▒l─▒ olmakla birlikte, Kernighan Yasas─▒ karma┼č─▒k kod yerine basit kodun tercih edilece─či iddias─▒n─▒ ortaya koymaktad─▒r, ├ž├╝nk├╝ karma┼č─▒k kodda ortaya ├ž─▒kan herhangi bir sorunu ay─▒klamak maliyetli veya hatta m├╝mk├╝n olmayabilir.

Ek kaynaklar:

Linus Yasas─▒

WikipediaÔÇÖda Linus Yasas─▒

Ne kadar ├žok farkl─▒ g├Âz bakarsa, hatalar─▒n bulunmas─▒ o kadar kolayla┼č─▒r.

Eric S. Raymond

Bu yasa basit├že der ki; bir problemi ne kadar ├žok ki┼či g├Âr├╝rse, bu ki┼čiler aras─▒nda daha ├Ânce bu problemle veya benzeriyle kar┼č─▒la┼čm─▒┼č ve ├ž├Âzm├╝┼č ki┼čilerin bulunma olas─▒l─▒─č─▒n─▒n artacakt─▒r.

Ba┼člang─▒├žta a├ž─▒k kaynak geli┼čtirme modellerinin projeler i├žin de─čerini tan─▒mlamada kullan─▒lm─▒┼č olsa da, her t├╝rl├╝ yaz─▒l─▒m projesi i├žin de kabul edilebilir. Ayr─▒ca genel s├╝re├žlere de geni┼čletilebilir - daha fazla kod incelemesi, daha fazla statik analiz ve ├žok disiplinli test s├╝re├žleri sorunlar─▒ daha g├Âr├╝n├╝r k─▒lacak ve tan─▒mlanmas─▒n─▒ kolayla┼čt─▒racakt─▒r.

Daha resmi bir ifade ┼č├Âyle olabilir;

Olabildi─čince ├žok say─▒da beta test├žisi ve ortak geli┼čtirici ortam─▒ sa─čland─▒─č─▒nda, hemen hemen her sorun h─▒zl─▒ bir ┼čekilde karakterize edilecek ve daha ├Ânce benzer bir sorunla kar┼č─▒la┼čm─▒┼č biri taraf─▒ndan ├ž├Âz├╝lecektir.

Bu yasa Eric S. RaymondÔÇÖun ÔÇťKatedral ve ├çar┼č─▒ÔÇŁ kitab─▒nda Linus TorvaldsÔÇśa ithaf olunmu┼čtur.

Metcalfe Yasas─▒

WikipediaÔÇÖda Metcalfe Yasas─▒

A─č teorisinde, bir sistemin de─čeri yakla┼č─▒k olarak sistemin kullan─▒c─▒ say─▒s─▒n─▒n karesi ile orant─▒l─▒ olarak b├╝y├╝r.

Bu yasa, bir sistem i├žindeki muhtemel ├žift ba─člant─▒lar─▒n say─▒s─▒na dayanmaktad─▒r ve Reed Yasas─▒ ile yak─▒ndan ilgilidir. Odlyzko ve di─čerleri hem Reed Yasas─▒ hem de Metcalfe Yasas─▒ÔÇÖn─▒n insan bili┼činin a─č etkileri ├╝zerindeki s─▒n─▒rlar─▒n─▒ hesaba katmayarak sistemin de─čerini abartt─▒─č─▒n─▒ ├Âne s├╝rerler (Dunbar Say─▒s─▒ÔÇÖna bak─▒n─▒z).

Ek kaynaklar;

Moore Yasas─▒

WikipediaÔÇÖda Moore Yasas─▒

Entegre devre i├žerisindeki transist├Ârlerin say─▒s─▒ yakla┼č─▒k olarak iki y─▒lda bir ikiye katlan─▒r.

├ço─ču zaman yar─▒-iletken ve ├žip teknolojisinin geli┼čim h─▒z─▒n─▒ tahmin etmek i├žin kullan─▒lan Moore yasas─▒n─▒n, 1970ÔÇÖlerden 2000ÔÇÖlerin sonlar─▒na do─čru olduk├ža do─čru oldu─ču biliyoruz. Son y─▒llarda, komponentlerin k├╝├ž├╝lmesinde fiziksel s─▒n─▒rlara ula┼č─▒ld─▒─č─▒ i├žin bu tahminlemenin tutmad─▒─č─▒n─▒ da s├Âyleyebiliriz. Ama paralelle┼čtirmede uzmanla┼č─▒lmas─▒ ve yar─▒-iletken teknolojilerindeki devrim potansiyelindeki de─či┼čiklikler Moore Yasas─▒ÔÇÖn─▒n yak─▒n zamanda tekrar do─črulanaca─č─▒n─▒ tahminler yapabilece─čini d├╝┼č├╝nebiliriz.

Murphy Yasas─▒ / Sod Yasas─▒

WikipediaÔÇÖda Murphy Yasas─▒

E─čer bir i┼čin k├Ât├╝ gitme ihtimali varsa mutlaka k├Ât├╝ gider.

─░smini Edward A. Murphy, JrÔÇśdan alan Murphy Yasas─▒ der ki e─čer bir i┼čin k├Ât├╝ gitme ihtimali varsa mutlaka k├Ât├╝ gider.

Bu programc─▒lar aras─▒nda ├žok kullan─▒lan bir atas├Âz├╝d├╝r. Geli┼čtirme yaparken, test ederken ya da canl─▒ sistemlerde ├žo─čunlukla hep beklenmedik sorunlar olur. Bu durum (─░ngiltereÔÇÖde yayg─▒n kullan─▒lan) Sod Yasas─▒ ile de ili┼čkilendirilebilir:

E─čer bir i┼čin k├Ât├╝ gitme ihtimali varsa, olabilecek en k├Ât├╝ zamanda k├Ât├╝ye gidecektir.

Bu iki ÔÇśyasaÔÇÖ daha ├žok espri ama├žl─▒ kullan─▒l─▒r. Bunun yan─▒nda, Do─črulama ├ľnyarg─▒s─▒ ve Se├žim Tarafgirli─či gibi olgular bu yasalar─▒n insanlar taraf─▒nda ├žok fazla vurgulanmas─▒na sebep olabilir (i┼čler yolundayken hi├žbir┼čeye dikkat etmeyiz, ama bunun yan─▒nda sorunlar ya┼čan─▒nca her ┼čey g├Âze batmaya ba┼člar ve tart─▒┼č─▒l─▒r).

Ek kaynaklar:

OccamÔÇÖ─▒n Usturas─▒

WikipediaÔÇÖda OccamÔÇÖ─▒n Usturas─▒

├ç├Âz├╝m├╝n elemanlar─▒ sebep olmaks─▒z─▒n ├žo─čalt─▒lmamal─▒d─▒r.

William of Ockham

OccamÔÇÖ─▒n usturas─▒, birka├ž olas─▒ ├ž├Âz├╝m aras─▒nda en olas─▒ ├ž├Âz├╝m├╝n, en az say─▒da kavram ve varsay─▒m─▒ olan ├ž├Âz├╝m oldu─čunu s├Âyl├╝yor. Bu ├ž├Âz├╝m en basit oland─▒r ve yanl─▒┼čl─▒kla ortaya ├ž─▒kan karma┼č─▒kl─▒─ča ya da olas─▒ olumsuz sonu├žlara sebep olmadan sadece verilen sorunu ├ž├Âzer.

Ek kaynaklar;

├ľrne─čin;

Parkinson Yasas─▒

WikipediaÔÇÖda Parkinson Yasas─▒

Bir i┼č, daima, bitirilmesi i├žin kendisine ayr─▒lan s├╝renin hepsini kapsayacak ┼čekilde uzar.

Orijinal ba─člam─▒nda, bu kanun b├╝rokrasi alan─▒ndaki ├žal─▒┼čmalara dayan─▒yordu. K├Ât├╝mser bir bak─▒┼č a├ž─▒s─▒yla yaz─▒l─▒m geli┼čtirme giri┼čimleri i├žin de s├Âylenebilir. ┼×├Âyle ki ekipler genelde proje biti┼č tarihi yakla┼čana kadar d├╝┼č├╝k verimde ├žal─▒┼č─▒rlar, biti┼č tarihi yakla┼čt─▒k├ža bitirmek i├žin yo─čun bir ├žaba i├žine girerler ve sonu├ž olarak asl─▒nda biti┼č tarihini tutturmu┼č olurlar.

Bu yasa ile Hofstadter Yasas─▒ birle┼čtirilirse, daha k├Ât├╝mser bir yasaya ula┼č─▒l─▒r. Bir i┼č bitirilmesi i├žin harcanmas─▒ gereken zaman─▒ kapsar ve her zaman gecikir.

Ek kaynaklar:

Olgunla┼čmam─▒┼č Optimizasyon Etkisi

WikiWikiWebÔÇÖde Olgunla┼čmam─▒┼č Optimizasyon Etkisi

Vakti gelmeden yap─▒lan optimizasyon b├╝t├╝n k├Ât├╝l├╝klerin anas─▒d─▒r.

(Donald Knuth)

Donald Knuth yazd─▒─č─▒ Structured Programming With Go To Statements isimli makalede, ÔÇťProgramc─▒lar, programlar─▒n─▒n kritik olmayan b├Âl├╝mlerinin h─▒z─▒n─▒ d├╝┼č├╝nerek veya endi┼čelenerek ├žok fazla zaman harcarlar ve bu bak─▒┼č a├ž─▒s─▒ ile yapt─▒klar─▒ verimlilik geli┼čtirmelerin hata ay─▒klama ve bak─▒m yapma a┼čamalar─▒na ├žok olumsuz etkileri olur. Kesinlikle bu tarz k├╝├ž├╝k geli┼čtirmeleri (zaman─▒m─▒z─▒n %97ÔÇÖsini harcad─▒─č─▒m─▒z) g├Âz ard─▒ etmeliyiz, Vakti gelmeden yap─▒lan optimizasyon b├╝t├╝n k├Ât├╝l├╝klerin anas─▒d─▒r ger├že─čini unutmamal─▒l─▒y─▒z. Yine de, geride kalan % 3ÔÇÖteki kritik f─▒rsatlar─▒ ka├ž─▒rmamal─▒y─▒z.ÔÇŁ

Asl─▒nda, olgunla┼čmam─▒┼č optimizasyonu ihtiyac─▒m─▒z─▒n ne oldu─čunu bilmeden yap─▒lan optimizasyon olarak tan─▒mlayabiliriz (daha basit kelimelerle).

Putt Yasas─▒

WikipediaÔÇÖda Putt Yasas─▒

Teknolojide iki t├╝r insan egemendir, y├Ânetmedikleri ┼čeyleri anlayanlar ve anlamad─▒klar─▒ ┼čeyleri y├Ânetenler.

Putt yasas─▒n─▒ ├žo─čunlukla Putt sonucu takip eder:

Her teknik hiyerar┼či, zaman i├žinde bir yetkinlik d├Ân├╝┼č├╝m├╝ geli┼čtirir.

Bu iki c├╝mle der ki gruplar─▒n organize olma ┼čekillerindeki se├žim k─▒staslar─▒ ve e─čilimleri y├╝z├╝nden bir zaman sonra teknik organizasyonun ├žal─▒┼čma seviyelerinde bir grup yetenekli insan varken y├Ânettikleri i┼čin karma┼č─▒kl─▒─č─▒ndan ve zorluklar─▒ndan bihaber bir grup insan da y├Ânetim kademelerini i┼čgal edecektir. Bu durum Peter Prensibi ya da Dilbert Prensibi ile de a├ž─▒klanabilir.

Bununla birlikte, bunun gibi yasalar─▒n ├žok b├╝y├╝k genellemeler oldu─ču ve baz─▒ organizasyon t├╝rleri i├žin ge├žerli olabilece─či gibi ba┼čkalar─▒ i├žin ge├žerli olmayaca─č─▒ unutulmamal─▒d─▒r.

Ek kaynaklar:

Reed Yasas─▒

WikipediaÔÇÖda Reed Yasas─▒

B├╝y├╝k a─člar─▒n, ├Âzellikle sosyal a─člar─▒n kullan─▒m─▒, a─č─▒n boyutuna katlanarak ├Âl├žeklenir.

Bu yasa, program─▒n faydas─▒n─▒n olas─▒ kat─▒l─▒mc─▒ veya ikili ba─člant─▒ say─▒s─▒ndan daha h─▒zl─▒ olan olas─▒ alt grup say─▒s─▒ olarak ├Âl├žeklendi─či grafik teorisine dayanmaktad─▒r. Odlyzko ve di─čerleri, Reed Yasas─▒ÔÇÖn─▒n, insan bili┼činin a─č etkileri ├╝zerindeki s─▒n─▒rlar─▒n─▒ hesaba katarak sistemin yarar─▒n─▒ abartt─▒─č─▒n─▒ ├Âne s├╝rerler; Dunbar Say─▒s─▒ÔÇśna bak─▒n─▒z.

Ek kaynaklar;

Karma┼č─▒kl─▒─č─▒n Korunmas─▒ Yasas─▒ (Tesler Yasas─▒)

WikipediaÔÇÖda Karma┼č─▒kl─▒─č─▒n Korunmas─▒ Yasas─▒

Bu yasa der ki; her sistemde kesinlikle ay─▒klanamayacak bir miktarda karma┼č─▒kl─▒k vard─▒r.

Bir sistem ve yaz─▒l─▒mdaki karma┼č─▒kl─▒klar─▒n baz─▒lar─▒ dikkatsizlik veya yanl─▒┼čl─▒ktan ortaya ├ž─▒kar. Bu k├Ât├╝ kurgulanm─▒┼č yap─▒n─▒n, herhangi bir dikkatsizli─čin, ya da problemin k├Ât├╝ modellenmesinin sonucu olabilir. Bu tarz karma┼č─▒kl─▒klar giderilebilir ve sistemden ay─▒klanabilir. Bunun yan─▒nda, baz─▒ karma┼č─▒kl─▒klar sistemin ger├žekleridir yani sistemin ├ž├Âzmeye ├žal─▒┼čt─▒─č─▒ problemin do─čas─▒ gere─či ortaya ├ž─▒karlar. Bu tarz karma┼č─▒kl─▒klar sistem i├žinde farkl─▒ yerlere ta┼č─▒nabilirler ama sistemden ay─▒klanmazlar.

O yasan─▒n farkl─▒ bir yans─▒mas─▒ olarak ┼č├Âyle d├╝┼č├╝n├╝lebilir, e─čer bir karma┼č─▒kl─▒k esastan geliyorsa ve sistem sadele┼čtirilerek bile ay─▒klanam─▒yorsa, daha karma┼č─▒k bir ┼čekilde davranmas─▒ beklenen kullan─▒c─▒n─▒n taraf─▒na ta┼č─▒nabilir.

Demeter Yasas─▒

WikipediaÔÇÖda Demeter Yasas─▒

Asla yabanc─▒larla konu┼čma.

ÔÇťEn Az Bilgi ─░lkesiÔÇŁ olarak da bilinen Demeter Yasas─▒, yaz─▒l─▒m tasar─▒m─▒ i├žin, ├Âzellikle nesne tabanl─▒ dillerle ilgili bir ilkedir.

Bir yaz─▒l─▒m biriminin sadece en yak─▒n i┼čbirlik├žileriyle konu┼čmas─▒ gerekti─čini belirtir. B nesnesine bir referans─▒ olan bir A nesnesi y├Ântemlerini ├ža─č─▒rabilir, ancak B C nesnesine bir referans─▒ varsa, A C y├Ântemlerini direk ├ža─č─▒rmamal─▒d─▒r. Yani, e─čer C bir doThing() y├Ântemine sahipse, A do─črudan ├ža─č─▒rmamal─▒d─▒r; B.getC().DoThis().

Bu ilkeyi izlemek, de─či┼čikliklerin kapsam─▒n─▒ s─▒n─▒rlayarak gelecekte de─či┼čtirmelerin daha kolay ve daha g├╝venli olmas─▒n─▒ sa─člar.

S─▒zd─▒ran Soyutlamalar Yasas─▒

S─▒zd─▒ran Soyutlamalar Yasas─▒, Joel on Software

├ľnemsiz say─▒lmayacak b├╝t├╝n soyutlamalar belli ├Âl├ž├╝de s─▒z─▒nt─▒ i├žerir.

(Joel Spolsky)

Bu yasa, karma┼č─▒k sistemleri sadele┼čtirmek i├žin kulland─▒─č─▒m─▒z soyutlamalar─▒n baz─▒ durumlarda soyutlaman─▒n alt─▒ndaki sistemin ├Â─čelerini sorunlar─▒ ile birlikte s─▒zd─▒r─▒r ve bu da beklenmedik davran─▒┼člar ortaya ├ž─▒kmas─▒ ile sonu├žlan─▒r.

Dosya a├žma ve okuma i┼člemlerini ├Ârneklemek i├žin kullanabiliriz. Dosya sistemi aray├╝zleri altta yeralan ├žekirdek sistemlerinin bir soyutlamas─▒d─▒r, ki ├žekirdek sistemleri de asl─▒nda manyetik plakalardaki (flash disk ya da SDD) veriyi fiziksel olarak de─či┼čtiren i┼člemlerin soyutlamas─▒d─▒r. ├ço─ču durumda, bir dosyay─▒ ikili sistemdeki verilerin ak─▒┼č─▒ olarak soyutlamak i┼če yarar. Manyetik s├╝r├╝c├╝ler s─▒ral─▒ okuma yap─▒ld─▒─č─▒nda rastgele eri┼čimli s├╝r├╝c├╝lere g├Âre daha h─▒zl─▒d─▒r (sayfalama hatalar─▒n─▒n artmas─▒ndan dolay─▒) ama bu durum SDD s├╝r├╝c├╝lerle kar┼č─▒la┼čt─▒rmada ge├žerli de─čildir. Bu durumun ├╝stesinden gelmek i├žin, detaylar─▒n alt─▒nda yatan bilgileri (yani geli┼čtiricinin bilmesi gereken uygulama detaylar─▒n─▒) soyutlaman─▒n s─▒zd─▒r─▒yor olaca─č─▒ dikkate al─▒nmal─▒d─▒r.

Yukar─▒da verdi─čimiz ├Ârnek daha fazla soyutlanma g├Âz ├Ân├╝nde bulundurulursa daha da karma┼č─▒kla┼čabilir. Linux i┼čletim sistemi dosyalara bir a─č ├╝zerinden eri┼čilmesine olanak sa─čl─▒yor ama bu dosyalar sanki yerel dosyalarm─▒┼č gibi g├Âsterilir. Bu soyutlama da e─čer bir network sorunu olursa s─▒z─▒nt─▒ olu┼čturur. E─čer bir uygulama geli┼čtirici bu t├╝r dosyalar─▒ normal dosyalarm─▒┼č gibi d├╝┼č├╝nerek geli┼čtirme yaparsa, a─č─▒zda olu┼čan herhangi bir gecikme ya da sorun ├ž├Âz├╝m├╝ sorunlu hale getirecektir.

Yasa savunmaya ├žal─▒┼čt─▒─č─▒ durum, herhangi bir soyutlamaya ├žok fazla g├╝venmenin alta yatan i┼člemleri de tam anlamamayla birle┼čince ├ž├Âz├╝lmeye ├žal─▒┼č─▒lan problemin ├žo─čunlukla daha da karma┼č─▒kla┼čmas─▒ ile sonu├žlanaca─č─▒d─▒r.

Ek kaynaklar:

Ger├žek d├╝nyadan ├Ârnekler:

├ľnemsizlik Yasas─▒

WikipediaÔÇÖda ├ľnemsizlik Yasas─▒

Bu yasa diyor ki, ekipler ├Ânemsiz ve kozmetik sorunlara ciddi ve ├Ânemli sorunlara g├Âre daha fazla zaman harcarlar.

En ├žok kullan─▒lan kurgu ├Ârnek n├╝kleer enerji reakt├Âr├╝n├╝ onaylayacak olan komitenin reakt├Âr├╝n genel tasar─▒m─▒n─▒ onaylama zaman─▒ndan ├žok bisiklet park─▒n─▒n tasar─▒m─▒n─▒ onaylamak i├žin zaman harcamas─▒d─▒r. ├çok b├╝y├╝k ve karma┼č─▒k konularla ilgili o alanda bir e─čitime, tecr├╝beye ve haz─▒rl─▒─ča sahip olmadan kayda de─čer yorum getirmek zordur. ─░nsanlar genelde de─čerli katk─▒lar verdiklerinin g├Âr├╝lmesini isterler. Dolay─▒s─▒yla insanlar kolayca katk─▒ verebilecekleri gerekli ve ├Ânemli olmasa bile k├╝├ž├╝k detaylara odaklanma e─čilimi g├Âsterirler.

Bu kurgu ├Ârnek ÔÇśBike SheddingÔÇÖ diye bir deyimin yayg─▒nla┼čmas─▒na sebep olmu┼čtur. T├╝rk├žeÔÇÖdeki ÔÇśpire i├žin yorgan yakmakÔÇÖ ya da ÔÇśatt─▒─č─▒n ta┼č ├╝rk├╝tt├╝─č├╝n kurba─čaya de─čsinÔÇÖ gibi deyimlere benzer.

Unix Felsefesi

WikipediaÔÇÖda Unix Felsefesi

Unix felsefesi ┼č├Âyle ├Âzetlenebilir; bir yaz─▒l─▒m par├žas─▒ olabildi─čince k├╝├ž├╝k olmal─▒ ve sadece bir i┼či yapmaya odaklanmal─▒d─▒r. Bu felsefeye uymak sistemleri b├╝y├╝k, karma┼č─▒k ve ├žok ama├žl─▒ programlarla olu┼čturmak yerine k├╝├ž├╝k, basit ve iyi tan─▒mlanm─▒┼č par├žalardan daha kolayca olu┼čturmay─▒ sa─člar.

Modern yakla┼č─▒mlardan biri olan ÔÇśMikro-service MimarisiÔÇÖ de bu felsefenin uygulamas─▒ olarak d├╝┼č├╝n├╝lebilir. ├ç├╝nk├╝ bu mimari ile servislerin k├╝├ž├╝k, ama├ž odakl─▒ ve tek bir i┼č yapacak ┼čekilde geli┼čtirilmesi ve karma┼č─▒k yap─▒lar─▒n k├╝├ž├╝k basit bloklar halinde olu┼čturulmas─▒ hedefleniyor.

Spotify Modeli

Spotify Modeli, Spotify Labs

Spotify Modeli SpotifyÔÇÖdaki uygulamas─▒ndan dolay─▒ pop├╝ler olmu┼č ekip ve organizasyon yap─▒lar─▒ i├žin yeni bir yakla┼č─▒md─▒r. Model basit├že ekiplerin teknolojilere g├Âre de─čil de ├Âzellikler etraf─▒nda organize edilmesidir.

Spotify Modeli kabileler (Tribes), birlikler (Guilds) ve k─▒s─▒mlar (Chapter) gibi organizasyon yap─▒s─▒nda kullan─▒lacak ├Â─čeleri de yayg─▒n hale getirdi.

Wadler Yasas─▒

Wadler Yasas─▒, wiki.haskell.org

Herhangi bir programlama dilini tasarlarken, a┼ča─č─▒daki listedeki herhangi bir ├Âzelli─či tart─▒┼čmak i├žin harcanan zaman iki ├╝zeri ├Âzelli─čin listeki s─▒ras─▒ ile do─čru orant─▒l─▒d─▒r.

  1. Semantik
  2. Genel s├Âzdizimi
  3. S├Âzc├╝k s├Âzdizimi
  4. Yorumlardaki s├Âzc├╝k s├Âzdizimi (K─▒saca semantic i├žin harcanan her bir saat i├žin yorumlardaki s├Âzc├╝k s├Âzdizimi i├žin sekiz saat harcanacakt─▒r.)

├ľnemsizlik Yasas─▒nda ├Âne s├╝r├╝lene benzer olarak, Wadler Yasas─▒ yeni bir programlama dili tasarlan─▒rken konunun ├Ânemi ile o konu i├žin harcanan zaman ters orant─▒l─▒ oldu─čunu s├Âyl├╝yor.

Ek kaynaklar:

Wheaton Yasas─▒

Link

Resmi G├╝n

├ľk├╝zl├╝k yapmay─▒n.

Wil Wheaton

Wil Wheaton (Star Trek: The Next Generation, The Big Bang Theory) taraf─▒ndan olu┼čturulan bu basit, ├Âzl├╝ ve g├╝├žl├╝ yasa, profesyonel bir organizasyon i├žinde uyum ve sayg─▒n─▒n artmas─▒n─▒ ama├žlamaktad─▒r. ─░┼č arkada┼člar─▒n─▒zla konu┼čurken, kod incelemeleri yaparken, di─čer bak─▒┼č a├ž─▒lar─▒n─▒ ├Âne s├╝rerken, insanlar─▒ ele┼čtirirken ve genel olarak insanlar─▒n birbirleriyle olan profesyonel etkile┼čimlerinin ├žo─čunda uygulanabilir.

Prensipler

Prensiplerin genellikle tasar─▒ma ili┼čkin rehberlerdir.

Chesterson Çiti

WikipediaÔÇÖda Chesterson ├çiti

Mevcut durumun ard─▒ndaki gerek├že anla┼č─▒l─▒ncaya kadar reform yap─▒lmamal─▒d─▒r.

Bu prensibin ad─▒ G.K ChestersonÔÇÖ─▒n yazd─▒─č─▒ bir hikayeden geliyor. Bir adam yolun ortas─▒ndan ge├žen bir ├žitle kar┼č─▒la┼č─▒r. Belediye ba┼čkan─▒na bu i┼če yaramaz ├žitin yolunu kesti─činden ┼čikayet eder ve kald─▒r─▒lmas─▒n─▒ ister. Belediye ba┼čkan─▒ ├žitin neden orada oldu─čunu sorar. Adam bilmedi─čini s├Âyledi─činde, belediye ba┼čkan─▒, ÔÇťE─čer amac─▒n─▒ bilmiyorsan, kesinlikle onu kald─▒rmana izin vermeyece─čim. Git sebebini ├Â─čren ve sonra kald─▒r─▒lmas─▒na izin verebilirim belki o zaman.ÔÇŁ

Bu prensip, yaz─▒l─▒m m├╝hendisli─činde teknik bor├ž kald─▒r─▒l─▒rken dikkate al─▒nmal─▒d─▒r. Bir program─▒n her sat─▒r─▒ ba┼člang─▒├žta bir sebepten ├Ât├╝r├╝ birisi taraf─▒ndan yaz─▒lm─▒┼čt─▒r. ─░lk etapta kodun neden yaz─▒ld─▒─č─▒n─▒ anlamaya ├žal─▒┼čmal─▒s─▒n─▒z. Sadece bunu ├Â─črendikten sonra, kodu ├ž─▒karma veya yeniden d├╝zenleme konusunda kendinizden emin olabilirsiniz.

├ľl├╝ Deniz Etkisi

Bruce F. WebsterÔÇÖe g├Âre ├ľl├╝ Deniz Etkisi

ÔÇťÔÇŽ [E]n yetenekli ve verimli BT m├╝hendisleri ┼čirketleri terketmeye en yak─▒n olanlard─▒r, [kal─▒c─▒ olma taraftar─▒ olanlar] ise tortuya (daha az yetenekli ve verimsiz) benzetilebilirÔÇŁ Bruce F. Webster ÔÇť├ľl├╝ Deniz EtkisiÔÇŁ bir organizasyonda m├╝hendislerin becerilerinin/yeteneklerinin/verimliliklerinin s─▒kl─▒kla o organizasyonda harcad─▒klar─▒ zamanla ters orant─▒l─▒ oldu─čunu s├Âyler.

Genellikle, y├╝ksek vas─▒fl─▒ m├╝hendisler ba┼čka yerlerde i┼č bulmas─▒ kolay olan ve bunu ilk yapan ki┼čilerdir. Eskimi┼č veya zay─▒f becerilere sahip m├╝hendisler, ba┼čka bir yerde i┼č bulmak zor oldu─ču i├žin ┼čirkette kalma e─čilimindedir. Bu, ├Âzellikle ┼čirketteki zamanlar─▒ boyunca artan ├╝cret art─▒┼člar─▒ elde ettikleri takdirde de ge├žerlidir, ├ž├╝nk├╝ ba┼čka bir yerde e┼čde─čer ├╝cret almalar─▒ zor olabilir.

Dilbert Prensibi

WikipediaÔÇÖda Dilbert Prensibi

┼×irketler, yetersiz ├žal─▒┼čanlar─▒, i┼č ak─▒┼č─▒ndan uzakla┼čt─▒rmak i├žin sistematik olarak y├Ânetici olmaya te┼čvik etme e─čilimindedir.

Scott Adams

Scott Adams (Dilbert ├žizgi dizisinin yazar─▒) Peter prensibinden esinlenerek ortaya at─▒lm─▒┼č bir y├Ânetim kavram─▒d─▒r. Dilbert prensibine g├Âre yetenekli olmayan ├žal─▒┼čanlar y├Ânetim kadorlar─▒na do─čru y├╝kseltilirler ki ├╝retime verecekleri zarar aza indirilsin. Adams bunu ilk olarak 1995ÔÇÖte Wall Street JournalÔÇÖda yazd─▒─č─▒ bir makalede a├ž─▒klad─▒ daha sonra ise 1996ÔÇÖda yazd─▒─č─▒ Dilbert Prensibi adl─▒ kitab─▒nda detayland─▒rd─▒.

Ek kaynaklar:

Pareto Prensibi (80/20 Kural─▒)

WikipediaÔÇÖda Pareto Prensibi

Hayattaki ├žo─ču ┼čey e┼čit da─č─▒lmaz.

Pareto Prensibi der ki; ├ž─▒kt─▒lar─▒n ├Ânemli bir ├žo─čunlu─ču girdilerin ├žok az─▒ taraf─▒ndan olu┼čturulur:

1940ÔÇÖl─▒ y─▒llarda Romanya k├Âkenli Amerikal─▒ m├╝hendis Dr. Joseph Juran, kendisi kalite kontrol├╝n babas─▒ olarak nitelendirilir, kalite kontrol sorunlar─▒nda Pareto Prensibini kullanmaya ba┼člad─▒.

Bu prensip ayn─▒ zamanda 80/20 Kural─▒ (The Law of the Vital Few and The Principle of Factor Sparsity) olarak da bilinir.

Ger├žek d├╝nyadan ├Ârnekler:

Peter Prensibi

WikipediaÔÇÖda Peter Prensibi

Hiyerar┼čideki insanlar ÔÇťyetersizlik seviyelerineÔÇŁ g├Âre y├╝kselme e─čilimindedir.

Laurence J. Peter

Laurence J. Peter taraf─▒ndan geli┼čtirilen bir y├Ânetim konsepti olan Peter Prensibi, i┼člerinde iyi olan ki┼čilerin, art─▒k ba┼čar─▒l─▒ olamad─▒klar─▒ bir seviyeye (kendi ÔÇťyetersizlik seviyelerineÔÇŁ) ula┼čana kadar terfi etti─čini g├Âzlemlemektedir. Bu durumda ┼čirket i├žinde ├žok tecr├╝beli olduklar─▒ndan organizasyondan (├žok ayk─▒r─▒ bir┼čey yapmad─▒klar─▒ s├╝rece) d─▒┼članmazlar ve az say─▒da temel beceriye sahip olacaklar─▒ bir rolde kalmaya devam edecekler, ├ž├╝nk├╝ onlar─▒ ba┼čar─▒l─▒ k─▒lan orijinal becerileri mutlaka bu yeni rolleri i├žin gereken beceriler de─čildir.

Bu, temelde farkl─▒ bir beceri k├╝mesi gerektirdi─činden ├Âzellikle kariyerine teknik rollerle ba┼člayan ama sonra kariyer de─či┼čtirip di─čer m├╝hendisleri y├Ânetmeye ba┼člayan m├╝hendislerle alakal─▒d─▒r.

Ek kaynaklar:

Dayan─▒kl─▒l─▒k Prensibi (Postel Yasas─▒)

WikipediaÔÇÖda Dayan─▒kl─▒l─▒k Prensibi

Yapt─▒klar─▒n─▒zda muhafazakar olun, ba┼čkalar─▒ndan kabul etti─činiz ┼čeyler konusunda liberal olun.

Genellikle sunucu uygulamalar─▒ geli┼čtirirken uygulanabilir. Bu prensip der ki; kendi uygulaman─▒zdan d─▒┼čar─▒ya veri g├Ânderirken k─▒l─▒ k─▒rk yararcas─▒na dikkatli olun ama d─▒┼čardan veri al─▒rken m├╝mk├╝n olabilecek her durumda veriyi kabul etmeye ├žal─▒┼č─▒n.

Bu prensibin amac─▒ dayan─▒kl─▒ sistemlere geli┼čtirmektir ve bu sistemler k├Ât├╝ yap─▒land─▒r─▒lm─▒┼č girdileri bile anlayabildikleri durumda i┼čleyebilmeliler. Bunun g├╝venlik a├ž─▒s─▒ndan k├Ât├╝ ama├žl─▒ ve yeterince kontrol edilmemi┼č girdileri kabul etmek anlam─▒na gelebilece─či i├žin riskli oldu─ču d├╝┼č├╝n├╝lebilir. Tabiki bu riskin de g├Âz ├Ân├╝nde bulundurulmas─▒ gerekir.

Uygun olmayan girdilere zaman i├žinde izin verilmesi, uygulay─▒c─▒lar─▒n yeni ├Âzellikler olu┼čtururken bu serbestli─če g├╝venmesini sa─člayaca─č─▒ndan en sonunda protokollerin evrimle┼čme yetene─čini zay─▒flatabilir.

Ek kaynaklar:

SOLID

SOLID a┼ča─č─▒daki be┼č prensibin ba┼č harflerinden olu┼čan bir k─▒saltmad─▒r;

Bunlar─▒ Nesne Tabanl─▒ ProglamlamaÔÇÖn─▒n temel prensipleri olarak de─čerlendirilebilir ve bu prensiplerin programc─▒lara geli┼čtirilebilir ve desteklenebilir sistemler geli┼čtirmelerinde yard─▒mc─▒ olduklar─▒ kesindir.

Tek Sorumluluk Prensibi

WikipediaÔÇÖda Tek Sorumluluk Prensibi

Her sistem par├žas─▒n─▒n ya da programlama s─▒n─▒f─▒n─▒n sadece bir sorumlulu─ču olmal─▒.

Bu ÔÇśSOLIDÔÇÖ prensiplerinin ilkidir. Bu prensip der ki her bir sistem par├žas─▒n─▒n yada programlama s─▒n─▒f─▒n─▒n sadece ama sadece bir sorumlulu─ču olmas─▒ gerekir. Daha sade anlatmak gerekirse, bir programdaki sadece bir ├Âzelli─či etkileyen bir de─či┼čiklik sadece o ├Âzelli─či ilgilendiren par├ža ya da s─▒n─▒fta yap─▒lmal─▒. ├ľrne─čin, ┼čifrelerin do─črulu─čunun kontrol├╝nde bir de─či┼čtirme yap─▒lacaksa sadece program─▒n o b├Âl├╝m├╝nde de─či┼čiklik yap─▒lmal─▒.

Teorik olarak, bu prensibe uygun yaz─▒lm─▒┼č kodlar daha sa─člam ve de─či┼čtirilmesi kolayd─▒r. Sadece tek bir par├žan─▒n de─či┼čtirildi─čine emin olundu─čunda de─či┼čimi test etmek de kolay olacakt─▒r. ├ľnceki ┼čifre ├Ârne─čini d├╝┼č├╝n├╝rsek, ┼čifrenin zorluk seviyesi de─či┼čtirildi─činde sadece ┼čifre ilgili b├Âl├╝mlerin etkilenecektir. Birden fazla sorumlulu─ču olan bir b├Âl├╝mde olan de─či┼čikli─čin nereleri etkileyece─čini hesaplamak daha zordur.

Ek kaynaklar:

A├ž─▒k/Kapal─▒ Prensibi

WikipediaÔÇÖda A├ž─▒k/Kapal─▒ Prensibi

Her sistem par├žas─▒ (s─▒n─▒f, mod├╝l, fonksiyon vs) geni┼čletilmeye (t├╝rev al─▒nmaya, miras al─▒nma vs) a├ž─▒k olmal─▒ ama de─či┼čtirilmeye (modifiye etme) kapal─▒ olmal─▒.

Bu ÔÇśSOLIDÔÇÖ prensiplerinin ikincisidir ve herhangi bir sistem par├žas─▒n─▒n mevcut davran─▒┼č─▒n─▒n de─či┼čtirilememesini ama kullan─▒larak/t├╝retilerek geni┼čletilebilmesinin gereklili─čini savunur.

├ľrne─čin Markdown format─▒ndaki belgeleri HTML format─▒na ├ževiren bir mod├╝l├╝ d├╝┼č├╝nelim. E─čer bu mod├╝l kendisi de─či┼čtirilmeden yeni bir Markdown format─▒n─▒ da i┼člemesi sa─članacak ┼čekilde geli┼čtirilebiliyorsa, bu mod├╝l geni┼čletilmeye a├ž─▒k demektir. E─čer sonradan de─či┼čtirilip Markdown format─▒ i┼člemesi ile ilgili geli┼čtirme yap─▒lam─▒yorsa, bu mod├╝l de─či┼čtirilmeye kapal─▒ demektir.

Bu prensip nesne-tabanl─▒ programlamaya tam uygundur. ┼×├Âyle ki, kendi nesne ve s─▒n─▒flar─▒m─▒z─▒ miras al─▒narak geli┼čtirmeye uygun ve de─či┼čtirmeye ihtiya├ž duymayacak ┼čekilde tasarlarsak ve yazarsak nesne-tabanl─▒ programlamaya tam uygun kod yazm─▒┼č oluruz.

Ek kaynaklar:

Liskov Yerine Ge├žme Prensibi

WikipediaÔÇÖda Liskov Yerine Ge├žme Prensibi

Bir sistemde var olan bir ├Âzellik kendinden t├╝retilmi┼č t├╝retilmi┼č bir ├Âzellikle herhangi bir sistemsel soruna sebep olmadan yer de─či┼čtirilebilmeli.

ÔÇśSOLIDÔÇÖ prensiplerinin ├╝├ž├╝nc├╝s├╝d├╝r. Bu prensibe g├Âre herhangi bir bile┼čenin ├╝zerine dayand─▒─č─▒ bir ├Âzelli─či (s─▒n─▒f vs) o ├Âzelliklikten t├╝retilmi┼č alt ├Âzellikle de─či┼čtirebilmeliyiz ve bu durumda bir sistem sorununa neden olunmaz ya da alt ├Âzelli─čin b├╝t├╝n detaylar─▒n─▒ bilmeye gerek kalmaz.

├ľrne─čin dosyay─▒ temsil eden bir yap─▒dan XML verisi okuyan bir metod d├╝┼č├╝nelim. E─čer bu metod ÔÇśdosyaÔÇÖ tipini kullan─▒yorsa, ÔÇśdosyaÔÇÖ tipinden t├╝reyen b├╝t├╝n tipleri de kullanabilmelidir. E─čer ÔÇśdosyaÔÇÖ tipi geriye d├Ân├╝k aramay─▒ destekliyorsa ama ÔÇśdosyaÔÇÖ tipinden t├╝retilmi┼č ÔÇśa─č dosyas─▒ÔÇÖ tipi bunu desteklemiyorsa o zaman ÔÇśa─č dosyas─▒ÔÇÖ tipi bu prensibi ihlal ediyor demektir.

Bu prensip nesne-tabanl─▒ programlaman─▒n ba─čl─▒ oldu─ču prensiplerden biridir ve geli┼čtiricilerin kafas─▒n─▒ kar─▒┼čt─▒rmamak i├žin s─▒n─▒f hiyerar┼čisinin dikkatli tarasarlanmas─▒ gerekti─čini s├Âyler.

Ek kaynaklar:

Aray├╝z Ayr─▒m Prensibi

WikipediaÔÇÖda Aray├╝z Ayr─▒m Prensibi

Hi├žbir kullan─▒c─▒/m├╝┼čteri/istemci, kullanmad─▒─č─▒ y├Ântemlere ba─čl─▒ kalmamal─▒d─▒r.

ÔÇśSOLIDÔÇÖ prensiplerinin d├Ârd├╝nc├╝s├╝d├╝r ve bir bile┼čenin kullan─▒c─▒lar─▒n─▒n, kullanmad─▒─č─▒ bir bile┼čenin i┼člevlerine ba─č─▒ml─▒ olmamas─▒ gerekti─čini belirtir.

├ľrnek olarak dosyay─▒ temsil eden bir yap─▒dan XML verisi okuyan bir metod d├╝┼č├╝nelim. Bu metod sadece dosyadan byte byte veri okumal─▒ ve dosya i├žinde ileri ya da geri hareket etmeli. E─čer bu method dosya okuma d─▒┼č─▒nda (dosya izinleri de─či┼čimi gibi) herhangi bir ├Âzellik de─či┼čiminden dolay─▒ g├╝ncellenmek zorunda kal─▒n─▒yorsa bu prensip ihlal edilmi┼č demektir.

Bu prensip de nesne-tabanl─▒ programlama ile direk ili┼čkilidir. ÔÇśinterfaceÔÇÖ yap─▒lar─▒, s─▒n─▒f hiyerar┼čileri ve soyut t├╝rler farkl─▒ bile┼čenler aras─▒ ba─č─▒ml─▒─č─▒ en aza indirmek i├žin kullan─▒l─▒r. Duck typing de bu prensibi uygulamaya yard─▒mc─▒ olur.

Ek kaynaklar:

Ba─č─▒ml─▒l─▒─č─▒n Ters ├çevrilmesi

WikipediaÔÇÖda Ba─č─▒ml─▒l─▒─č─▒n Ters ├çevrilmesi

Y├╝ksek seviye mod├╝lleri, d├╝┼č├╝k seviye uygulamalar─▒na ba─čl─▒ olmamal─▒d─▒r.

ÔÇśSOLIDÔÇÖ prensiplerin be┼čincisidir. Bu ilke, daha ├╝st seviye bile┼čenlerinin ba─č─▒ml─▒l─▒klar─▒n─▒n ayr─▒nt─▒lar─▒n─▒ bilmek zorunda olmad─▒klar─▒n─▒ belirtir.

├ľrnek olarak bir web sitesinden metadata okuyan bir program d├╝┼č├╝nelim. Bu program─▒n ana bile┼čeninin web sitesinden i├žeri─či indiren ve metaday─▒ okuyan bile┼čenlerinden ne yapt─▒─č─▒ndan haberdar olmas─▒ gerekir. E─čer bu prensibe uyarsak ana bile┼čenin byte verisi okuyan ve byte verisinden metada ├ž─▒karan soyutlamalara ba─č─▒ml─▒ olmas─▒ laz─▒m. Ana bile┼čenin TCP/IP, HTTP ya da HTML hak─▒nda bir detaya hakim olmas─▒na gerek yoktur.

Bu prensip olmas─▒ gereken ba─č─▒ml─▒─č─▒ tersine ├ževirdi─či d├╝┼č├╝nebilece─činden (isminden dolay─▒) biraz karma┼č─▒k gelebilir. Pratikte, ayr─▒ bir d├╝zenleme bile┼čeninin, soyut t├╝rlerin do─čru uygulamalar─▒n─▒n kullan─▒lmas─▒n─▒ sa─člamas─▒ gerekti─či anlam─▒na gelir (├Ânceki ├Ârnekte, bir ┼čey hala meta veri okuyucu bile┼čenine bir HTTP dosyas─▒ indiricisi ve HTML meta etiketi okuyucu sa─člamal─▒d─▒r). Bu prensip ayn─▒ zamanda Kontrol├╝n Ters ├çevirilmesi ve Ba─č─▒ml─▒k Enjeksiyonu gibi konularla da ba─člant─▒l─▒d─▒r.

Ek kaynaklar:

DRY Prensibi

WikipediaÔÇÖda DRY Prensibi

Her bilgi par├žas─▒n─▒n bir sistem i├žinde tek, a├ž─▒k ve net bir temsiline sahip olmas─▒ gerekir.

DRY DonÔÇÖt Repeat Yourself yani Kendini Tekrar Etme deyimin k─▒salt─▒lmas─▒d─▒r. ─░lk olarak Andrew Hunt ve Dave Thomas taraf─▒ndan The Pragmatic Developer kitab─▒nda bahsedilmi┼čtir. Bu ilke, geli┼čtiricilere kod tekrar─▒n─▒ azaltma ve bilgileri tek bir yerde tutmalar─▒na yard─▒mc─▒ olmay─▒ ama├žlamaktad─▒r.

DRYÔÇÖnin tam tersi WET olacakt─▒r (Write Everything Twice (Her ┼×eyi ─░ki Kez Yaz) We Enjoy Typing (Yazmay─▒ Seviyoruz)).

Uygulamada, ayn─▒ bilgi par├žas─▒n─▒ iki (veya daha fazla) farkl─▒ yerde kullan─▒yorsan─▒z, DRYÔÇÖyi bunlar─▒ tek bir tanede birle┼čtirmek ve istedi─činiz / ihtiya├ž duydu─čunuz yerde tekrar kullanmak i├žin kullanabilirsiniz.

Ek kaynaklar:

KISS Prensibi

WikipediaÔÇÖda KISS Prensibi

Olabildi─čince basit ve aptal (Keep it simple, stupid)

KISS prensibi, ├žo─ču sistemin karma┼č─▒kla┼čt─▒r─▒lmak yerine basit tutulmas─▒ durumunda en iyi ┼čekilde ├žal─▒┼čaca─č─▒n─▒ belirtir; bu nedenle sadelik tasar─▒mda kilit bir ama├ž olmal─▒ ve gereksiz karma┼č─▒kl─▒ktan ka├ž─▒n─▒lmal─▒d─▒r. Bu 1960ÔÇÖda ABD Donanmas─▒ÔÇÖnda ├žal─▒┼čan u├žak m├╝hendisi Kelly Johnson ile ili┼čkilendirilen bir c├╝mle.

Prensip, JohnsonÔÇÖ─▒n bir tasar─▒m m├╝hendisleri ekibine bir avu├ž el aleti teslim etmesinin ├Âyk├╝s├╝yle en iyi ├Ârneklenmi┼čtir, tasarlad─▒klar─▒ jet u├ža─č─▒n─▒n sahadaki ortalama bir tamirci taraf─▒ndan yaln─▒zca bu aletlerle m├╝cadele ko┼čullar─▒nda tamir edilebilir olmas─▒ zorunlulu─ču ile kar┼č─▒ kar┼č─▒yad─▒r. Bu nedenle, ÔÇťaptalÔÇŁ kelimesi m├╝hendislerin kendi yeteneklerini de─čil, i┼člerin k─▒r─▒lma ┼čekli ile onlar─▒ tamir etmek i├žin mevcut ara├žlar─▒n karma┼č─▒kl─▒─č─▒ aras─▒ndaki ili┼čkiyi ifade eder.

Ek kaynaklar:

YAGNI

WikipediaÔÇÖda YAGNI

You ArenÔÇÖt Gonna Need It (─░htiyac─▒n olmayacak) deyiminin k─▒saltmas─▒d─▒r.

─░htiya├ž duydu─čunuz ┼čeyleri her zaman ihtiya├ž duydu─čunuzda geli┼čtirin, onlara ihtiyac─▒n─▒z olaca─č─▒n─▒ d├╝┼č├╝nd├╝─č├╝n├╝zde de─čil. (Ron Jeffries) (XP e┼č-kurucusu and ÔÇťExtreme Programming InstalledÔÇŁ kitab─▒n─▒n yazar─▒)

Bu A┼č─▒r─▒ Programlama (XP) ilkesi, geli┼čtiricilerin yaln─▒zca acil gereksinimler i├žin gerekli olan i┼člevleri yerine getirmeleri gerekti─čini ve daha sonra ihtiya├ž duyulabilecek i┼člevleri uygulayarak gelece─či tahmin etme giri┼čimlerinden ka├ž─▒nmalar─▒n─▒ ├Ânerir.

Bu ilkeye ba─čl─▒ kalmak, kod taban─▒ndaki kullan─▒lmayan kod miktar─▒n─▒n ve hi├žbir de─čer getirmeyen i┼člevlerde harcanan zaman─▒n ve ├žaban─▒n azalmas─▒n─▒ sa─člayacakt─▒r.

Ek kaynaklar:

Da─č─▒t─▒k Sistemlerin Yan─▒lg─▒lar─▒

WikipediaÔÇÖda Da─č─▒t─▒k Sistemlerin Yan─▒lg─▒lar─▒

A─č Tabanl─▒ Sistemlerin Yan─▒lg─▒lar─▒ olarak da bilinen yan─▒lg─▒lar da─č─▒t─▒k sistemleri geli┼čtirme s─▒ras─▒nda ba┼čar─▒s─▒zl─▒klara yol a├žabilecek varsay─▒mlar─▒n (veya inan├žlar─▒n) bir listesidir. Varsay─▒mlar:

─░lk d├Ârt madde 1991ÔÇÖde Bill Joy ve Tom Lyon taraf─▒ndan listelenmi┼čtir ve ilk ├Ânce James Gosling taraf─▒ndan ÔÇťA─č Tabanl─▒ Sistemlerin Yan─▒lg─▒lar─▒ÔÇŁ olarak s─▒n─▒fland─▒r─▒lm─▒┼čt─▒r. L. Peter Deutsch 5., 6. ve 7. yan─▒lg─▒lar─▒ ekledi. 90ÔÇÖl─▒ y─▒llar─▒n sonlar─▒nda Gosling 8. yan─▒lg─▒y─▒ ekledi.

Grup Sun Microsystems i├žinde ba┼člar─▒na gelen olaydan ilham ald─▒.

Dayan─▒kl─▒ sistemler tasarlarken bu yan─▒lg─▒lar dikkatlice ele al─▒nmal─▒; bu yan─▒lg─▒lardan herhangi birinin varsay─▒lmas─▒, da─č─▒t─▒lm─▒┼č sistemlerin ger├žeklikleri ve karma┼č─▒kl─▒klar─▒ ile ba┼ča ├ž─▒kamayan hatal─▒ bir mant─▒─ča yol a├žabilir.

Ek kaynaklar;

Ek Kaynaklar

Bu kavramlar─▒ ilgin├ž bulduysan─▒z, a┼ča─č─▒daki kitaplar─▒n keyfini ├ž─▒karabilirsiniz.

Çeviriler

Katk─▒da bulunan harika insanlar sayesinde Hacker Laws bir├žok dilde mevcuttur. L├╝tfen ├ževiri sahiplerine de sponsor olmay─▒ d├╝┼č├╝n├╝n!

Dil Moderator Durum
­čçž­čçĚ Brasileiro / Brazilian Leonardo Costa gitlocalized
­čçĘ­čç│ ńŞşŠľç / Chinese Steve Xu Partially complete
­čçę­čç¬ Deutsch / German Vikto gitlocalized
­čçź­čçĚ Fran├žais / French Kevin Bockelandt gitlocalized
­čçČ­čçĚ ╬Á╬╗╬╗╬Ě╬Ż╬╣╬║╬Č / Greek Panagiotis Gourgaris gitlocalized
­čç«­čç╣ Italiano / Italian Claudio Sparpaglione Partially complete
­čç░­čçĚ ÝĽťŕÁşýľ┤ / Korean Doughnut Partially complete
­čç▒­čç╗ Latvie┼íu Valoda / Latvian Arturs Jansons gitlocalized
­čçĚ­čç║ đáĐâĐüĐüđ║đ░ĐĆ đ▓đÁĐÇĐüđŞĐĆ / Russian Alena Batitskaya Partially complete
­č笭čçŞ Castellano / Spanish Manuel Rubio (Sponsor) Partially complete
­čç╣­čçĚ T├╝rk├že / Turkish Umut I┼č─▒k gitlocalized

E─čer var olan bir ├ževiriyi g├╝ncellemek istiyorsan─▒z, bir pull request a├žman─▒z yeterli. E─čer yeni bir dil eklemek istiyorsan─▒z, GitLocalizeÔÇśa giri┼č yap─▒n ve bir hesap olu┼čturun, daha sonra o dile yetki istemek i├žin ana repoÔÇÖda bir issue a├ž─▒n. En k─▒sa zamanda size yetki verilecektir. ├çeviri bitince yukar─▒daki tabloya da gerekli eklemeyi yap─▒p pull request a├žarsan─▒z ├žok yard─▒mc─▒ olursunuz.

─░lgili Projeler

Katk─▒da Bulunmak ─░├žin

L├╝tfen katk─▒da bulunun! Bir ekleme veya de─či┼čiklik ├Ânermek istiyorsan─▒z bir sorun olu┼čturun veya kendi de─či┼čikliklerinizi ├Ânermek i├žin bir PR a├ž─▒n.

L├╝tfen metin, stil ve benzeri gereksinimler i├žin Katk─▒da Bulunma K─▒lavuzuÔÇśnu okudu─čunuzdan emin olun. L├╝tfen projeyle ilgili tart─▒┼čmalarda Davran─▒┼č Kurallar─▒na dikkat edin.

TODO

Selam!. Buraya ula┼čt─▒ysan─▒z, hen├╝z yazmad─▒─č─▒m bir konunun ba─člant─▒s─▒n─▒ t─▒klad─▒n─▒z, bunun i├žin ├╝zg├╝n├╝m - ve en k─▒sa zamanda tamamlamaya ├žal─▒┼čaca─č─▒m!

Soru ve ├Ânerileriniz i├žin issue a├žabilirsiniz, ya da katk─▒da bulunmak isterseniz Pull Request a├žabilirsiniz.