"Paper" metin editörünün solo geliştiricisinin 9 yılı
- 2015'te sıradan bir full-stack web geliştiricisiydi ve Apple geliştirme dünyasından uzaktı.
- Mac kullanırken bağımsız geliştiricilerin uygulamalarına ilgi duymaya başladı; basit ve zarif bir Markdown editörü olan iA Writer'dan ilham alarak benzer bir uygulama yapmaya karar verdi.
- Mac için yerel bir metin editörü geliştirmek amacıyla Xcode, AppKit, Objective-C gibi yeni bir teknoloji yığınını öğrenmeye başladı.
- Uygulamaya Paper adını verdi ve aşırı minimalizmi hedefleyerek editörü sade bir dikdörtgen olarak tasarladı.
- 2017'de Mac uygulamasını Mac App Store'da yayımladı, 2019'da ise iOS uygulamasını çıkardı.
Yerel uygulamayı seçme nedeni
- Electron uygulaması yerine yerel uygulamayı seçmesinin nedeni, en iyi kullanıcı deneyimini sunmayı hedeflemesiydi.
- Yerel uygulamalar hafif ve hızlıdır; ayrıca metinle ilgili özgün işlevleri hayata geçirmek için daha fazla yöntem sunar.
Objective-C'yi seçme nedeni
- 2015'te Swift henüz erken aşamadayken, Objective-C ve Swift ile ayrı ayrı boş Xcode projeleri derleyip ortaya çıkan
.app paketlerini karşılaştırdı.
- Swift uygulaması Swift runtime'ını içerdiği için yaklaşık 5MB'tı; Objective-C uygulaması ise yaklaşık 100KB ile son derece hafifti.
- Daha hafif, dağıtılabilir bir uygulama istediği için Objective-C'yi seçti.
Üçüncü taraf bağımlılıkları
- Paper'ın hiçbir üçüncü taraf bağımlılığı yok.
- Her şeyi kendisi inşa ederek rakiplerine karşı küçük bir avantaj elde etti.
- Örneğin, Paper'ın Markdown ayrıştırma motoru özelleştirilmiş durumda ve geleneksel Markdown editörlerine kıyasla daha az Markdown sözdizimini destekliyor.
Vizyon
- Paper'ın ilk vizyonu, iA Writer'ın temel işlevlerini taşıyan ama daha zarif ve daha minimalist bir pakette sunulan bir ürün oluşturmaktı.
- Kullanıcının dikkatini dağıtan unsurları en aza indirerek odaklanmayı artırmaya odaklandı.
- Zamanla Paper, minimalizmini korurken kademeli olarak özellik ekleyerek pazardaki yerini buldu.
Mimari
- Paper'ın kodu iki scope'tan oluşuyor: uygulama kapsamı ve belge kapsamı.
- Her kapsam için, görünümleri ve widget'ları tanımlayan ve kapsam içindeki modülleri birleştiren bir storyboard tanımlandı.
- Modüller, uygulama içindeki işlevlerin bir bölümünden sorumlu Objective-C sınıflarıdır; işlevleri belirli özelliklerle ilişkili tek bir yerde toplar.
Çapraz platform kodu
- AppKit ve UIKit benzer görünse de birçok açıdan farklıdır.
- Bu farkları çözmek için Objective-C'nin macro ve category özelliklerini kullandı.
Hata ayıklama
- Apple framework'lerinde kod yerine dokümantasyonu okumak gerekir; ayrıca breakpoint kullanarak derlenmiş stack trace'i analiz eder.
Ücretli özellikler
- 2015-17 döneminde abonelikler henüz yaygın değildi ve uygulama mağazalarında tek seferlik ödeme olağandı.
- Ücretli özellikleri kullanıcı dostu bir şekilde sunmak istediği için, işlevsel değil yalnızca kozmetik yükseltmeleri ücretli yaptı.
Fiyatlandırma
- İlk başta iki ayrı Pro özellik seti için ayrı ayrı 5 dolarlık tek seferlik ödeme ile başladı.
- Şu anda fiyatlandırma, aylık 10 dolar veya ömür boyu 100 dolar olan tek bir paket şeklinde.
- Fiyat deneyleri sayesinde, kullanıcıların tanınmayan bir geliştiricinin uygulamasına 100 dolara kadar ödeme yapmaya istekli olabileceğini keşfetti.
Zorlu kısımlar
- Metin editörleri karmaşıktır ve her OS güncellemesiyle birlikte metin ekleme, güncelleme ve etkileşim için yeni yöntemler eklenir.
Gimmick'ler
- Things uygulamasından ilham alan pencere yeniden boyutlandırma sekmesi gibi keyifli özellikler ekledi.
GN⁺ görüşü:
- Yenilikçi yaklaşım: Geliştiricinin, yerel uygulama geliştirme konusunda deneyimi olmamasına rağmen kullanıcı deneyimini en öncelikli unsur olarak görerek Paper'ı geliştirmiş olması etkileyici. Bu, yazılım geliştirmede kullanıcı merkezli tasarımın ne kadar önemli olduğunu gösteriyor.
- Öğrenme ve büyüme: Yeni bir teknoloji yığını öğrenip bunun üzerinden bir ürün ortaya çıkarması, başlangıç seviyesindeki yazılım mühendisleri için de ilham verici olabilir. Bu, sürekli öğrenmenin ve meydan okumanın geliştirici olarak büyümek için ne kadar kritik olduğunu vurguluyor.
- Kullanıcı deneyiminin önemi: Paper'ın başarılı unsurlarından biri, kullanıcı deneyimine gösterilen özen ve minimalizme olan güçlü odak. Bu da kullanıcıların gerçekten ne istediğini anlayıp bunu ürüne yansıtmanın ne kadar önemli olduğunu ortaya koyuyor.
7 yorum
Apple geliştirici belgelerinin çoğu pek kullanıcı dostu değil; bu yüzden belgeleri iyice didiklemek gerekiyor... bir de bilgi yetmezse SDK arayüzlerini kurcalamanız gereken durumlar çok oluyor... bu açıdan bakınca da saygı uyandırıyor.
"Makyaj niteliğinde yükseltme"nin ne olduğunu merak etmiştim; meğer özgün metinde
visual changesyazıyormuş."Makyaj niteliğinde" diye bir ifade kullanılıyor mu? Ben bunu ilk kez gördüm.
neo bir AI bot olduğu için çeviri mekanik olmuş galiba haha
Orijinali biraz kozmetik bir yükseltme gibi duruyor.
O zaman estetik bir yükseltme gibi bir şey daha iyi görünüyor...
Gerçekten rol model olabilecek bir geliştirici.
Hacker News yorumları
"Asıl sihir, kenarda köşede kalan incelikli detaylarda"
"iOS uygulama geliştiricisi olarak 15 yıllık deneyime dayanan harika bir yazı"
"Apple platformlarında düşük/sıfır bağımlılıkla geliştirme yapabilme imkânı"
"Swift'in ilerleyişi ve platforma gömülü olma ya da binary optimizasyonlarına dair tahminler"
"Bağımlılık seçimine yönelik güvensizlik ve öğrenmenin önemi"
"AppKit ve Mac geliştirme için öğrenme kaynakları ve tavsiye isteği"
"Detaylara gösterilen özen ve ustalığa duyulan saygı"
"Çevirerek geri alma jestine dair ilginç bir gönderme"
"Blogun ve uygulamanın minimalizmine övgü"
"Apple geliştirme ekosisteminde SDK koduna erişim eksikliğine duyulan şaşkınlık"