Bir yazılımcı günlük ne yapar?

Kodun uzun olması iyi olduğu anlamına gelmez. Kodu kaliteli yapan en az bellek ve kaynak kullanımı olanıdır. Ek olarak performans ve diğer görsel içerik gibi alanlar kaliteyi belli eder.

Bir işlemi yapmanın tonlarca yolu var. Önemli olan en stabil yolu bulmak. Bu da tecrübe, bilgi ve deneyim işi.
 
Ben ödev yaparken veya sınava hazırlanırken önce kodu yazıyorum, sonra hataları gideriyorum, sonra başkaları nasıl yapmış diye bakıyorum. Büyük ölçekli bir proje yapmadım hiç ama yapacak olursam da bunlara ek olarak daha iyi algoritmalar var mı ve bunları nasıl kullanabilirim diye bakarım. Projenin büyüklüğüne göre bu adımlar günler haftalar alabilir. Ayrıca @Eray T hocamın da dediği gibi az bellek ve kaynak kullanımı çok önemli.
Kodları insanlar ne kadar kolay anlıyorsa o kod bilgisayar için o kadar karışıkdır. İnsana ne kadar karışık geliyorsa da bilgisayar için o kadar kolaydır. Örneğin bir Bubble search algoritması ile Binary veya quick search arasında çok fark vardır. Bubble yazmak çok kolay iki tane döngü açıyorsun. Quick veya binary ise yazması nispeten daha zor ama bubble'a göre çok hızlılar. bahsettiklerim arama algoritması, bir de sıralama algoritması var.
Biraz daha detay vereyim. Programların Big-Oh notasyonu denilen bir zaman karmaşası var, araştırmanı öneririm. (Bir de bellek karmaşası var ama detayını bilmiyorum onun.) Bu iki notasyonu en düşük o(N) zamanında tutmak gerekiyor. Kodları bunlara uygun yazmak hayli zor. İşte yazılımcılar genel olarak bunları yapıyor.
İnternette çokça dolanan bir meme var illaki göreceksin, yazılımın %10'u yazılımı yazma %90'ı bugfix.
 
Kurumsal bir yerde calisirsan, mesela banka gibi, gunluk 300-400 satir kod bile fazla. Cunku sana ayrilan is alani cok kapsamli ve genis olmuyor. Eger calisan sayisinin daha az, is dagiliminin daha genis capli oldugu yerlerde calisirsan duruma gore degisir. Bazi gunler kod yazmadigin da olur, sadece dokuman veya kod okursun. Ben kopyala yapistirda sakinca gormuyorum bu arada eger ogrenme asamasinda degilsen. Zira bazen isin nasil yapildigini bilirsin ama kodu yazmak biraz angarya olur. Internette soyle bir kutuphaneleri veya milletin yazdigi kodlara bakip kendin uzerinde ufak degisiklikler yapabilirsin. Zaten birisinin birebir yazdigi kodun isine yarayacagini da sanmam. Basit bir faktoriyel kodunun yazilisi bile kisiden kisiye gore degisebiliyor.
 
Bazı günler 300 400 satır, bazı günler 1500 satırı geçiyor. O proje ve duruma bağlı.

Ortalaması günde yaklaşık 900 satır. Ayda 18.000 satır... Yok öyle bir dünya.

CTRL + C, CTRL + V yapan yazılımcı değildir.

Ben bu güne kadar kopyala yapıştır yapmayan yazılımcı görmedim. Amerika'yı yeniden keşfetmek deniyor yazabileceğin şeyi kopyalamamaya. Safi vakit kaybı.

Kodun uzun olması iyi olduğu anlamına gelmez. Kodu kaliteli yapan en az bellek ve kaynak kullanımı olanıdır. Ek olarak performans ve diğer görsel içerik gibi alanlar kaliteyi belli eder.

Bir işlemi yapmanın tonlarca yolu var. Önemli olan en stabil yolu bulmak. Bu da tecrübe, bilgi ve deneyim işi.

