1 puan yazan GN⁺ 2024-09-28 | 1 yorum | WhatsApp'ta paylaş

Bilgisayar için kod yazmak zordur, ama insanlar için kod yazmak daha da zordur

  • Bilgisayar için kod yazmak zaten zordur. Çünkü büyük iş hedeflerini küçük mantıksal komutlara ayırmak gerekir.
  • Ama insanlar için kod yazmak daha da zordur. Bu, bilgisayar bilimi ile psikolojinin birleştiği bir iştir.
  • Richard Feynman'ın dediği gibi, elektronların duyguları olsaydı fiziğin ne kadar zor olacağını hayal edin. Bu, insanlar için programlama yapmayı açıklamak için yerinde bir benzetmedir.

Başlangıç bizzat ürünün kendisidir

  • Kullanıcı geri bildirimlerini dinlemek önemlidir, ancak geri bildirimlerin çoğu ürünü sık kullanan power user'lardan gelir.
  • Bir hayatta kalma yanlılığı vardır. Hiç başlamamış kullanıcıların geri bildirimlerini neredeyse hiç duymayız.
  • Tüketici ürünleri uzun süredir onboarding sürecini optimize ediyor. Geliştirici araçları için de aynı şey geçerli olmalıdır.
  • Onboarding sürecini ürünün bir parçası olarak görmeli ve kurulumu en aza indirerek kullanıcıların ürünü birkaç dakika içinde kullanabilmesini sağlamalısınız.

İnsanlar 'çekirdek kavramlardan' değil, örneklerden öğrenir

  • İnsanlar pattern matching konusunda çok iyidir. Buna karşılık bilgisayarlar katı mantığı izler.
  • Birçok geliştirici aracı dokümantasyonu bilgisayar programı gibi yazılır. Bu, insanlar için uygun değildir.
  • Örnekler üzerinden öğrenmek daha etkilidir. Örnekler, kullanıcının aracı anlamasına yardımcı olur.

Başarının tuzağına düşmek

  • Programlamanın varsayılan modu hata düzeltmektir. Kullanıcılar zamanlarının çoğunu hataları düzeltmeye harcar.
  • Hataları başarıya yönlendirmek önemlidir.
  • Hataları bir fırsata çevirip kullanıcıyı doğru yola yönlendirmelisiniz. Exception handling içine kod parçacıkları eklemeli ve uyarı mesajlarıyla yardım sağlamalısınız.

Kavramsal aşırı yükten kaçınmak

  • Yeni kavramları anlamak zorunda olmak sürtünme yaratır.
  • 2-3 kavram sorun değildir, ama 8 yeni kavram öğrenmek ağır gelir.
  • Az sayıda kavramla güçlü özellikler sunan framework'ler idealdir. Örneğin React, birkaç basit kavramla güçlü işlevler sunar.

Kavramsal ördek ilkesi

  • Yeni bir kavram tanıtırken kullanıcıya tanıdık gelen terimleri kullanmak önemlidir.
  • Örneğin, yeni bir değeri değerlendirme işine 'fonksiyon' demek iyidir. Bu, kullanıcının mevcut zihinsel modelini kullanabilmesini sağlar.

Programlanabilirlik

  • Kullanıcılar kod tabanında yaratıcı işler yapacaktır.
  • Framework'ün neredeyse her şeyi 'programlanabilir' olmalıdır.
  • CLI yerine doğrudan kod içinden çağrılabilmeli ve yapılandırmalar SDK ya da API'ye dönüştürülmelidir.

Sihir, varsayılanlar ve syntax sugar konusunda dikkatli olun

  • Varsayılanlar ve sihirli özellikler dikkatle eklenmelidir.
  • Bir varsayılan %97'den fazla, bir sihirli özellik ise %99'dan fazla durumda geçerli olmayacaksa, bunları eklemekten kaçının.
  • Kod yazmak golf değildir. Amaç olabildiğince az kod yazmak değil, okunabilirliği öne çıkarmak olmalıdır.

