Soru: Geliştiriciler olarak imalat sanayinin süreçlerinden öğrenebilir miyiz? Süreçlerini benimsemek yazılım geliştirmenin başarı oranını artırabilir mi?
Cevap: Evet, elbette. Yazılım geliştirmenin yaratıcı bir süreç olmasına rağmen, yazılım geliştiricilerinin üretimden öğrenebilecekleri pek çok ders vardır. Yazılım geliştirmenin kendisi bir süreçtir ve diğer birçok işlemi içerir. Bu süreçleri ne kadar iyi tanımlayabilir ve kontrol ederseniz, genel olarak yazılım geliştirme sürecini o kadar iyi kontrol edebilirsiniz. Bu, bir geliştiricinin yaptığı her tuş vuruşunu reçete etmeniz gerektiği anlamına gelmez; sadece bir geliştirici olarak görevleri doğal olarak belirli bir sırayla gerçekleştirdiğiniz ve bu görevlerin sıklıkla yönetilebileceği anlamına gelir. İşte bazı örnekler:
hata izleme: Bir hata gözlemlendiğinde veya rapor edildiğinde buna ne olur? Bir kağıt parçasına yazar ve bir 'araştır' sivri ucuna yapıştırır mısın? Daha sonra bu notları birer birer kaldırıyor, araştırıyor ve sonunda 'çözülmüş' başaklara mı taşıyorsunuz? Bunu bir hata raporu aldığınızda başarısız bir şekilde yaparsanız, iyi tanımlanmış, ölçülebilir bir işleminiz vardır ve muhtemelen çok zahmetli olan fantezi, yüksek teknoloji ürünü bir kusur izleme sistemine sahip olandan çok daha iyisinizdir. bazı ekip üyelerinin hataları başka yollarla izleyip izlemediğini.
sürüm kontrolü: Çalıştığınız yerde sürüm kontrolünü kullanma şansınız yüksektir ve sürüm kontrolü herkes aynı şekilde kullandığında çok daha yararlıdır.
ürün tasarımı: Post-it notlarla kaplı bir duvara dart atarak hangi özelliklerin uygulanacağına karar verir misiniz? Eğer öyleyse, bir sürecin var. Kimsenin bunun harika bir süreç olduğunu iddia edeceğini sanmıyorum, ama en azından bir başlangıç noktası. Süreci değiştirirseniz, önce ve sonra ölçüm yapmadıkça değişikliğinizin gerçekten bir iyileşme olduğunu nasıl anlarsınız? Yapamazsın.
kod incelemeleri: Her inceleme için inceleme süreci ve kodlama ölçütleri değişirse bir kod incelemesi yararlı olur mu? Tabii ki değil.
yazılım geliştirme yaşam döngüsü: Tüm analiz -> tasarım -> uygulama -> test -> bakım döngüsü açıkça tanımlanması gereken bir süreçtir.
Bu durumların her birinde, bir işlemin gerçekleştirilmesi girdi ve çıktıları ölçmenizi ve yaptığınız değişikliklerin amaçlanan etkiye sahip olup olmadığını belirlemenizi sağlar. Süreçlerin yerinde olmaması, çalışma şeklinizi geliştirmeye çalıştığınızda sadece tahmin ettiğiniz anlamına gelir. Üretimin hepsi budur ve sadece uygun olduklarında ardışık üretim araçlarını ödünç almak mantıklıdır.
Yazılım oluşturmak ve sürdürmek için kullanılan süreçleri tanımlamak ve geliştirmek için ayrılmış bir alan vardır; buna yazılım mühendisliği denir . CMMI hakkında okurken geliştirme süreci hakkında sorularınız olması şaşırtıcı değildir - CMMI, Yazılım Mühendisliği Enstitüsü'nün bir ürünüdür .
Yazılım geliştirme zaten birçok üretim konseptini benimsemiştir:
Eli Whitney'in değiştirilebilir parçalarının hem OOP hem de bileşen tabanlı geliştirme üzerindeki etkisini görmek zor .
Yazılım geliştirmede kullanılan proje yönetimi teknikleri, üretim için geliştirilenlerden çok farklı değildir. Sadece iki örnek olarak, yazılım dünyası son zamanlarda Toyota'da geliştirilen Kanban konseptini benimsedi ve Gantt grafikleri ilk elektronik bilgisayar üretilmeden çok önce üretimde kullanıldı.
İmalat için geliştirilen Six Sigma gibi kalite yönetimi metodolojileri yazılım geliştirmeye uyarlanmıştır.
Süreç odaklı ağır ortama rağmen, geliştirici bir şeyler yaratmaya çalışmalıdır.
Bana birisinin yüz tanıma paketine bir yama eklemek için kendi başına karar vereceğini mi söylüyorsunuz ve tasarımı inceleyerek, izleme sisteminde bir sorun yaratmadan bunu üretim yapısına ekleyecekler mi, kodu sürüm kontrolüne kontrol etmek mi yoksa test arkadaşlarına önce bakmak mı? Sürecimiz bu şeyleri çok iyi nedenlerle gerektirir. Eğer "anında" demek "sürecin dışında" demekse, bu kabul edilemez.
İşleri anında yapmak üretim ruhuna aykırıdır.
Yine, "anında", "sürecin dışında" anlamına gelirse haklısınız. Ancak, üretimin hızlı düşünmeyi ve sorunlara yaratıcı çözümler geliştirmeyi gerektirmediğini düşünüyorsanız yanılıyorsunuz. Üretim sürecinde her türlü sorun ortaya çıkıyor - cupcakes yeterli krem dolgusu yok, boyalı yüzeyler aniden QA'nın çizilme testini geçmeyi bırakıyor, bitmiş parçaların% 20'si önemli bir tutma halkası eksik, hamur karıştırma sistemi kırıldı kritik parça...