Etkili Mühendislik Verimliliği »Kod Basitliği #teknolojihaberleri

 Etkili Mühendislik Verimliliği »Kod Basitliği
 #teknolojihaberleri
Okunuyor Etkili Mühendislik Verimliliği »Kod Basitliği #teknolojihaberleri

Genellikle, mühendislik verimliliği üzerine çalışan insanlar ya yardım etmeye çalıştıkları geliştiricilerle çatışırlar ya da hiç kimsenin umurunda olmadığı için önemli olmayan bir proje üzerinde uzun zaman harcarlar.

Bu, bir geliştirme ekibinin sahip olduğunu gördüğünüz problemin mutlaka bildikleri bir sorun olmadığı için ortaya çıkıyor. Örneğin, ekibe girebilir ve umutsuzca karmaşık bir kodları olduğunu görebilir ve böylece iyi testler yazamaz veya sistemi kolayca koruyamazlar. Bununla birlikte, geliştiriciler gerçekten karmaşık kodlara sahip olduklarının ya da bu karmaşıklığın yaşadıkları belaya neden olduğunun farkında değildir. Farkında oldukları şey, “Sadece ayda bir serbest bırakabiliriz ve tüm ekip, serbest bırakıldığımız gün dışarıya çıkmak için saat 10: 00'a kadar işte kalmak zorunda”.

Mühendislik üretkenliği çalışanları bu durumla karşılaştığında, bazıları sadece geliştiricilerin şikayetlerini görmezden gelmeye ve yeniden kodlamaya başlamaya çalışın. Bu, pek çok nedenden dolayı işe yaramıyor. Birincisi, hem yönetimin hem de diğer bazı geliştiricilerin size karşı koyacağı ve işi yapması gerekenden daha zor hale getirecek olmasıdır. Fakat eğer basit direniş problem olsaydı, üstesinden gelebilirdiniz. Asıl sorun şu ki sen hiç kimsenin görmediği en iyi işi yapıyor olsanız bile, şirket ile gerçek dışı ve ilgisiz hale gelecektir. Yönetiminiz sizi işinizi yapmaktan caydırmaya çalışacak, hatta sizden kurtulmaya çalışacaktır. Zaten teknik karmaşıklıkla başa çıkarken, size karşı olan tüm bir şirketle de uğraşmanıza gerek kalmaz.

Zamanla, birçok mühendislik üretkenliği çalışanı birlikte çalıştığı geliştiricilere karşı olumsuz bir tutum geliştirir. Mühendisler “sadece yazdığım aracı kullanırlarsa” kesinlikle iyi olacaklarını düşünüyorlar. Ancak geliştiriciler değil yazdığınız aracı kullanarak, neden araç bile önemli? Burada sorun şu ki sen başlamak geliştiricinin şikayetlerini göz ardı ederek (veya geliştiricilerin kendileri hakkında ne düşündüklerini bile bilmiyorsunuz) zaten doğal olarak ters. Yani, her şey harika başladı değil ve bir şekilde bu büyük çatışma haline geldi. Aslında bir sorunun olduğunu ve geliştiricilerin farklı bir problem olduğunu düşünen bir çatışma ile başladı.

Ve sadece şirketin dirençli olacağı da değil – bu durum bireysel mühendislik verimliliği çalışanı için son derece moral bozucu hale geliyor. Genelde insanlar bir şeyler almayı sever tamam. İşlerinin biraz olmasını isterler. sonuç, biraz sahip olmak Efekt. Bir miktar yeniden düzenleme yaparsanız ancak kimse kodun sadeliğini korumazsa veya hiç kimsenin kullanmadığı bir araç / çerçeve yazarsanız, o zaman gerçekten değilsiniz demektir. bir şey ve bu bulaşıcıdır.

