Blog.

├ľ─čreten Projeler i├žin Otopsi Raporlar─▒

Cover Image for ├ľ─čreten Projeler i├žin Otopsi Raporlar─▒
Baris Guler
Baris Guler

G├Ârd├╝─č├╝m (pardon duydu─čum) en iyi tak─▒m, Beatles┬á;)

Hi├ž kimse bir nehirde ikinci kez y─▒kanamaz. ─░kinci seferde ne o nehir ayn─▒ nehirdir, ne de o ki┼či ayn─▒ ki┼čidir.ÔÇŐÔÇöÔÇŐHerakleitos

Bir s├╝re ├Ânce zannedersem Adem ─░lterÔÇÖin fikri ile ortaya ├ž─▒kan heyecan verici bir inisiyatif ile kar┼č─▒la┼čm─▒┼čt─▒m: Z-Raporu. G├╝nl├╝k i┼č/deneyim ser├╝veninizi loglad─▒─č─▒n─▒z bu basit ak─▒┼č─▒ ilk duydu─čumda asl─▒nda deneyim payla┼č─▒m─▒n─▒n insan t├╝r├╝ olarak ne kadar elzem bir noktada durdu─čunu d├╝┼č├╝nd├╝─č├╝m├╝ hat─▒rlar─▒m. Hala devam eden bir tempoda ├╝retilmese de bug├╝n hala Z-RaporÔÇÖlar─▒n─▒ zevkle okuyorum.

Bir s├╝re akl─▒mdakileri de toparlad─▒ktan sonra projelerin i├žeri─či ve ger├žekle┼čtirilme sa─čl─▒─č─▒ ile ilgili d├╝┼č├╝nd├╝─č├╝mde neden bu t├╝r payla┼č─▒mlar─▒n proje bazl─▒ kayd─▒n─▒n tutulmad─▒─č─▒n─▒/loglanmad─▒─č─▒n─▒ d├╝┼č├╝nd├╝m. Bunu bir s├╝redir yapanlar oldu─čuna sevindim ve birka├ž link taramas─▒ndan sonra isminin orjinalde ÔÇťpostmortem reportÔÇŁ oldu─čunu ancak asl─▒nda projenin sonlar─▒nda g├╝nah-├ž─▒karma seanslar─▒ gibi uyguland─▒─č─▒n─▒ ├Â─črendim. Yani genelde posrtmortem reportÔÇÖlar, proje dead-line ya da GA (General-Available) noktas─▒na ula┼čt─▒─č─▒nda yap─▒lan rutin bir dizi ya da birka├ž toplant─▒dan ve bu toplant─▒n─▒n notlar─▒ndan olu┼čuyormu┼č.

Ancak benim bahsetmek istedi─čim daha projelere i├žkin ve projenin geli┼čtirilmesi s─▒ras─▒nda ortaya konan bir dinami─či i├žeriyor.

O halde,

  • Proje geli┼čtirme d├Ânemleri, bilinenin ger├žekle┼čtirildi─či s├╝re├žler olmalar─▒n─▒n yan─▒s─▒ra, ├Â─črenme d├Âng├╝leriyse,
  • Bunun yan─▒s─▒ra, her bir proje i├žin zaman dilimlerini ne kadar do─čru y├Ânetip hedefi yakalayabildi─čimiz kadar o projenin ba┼čar─▒ ya da ba┼čar─▒s─▒zl─▒─č─▒ndan s├Âz edebiliyorsak,
  • Her proje bir deneyim ve bu deneyimler b├╝t├╝n├╝ i├ži bo┼č bir kavramlar toplam─▒ de─čil, aksine birey ve gruplar aras─▒ aktar─▒lmas─▒ gereken bir potansiyel ta┼č─▒yorsa,
  • Tekrar kar┼č─▒la┼č─▒lan problemlerin ├ž├Âz├╝m├╝ i├žin tekrar ve tekrar u─čra┼čmak, ba┼čta bahsetti─čimiz zaman y├Ânetimini de sekteye u─čratabilirse,
  • Ve bilgi + deneyim / zaman─▒n ├ž─▒kt─▒s─▒, ancak o parametrelerin de─čerleri do─čru atanabildiyse ger├žekten hedef ├ž─▒kt─▒n─▒n kendisiyle aras─▒ndaki a├ž─▒ daha da daral─▒r; hedeflenene yakla┼čt─▒rsa,

