Yeni Başlayanlar İçin Yazılım Entropisini Düzeltmenin 5 Yolu
Yayınlanan: 2019-01-21Startup'lar kaynaklarının çoğunu pazara en kısa sürede ulaşmak için tüketirler.
İyi kalite, elde etmek için büyük miktarda zaman ve maliyet gerektirir ve bu, çoğu girişimin sıkıntı çektiği yerdir.
Kodun ayrılmaz bir parçasını yazıp yeniden yazın ve ilerledikçe bunu yapmayı alışkanlık haline getirin
“Bir 'startup', kafası karışan bir şirkettir – 1. Ürünü nedir, 2. Müşterileri kimdir 3. Nasıl para kazanılır.” – Dave McClure, Kurucu 500 Startups
Yolculuğu sırasında, bir teknoloji girişiminin üç başarı kolu vardır: maliyet, hız ve kalite.
Ne yazık ki, aynı anda yalnızca ikisini seçebilirsiniz. Dolayısıyla, hızı ve maliyeti seçerseniz kaliteden ödün vermeniz gerekebilir. Veya hız ve kaliteyi seçerseniz, bunun size milyonlara mal olması muhtemeldir. Üçte ikiden oluşan bu seçim, Lady Macbeth'in dediği gibi “yapılanlar geri alınamaz” vakası olan yazılım entropisine yol açar veya teknik terimlerle, “Yazılım teknolojisi gibi kapalı bir sistemde, bir Tükenen ürün kalitesi bir süre içinde iyileştirilemez.”
Yazılım entropisi, buna yol açan faktörler ve olası çözümler hakkında daha fazla tartışacağız. Bundan önce, yazılım entropisine neyin yol açtığını anlamak önemlidir.
Startupların Üç Kolu
Hız
Girişimlerin sularına daldığınızda, yukarıda belirtilen üç faktörün hepsinin en sınırlı kaynağının zaman olduğunu anlıyorsunuz. Bir girişim, gelir açısından bir miktar çekiş görmeye başlayana kadar, asla bir şirket olarak adlandırılmaz.
Önyükleme miktarından en iyi şekilde yararlanmak için, genellikle 'beta sürümü' olarak adlandırılan ve genellikle “bastırılmış kalitede” (hedef ürüne kıyasla) hızlı bir ürün piyasaya sürülür ve pazarı mümkün olduğunca erken yakalar.
Startup'lar, mümkün olan en kısa sürede piyasaya ulaşmak için kaynaklarının çoğunu tüketirler ve tüm çabalarını çoğu yönden üçünün en popüler kaldıracı olan 'hıza' ulaşmak için harcarlar.
Maliyet
Zamanla karşılaştırıldığında, maliyet her anlamda somuttur. Bir girişimin kalp atışıdır.
"Bir startup için sadece iki öncelik vardır: Piyasayı kazanmak ve nakit tükenmemek." – Ben Horowitz
Hesabınızdaki bakiye ne kadar fazlaysa, o kadar uzun süre hayatta kalırsınız. Bir girişimin ilk aşamasında, kaynakların çoğu, kuruluşunuz için ofis, mobilya, internet, maaşlar ve çok daha fazlası gibi önemli varlıkları (yükümlülükleri de okuyun) düzenlemek için harcanır.
Çoğu zaman, yeni başlayanlar, bütçe kısıtlamaları nedeniyle sektördeki en iyi geliştiricilere para sağlamakta zorlanıyor. Genellikle, üst düzey kodlayıcılar veya üst düzey yöneticiler, para akışı olduğunda onları işe alma niyetiyle daha sonraya bırakılır.
Kalite
İyi iş pahalıdır, harika iş daha pahalıdır ve kaliteli iş olağanüstü bir maliyetle gelir. Kalite, ulaşılması en zor olandır. İyi kalite, elde etmek için büyük miktarda zaman ve maliyet gerektirir. Ve bu, çoğu girişimin acı çektiği yerdir.
Çoğu girişim, sınırlı fonlarla başlar ve mümkün olan en kısa sürede kar elde etmeye çalışır. Üretime hazır olmayı ve sermayeleri bitmeden satmayı hedefliyorlar. Şirket büyüme aşamasına gelene kadar, bir girişimci hızla üretmeye ve pazara girmeye çalışır. Bu, bu girişimlerin pazar payı elde etmesine ve müşteri geri bildirimlerini geliştirmek için işbirliği yapmasına olanak tanır.
Çoğu şirket, ürünleri için şiddetli rekabet ile karakterize edilen bir pazarda merdiveni tırmanırken bir miktar çekiş yaratabilen ve gereksinimlerini finanse edebilen bir 'beta sürümü' ile başlar.
Startup'lar tipik olarak, gereksinimlerini anlayan, biraz geliştirme duygusuna sahip ve en az miktarda kaynakla ürünü yaratabilen yeni geliştiriciler ve mühendisler (çok azı kıdemli geliştiricileri işe alacak bütçeye sahiptir) işe alır. Ve şüphesiz, bu geliştiriciler daha düşük bir maliyetle gelir. Kalıplanması kolaydır ve genellikle tek vardiyalarda çalışabilirler.
Urbanclap'ın kurucu ortağı/CTO'su Raghav Chandra şöyle diyor:
“Kalite genellikle hız (daha uzun sprintler, daha fazla kod yazma/test etme vb.) ve maliyet (daha fazla mühendis, daha kaliteli altyapı, vb.) üzerinde bir uzlaşma olarak görülüyor. Bununla birlikte, daha genç aşamalarda, iyi kalite, hız ve maliyet açısından büyük bir artıştır.
Kalitenin birden fazla yönü vardır: ilk günlerde en büyük avantajı sağlayan mimari tasarımdır (!=infra).
En büyük zaman kaybı, ya hataları bulmakta (çağrı zincirinden geçmekte) ya da kötü tasarlanmış kod üzerinde özellikler oluşturmakta - hem kötü ayrıştırma hem de yazılımın bakımının ürünleri - oluyor. ”
Şirket büyümeye ve kâr etmeye başladıkça, istikrarlı bir ürün oluşturma gereksinimi ortaya çıkıyor. Oluşturulan ürünün bir önceki sürümünün iyileştirilmesi ve kodların yeniden işlenmesi gerekiyor.
Müşteriler ortaya çıkmaya başladıkça, kalite kısa sürede bir öncelik haline gelir. Bu kaliteyi artırmak için ekibe daha deneyimli ve piyasayı daha iyi anlayan bir çalışan eklenir. Daha yüksek bir maliyetle gelen üst düzey geliştiriciler, mevcut ürün üzerinde çalışmak üzere işe alınır. Bu geliştiriciler, zamanlarının çoğunu eski kod satırlarını geliştirmek için harcarlar ve aynı zamanda yeni, en kaliteli özellikleri hızla geliştirirler.
Eski kod satırlarını yeni özellikler geliştirmek için düzelten geliştiricilerin çoğu, istenen sonucu elde etmekte zorlanıyor. Ancak aylar geçtikçe ve ekiplerin bir ürünü geliştirmek için tüm çabalarıyla, kalite gelişmeyi reddediyor.
Bu faktör yazılım entropisi olarak adlandırılır.
Yazılım entropisi nedir?
Wikipedia'nın tanımına göre, termodinamiğin ikinci yasasına göre kapalı bir sistemde (hiçbir girdi veya çıktı yapılmaz), düzensizlik belirli bir süre boyunca azaltılamaz.
Bu yasa, yazılım sistemleri durumunda bile geçerli görünmektedir; bir sistem belirli bir süre boyunca değiştirildiğinden, düzensizliği tüm çabayla azalmak yerine sadece artma eğilimindedir.
Yeni geliştiriciler kaliteyi artırmak için mevcut kod parçasını iyileştirmeye çalıştıkça, ürün kalitesi istenen sonuçlardan uzaklaşır. Mevcut kod satırlarını düzeltmek için değişiklikler yapıldıkça, “entropi” artmaya devam ediyor ve bu da düzeltilmesi zor olan daha karmaşık kodlara yol açıyor. Bu genellikle geliştiriciler ve yazılım mühendisleri arasında hayal kırıklığına yol açar. Çoğu zaman, büyüyen girişimler bu entropiyi düzeltmek için sıfırdan kod yazmanın zor yolunu alır.
Sizin için tavsiye edilen:
The Pragmatic Programmer: From Journeyman to Master kitabında Andrew Hunt ve David Thomas şöyle yazıyor:
"Yazılım entropisi bulaşıcıdır ve kontrol edilmezse salgın haline gelir."
O halde sorunu nasıl çözebiliriz ve daha az zaman ve bütçeyle kaliteli iş üretebilen bir geliştiriciyi işe almak için en iyi önlemler neler olabilir?
Öyleyse, yeni başlayanlar maliyete, hıza veya kaliteye odaklanmalı mı?
Intelliphi CEO'su ve Kurucusu Anand Thaker şöyle diyor:
“Sistemin kalitesi, kullanıcı deneyimi ile sürekli baş ağrısı yaratmaması için minimum bir eşiğe ulaşmalıdır”
Sistemlerin kritik veya ölüm-kalım operasyonlarını yürüttüğü istisnalar vardır.
Bu erken aşamalarda, yeni başlayanlar hala ürün-pazar uyumlarını bulmaya çalışıyorlar. Gürültülü ve son derece rekabetçi SaaS tabanlı bir dünyada, ürün-pazar uyumu bir girişimi başlatır veya bozar. Ayrıca takım dinamikleri ve takımın liderliği de hızla gelişme aşamasındadır. Yalın-başarısız-ucuz-ucuz başlangıç, bu nedenle sağlam bir felsefedir. Bunu ilk entropi meydan okuması olarak kabul edin.
Ürün pazarı sağlamlaştıkça, bir girişim ya parçalarda ya da tüm platformda kaliteli yeniden yapılandırmalar planlıyor. Bu noktada ilerlemek, daha iyi müşteri deneyimlerine dönüşen kalite çabaları büyümeyi etkiler. İyi büyüme, daha fazla finansman ve müşteri tutma sağlar.
Şahsen, ürün liderliğindeki startup'ları ve startup kurucularını tercih ederim. Genellikle çözümler ve vizyon sağlamdır ve yaklaşımları esneklik içerir… ve çıkışları ve katları çok daha büyüktür (diğer tipik başlangıçlardan 3 ila 5 kat daha fazla). Bu tür yeni başlayanlar/kurucular için entropiye saygı duymaları çok muhtemeldir, ancak daha önceki aşamaları anlamaları bile hız ve kritik başlangıç ivmesini kazanmaya uygundur.”
Yeni başlayanlar yazılım entropisini nasıl azaltabilir?
Minimum teknoloji ile başlayın
UrbanClap CTO'su, minimal ve yeniden kullanılabilir teknoloji kullanımından “kötü ve şişirilmiş ekip tasarımlarına ve aşırı şişirilmiş altyapı maliyetlerine yol açan endişeleri düzgün bir şekilde ayıramama” olarak konuşuyor. Bunu iyi çözmek için, en büyük ve en önemli kaldıraç, kasıtlı mimari tasarım kültürüne hakim olmaktır.
- Modülerliğe ve yeniden kullanım için kasıtlı tasarıma odaklanan güçlü tasarım-inceleme kültürü
- yönergeler üzerinde çerçeveler - küçük ekiplerle, en iyi uygulamaları yaymak yavaş bir süreçtir. Farklı mühendislik parçalarını standartlaştırmak için çerçeveler ve araçlar oluşturan mühendisler tarafından en iyi uygulamaları “otomatikleştirmek” daha iyidir.”
Çoğu girişim belirli bir fikirle başlar ve bir süre içinde gelişir, yeni fikirler, özellikler ekler ve bazen tamamen yeni bir ürüne dönüşür. Kuruluşunuzun ilk günlerinde kullandığınız A teknolojisinin, gelecekte kullanabileceğiniz C teknolojisi ile birleşebilecek B teknolojisi ile uyumlu olduğundan emin olun.
Bir şirketin vizyonu geliştikçe ürün de değişir ve bu yolculuk sırasında çeşitli teknolojiler tanıtılır (veya bozulur). Ürününüz stabil ve kullanıma hazır hale gelene kadar minimum teknoloji kullandığınızdan emin olun. Kodunuzu optimize edin.
Kod optimizasyonunu düşünün
Kodun ayrılmaz bir parçasını yazıp yeniden yazın ve ilerledikçe bunu yapmayı alışkanlık haline getirin. Bu, parlak bir ürünün arka ucunda yayına giren tüm kodu takip etmenize yardımcı olur.
Kodun ayrılmaz bir parçasının yazılması, yeni bir çalışanın yeni bir taahhüt göndermeden önce önemli kısımları gözden geçirmesine yardımcı olur. İntegral parçalar, kodun iyi tarafını kötü olanından ayırmaya yardımcı olur.
Taahhütleri tekrar kontrol edin
Hiç kod işledin mi? Değilse, kova listenize ekleyin.
Geliştiricilerin bir kuruluşa verdikleri çabanın ve bağlılığın bir ölçüsüdür. İlk taahhüt edilen kod, çoğu girişimde kutlanır. Bu taahhütleri yeniden kontrol etmenin zamanı geldi. İlk değil, son değil, hepsi.
En iyi kalitede kodu elde etmek için hiçbir taş bırakılmadığından emin olmak için meslektaşların tüm kod taahhütlerinden geçmelerini zorunlu kılın.
İşe alırken değerlendirme araçlarını unutmayın
Bir süre sonra, düşük kaliteli kodları müşterilerinize haklı çıkaramayacağınızı, zaman ve maliyetle suçlayamayacağınızı anlayacaksınız.
İlk işe aldığınızdan itibaren teknoloji değerlendirme yazılımı kullanmak, gereksinimlerinizi anlayan ve baskı altında sonuç verebilen çalışanlarla ilgilenmenizi sağlar.
Bir startupta yapılan her yanlış işe alım, maaş ve ikramiyelerden işe alımla ilgili tüm süreçlere kadar - en önemlisi, önemli projeler üzerinde çalışan küçük bir ekibin görüşme ve değerlendirme saatlerine kadar - 18.000 dolara yakın bir maliyete sahiptir.
Teknik işe alım yazılımı, çoklu programlama dilleri, otomatik test oluşturma ve ayrıntılı aday raporları gibi özelliklerle birlikte gelir. Kapsamlı intihal özellikleri, ekiplerin olağan 'gözlem yapma' zorluğundan kurtulmasına yardımcı olur.
'Java Projesi' (görev olarak paylaşılan mevcut bir projenin parçası) gibi görevler, gerçek bir kodlama ortamında çalışan ve gerçek kodları işleyen adaylarla paylaşılabilir, bu da yapılması gereken işin doğru resmini verir.
Ödevini yap
Son fakat en az değil, ödevini yap. Etkileyicileri takip edin, kitap okuyun, benzer bir alanda insanlarla bağlantı kurun.
Kuruluşlarında yazılım entropisini geliştirmek için çok çalışan birçok insan var.
Anand Thaker diyor ki,
“Bilgi ve iletişim, entropiyi geliştirmek için kritik öneme sahiptir. Sistemin bir bölümünde derin bilgiye sahip bir ekip üyesinin ayrılması durumunda entropi yaşadık.
Bir diğeri, yazılımın belirli bölümlerine birkaç ay veya yıl boyunca dokunulmadan kalmasıdır. Bu yeteneklerin ve temel alınan kodun/mantığın düzenli olarak tekrar ziyaret edilmesini sağlayın.
Ayrıca, kalkınma felsefesi üzerine bir ton/kültür belirlemeyi düşünün.
Entropi her zaman var olacaktır, ancak büyümesini kısıtlamak bir sanattır. Teknik veya yönetici lider olarak bunu zaten biliyor olabilirsiniz, ancak yazılım geliştirme disiplinli bir süreçtir. İyi ekip üyeleri işleriyle gurur duyarlar. Bu çabanın akranlarından tanınması uzun bir yol kat ediyor. ” İnsanların zaman içinde öğrendiklerini konuşun ve tartışın.
Çözüm
Başlangıç aşamalarında, yeni başlayanlar kaliteye odaklanmalı mı?
Kötü kod kalitesi, birçok girişimin başarısız olmasının ana nedeni olmuştur. Bir süre içinde onu geliştirmek için çok zaman, para ve çaba kaybedildi. 'Bu satırı geliştirmek' için 'kod kötü' gibi basit yorumlar, kodu geliştirmek için hiçbir şey yapmamaktan daha iyidir.
Startup'lar, yeni çığır açan ve dünyayı değiştiren ekonomik bir olgudur.
Raghav Chandra'nın entropiden mustarip yeni başlayanlar için önerileri şu şekildedir: “Daha küçük ekipler için, daha fazla ekibe sahip olmanın ve herkesin elinin altında olduğu organizasyonu düz tutmanın daha iyi bir kaldıracını buldum.
Teknik Liderler / Yöneticiler olarak, ekibi daha iyi "düşünmeye" hazırlamak önemlidir. Daha iyi düşünmeye harcanan çabalar yardımcı olur, bu da işleri daha sonra düzeltmek için daha az zaman sağlar.
Ve uygulamadan önce beyin fırtınası yapmak ve derin düşünmek, zaman veya maliyetten ödün vermek değildir - sistem düzeyinde kalite oluşturmanın gerçekten de en ucuz yoludur.”
Entropiyi önemsememizin ve ürettiğimiz ürünlerden onu azaltmaya yardımcı olabilecek en iyi geliştiricileri işe almamızın zamanı geldi.