Ne olmuş yani meli Yapmalısın? Eh, geliştiricilerin sahip olduklarını düşündükleri probleme basitçe katılmıyorsanız (veya bilmiyorsanız), o zaman büyük olasılıkla sinirli, moralsiz ve muhtemelen işsiz kalacağınızı tespit ettik. Öyleyse çözüm nedir? Sadece geliştiricilerin yapmanı istediği şeyi yapmalı mısın? Ne de olsa, bu muhtemelen onları mutlu eder ve sizi ve her şeyden çalışmaya devam eder.

Evet, bunu başaracaksın (işini sürdürmek ve bazı insanları mutlu etmek)… peki, belki bir süre için. Görüyorsunuz, bu yaklaşım aslında çok dar görüşlü. Çalıştığınız geliştiriciler, içinde bulundukları durumu tam olarak nasıl çözeceklerini biliyorlarsa, ilk başta kendilerini asla ele geçirmemeleri muhtemeldir. Bu her zaman doğru değildir – bazen eski bir kod temeli üzerinde çalışan yeni bir grup insanla çalışıyorsunuzdur, ancak bu durumda genellikle bu yeni grup olduğu bahsettiğim “verimlilik işçisi” veya belki siz Hangi bu yeni geliştiricilerden biri. Ya da başka bir durum. Ancak o zaman bile, yalnızca size önerilen çözümleri sağlarsanız, Kullanıcıların Sorunları Var, Geliştiricilerin Çözümleri'nde anlattığım sorunların aynısını görürsünüz. Diğer bir deyişle, geliştirici üretkenliğinde çalışırken, geliştiriciler kullanıcılarınızdır. Çözümlerinizi nasıl uygulamanız gerektiğine ilişkin önerilerini kabul edemezsiniz. Bazı insanları bir süreliğine mutlu edebilir, ancak sadece bakımı zor olan bir sisteme sahip değilsiniz, aynı zamanda yalnızca kullanıcılarınızın çoğunluğu olmayan en gürültülü kullanıcıların ihtiyaçlarını da temsil eder. Öyleyse, asıl kullanıcılarının istediği özelliklere sahip olmayan, bir kez daha terfi etmemenize, sinirlenmenize, vb. Yol açacak şekilde zayıf tasarlanmış bir sisteme sahipsiniz.

Ayrıca, bu alanda, geliştiricinin üretkenliği ile ilgili belirli bir sorun var. Yalnızca geliştiricilerin belirttiği çözümleri sağlarsanız, genellikle asıl temel sorunların çözülmesine asla yaklaşmazsınız. Örneğin, geliştiriciler, 10 milyon satırlık kod monolitik ikili dosyalarının serbest bırakılmasının çok uzun sürdüğünü düşünüyorlarsa ve serbest zaman araçlarını daha hızlı hale getirmek için tüm zamanınızı harcarsanız, asla iyi belirtmek, bildirmek. Bir alabilirsiniz daha iyi devlet (biraz daha hızlı sürümler) ancak gerçek sorun, ki bu ikili sadece çok büyük.

Yani ne, sonra? Değil söylediklerini yapmak başarısız olmak, söylediklerini yapmak ise sadece vasat bir başarı demek. Ortadaki yer neresi?

Doğru çözüm, Kullanıcıların Sorunları Var, Geliştiricilerin Çözümleri Vardır, ancak fazladan birkaç parça vardır. Bu yöntemi kullanarak, yalnızca geniş kod tabanlarındaki önemli sorunları çözmedim, aynı zamanda önemli mühendislik organizasyonlarının gelişim kültürünü de değiştirdim. Bu yüzden doğru yapıldığında, oldukça iyi çalışıyor.

Yapılması gereken ilk şey, geliştiricilerin sahip olduklarını düşündükleri sorunları bulmaktır. Herhangi bir karar vermeyin. Dolaş ve insanlarla konuş. Sadece yöneticilere veya üst düzey yöneticilere sorma. Genellikle gerçek yazılım mühendislerinin söylediklerinden tamamen farklı bir şeyler söylerler. Dolaşın ve doğrudan kod tabanında çalışan birçok insanla konuşun. Herkesi elde edemiyorsan, her takımdan teknik liderlik al. Ve sonra evet, yönetimle de konuşun, çünkü onların da ele almak istediğiniz problemleri var ve bunların ne olduğunu anlamalısınız. Ama çözmek istiyorsan geliştirici sorunlar, bu sorunların neye benzediğini bulmanız gerekir. geliştiriciler.