90'lardan farklı olarak yazılımda performans sadece spesifik sektörlerde önemli. Sırf bu yüzden geliştirilen programların neredeyse %85'i Assembly'ye compile olmayan dillerde yazılıyor.

Yani 10000 satırlık iş 1M satırlık işle eş değer olabiliyor mu?

Eş değer sayılabilecek çok fazla durum var piyasada. Bazen göreceksiniz sade ve özellikleri az bir uygulama App Store'da birinci sırada. Aynı işi yapmaya çalışıp 1000 tane özellik sunan uygulama alt sırada. Bunu gördüğünüzde anlayın ki 10k satırlık bir uygulama 100k satırlık bir uygulamaya galip gelmiş.

Kurumsal bir yerde calisirsan, mesela banka gibi, gunluk 300-400 satir kod bile fazla. Cunku sana ayrilan is alani cok kapsamli ve genis olmuyor. Eger calisan sayisinin daha az, is dagiliminin daha genis capli oldugu yerlerde calisirsan duruma gore degisir. Bazi gunler kod yazmadigin da olur, sadece dokuman veya kod okursun. Ben kopyala yapistirda sakinca gormuyorum bu arada eger ogrenme asamasinda degilsen. Zira bazen isin nasil yapildigini bilirsin ama kodu yazmak biraz angarya olur. Internette soyle bir kutuphaneleri veya milletin yazdigi kodlara bakip kendin uzerinde ufak degisiklikler yapabilirsin. Zaten birisinin birebir yazdigi kodun isine yarayacagini da sanmam. Basit bir faktoriyel kodunun yazilisi bile kisiden kisiye gore degisebiliyor.
Katılıyorum.
 
Freelance yazılım ile yaptığım zamanlarda oldukça rahat bir şekilde çalışıyordum. Sabah kahve-kahvaltı, bilgisayarda acıkana kadar çalışıyordum 6 saat falan sonra yemek sonra tekrar bir 6 saat çalışıyordum. Yazılımcı dediğin meslek zaten böyle çok aksiyonlu bir meslek değil evden çalışıyorsan. Bilgisayar başında çalışırken ne yapıyorsun diye soracak olursan genelde bol bol araştırma yapıyorsun müşterilerin isteklerini karşılamak için. Ve sürekli bildiklerinin üstüne koyacak bir müşteri çıkageliyor.
 
Bazı günler 300 400 satır, bazı günler 1500 satırı geçiyor. O proje ve duruma bağlı.
Sen az yazıyormuşsun, bazen ben benimkini roman olarak çıkartıyorum arkadaşlarla yarıştırıyoruz kiminki daha uzun diye. Boilerplate kodu falan sayıyorsun sanırım.
 
Günden ve işe göre değişir. Bir gün çok rahat olurken başka gün çok yoğun olunabilir. Mesela 2 gün önce freelance iş geldi Figma to HTML.

2 günde 1250 satır HTML, 1233 satır ise CSS yazdım. 1 sayfa kaldı, orası da 50-100 satır arası tutar. Henüz responsive yapmadım.
Yarın da responsive yapacağım nereden baksan 2000 satır CSS'e yaklaşır. Ama öyle bir iş gelir ki toplamda 1000 satırda bitirirsin.
 
