Yazılım geliştirme mühendisliği mi? Hayır ise, bu şekilde kalifiye olmak için eksik olan şeyler nelerdir?
Evet, yazılım mühendisliği bir mühendislik disiplinidir.
Wikipedia, mühendisliği "matematik, bilimsel, ekonomik, sosyal ve pratik bilgilerin yanı sıra yapıları, makineleri, araçları, sistemleri, bileşenleri, malzemeleri icat etmek, yenilik yapmak, tasarlamak, inşa etmek, bakımını yapmak, araştırmak ve geliştirmek için" matematik uygulaması "olarak tanımlar. , süreçler, çözümler ve kuruluşlar. " Yazılım mühendisliğinin sonucu, insanların yaşamlarını iyileştirebilecek bir yazılım sistemidir ve bilimsel, matematiksel, ekonomik, sosyal veya pratik bilgilerin bir kombinasyonunu içerebilir.
Akademik ve profesyonel olarak nasıl görüldüğü açısından değişir. Yazılım mühendisliği programları ABET tarafından mühendislik programları olarak akredite edilebilir. Yazılım mühendisleri IEEE üyesi olabilir. Bazı şirketler yazılım mühendisliğini bir mühendislik disiplini olarak görürken, diğerleri bunu yapmaz.
Bu konuda en iyi kitap Steve McConnell'in Profesyonel Yazılım Geliştirme: Kısa Çizelgeler, Yüksek Kaliteli Ürünler, Daha Başarılı Projeler, Geliştirilmiş Kariyer . Yazılım mühendisliğini bir meslek, bir zanaattan bir mesleğe evrim, yazılım geliştirme bilimi, yazılım mühendisliği ve yazılım mühendisliği arasındaki farkı (yazılım geliştiren mühendislere yazılım uygulamalarına mühendislik uygulamaları uygulamak gibi bir örnek olay incelemesi) içeriğimi içeriyor ), sertifikalandırma ve lisanslama ve etik.
Glenn Vanderburg, 2010 ve 2015 yılları arasında bir dizi konferansta "Gerçek Yazılım Mühendisliği" adında bir dizi görüşmenin yanı sıra "Craft, Engineering ve Programlama Özü" (2011'de açılış konuşması) ve "El Sanatları ve Yazılım Mühendisliği" (2011'de QCon Londra'da verilmiştir). Bu görüşmelerin yazılım mühendisliğinin neden bir mühendislik disiplini olduğu konusunda oldukça kapsamlı bir argüman olduğunu düşünüyorum.
Vanderburg'un görüşmelerinde kısaca ortaya koyduğu bir tartışma, 1992'de Jack W. Reeves tarafından (ve yine 2005'te tekrar ziyaret edildi) yazılım tasarımının ne olduğu ve kodun yazılım mühendisliği tasarım faaliyetlerinin nasıl çıktısı olduğu konusudur ( bu da C2 wiki'de tartışıldı). Spesifikasyon ve modellemenin yazılım tasarımı olduğu ve kodun yazılım tasarımı olduğu eski düşünce okullarından uzaklaştığınızda, yazılım mühendisliği ve diğer mühendislik disiplinleri arasındaki ilişkilerin bir kısmı daha kolay anlaşılır hale gelir. Bazı farklılıklar ve bu farklılıkların nedenleri, yazılım geliştirme ekonomisinin diğer birçok disiplinden çok farklı olduğunu gördükten sonra daha da belirgin hale gelir - tasarım ucuz (çoğu durumda ücretsizdir), tasarım ise pahalı kısımdır.
Bu [CMMI] gelişimi mühendisliğe dönüştürecek bir şey mi?
Hayır. CMMI, yazılım geliştirirken ne tür faaliyetlerin yararlı olduğu konusunda kuruluşlara yol gösteren bir süreç iyileştirme çerçevesidir. Mühendislik disiplinleri genellikle bir mühendislik sürecine sahiptir. Böyle bir sürece sahip olmak, yüksek kaliteli projelerin başarıyla tamamlanması için önemlidir. Bununla birlikte, CMMI (veya başka herhangi bir süreç çerçevesi veya metodolojisi) sadece tek bir araçtır - bunu kullanmak bir geliştiriciden mühendise sihirli bir şekilde ilerlemenizi sağlamaz. Ancak, bir tür süreci takip etmemek, bence, mühendislik projesi olmayan bir projenin işaretidir.
Ayrıca, yazılım mühendisliği kursları / sertifikaları hakkında ne düşünüyorsunuz?
Diğer insanların içine koyduğu kadar değerlidir. Yararlı dersler var ve işe yaramaz dersler var. Değerli sertifikalar ve yazdırıldıkları kağıda değmeyen sertifikalar vardır. Kursu kimin onayladığı veya akredite ettiği veya mevcut işinize mevcut işinize ve nereye gitmek istediğinize sertifika veren birçok faktör vardır.