Bu aşamada burada kullandığım bir numara var. Genel olarak, geliştiriciler, doğrudan onlara doğrudan sorarsanız, kod karmaşıklığının nerede olduğunu söylemekte pek başarılı değildir. “Sadece çok karmaşık olan ne?” Veya “Ne zor buluyorsun?” Diye sorarsanız, biraz düşünecekler ve bir şey bulabilecekler veya gelmeyeceklerdir. Ancak çoğu geliştiriciden bir duygusal tepki çalıştıkları ya da çalıştıkları koda göre, neredeyse her zaman Bişeylere sahip olmak. “İşinizin gerçekten can sıkıcı bulduğunuz bir kısmı var mı?” Gibi sorular soruyorum. “Çalışmak için her zaman sinir bozucu olan bir kod parçası var mı?” “Kod tabanının korkmaya çalıştığınız bir kısmı var mı? dokunun çünkü bunu kıracağınızı mı düşünüyorsunuz? ”ve yöneticilere,“ Geliştiricilerin sürekli olarak şikayet ettiği kod tabanının bir kısmı var mı? ”Bu soruları sizin durumunuza göre düzeltebilir ve gerçek olmak istediğinizi hatırlayabilirsiniz. geliştiricilerle sohbet etmek – sadece bir soru listesini robotik olarak okumak değildir. Daha fazla bilgi isteyeceğiniz şeyler söyleyecekler. Muhtemelen not almak isteyeceksiniz, vb.

Bunu bir süre sonra, şikayetler arasında ortak bir tema (veya birkaç ortak tema) olduğu fikrini almaya başlayacaksınız. Kitabımı okuduysanız veya bir süredir mühendislik verimliliğinde çalışıyorsanız, sorunların asıl sebebinin bir tür kod karmaşıklığı olduğunun farkındasınızdır. Ancak bu tam olarak aradığımız tema değil – kimseyle konuşmadan bile çözebilirdik. “İkilinin kurulması yavaş” gibi, biraz daha yüksek bir seviyeye bakıyoruz. Ortaya çıkan birkaç tema olabilir.

Şimdi bir sürü veriye sahip olacaksınız ve bununla yapabileceğiniz birkaç şey var. Genellikle mühendislik yönetimi, topladığınız bu bilgilerin bir kısmına ilgi duyacak ve bunları onlara sunmak sizi yöneticilerinize gerçeğe dönüştürecek ve umarız ki, sorunla ilgili yapılması gereken bir anlaşmayı teşvik edecektir. Bu çözümün bir parçası olarak yapmak gerekli değildir, ancak durumla ilgili kendi kararınıza göre bazen bunu yapmak isteyebilirsiniz.

Verilerle yapmanız gereken ilk şey, geliştiricilerin karşılaştığı bazı problemleri bulmak. bilmek onlar var, sen bilmek Kısa sürede (bir ya da iki ay gibi) bir şey yapabilir ve bu çözümü sunabilirsiniz. Bu, yaşamı değiştiren veya herkesin çalışma şeklini tamamen değiştirmek zorunda değildir. Aslında, gerçekten olmalı değil yap bunu. Çünkü bu değişimin amacı işinizi yapmaktır. inandırıcı.

Mühendislik verimliliğinde çalışırken, kişisel güvenilirliğinizle yaşar ya da ölürsünüz.

