• 1 hafta oldu bir projeye başladık. iyi kötü bir hashmap implementasyonu yazmaya çalışıyorum. generic, sıralı bir map olsun dedik.
    ihtiyaç üzerine doğdu ilerliyoruz.

    şimdi burada birçok yapı var öyle değil mi? node'ları tutan bucket'lar var. bucket'ların overflow olup olmamasını denetleyen mekanizmalar var, değerleri sıralamak için map içinde bir double linked list var vb. vb.

    proje bu kadar dallı budaklı olunca, 1 hafta ara verdikten sonra başına döndüğümde afallamayayım diye kafamdaki düşünceleri dökümante ediyorum. burayı yaz kenara, aşağıda önemi.

    lastsloc diye bir değişken mi var.
    diyorum ki,
    bu en son eklenen node. eklenmediyse map'te ya hiç değer yok ya da eklenen değerler de silindi. sıfırlandık.
    ardından field'ları, variable'ları düzgün isimlerle adlandırıyorum.

    hop ne oluyor bak.
    başlıyorum fonksiyonları yazmaya.
    dökümentasyonu ve değişken isimlerini okuyan copilot, öyle öneriler yapıyor ki şaşıp kalıyorum. bir yandan da egom törpüleniyor. ulan yazdıklarımı sadece ben yazmamışım, birileri de uğraşmış bunlarla. hem de açık dünyada. bir de kapalı yerlerde oluşturulan milyar satırları düşün...
    daha önce aynı işlerle uğraşanlar olmuş. öneri düşüyor önüme. ai benim basit ingilizcemden neyi nereye bağlamak istediğimi anlıyor.

    misal çok küçük bir örnek:
    map'teki size'ı döndüren bir fonksiyona ihtiyacım var.
    her bucket'taki aktif node sayısını bir for ile almam lazım veya her ekleme çıkarmada bunları bir field'a yazmam lazım.
    ne oluyor...
    bir for koyuyor. bütün bucket'ları dönüyor. bucket'ların içindeki aktif node sayısını bir variable'a yazıp return ediyor.

    eh, bunları elle yazmam 30 saniye alırdı. 2 saniyede bitti.

    hal böyleyken, yeni bir girişimin geldiği nokta buyken, artislik yapıp, "kalifiye yazılımcı" muhabbeti yapmayacaksın.
    biz bu işlerin içinde hep olacağız böyle öngörüyorum. çünkü her işimizi teknolojiye emanet etmek bizim yer yer güdülerimize karşı gelmek olacak. bir makinenin bizi uçurmasına alışmamız için henüz çok var. bir robotun bizi ameliyat etmesine bizi henüz belki çok var.
    fakat her geçen gün katkımız, görevimiz azalıyor. bizden öğreniyor ve bize satabiliyor.

    neyse, benim proje 2000-3000 satırlık bir şey olacak. o noktaya doğru gidiyoruz. basit bir şey de değil. epey algoritma, matematik var işin içerisinde. buna rağmen benim kadar kod yazıyor. bıraksam benden de fazlasını yazacak ama sonra fix'lemeyle uğraşıyorum.

    yüzyıllar önceki meslekler nasıl bittilerse, bizim işler de biter birgün, bundan hiç mi hiç şüphem yok.
    dünyada her zaman işinin ehli insana ihtiyaç var. görevinde yetenekli, donanımlı insanı kapıyorlar zaten. bu klasmanda takılıyorsanız az ötede böğürün.
    bir yandan da düşünün, dünyanın ne kadarı kalifiye işler yapmak istiyor? işiniz ne kadar beceri ve donanım istiyor?
    donanım birimlerinin güçlendiği, ekitmanların ucuzladığı dünyada kim eskisi kadar uğraşıyor kodunun daha performanslı olmasına.
    (işi sebebiyle bu konularla birebir uğraşanları tenzih ederim. kimsenin koduna, işine lafım yok).

    bu vesveselerin kısa bir özeti:
    her yazılımcı kendini vaz geçilmez sanıyor. evrenleri yaratanlar, dünyayı yönetenler illüminati ve bu arkadaşlar sanki.
    ben de bu işin içindeyim, merak etmeyin. sizi, bizi, dünyayı tanıyorum.
    bir avukata ne kadar ihtiyaç varsa, bir elektrikciye ne kadar ihtiyaç varsa, bir bankaya, bir okula, bir pazara ne kadar ihtiyaç varsa, yazılımcı da o kadar değerlidir işte.
    birkaç birim bir araya gelerek bu dünyalar, bu güzel topluluklar, bu harika kültürler inşaa ediliyor. kimsenin tek başına hiçbir payı yok. dünyaları ne siz yarattınız ne biz.
  • teoride oldukça güzel gelişmeler bunlar. ürün çıkarma hızınıza hız katıyor.
    ama, işte agile, scrum, chaos engineering diye kafa açan, her duyduğuna tuzlukla dört nala koşan proje yöneticileri varken sadece derde dert katmaya yaracak.
    şimdiden muhabbetler zihnimde canlanıyor;
    arkadaşlar copilot zaten sizin yerinize yazıyor artık bu iş niye bu kadar uzadı?
  • ucretli versiyonla birlikte "benim kodumu product iyilestirme icin kullanma" secenegi de gelmis.
  • beynimi okuyor serefsiz.
  • bu sevimli arkadasi yaklasik iki bucuk ay kullandim.
    nacizane birkac fikrimi paylasacagim.

    1. bazi diller icin gercekten harika isler cikariyor:
    hayatinizi javascript, python, go, c# yazarak geciriyorsaniz hic beklemeden alabilirsiniz. rust icin bir bilgim yok.
    benim title c++ developer. bana destek olmaktan fazla kostek oluyordu. o yuzden bir noktada bos yere para verdigimi hissettim ve biraktim.
    hatta soyle minik bir ani gibi bir sey yazayim:
    bir .net 6.0 crud uygulamasinin edit kismini yazarken form'un tamamini yazmisti. agzim acik bakakaldim. hide olan kisimlari dahi yerli yerine koymustu. sonra zaten namaza basl... saka saka.

    2. dokumentasyonu olmayan kodda pek bir sey yapamiyor:
    gayet acik aslinda. kodu okuyan veya daha sonra tekrar alan baska biri nasil docu olmayan koddan bir sey anlamiyorsa, burada da ayni sey gecerli. copilot da anlamiyor. random bir seyler oneriyor, tutarsa artik.

    3. benim yaptigim islerle alakali da olabilir ancak ben daha cok doc generator olarak kullandim:
    illa kole gibi kod yazdiracagim diye dusunmeyin. bazen yazip yazip docu eklemeyi, guncellemeyi umursamiyoruz / aklimiza gelmiyor. bu durumlarda birkac ipucu ile harika isler cikariyor.
    sirf sunun icin para verilebilir.

    4. bakis acisi kazandiriyor:
    kod denen sey biraz edebiyat gibi. ayni isi yapsak da o isi yapmanin mutlaka farkli yolari oluyor. bunlari gormek insana genis bir perspektif katiyor.
    normalde google'a gider ivir zivir arama yapariz.
  • mesleği yazılım olmayan, yazılım öğrenmek isteyen, hobi olarak ilgilenen kişiler için kesinlikle tavsiye ettiğim bir eklenti. özellikle öğrenme aşamasında basit ifadeleri bile google'da search ederek vakit kaybetmek yerine, kodunuzun içine comment satırı olarak yazıyorsunuz. daha commentinizi girerken sizin ne istediğinizi anlıyor ve cevabını vereceği soruyu bile kendisi tamamlıyor. özellikle basit işlemlerde mükemmel çalışıyor. yazılım öğrenirken pek çok insanın vazgeçmesine neden olan ufak tefek yazım yanlışları, dile özgü ifadeler vb bir çok etkeni sihirli bir şekilde çözerek yazılım öğrenirken gerçekten keyif almanızı sağlıyor.

    bunun ile kendi giden araba yapamazsınız. bunu bir hesap makinesi gibi düşünürseniz, çarpım tablosunu ezberlemek yerine size yapmak istediğiniz şeyin sonucunu söylüyor. problemin nasıl çözüleceğini kendiniz düşünmeniz ve araştırmanız gerekmekte. ama çözüm yolunda size yol gösteren en güçlü yardımcınız!
  • bu hedeyi bir çok kişi tüm kodu yazıyormuş gibi algılıyor.

    arkadaşlar yanlış bir algı bu. tüm yazılımcılar yıllardır internetten kod aratır, stack overflow gibi sitelerde birbirlerine sorular sorar. github copilot'un yaptığı şey bu eylemi yapay zeka sayesinde otomatikleştirmek.

    yani sallıyorum c#'ta bir resimde pixel rengini nasıl okuyacağımı google'dan aratmak yerine copilot benim için bu kodu projeme uygun bir şekilde yazıyor. yani zamanımı alacak bir işi anlık yapmamı sağlıyor.

    temel fark bu arkadaşlar. tüm kodu copilot yazıyor, yazılımcılar yatıyor, yazılımcılık bitecek falan boş söylemler. kendini geliştiren aktif yazılımcının değeri hiçbir zaman düşmeyecek, artacak.

    çok para var diye yazılım öğrenmeye çalışanlar bu gibi yapay zekalar sayesinde değer görmeyecek, yazılım dünyası da sadece gerçek yazılımcılara kalacak.
  • tamamen underrated. aktif olarak django ile backend geliştiriyorum, bazen viewsetleri, data aggregation functionlarını o kadar güzel tek atarak dolduruyor ki.

    fark ettiğim şu, eğer çalışırken mantıklı naming conventionları izliyorsanız ve logical ilerliyorsanız, acayip şeyler yapabiliyor. hala çok underrated.
  • github copilot ve chatgpt, orta capli startupimizin cto'su tarafindan cok buyuk bir arti olarak kullanim onerisiyle geldi. normalde denemeyecektim ama toplantidan sonra her ikisini aktif olarak kullanmaya basladim. chatgpt'de stackoverflow gibi sitelerde arayacaginiz kodlari arayabilir ve daha etkili sekilde problem cozumlemesine kavusabilirsiniz. ancak github copilot o kadar iyi ki zaman kazandiriyor.

    ben react yaziyorum, ozellikle hook veya import konusunda cok yardimci oluyor ve bazi array fonksiyonlari kolayca yaziliyor. kucuk islerle zaman kaybetmemek icin 10$ deger ve asiri ucuz bile. daha efektif olmak en onemlisi. kod gidisatina gore kod onermesi veya "bana su islemi yapacak bir fonksiyon ver" dedikten sonra direkt vermesi harikulade bir sey. deneyin gorun.

    yapay zekâyi kullanabilen ve kullanamayanlarin farki cok acilacak. alisin simdiden.
  • 30 dakika kafa yormam gereken bir algoritmaya 10dk kafa yormamı sağlayan harika bir araç. kafamda algoritmayı kuruyorum ama koda dökmek biraz zorluyorsa copilota uzun bir yorum satırı ile açıklıyorum yapacağım işi ve bana bir kod çıkartıyor. ben de bu koda bakarak kafamda yazmak istediğim kodu daha iyi canlandırıp baştan kendim yazıyorum.

    boilerplate yazma konusunda çok destek çıkıyor ve birbirelrini tekrar eden fonksiyon/değişken tarzı işlerde de çok iyi oluyor.

    mesela alttaki değişkenlerin sadece 'today' ve 'yesterday' olanları ben yazdım gerisini otomatik doldurdu. bir tek threemonthsago'yu kendim koydum o da olsun o kadar.

    const today = cleardate(dayjs());
    const yesterday = today.subtract(1, 'day');
    const weekago = today.subtract(1, 'week');
    const monthago = today.subtract(1, 'month');
    const threemonthsago = today.subtract(3, 'month');
    const yearago = today.subtract(1, 'year');
hesabın var mı? giriş yap