1972 yılında yazılmış bir kiralama sistemi üzerinde çalışan bir araç kiralama şirketi için kiralama acentesi / yöneticisi olarak çalışıyorum. Belki de güncelleme zamanı geldiğine karar verdim. Biraz arka plan için, günlük olarak bu programdan ele almamız gereken deliliğe kısa bir örnek:
Bir kiralama acentesi, bir ekranda yazdırmanın ACT alanında "MXC" kullandığını (her şeyin kısa kodlara dayandığını) hatırlamalıdır; bu da şaşırtıcı bir şekilde "Bir Sözleşmede Maksimum Ekran" anlamına gelirken, diğerinde PR (PRint için) EYLEM alanı, ancak birkaç ekran PT (PrinT için) alanında Y kullanır, ancak başka bir ekran PRT (PRinT için) alanında Y kullanır, ancak başka bir ekran kullanıcının enter tuşuna basmasını gerektirir (ancak Harfler, bu yeni bir çizgi karakteri olduğu için, sayı tuş takımındaki enter olmalıdır) ve daha sonra farklı ama ilgili bir ekran sadece F8 gerektirir, bazı ekranlarda PRT etiketli bir alan vardır, bu alan PRinT için olmalıdır, ancak alan aslında hiçbir şey yapmaz ve yazdırma birkaç bilgi isteminden sonra otomatik olarak yapılır ve yine de daha fazla ekranda YAZDIRMA Y / N etiketli bir alan bulunur,bu, başka bir konumun zaten evrakları teslim ettiği işlemler için Y'yi ve başka bir bayinin evraklara ihtiyaç duyacağı işlemler için N'yi varsayılan olarak ayarlar.
Bundan daha iyi bir iş yapabileceğime karar verdim, bu yüzden şirkette bunu güncelleme kararını verecek kişi ile iletişime geçmeye karar verdim. Sonunda bu programdan sorumlu olan BT Başkan Yardımcısı'na geçiyorum. Ondan biraz bilgi alıyorum ve araç kiralama şirketimin kiralama programını IBM ana bilgisayar montajcısında biraz COBOL ile karıştırılmış olarak yazdığını öğreniyorum. Şu anda açık pozisyon olmadığını söylüyor, ama yapmalıyım özgeçmişimi yine de e-postayla gönder (bir şey açıldığında).
Bu beni sorularıma götürüyor.
Birincisi teknik. Gelecekte sürdürülebilirliği geliştirme fikriyle düşüncem, montaj dilinden daha yüksek bir dilde yeniden yazmaktır. Benim deneyim alanı C ++, bu yüzden bu benim için bariz bir seçimdir. Kısa süre önce konuştuğum adamın takımın çok çalıştığını söyleyen bir makaleyi okuduğumdan, şirketin programı güncellemenin daha kolay bir yoluna ihtiyacı var ve programın şimdi 5 için destek olduğunu duyurmaktan gurur duyuyorlar. - basamaklı konum kodları (4 yerine) ve 8 basamaklı araba numaraları (7 yerine). Güncellemeler hakkındaki felsefem, bu korkunç durumlarda bile Joel'inkiyle uyumlu: http://www.joelonsoftware.com/articles/fog0000000069.html kısaca, yeniden yazma daha önce var olan her şeyi atmak yerine artımlı olmalı ve yeni başlıyor.
IBM derlemesini C ++ ile entegre etmenin kolay bir yolu var mı, öyleyse nasıl yapmalıyım? Asm anahtar kelimesinin belirsiz bir şekilde farkındayım, ancak bunu kullanmanın veya başka bir şey yapmanın en iyisi olup olmadığını bilmiyorum. Böyle bir plan tavsiye edilmiyor mu? Linux üzerinde yaptığım işlerin çoğunu g ++ ve GNU yapmak için yapıyorum, bu yüzden buna özel cevaplar memnuniyetle karşılanıyor, ancak kesinlikle gerekli değil (çünkü ne tür bir inşa sistemine sahip oldukları hakkında hiçbir fikrim yok, ancak neredeyse hiç şüphelenmiyorum).
İkinci soru daha politik. Bu şirketi geçişi yapmaları için ikna etmeye nasıl devam etmeliyim? Teorik maliyet tasarrufu çok büyük (tahminlerime dayanarak, şirket yılda ekstra milyon dolar harcıyor, sadece programla nasıl etkileşime gireceğini öğrenmek için artan eğitim maliyetlerinde), ancak önerilen değişikliklerim muhtemelen tüm yürürlükteki programcıların işten çıkarılması, yürürlüğe girmeleri durumunda, değişime karşı büyük bir yapısal direnç var.
edit: Ben neden şirketin zaten sahip olduğunu değiştirmek bana en iyi çözüm gibi görünüyor açıklamalıyım. Yine de başka önerilere açığım, çünkü bu bir programın canavarı. Daha önce hiç programlama işim olmadı, bu yüzden lütfen verebileceğim yanlış analizlerde beni düzeltin.
İlk önce, hazır çözüm var.
Bu tür bir şey hakkında birkaç orta düzey yöneticiyle yaptığım görüşmelerden, yeni bir sisteme geçmenin ana endişelerinden biri, şirketle yıllardır birlikte olan ve şimdiye kadar sistemle rahat olan çok sayıda sadık çalışan . Sahip olduklarımızı değiştirme yeteneğim varsa, mevcut arayüzü bir tür 'uyumluluk modunda' koruyabilirim. Kullanıcılar zaten mevcut sistemi kullanmak için oturum açmak zorunda, bu yüzden kullanıcılar 'ilk' kez (bu değişikliği yaptıktan sonra) oturum açtıklarında, 'klasik' arayüz veya 'yeni' arayüz. Buna izin veren hazır bir çözüm bulmamın bir yolu yok,
Şirketim ayrıca kullandığımız yazılıma da sahiptir; lisans vermiyoruz. Bu şu anda konuştuğum yönetimin aslında bir değişiklik yapmam için bana yetki verebilecek insanlar olduğu anlamına geliyor. Üçüncü taraf bir çözümle, kullandığımız ürünü geliştiren şirketten ne gibi haklar alınacağının yanı sıra ek bir engel ekleyen şirketimden onay almam gerekir. Bu aynı zamanda şirketi "ürünlerinden" vazgeçmeye ve başka bir ürünü almaya ikna etmeyi gerektirecektir, ki bu da sahip olduklarımızı güncellemeye çalışmaktan daha büyük bir engel gibi gözükmektedir, ancak bu konuda çok yanlış olabilirim.
Son olarak, geleceğe baktığımda, sadece kullanıcı arayüzünü geliştirmek ve birkaç hatayı düzeltmek istemiyorum. Bu 'acil' sorunları güncelledikten sonra, şirketin teknoloji ile ilgili temel çalışma şeklini güncellemeyi umuyordum. Bu tür konularda 1-2 yıl geçirdikten sonra planım yönetime geri dönüp daha dramatik değişiklikler önermekti. Şirketin şu anda kullanmadığı teknoloji ile temelden geliştirilebilecek birçok yolu var. Örneğin, her bölge hemen hemen aynı şekilde çalışır. Yerel büyük havaalanı, araba dağıtmak için merkezi bir merkezdir. Öncelikle gerektiği gibi gönderilir. Ancak havalimanı tüm operasyonlar için ana üs olarak kullanılıyor. İhtiyacımız olmayan bir araba almak için bir arabada iki kişiyi bulunduğum yere gönderecekler, sonra geldikleri araba ile artı havaalanına dönüş, ne onlar geri alıyor (biz havaalanından 32 mil). Daha sonra iki arabada bizden 5 kilometre uzakta bir yere gelecekler, onlardan birini bırakacaklar, sonra diğer arabalarına geri dönecekler. Geri gönderdiğimiz araba bize yakın ihtiyaç duydukları araba aynı tür olsa bile bunu yaparlar. Yaklaşık iki yıldır şirketle birlikteyim ve sadece araba kıtlığının en aşırı acil durumlarında (yani yaklaşık üç kez) bundan sapmış gibi görünüyorlar. Her bölgede çalışan 4 kişiyi, otomobillerin nereye gittiğini belirleyen otomatik bir zamanlama sistemi ile değiştirir ve olması gereken tüm arabaları sunmak için en az zaman + mil + sürücü gerektiren yolu bulmaya çalışırım. daha yüksek seviye düzeltmeleri örneği bir gün eklemek umuyoruz.
Ancak, tüm bunları önermek için rahat hissetmeden önce, arabirimi güncellemek gibi daha küçük görevleri yaparak şirkette ve kod tabanında bir pay sahibi olmanın yararlı olacağını hissediyorum. Dış kaynak kullanımı veya başka türlü çözümler bu olasılığı ortadan kaldıracaktır.
if (m_newInterface)
spagetti kodu tüm kod tabanı üzerinde görünmeye başladı. Ayrıştırma ve yeniden düzenleme, tamamlandığında, kullanıcıların çoğunun zaten yeni arayüze geçtiği kadar uzun sürdü (birkaç yıl düşünün).