Görüyorsunuz, bir noktada asıl problemi çözebilmelisiniz. Ve sadece Bunu yapabileceksiniz, geliştiriciler sizi bulursa inandırıcı Biraz değişiklik yapmak istediğinizde size inanmak ve güvenmek için yeterli. Bu yüzden, ilk önce takıma güvenilir olmak için bir şeyler yapmalısınız. Bu çok büyük, tamamen değişmemiş bir değişim değil. Bu biraz zor olsa bile yapabileceğinizi bildiğiniz bir şey. Başkalarının yapmaya çalıştığı ve başarısız olduğu bir şey olup olmadığına yardımcı olur, çünkü o zaman aslında bir şeyi kanıtlarsınız. kutu Bu karışıklık hakkında başkalarının belki de başaramadıklarını düşünerek (ve sonra herkes her şey hakkında umutsuz hissetti ve sonsuza dek karışıklıkla yaşamak zorunda kaldıklarına karar verdiler; yakında).

Bu ilk problemi ele alarak temel güvenilirliğinizi belirledikten sonra, geliştiricilerin hangi problemi olduğuna ve bunun için en iyi çözümün ne olacağını düşündüğünüze bakmaya başlayabilirsiniz. Şimdi, sık sık, bu bir seferde hepsini uygulayabileceğiniz bir şey değildir. Bu da önemli bir nokta – bir ekibin kültürü veya gelişim süreci ile ilgili her şeyi bir kerede değiştiremezsiniz. Bunu adım adım yapmak zorundasınız, değişimin “serpinti” si ile başa çıkmalısınız (insanlar bir şeyi değiştirdiğiniz için çıldırdıkları için, ya da şimdi hepsi farklı olduğu için veya değişimin ilk yinelemesi iyi sonuçlanmadığından) Bir sonraki adıma geçmeden önce sakinleşmek için Her şeyi bir kerede değiştirmeye çalıştıysanız, esasen ellerinde bir isyan olacaktı – güvenilirliğinizin sona ermesine ve tüm çabalarınızın başarısız olmasına neden olacak bir isyan. Yukarıdaki iki işe yaramaz çözümün, sizin moralinizi bozması veya etkisiz hale getirmesiyle sonuçlanacak aynı çukurda olursunuz. Bu yüzden adım adım çalışmalısınız. Bazı takımlar daha büyük adımları kabul edebilir, bazıları sadece küçükleri kabul edebilir. Genellikle takım ne kadar büyük olursa, o kadar yavaş gitmeniz gerekir.

Şimdi, bazen bu noktada, ilerlemiş gibi görünemeyeceğiniz kadar uzlaşmaz birisiyle karşılaşıyorsunuz. Bazen çok üst düzeylere sahip olan ya kendi yollarına ya da sadece bir çeşit çılgınca olan birileri vardır. (Genellikle ikincisini söyleyebilirsiniz çünkü çılgıncalar genellikle hakaret eder veya kaba davranırlar.) Bu durumda ne kadar ilerleme kaydedeceğiniz kısmen iletişim becerilerinize, kısmen de devam etme istekliliğinize, kısmen de çözme yolunda olduğunuza bağlıdır. bu durum. Genel olarak, yapmak istedikleriniz müttefiklerinizi bulmak ve yaptığınız çabalar için temel bir destek grubu oluşturmaktır. Neredeyse her zaman, geliştiricilerin çoğu, hiçbir şey söylemeseler bile, akıl sağlığının hüküm sürmesini ister.

Birisi bir şeyi geliştirmek istediğini söylediğinde, sadece herkesi cesaretlendirmek uzun bir yol kat ediyor. Herkesin yapmasını istemeyin mükemmel değişiklik – “ekibinizi” topluyorsunuz ve kod temizleme, verimlilik iyileştirmeleri vb. değerinin değerli olduğu fikrini doğruladınız. Ve gönüllü bir kültür veya açık kaynaklı bir proje gibi bir şeye sahipsiniz – büyümesini desteklemek için çok cesaret verici ve kibar olmalısınız. Bu, kötü değişiklikleri kabul etmeniz gerektiği anlamına gelmez, ancak birileri işleri daha iyi hale getirmek istiyorsa, en azından bunları kabul etmeli ve bunun harika olduğunu söylemelisiniz.