B├╝t├╝n bir deneyimi bir yere kaydetmek i┼člevli olabilir.

M├╝rekkep, en iyi haf─▒zadan daha iyidir.ÔÇŐÔÇöÔÇŐBir ├çin atas├Âz├╝

Diyelim ki; bir proje s├╝recinde bir geli┼čtirici bir sorun ve onun ├ž├Âz├╝m├╝ i├žin bir zaman ay─▒rd─▒. Ayn─▒ zaman ve eforu ba┼čka bir geli┼čtiricinin de ortaya koymas─▒ da tabii ki ayn─▒ s├╝re ve efor ile olmayacak; kimi zaman daha uzun ve sanc─▒l─▒, kimi zaman daha k─▒sa ve ac─▒s─▒z olacak. ├çok spesifik bir problemin ├ž├Âz├╝m├╝ i├žin masa masa gezilecek, birka├ž kod denemesi ve birka├ž debug hatas─▒ sonras─▒ do─čru ya da sonuca ula┼čt─▒ran ve do─čru kabul edilen sonu├ž, problemin ├ž├Âz├╝m├╝ ilan edilecek.

Burada devreye ÔÇťOtopsi RaporuÔÇŁ girebilir. Hedefi do─čru tan─▒mlad─▒─č─▒m─▒z─▒ d├╝┼č├╝nd├╝─č├╝m├╝ze g├Âre bu rapor temel olarak neleri kapsamal─▒?

Otopsi raporu, bir olay kayd─▒d─▒r.

O zaman ├Ârnekleyelim:

├ľrnek vaka: Webpack (beta) 2 s├╝r├╝m├╝ i├žin elimizdeki config dosyas─▒nda ├Ânceden WebpackÔÇÖin 1.14.0 versiyonu i├žin eklenen loader tan─▒mlar─▒n─▒ update edemiyoruz.

Gerek├že: Webpack 2 updateÔÇÖi ile bundling s─▒ras─▒nda tree-shaking ├Âzelli─čini projeye kazand─▒rabilece─čiz. B├Âylece gereksiz koddan, dolay─▒s─▒yla boyuttan tasarruf edebilece─čiz.

Not: Burada gerek├že, ├Ârnek vakaya (yani probleme)ba─č─▒ml─▒ halde. B├Âylece bu sorun ├ž├Âz├╝l├╝nce bir di─čeri de (yani gerek├že de) hallolacak ya da ger├žekle┼čmeye yakla┼čacak demi┼č oluyoruz.

├ç├Âz├╝m:

  • 1. Ad─▒m┬á: En son webpack 2 (now ) s├╝r├╝m├╝n├╝ indir:

npm i webpack@2.1.0-beta.25 & npm i webpack-dev-server@2.1.0-beta.10

  • 2. Ad─▒m┬á: Gerekli parametreler ile webpack config dosyas─▒n─▒ yarat.
  • 3. Ad─▒m┬á: Komutu ya ├žal─▒┼čt─▒r, ya da bir npm scriptÔÇÖi olarak set et:

webpack -p

Bu deneyim proje reponuzda tutulabilir ve ayr─▒ bir dizinde (├Ârn. postmortems, otopsi, vb.) markdown dosyalar halinde, (resolve_webpack_2_update.md, vb.) muhafaza edilebilir.

Hata bir felaket de─čil, bir ├Â─črenme f─▒rsat─▒d─▒r.

Bunun i├žin bir de standarda ihtiyac─▒m─▒z var. Her g├╝n ├Âyle veya b├Âyle d├Âk├╝man yazan bir geli┼čtiriciyseniz zaten basit ba┼čl─▒klar─▒ olan birka├ž sat─▒r─▒ karalamak yine birka├ž dakikan─▒z─▒ almayacakt─▒r.

Bunu da kabaca bir tasla─ča d├Âkelim dersek, buyrun:

Title

ex. Resolve how to update Webpack to version 2 with tree-shaking and other new, stunning features.

Date

ex. 27.12.2016

Authors

ex. John Doe, Black Magic Woman, Doctor Who

Impact

ex. With this new update, we have added the tree-shaking feature for removing redundant codes from our bundled source as Javascript.

