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
Hacker News görüşleri
İnsanlar farklı şekillerde öğrenir
Getting startedkod örneklerini atlarlarYazma ve empati becerileri önemlidir
Herkes örneklerden öğrenmez
Kod insanlar için yazılır
Code Completekitabından alıntıKod yazmak insanlar içindir
IDE'lerin gelişimine dair görüşler
Blog yazısı tanıtımı
Move Fast & Document Thingsbaşlıklı bir blog yazısı yazdıProgramlama öğrenme yöntemine dair görüşler
Örnekler ve temel kavramların önemi
Getting Startedkılavuzlarında örnekler bulunmalıdır