Bazen her 10 kişiden 9'u doğru olanı yapmak istemektedir, ancak bir nedenden ötürü boyun eğmeleri veya rasyonelliğin ötesine saygı duymaları gerektiğini düşündükleri tek kişi tarafından reddedilmektedirler. Yani temel olarak, sizi destekleyen ve destek alabileceğiniz insan grubuyla elinizden geleni yapıyorsunuz ve bu şekilde ilerleyebilmeniz için ilerleme kaydediyorsunuz. Genellikle, yüksek sesli bir kişiyi görmezden gelmek ve işleri daha iyi hale getirmeye devam etmek bile mümkündür.

Sonuçta kıdemli bir kişi tarafından tamamen durdurulursanız, o zaman (a) bu konuda doğru yoldan gitmediniz (yukarıdaki tavsiyelerime uymadığınız anlamına gelir, bazı iletişim güçlüğü var, gerçekten yapmaya çalışıyorsunuz). geliştiriciler için kötü olabilecek bir şey, vb.) veya (b) sizi durduran kişi, ne kadar “normal” görünürse görünsün tamamen delicedir.

Yanlış bir şey yaptığınız için engellendiyseniz, geliştiricilere en çok neyin yardımcı olacağını belirleyin ve bunun yerine bunu yapın. Bazen bu, sizi engelleyen kişiyle daha iyi iletişim kurma işi yapmak kadar basittir. Mesela, rakip veya tartışmacı olmayı bırak, ama onların ne söyleyeceklerini ve onlarla çalışıp çalışamadıklarını dinle. Nazik, ilgili ve yardımsever olmak çok uzun bir yol kat ediyor. Ama öyle değilse ve çılgın bir kişi tarafından durduruluyorsanız, ve yapamazsınız. herhangi destekçilerinizle bile ilerleme, o zaman muhtemelen çalışacak başka bir takım bulmalısınız. Değmez sizin aklı ve mutluluğu asla dinlemeyecek ve sizi ne pahasına olursa olsun durdurmaya kararlı olan birine karşı gelmek. Sonsuza dek kafanızı bir duvara çarpmak yerine, dünyada fark yaratabileceğiniz bir yere gidin.

Bu tür bir durumu işinizi engelleyen bir kişiyle ele almakla ilgili bilmeniz gereken her şey bu değildir, ancak size temel bilgileri verir. Kalıcı olun, nazik olun, destekçilerinizden oluşan bir grup oluşturun, güvenilirliğini yitirmenize neden olacak hiçbir şey yapmayın ve kutu yardım etmek için yap. Genellikle direnç zamanla yavaşça parçalanacak veya işleri daha iyi olmaktan hoşlanmayan insanlar bırakacak.

Öyleyse, artan adımlarla üretkenliği artırma konusunda ilerleme kaydettiğinizi ve sizi durdurabilecek durumlar üzerinde bir kontrolünüz olduğunu varsayalım. Ordan nereye gidiyorsun? Peki, doğru yöneldiğinizden emin olun. temel artımlı adımlarla ilgili sorun. Bir noktada, sorunu çözmek için insanların yazılım yazma şeklini değiştirmeye başlamanız gerekir. Bu konuda daha önce yazdığım ya da daha sonra yazacağım bir çok şey var. Ancak bir noktada kodu basitleştirmek için aşağı inmeniz gerekecek. Bunu ne zaman yapacaksın? Genellikle, adım adım arttığınızda, çözümün bir parçası olarak yeniden yapılanmayı güvenilir bir şekilde belirtebileceğiniz bir sorunun olduğu noktaya geldiğinizde. Dünyaya söz vermeyin ve yapacağınız yeniden yapılanma çalışmasından geliştirilmiş bir geliştirici üretkenliği grafiği yapmaya başlayacağınızı söylemeyin. Yöneticiler (ve bazı geliştiriciler) sizden çeşitli şeyler isteyeceklerdir, bazen ne yaptığınızı anlamadan (ya da bazen işinize mantıksız gereklilikler koyarak sizi engelleme arzusundan) kaynaklanan makul olmayan talepler isteyecektir. Hayır, “Hey, bu özelliği kodunu yeniden düzenlemek güzel olur, böylece X özelliğini daha kolay yazabiliriz” ya da bunun gibi bir şey olması gerekir.