@Witches
  • Yazılan kod satırı sayısı herhangi bir şey için ölçüt değildir. Bazı günler sadece kod bile silebilirsin, bu iş üretmediğin anlamına gelmez.
  • GitHub, versiyon kontrol sistemi olan git'i kullanan ve kullanıcıların kodlarını depolamalarına izin veren bir platformdur. Başka alternatifleri de vardır. Kullanmak zorunda değilsin. Bireyler ağırlıklı olarak portföylerini sergilemek için kullanıyorlar ya da açık kaynak projelere destek vermek için.
  • Yaptığın işe göre kopyala-yapıştırı bol bol da yapabilirsin, hiç yapmaya da bilirsin. Herhangi bir şeyin ölçütü değildir.
  • Yazılımcı gereksinimlere göre kod yazar. Yani istenen işi yapan kodu yazar ve geçer.
  • Yazılım mühendisi (yazılımcı, programcı gibi terimlerle eş anlamlı olarak da kullanılıyor ama pedantik olacağım burada) sadece kod yazmaz. Mimarı tasarım, gereksinim çıkarma, test yapma gibi işlerle de uğraşır. Dediğim gibi terimler birbirleri yerine kullanıldığı için kimin ne olduğu çok da net değil açıkçası, en azından kağıt üzerinde.
  • Nasıl ustalaşma konusu neyde ustalaşmak istediğine bağlı. Web mi geliştireceksin masaüstü mü? Gömülü mü geliştireceksin yoksa kişisel bilgisayar/sunucu programı mı? OS var mı yoksa baremetal mi? Hangi OS? Hangi mimari?... Uzar da gider bu liste. Öğrenmenin sonu da yok zaten. O yüzden ben şahsen insanlara spesifik bir liste verip bunları bilirsen yeterli demeyi uygun görmüyorum. Bu alanda ilerlemenin tek bir yolu da yok açıkçası. Naçizane fikrim iyi bir üniversitenin bilgisayar mühendisliği programını takip etmen. Günün sonunda kendi yolunu kendin çizebilir hale geleceğini düşünüyorum. Sonrası sende zaten.
Küçük bir not: AV için doktoraya kadar yolun var, haberin olsun. Zorunlu anlamında demiyorum ama eşdeğer bilgi birikimi olarak düşünebilirsin.
 
@Witches
  • Yazılan kod satırı sayısı herhangi bir şey için ölçüt değildir. Bazı günler sadece kod bile silebilirsin, bu iş üretmediğin anlamına gelmez.
  • GitHub, versiyon kontrol sistemi olan Git'i kullanan ve kullanıcıların kodlarını depolamalarına izin veren bir platformdur. Başka alternatifleri de vardır. Kullanmak zorunda değilsin. Bireyler ağırlıklı olarak portföylerini sergilemek için kullanıyorlar ya da açık kaynak projelere destek vermek için.
  • Yaptığın işe göre kopyala-yapıştırı bol bol da yapabilirsin, hiç yapmaya dabilirsin. Herhangi bir şeyin ölçütü değildir.
  • Yazılımcı gereksinimlere göre kod yazar. Yani istenen işi yapan kodu yazar ve geçer.
  • Yazılım mühendisi (yazılımcı, programcı gibi terimlerle eş anlamlı olarak da kullanılıyor ama pedantik olacağım burada) sadece kod yazmaz. Mimarı tasarım, gereksinim çıkarma, test yapma gibi işlerle de uğraşır. Dediğim gibi terimler birbirleri yerine kullanıldığı için kimin ne olduğu çok da net değil açıkçası, en azından kağıt üzerinde.
  • Nasıl ustalaşma konusu neyde ustalaşmak istediğine bağlı. Web mi geliştireceksin masaüstü mü? Gömülü mü geliştireceksin yoksa kişisel bilgisayar/sunucu programı mı? OS var mı yoksa baremetal mi? Hangi OS? Hangi mimari? Uzar da gider bu liste. Öğrenmenin sonu da yok zaten. O yüzden ben şahsen insanlara spesifik bir liste verip bunları bilirsen yeterli demeyi uygun görmüyorum. Bu alanda ilerlemenin tek bir yolu da yok açıkçası. Naçizane fikrim iyi bir üniversitenin bilgisayar mühendisliği programını takip etmen. Günün sonunda kendi yolunu kendin çizebilir hale geleceğini düşünüyorum. Sonrası sende zaten.
Küçük bir not: Av için doktoraya kadar yolun var, haberin olsun. Zorunlu anlamında demiyorum ama eş değer bilgi birikimi olarak düşünebilirsin.

Av için hangi mesleği önerirsin? Ben siber güvenlik uzmanı düşünüyorum.
 

Geri
Yukarı