İnsanlar için kod yazmak zordur

  • Çoğu şey immutable olmalıdır.
  • 'Scaffolding' (kod üretimi) kaçınılması gereken bir şeydir.
  • Geri bildirim döngüsü çok hızlı hale getirilmelidir.
  • Kullanıcıların kolayca başa çıkabilmesi için bir kaldırma/terk etme süreci bulunmalıdır.
  • Dokümantasyon ve örneklerdeki kod parçacıkları için otomatik testler kullanılmalıdır.

GN⁺ özeti

  • Bu yazı, insanlar için kod yazmanın zorluğunu ve buna yönelik çözümleri ele alıyor.
  • Kullanıcı dostu geliştirici araçları üretmek önemlidir ve bu süreç onboarding ile başlar.
  • Örnekler üzerinden öğrenmek etkilidir; hataları başarıya yönlendirmek ise temel noktadır.
  • Yeni kavramlar tanıtılırken kullanıcıya tanıdık gelen terimler kullanılmalı ve programlanabilirlik göz önünde bulundurulmalıdır.
  • Varsayılanlar ve sihirli özellikler dikkatle eklenmeli, okunabilirlik ön planda tutulmalıdır.

1 yorum

 
GN⁺ 2024-09-28
Hacker News görüşleri
  • İnsanlar farklı şekillerde öğrenir

    • Önce temel kavramları anlayıp ardından örneklere bakmayı tercih ederler
    • Pek çok öğretici, Lego birleştirir gibi adım adım elden tutan bir yapıdadır
    • Kararların nasıl ve neden alındığını bilmek isterler
    • Yeni bir kütüphane ya da framework'e yaklaşırken önce giriş metnini okur, Getting started kod örneklerini atlarlar
    • İleri seviye bölümlerde kavram tartışması daha fazla olduğu için önce onları incelerler
  • Yazma ve empati becerileri önemlidir

    • Kod yazmak ile uygulama geliştirmek farklı şeylerdir
    • Dışa dönük geliştiriciler mimari ve dokümantasyona daha çok önem verir
    • Sadelik önemlidir
    • Uygulama geliştirmek deneme yazmaya benzer
    • Framework'ler geliştiricinin organize olma becerisini zayıflatır
  • Herkes örneklerden öğrenmez

    • Genelden özele öğrenen insanlar da vardır
    • Bu insanlar K12 eğitiminde dışarıda kalır
  • Kod insanlar için yazılır

    • Problemi kapsamlı biçimde anlamak, paydaşlarla iş birliği yapmak ve verimli algoritmalar tasarlamak önemlidir
    • Kod yazmak zor değildir
  • Code Complete kitabından alıntı

    • "Programlamanın küçük bir kısmı, bilgisayarın okuyabilmesi için program yazmaktır; büyük kısmı ise başka insanların okuyabilmesi için yazmaktır"
  • Kod yazmak insanlar içindir

    • Bilgisayar için makine komutları yeterlidir
    • Kod, insan düşüncesini biçimselleştirmenin bir yoludur
  • IDE'lerin gelişimine dair görüşler

    • Temel intellisense gelişti, ancak kodlamanın kavramsal çerçevesi çok değişmedi
    • Yeni araçlara ve kütüphanelere erişmek kolaylaştı
    • Kodlama işini bilgisayara bırakıp üretime odaklanmak istiyorum
    • Dilin küçük ayrıntılarını otomatik ele alan araçlara ihtiyaç var
    • Ekranda birden fazla metodu aynı anda görmek istiyorum
    • Veri dönüşümünü otomatik olarak halletmek istiyorum
  • Blog yazısı tanıtımı

    • Move Fast & Document Things başlıklı bir blog yazısı yazdı
    • Kod yazma kültürünü paylaştı
  • Programlama öğrenme yöntemine dair görüşler

    • Küçük programlar yazarak öğrendi
    • Temel bilgisi eksik olduğu için daha iyi yazılım geliştirme işlerine başvuramadı
    • Temelleri her zaman öğrenmek önemlidir
  • Örnekler ve temel kavramların önemi

    • Hem örnekler hem de temel kavramlar önemlidir
    • İyi tanımlanmış ve iyi dokümante edilmiş temel kavramlara ihtiyaç vardır
    • Getting Started kılavuzlarında örnekler bulunmalıdır