Oradan, elinizden geldiğince refactorings önermeye devam edersiniz. Bu, takımlama, test etme, işleme vb. Üzerinde çalışmayı bıraktığınız anlamına gelmez. yeniden düzenleme kültürü en çok değiştiren şeydir. İstediğiniz şey insanların “şeyler üzerinde çalışırken kodu her zaman temizlediğimizi” veya “kod kalitesi önemli” olduğunu ya da istediğiniz kültürü elde etmek için ne gerekiyorsa düşünmesini sağlamak.

Bir zamanlar işlerin başladığı bir kültürünüz olur daha iyi Daha kötüye gitmekten ziyade, artık üzerinde çalışmasanız bile, sorun zamanla kendiliğinden düzelme eğiliminde olacaktır. Bu, bu noktada durmanız gerektiği anlamına gelmez, ama en kötüsü, herkes kod kalitesi, test, verimlilik vb. İle ilgilendiğinde, işlerin aktif olarak dahil olmak zorunda kalmadan kendi kendilerine çözmeye başladığını göreceksiniz.

Unutmayın, tüm bu süreç “bina fikir birliği” ile ilgili değil. Gruptaki herkesin nasıl yapılacağı hakkında tam bir anlaşma yapmayacaksınız. sen yapmak gerekir sizin iş. İnsanların ne olduğunu bulmakla ilgili. bilmek kırılır ve onlara çözümler sunar, kabul edebilecekleri ve ekip ile güvenilirliğini artıran çözümler üretiyor, aynı zamanda, sadece geliştiricinin ihtiyaç duyduğu şey ne olursa olsun, kod tabanının gerçek altta yatan sorunlarının çözümüne yönelik artan bir şekilde çalışan çözümler. şu anda en gürültülü. Yalnızca bir şeyi aklınızda tutmanız gerekiyorsa, bu:

İnsanların bildiklerini problemleri değil problemlerini çözün sen sahip olduklarını düşünüyorum.

En son işaret edeceğim son şey, bir şirketin ya da tüm ekibin mühendislik verimliliğinden şahsen sorumluymuş gibi, bu konuda çok konuştuğum. Bu her zaman böyle değildir – aslında, mühendislik verimliliğinde çalışan çoğu kişi için muhtemelen durum böyle değildir. Bazı insanlar bir aracın, bir çerçevenin, bir alt ekibin vb. Daha küçük bir bölümünde çalışır. gerçek hala geçerli. Aslında, muhtemelen yukarıda yazdıklarımın çoğu bu özel duruma uyarlanabilir, ancak çoğu önemli olan şu ki sen değil git ve problemini çöz düşünmek geliştiricilerin var, ancak bunun yerine (a) varolduğunu kanıtlayabileceğiniz ve (b) geliştiricilerin bilmek bulunmaktadır. Çalıştığım mühendislik üretkenliği ekiplerinin çoğu bunu o kadar ihlal etti ki, yıllarca geliştiricilerin istemediği, hiç kullanmadığı ve geliştiricilerin gerçekten çalıştığı araçlar veya çerçeveler yazarak geçirdiler. silmek onları tasarlayan kişi gittiğinde. Ne kadar anlamsız zaman kaybı!

Bu yüzden zamanını boşa harcama. Etkili olmak. Ve dünyayı değiştir.

-Max


Haberin Kaynak Linki

Yapılan Yorumlar

Bir Cevap Yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.