T: +90 (212) 262 39 82
Yalın Üretim, Kanban ve Yazılım Geliştirme
January 30, 2010

Özellikle son zamanlarda İmalat Sanayinde kullanılan Kanban sistemlerinin Yazılım Geliştirmeye Çevik Geliştirme beraberinde uyarlanması ile ilgili çalışmalar yapılmakta. Bu çalışmaların başını David Anderson (http://www.agilemanagement.net/) çekmekte.

Kanban'ın tam olarak ne olduğuna dair derli toplu anlaşılır özet bir bilgi bulmak zor. Ben burada olabildiğince imalat sanayindeki özelliklerinden soyutlayarak Kanban'a ait özet bir bilgi sunmak istedim.( Anladığım kadarıyla tabiki...).

Kanban Nedir?

Bir işin akışını görselleştirmek, organize etmek ve işi tamamlamak için kullanılan bir araçtır.

Kökeni

Kökeni Taiichi Ohno'nun Toyota'daki çalışmalarına kadar götürülebilir. Ohno tüm çalışanların işin ne kadarının yapıldığına, yapılan işin hangi durumda olduğununa ve işin nasıl yürütüldüğüne dair bilgiyi hızlı ve kolay bir şekilde paylaşabilmelerini istemiştir.Temel amacı işleyen süreci  açık ve anlaşılır bir şekilde görünür hale getirip, sadece yöneticilerin değil tüm çalışanların herhangi bir anda süreçte "gerçekte" neyin gerçekleştiğini bilmelerini sağlamaktı.Bu şekilde her bir Toyota çalışanının çalışma hattında Toyota'nın çalışma şeklinde "iyileştirme" yapabilecek bir kabiliyete sahip olması istenmiştir. (Industrial Kanban)

Kanban'ın Oluşturulma Adımları

  1. Yapılan işi tanımlayın  ve iş akışını  belirleyin : görünür hale getirin, görselleştirin : İlgili işe -veya verilen hizmete- başladığınız andan onun bitimine kadar geçen süredeki iş akışı belirleyin (İşin Tanımı).İşin tanımını belirleyen en önemli 3 parametre i)işe ait talebin doğası ii) üretilen değer iii) işin akışı. Bu tanımlamaların ilk başlarda "mükemmel" olması gerekmiyor. Önemli olan ilk oluşturulan bu iş tanımının potansiyel iyileştirmler için alınması gereken "değişiklik" kararlarının içeriğine ve bunların  sistemimiz için ne ifade ettiğine dair bize bir bilgi sağlanmasıdır. Not: Bu iş akışının belirlenmesinde  Değer Akış Haritalarını ( Value Stream Mapping ) kullanabilirsiniz.
  2. Bir anda yapılacak iş miktarını sınırlandırın:  Belirlediğiniz iş akışının her bir adımında en fazla ne kadar işin yapılacağına saptayın(limit koyun). Bu limiti belirleyen parametreler : i) Takımınızın kapasitesi ii) Yapılacak işin niteliği. Yapılacak işi mecut kapasiteye göre sınırlayın.Takımınızın üzerindeki iş yükünü mantıklı ve adil bir şekilde belirleyin.Bu tür bir sınırlama iş akışının tıkanan noktalarını  ortaya çıkarmamıza kolaylaştıracaktır aynı zamanda.
  3. Yapılacak işleri  belirleyin ve önceliklendirin : henüz yapmadığınız işler
  4. Yapılacak İşleri "Çekmeye" başlayın :  İş akışının bir safhasında tanımlanan bitmiş işleri diğer safhalara aktarın
  5. Ölçüm Yapın ve Ölçümleri İyileştirmede kullanın:    Ölçümlerin temel amacı performans problemlerini ortaya çıkarmaktır.Sistemde performansı  etkileyen unsurlar bulmak için sorulabilecek sorular : i) tıkanma  noktaları neler? ii ) israflar neler? iii) değişkenlikler (variability) ne? Ölçümler çalışanlara ve yöneticilere  problemli alanların birlikte belirlenmesine ilişkin bir geri besleme sağlar.Çalışanlar ve yöneticiler bu problemlerin "gerçek"    sebeblerini belirleyip sistemin iyileştirilmesi için bir fırsat elde etmiş olurlar. Ölçümlerin gerçekçi olması için kurumda "açık ve şeffaf" bir çalışma kültürü    sağlanmalı.Yapılan ölçümler işe ilişkin olmalı. Eğer ölçümlerinizi yapılan işle ilgili değil, kişilerin performans değerlendirmesi yönelik olursa  herkesin kendini kandırdığı sözde iyileştirmelerden öteye gidemezsiniz.Ölçümlerimizin amacımız kişileri "yargılamak" değil sisteme ait "geri besleme" almaktır.


Kanban'ın  Tamamlayan Teorik Alt Yapılar ( Kanban'ı İşe Yarar Hale Getirmek İçin )