Resolution

  • Step 1: Get the latest webpack 2 (now ) by the package manager: npm i webpack@2.1.0-beta.25 & npm i webpack-dev-server@2.1.0-beta.10
  • Step 2: Create a webpack config file with necessarry parameters.
  • Step 3: Run or define it as an npm script┬á: webpack -p

Not: Yukar─▒daki i├žeri─či ─░ngilizce olarak aktar─▒yorum ├ž├╝nk├╝ deneyim aktar─▒m─▒n─▒n sadece tek uluslu ekiplerde de─čil bir├žok ├žokuluslu ekip ile payla┼č─▒lmas─▒ da gerekti─či fikrindeyim.

Bir yaz─▒da ba┼čl─▒klar ┼ču ┼čekilde belirlenmi┼č. Zann─▒mca ba┼čl─▒klar─▒n ├že┼čitlili─čini geni┼čletmek veya daraltmak tamamen o tak─▒m─▒n inisiyatifinde olmal─▒:

B├╝t├╝n bir tak─▒m─▒n her g├╝n en az bir adet otopsi raporu yazd─▒─č─▒n─▒ d├╝┼č├╝n├╝rsek biten bir proje sonras─▒nda ortaya devasa bir otopsi d├Âk├╝mantasyonu ├ž─▒kacak. B├╝t├╝n bu veriyi ayr─▒ca tak─▒m-i├ži brown-bag oturumlar─▒na, hackatonlara ve sunumlara konu bile edilecek ├Âl├ž├╝de geni┼č ve devasa bir deneyim k├╝mesi haline ├ževirmi┼č olabiliriz. Hatta basit bir i├žerik y├Ânetim uygulamas─▒yla daha da basitle┼čtirebilir, daha ula┼č─▒labilir k─▒labiliriz. Belki bunu bir puan sistemine d├Âkmek isteyen y├Âneticiler olabilir ancak olmamal─▒ ├ž├╝nk├╝ deneyimin birim de─čeri yoktur. Bir deneyimin birka├ž tecr├╝beden ├žok fazla faydas─▒ olabilir; bir sat─▒r bug d├╝zeltmenin 10 mod├╝ll├╝k bir featureÔÇÖdan ├žok fazla de─čeri olabilece─čini d├╝┼č├╝nmeniz gerekiyor.

├ľrn: Checkout sayfas─▒nda yanl─▒┼č hesaplanan bir convertion de─čeri (mesela 1.00 m─▒ yoksa 1,00 m─▒; 45.29 mu yoksa 45.99 mu, vb.), giri┼č ekran─▒ndaki sliderÔÇÖda akana imajlar─▒n resize edilmesi ├Âzelli─činden ├žok daha de─čerlidir. Nitekim sermaye bizden g├Ârseli de─čil, i┼člevli g├Ârselli─či; bizden g├Âr├╝nt├╝y├╝ de─čil akan ba─člant─▒ say─▒s─▒ i├žerisinden kar edecek niteli─či al─▒p g├Ât├╝rmek ister. Deneyimleri puanlamak yerine onlara de─čer verin.

├ľzetle,

  • Otopsi raporu, bir olay ak─▒┼č dinami─činin nas─▒l ├ž├Âz├╝ld├╝─č├╝n├╝n raporlanmas─▒d─▒r.
  • Otopsi raporu, sadece bir d├Âk├╝man de─čil, ├žal─▒┼čanlar aras─▒ bir deneyim aktar─▒m bi├žimidir.
  • Otopsi raporu, projedeki ├ž├Âz├╝m y├Ântemleri k├╝mesidir.

O zaman bence akl─▒n─▒zdaki projenin ger├žekten ya┼čayan bir dinami─či i├žerisinde bar─▒nd─▒rmas─▒ i├žin otopsi raporlar─▒n─▒ yazmam─▒z, ├Â─čretici y├Ân├╝n├╝ artt─▒ran bir niteli─če kavu┼čturacakt─▒r.

├ľrnek repo i├žin: https://github.com/hwclass/postmortem-template/

Son s├Âz niyetine; g├Ârd├╝─č├╝m en iyi tak─▒m ├žal─▒┼čmalar─▒ndan bir ├Ârnek.

Kaynaklar: