Yazılım

100 Yazılım Geliştiriciye Neden Daha Hızlı Olmadıkları Soruldu

Daksh Gupta, 100 yazılım geliştiricinin katılımıyla, yazılım süreçlerini yavaşlatan etkenleri araştırdı. Google, Amazon, Linkedin gibi büyük ölçekli teknoloji şirketlerinde çalışan yazılım geliştiricilerin yorumlarından bir analiz çıkardı. Biz de bu analizi sizin için özetledik.

Araştırmacı; CTO’ların en önemli üç önceliğinin; kalite, uyum ve hız olduğu konusunda neredeyse herkesin fikir birliğinde olduğunu gözlemlemiş. Ancak geliştirme hızının “nasıl?” ölçüleceği ve geliştiricileri neyin yavaşlattığı konusunda fikir birliği olmadığını fark etmiş.

Bu gözlem sonrasında, 100 yazılım geliştiriciye ulaşmış ve onlara süreçte kendilerini nelerin yavaşlattığını sormuş.

Yazılım Gelişticileri Neler Yavaşlatıyor?

Araştırmacı, yazılım geliştiricilere, kodun canlı ortama (production) neden “daha hızlı” teslim edil(e)mediğini sordu. Aşağıdaki iki geri dönütün kendisini çok şaşırttığını belirtti.

  1. Bu soru karşısında neredeyse hiç kimse düşünmeye ihtiyaç duymadı. Çoğunluk, “daha hızlı” teslimat yapılmasını engelleyen etkenler hakkında bilgi sahibiydi.
  2. Sürecin yavaş olmasının sebebinin; build, compile ve deploy süreleri olduğunu belirten büyük bir çoğunluk vardı. Yazılım geliştiricilerin bir şeyleri beklemekten nefret ediyor.

Yazılım Geliştiriciler Hangi Şirketlerde Çalışıyor?

Araştırmaya, 24 şirkette çalışan yazılım geliştirici katılmış. Amazon, Cisco, eBay, Google, Meta, SpaceX, Stripe gibi büyük ölçekli teknoloji şirketlerinin olduğunu da belirtelim.

AmazonCrowdStrikeHerokuPinterestStripe
Arista NetworksDraftKingsHumaneRobloxWorkday
C3eBayMetaSegmentZeta
CiscoGooglePalantirSpaceXZillow
ConvoyGranularParadigmSplunk
100 Yazılım Gelişticinin Çalıştığı Şirketler

Araştırmacı, katılımcıların yanıtlarını kategori ve alt kategorilerle gruplandırmış.


1. Codebase

1.1. Dependency Bugs (Bağımlılık Problemleri)

Çoğu yazılımda kaynak kodunun büyük bir kısmı bağımlılıklardan oluşur. Bu da en can sıkıcı hataların bu bağımlılıklardan kaynaklanmasına sebep olabilir.

1.2. Complicated Codebase (Karmaşık Kodlar)

Yazılım geliştirme hızının kritik bir rekabet avantajı haline gelmesiyle, neredeyse her yazılım ekibi karmaşık kodlardan kaynaklı problemlerle karşılaşır.


2. Process (Süreç)

2.1. QA Loop

Yazılım geliştirmede, kalite güvencesi (QA) süreçleri hız ile kalite arasında önemli bir dengeyi korumaya çalışır. Ancak geliştiriciler bazen QA ekiplerini gereksiz gecikmelere neden olmakla suçlar.

2.2. Waiting For Spec

Yazılım geliştirme ekipleri büyüdükçe, herhangi bir karar sürecinde yer alan paydaş sayısı hızla artar. Bu durum, mühendislerin kod yazmaya başlamadan önce farklı süreçlerin tamamlanmasını beklemelerine sebep olur.

2.3. Awaiting Stakeholder Approval

Yazılım geliştirme sürecinde, paydaşlardan onay beklemek gecikmelerin en önemli sebeplerinden biri. Bu nedenle motivasyon kaybı oluşabiliyor.

Amazon’da çalışanlardan biri; bir butonun rengini değiştirmek için 10 farklı paydaştan “onay” alınması gerektiğini belirtti. Ayrıca bu değişik, 15 farklı mikro serviste değişikliğe sebep oluyormuş.

2.4. Writing Tests

Yazılım geliştiriciler, testlerin yeterli oranda olmaması ve testlerin kapsayıcı olmasıyla ilgiliyle şikayetlerde bulunmuş. Yeterli sayıda test olmaması, hataların gözden kaçma riskini artırır. Bu da uzun vadede daha büyük sorunlara yol açabilir. Bu durum, her yeni özellik için kapsamlı E2E testleri yazmak zorunda kalınmasına sebep olur ve geliştirme hızını yavaşlatır.


3. Tooling

3.1. Deployment/Build Speed

En fazla geri bildirim toplanan noktalardan biri deploy ve build süresince, yazılım geliştiricilerin bloklanması olmuş. Yazılım geliştirmede dağıtım ve derleme hızları genellikle göz ardı edilen bir performans faktörüdür. Ancak geliştiriciler tarafından sıklıkla dile getirilen bir sorun haline gelmiştir.


4. People

4.1. Awaiting PR Review

Yazılım şirketlerinde, meslektaşların (bazı şirketlerde kıdemli geliştiricilerin) kodu gözden geçirdiği “code review” adımı vardır. Yazılım geliştiriciler, genellikle bunu ikincil bir sorumluluk olarak görürler. (Birincil sorumluluk yeni kod yazmaktır)

Doğal olarak kodun gözden geçirildiği adımda bir yığılma yaşanır ve süreçlerin yavaşlamasına/bloklanmasına sebep olur.

4.2. Scope Creep

Kapsamın değişmesi ve büyümesi yazılım süreçlerini yavaşlatan kritik sebeplerden biridir. Bazen iş geliştirme ekibi tarafından “küçük” gözüken bir değişim, yazılım geliştiriciler için yüksek bir efora sebep olabilir.

4.3. Unclear Requirements

Yazılım geliştirmede net olmayan gereksinimler, geliştiricilerin verimliliğini düşüren en önemli faktörlerden biridir.

Net olmayan hedefler, geliştiricilerin inancını ve motivasyonunu düşürür. Düşük motivasyon ise düşük verimlilik ile sonuçlanır. Net hedefler ve başarı kriterleri belirlemek, geliştiricilerin neyi başarmaya çalıştıklarını anlamalarını ve sahiplik duygusu geliştirmelerini sağlar. Bu da motivasyonu ve üretkenliği artırır.

4.4. Excessive Meetings

Yazılım geliştiriciler için en büyük zaman kayıplarından biri çok fazla toplantıyla bölünmektir. Yöneticiler günlerini toplantılarla bölebilirler. Ancak yazılım geliştirme, derinlemesine odaklanma gerektirir. Karmaşık problemleri çözmek ve yeni şeyler üretmek için kesintisiz bir zamana ihtiyaç vardır.

5. Motivation

Yazılım geliştiricilerinin verimliliğini düşüren faktörlerden biri de motivasyondur. Motive olmuş bir geliştirici, karmaşık problemleri çözmek ve zorlu görevleri tamamlamak için daha fazla istekli olur.


Yazılım geliştirme sürecinde sizi yavaşlatan etkenlerle ilgili yorumlarınızı aşağıdan yazabilirsiniz.

Yorum Yaz