Kısıtlar teorisi  (Theory of Constraints ) -Darboğazların Yönetimi için-
Bu teoriye göre her sistemde sistemi sonsuz bir performansa ulaşmaktan alıkoyan en az bir adet kısıt bulunur. Kısıt bir sistemin amacına ulaşmasında yüksek performansa erişmesini engelleyen herhangi bir durum olarak algılanır. Goldratt (http://www.goldratt.com )  bunu ünlü zincir anolojisine benzetir. Sistemin tamamı bir zincir olarak algılanır. Sistemin performansını, zincirin taşıyacağı yükün belirleyeceği söylenir. Bu yük ise, zincirdeki en zayıf halkanın taşıyabileceği en fazla yüktür. Eğer bu halka güçlendirilebilirse sistemin genel performansı artar. Bu halka güçlendikten sonra bir başka halka zayıf olacak ve iyileştirme süreci bu şekilde devam edecektir.

Bu zayıf halka nasıl bulunacak? Bu teoriye göre sisteme ait kısıtlamaları belirlerken ve bunlara ait iyileştirmeler yaparken sistemin bileşenlere ayrı ayrı özen göstermek yerine, tüm sistemin çıktısına odaklanılmalıdır : sistemin her kademesinin performansını en üstte tutmak, sistemin genel performansını en üst düzeyde tutmaz. (tek tek halkalara değil, bu halkaların meydana getirdiği zincire bakmak gerekir).


Sistem Düşüncesi (System Thinking)  - Sistemi anlamak aynı zamanda iyileştirmek için-

Analitik Düşünce Sistemi küçük parçalara böler ve her bir parçayı ayrık olarak inceler. Bu teoriye göre Analitik düşünce bize sistemin  parçalarının nasıl çalıştığı ile ilgili bilgiyi verir fakat bu parçaların neden böyle çalıştığını anlamamıza yardım etmez. Ancak sistem düşüncesi bu anlayışı bize verir.

Kuruk Teorisi (Queueing Theory)   - Ölçüm ve İyileştirme İçin-

Kuyruk teorisi bekleyen sıraların ( ya da kuyrukların) matematiksel olarak incelenmesidir. Teori , sıraya girilmesi, kuyrukta bekleme( aslında bir depolama işlemi) ve sıranın önünde hizmet sağlayanlar tarafından servisin sunulmasını içeren birçok ilişkili işlemin matematiksel analizine uygundur. Teori, kuyrukta ya da sistemde ortalama bekleme zamanı ,bekleyen ya da alınan hizmetin beklenen değerini ve belirli durumlarda (müsait bir servis sağlayıcıya sahip olunan ya da hizmet almak için belirli bir zamanın beklendiği) bir sistemle karşılaşma olasılığını içeren birkaç performans ölçümünü hesaplamayı ve bunları türetmeyi sağlar. ( Kaynak :  http://tr.wikipedia.org/wiki/Kuyruk_teorisi)

Real Options -   Yapılacak işlerin önceliğinin belirlenmesinde, kararların verilmesinde-
Gerçek bir opsiyon gelecekte bir veya daha fazla noktada karar alma hakkının bulunması durumunda sözkonusudur. Teori özetle şunları söylemekte:(matematiksel ve finansal kimliğinden arındrılmış şekilde)

  • Verilecek her bir karar için mevcut seçenekleri belirleyin
  • İlgili kararın verilmesi gereken en son  noktayı-koşulları-durumu belirleyin
  • Bu ana kadar yeni seçenekleri araştırın

Burdaki temel prensip herhangi bir karar verirken, erken davranıp seçenekleri sınırlamamak ve bunun için de ilgili seçeneklere ait kararları "mümkün olan" son noktaya kadar ertelemektir.Başka bir ifade ile kararlarımızı belirsizlik ortamında "irrasyonel" bir şekilde yapmak yerine, gerçekten kararlarımızı "neden" yaptığımız aklıyacak bilgiyi elde edene kadar ertelemek.

Yazılım Geliştirme ve Kanban

Ben Kanban sistemin yazılım geliştirmeden ziyade kurumların bünyesinde bulunan IT Hizmetlerine-İşlemlerine daha  uygun olduğunu düşünüyorum.
İlginç ve provakatif bir düşünce cimnastiği için   Henrik Kniberg ve  Mattias Skarin tarafından hazırlanan Kanban and Scrum - making the most of both kitapçığını okumanızı tavsiye ederim. ( http://www.infoq.com/minibooks/kanban-scrum-minibook )  Kitapçığın esas amacı  Scrum ve Kanban sistemini karşılaştırmak olmakla beraber, aynı zamanda Kanban'a ilgi duymayanlar  için  Scrum'ın daha iyi anlaşılmasına yardım edecek bir içerik sağlanmış.
 

Bir Kişisel Kanban Örneği

Sıkıcı bir imalat sanayi örneği yerine işin ruhunu yansıtacak eğlenceli, mizahi  bir örnek vermek istedim :-)

kanban1 kanban2 kanban3 kanban4 kanban5 kanban6

yorumlar Yorum Ekleyin | etiketler Lean | paylaş Paylaş | yazar Yazan: Ercan Köse