­čĺ╗­čôľ hacker-laws

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


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!

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 saplanmas─▒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 her hangi 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:

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─▒

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:

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─▒┼čsan 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 (KPIÔÇÖ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.

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:

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:

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.

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 (fash 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.) (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.

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

Scot 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 dopru 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.

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 haracanan 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.

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.