Searching...
Türkçe
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
More Joel on Software

More Joel on Software

Further Thoughts on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and ... or Ill Luck, Work with Them in Some Capacity
tarafından Joel Spolsky 2008 320 sayfa
4.05
546 değerlendirmeler
Dinle
Try Full Access for 7 Days
Unlock listening & more!
Continue

Anahtar Çıkarım

1. Harika geliştiriciler bulmak ve onları elde tutmak, aktif işe alım ve özel bir ortam gerektirir.

Harika yazılım geliştiriciler, aslında her alandaki en iyi insanlar, basitçe piyasada bulunmazlar.

İşe alım aktif olmalı. En iyi geliştiriciler nadiren açık iş ilanlarına başvurdukları için, şirketlerin onları proaktif şekilde araması gerekir. Bu, ilgili konferanslara katılmak, staj programlarıyla yeteneği erken keşfetmek ve şirket ya da ürün çevresinde benzer düşünen insanları çekmek için bir topluluk oluşturmak anlamına gelir. Sadece büyük, genel iş sitelerine güvenmek, kalitesiz çok sayıda başvuru almanıza yol açar.

Çalışma ortamı önemlidir. Ücretin ötesinde, harika geliştiriciler belirli koşulları ararlar. Odaklanmak için özel ofisler, yüksek kaliteli ekipmanlar (monitörler, sandalyeler), zeki ve saygılı sosyal bir ortam ve işlerinde önemli ölçüde bağımsızlık ve özerklik isterler. Geliştiricilere saygı göstermek ve onları “yıldız” gibi görmek, onları çekmek ve elde tutmak için kritik önemdedir.

Para ikinci plandadır. Rekabetçi maaş adalet için gereklidir ancak en iyi yetenekler için genellikle birincil motivasyon değildir. Geliştiriciler maaş konusunda şikayet ediyorsa, bu genellikle işin diğer yönlerinden memnuniyetsizliğin belirtisidir; saygısızlık, kötü çalışma koşulları veya politik sorunlar gibi. Yüksek maaş tek başına kötü bir ortamı telafi etmez.

2. Yazılımda etkili yönetim, sadece emirler veya teşvikler değil, kimlik ve paylaşılan bilgi üzerine kuruludur.

Buradaki amaç, insanları ulaşmaya çalıştığınız hedeflerle özdeşleştirmektir.

Emir-komuta başarısız olur. Askeri tarzda, liderlerin emir yağdırdığı yönetim yüksek teknoloji ekiplerinde etkisizdir. Yöneticiler genellikle bireysel katkı sağlayanların sahip olduğu teknik detaylara hakim olmadığından kötü kararlar alınır. Bu yöntem, görevlerin “neden”ini anlamak isteyen zeki ve özerk geliştiricileri de uzaklaştırır.

Ekonomi 101 ters teper. Sadece finansal teşviklerle (belirli metriklere bağlı bonuslar) yönetmek ters sonuç verir. Bu, içsel motivasyonu zayıf dışsal motivasyonla değiştirir ve insanların metriği optimize etmek için sistemi manipüle etmelerine yol açar. Bu yaklaşım, etkili sistemler kurma ve insanları eğitme sorumluluğundan kaçmaktır.

Kimlik ve bilgi güçlendirir. En etkili yöntem, kimlik yönetimidir; ekip içinde paylaşılan amaç ve bağlılık duygusu yaratmak (bir aile gibi). Yöneticiler, bireylerin değişen koşullarda bile organizasyonun hedefleriyle uyumlu kararlar alabilmesi için gerekli bilgileri (finansal hedefler, pazar durumu gibi) paylaşmalıdır.

3. Gerçekten yetkin programcılar için “zor” kavramlar da dahil güçlü bir teknik temel şarttır.

Pointerlar ve özyineleme, soyutlama yapabilme, bir problemi aynı anda farklı soyutlama seviyelerinde düşünebilme yeteneği gerektirir.

Java okulları yetersiz kalır. Sadece Java ve nesne yönelimli programlamaya odaklanan üniversiteler, öğrencileri temel becerilerle donatamayabilir. Pointerlar (genellikle C’de öğretilir) ve özyineleme (fonksiyonel programlama) gibi kavramlar, zihinsel çevikliği geliştiren ve zorlayıcı “eleme” materyalleridir. Bunlar olmadan işletim sistemleri gibi düşük seviyeli sistemleri veya paralel işlem gibi yüksek soyutlamaları anlamak zorlaşır.

Sözdiziminin ötesinde. C veya Scheme gibi dilleri öğrenmenin değeri sadece o dilleri bilmek değil, beynin nasıl çalıştığını eğitmeleridir. Bu diller, programcıları bellek yönetimi, performans ve farklı soyutlama seviyelerini aynı anda düşünmeye zorlar. Bu zihinsel esneklik, sağlam yazılım mimarisi tasarlamak ve karmaşık problemleri çözmek için hayati önemdedir.

Yenilik üzerindeki etkisi. Bu temel kavramlara maruz kalmamak yeniliği engeller. Örneğin, Google’ın ölçeklenebilirliğinin temelini oluşturan MapReduce algoritması doğrudan fonksiyonel programlama kavramlarından (Map ve Reduce) gelir. Bu altyapıya sahip olmayan geliştiriciler, bu tür paradigmaları icat etmekte veya anlamakta zorlanabilir.

4. Yazılım geliştirme, bilgisayar biliminden ayrı bir zanaattır; pratik beceriler ve net iletişim gerektirir.

Teknik konularda açık yazabilmek, sıradan bir bireysel katkı sağlayan programcı ile lider arasındaki farktır.

Bilgisayar bilimi ve geliştirme. Bilgisayar bilimi diploması teorik temeller sağlar ama otomatik olarak yazılım geliştirmeyi öğretmez. Gerçek dünyada kodlama deneyimi kazanmak için pratik, programlama ağırlıklı dersler şarttır. Birçok seçkin üniversite teoriyi önceliklendirir, pratik beceriler ise başka yerlerde öğrenilir.

Yazmanın önemi. Programcıların açık ve etkili yazabilme yeteneği çok önemlidir. Bu, Linux’un yaratıcısı Linus Torvalds gibi savunuculuk yapmayı, organizasyon içinde ikna etmeyi, net spesifikasyon ve dokümantasyon yazmayı ve etkili işbirliği kurmayı sağlar. İyi yazan programcılar daha etkili olur ve işletme için daha değerlidir.

Şirket içi tuzaklar. Birçok programlama işi, yazılım şirketi olmayan firmalar için “şirket içi yazılım” geliştirmeyi içerir. Bu roller tatmin edici olmayabilir çünkü:

  • İş genellikle pratik, zarif olmayan çözümlerle yapılır.
  • Projeler “yeterince iyi” olunca durur, cilalama yapılmaz.
  • Programcılar, ana iş birimlerine kıyasla düşük statüde olabilir.
    Yazılımın işin kendisi olduğu ürün şirketleri, zanaatkarlık gururu ve kariyer gelişimi için daha fazla fırsat sunar.

5. Başarılı yazılım tasarımı, kullanılabilirliğin ötesinde sosyal dinamikleri ve duygusal bağı kapsar.

İnsanların gerçekten yapmak istediği harika bir şey yapan uygulama, kullanımı berbat olsa bile başarılı olabilir.

Kullanılabilirlik gerekli ama yeterli değil. Yazılımı kolay kullanılır yapmak önemli olsa da başarı için tek başına yeterli değildir. Güçlü bir ihtiyacı çözen veya çekici özellikler sunan ürünler, kötü kullanılabilirliğe rağmen başarılı olabilir (örneğin, erken Napster, kısa mesajlaşma). Öte yandan, çok kullanılabilir ama problemi çözmeyen yazılım başarısız olur.

Sosyal arayüz tasarımı. İnsanlar arası etkileşimi kolaylaştıran yazılımlar (sosyal ağlar, forumlar) için “sosyal arayüz” kritik önemdedir. Bu, yazılımın kullanıcı davranışlarını ve topluluk dinamiklerini nasıl etkilediğinin tasarlanmasıdır. Bireysel kullanıcıları kısıtlamak gerekse bile toplumun başarısını desteklemek amaçlanır (örneğin, spam kabulünü sahte göstermek).

Duygusal çekicilik önemlidir. Harika yazılımlar, kullanıcıların duygularına hitap eden “yüksek notalar” yakalar. Bunlar şunları içerir:

  • Estetik ve güzellik (örneğin, iPod tasarımı)
  • Mizah ve kişilik (örneğin, Winamp’ın web sitesi metni)
  • Kullanıcıların kontrolü ellerinde hissetmesi (örneğin, iPod kaydırma tekerleği geri bildirimi)
    Bu unsurlar genellikle en yetenekli ekiplerin eseridir ve ortalama ekiplerin taklit etmesi zordur, sürdürülebilir rekabet avantajı yaratır.

6. Zor, “karmaşık” problemleri çözmek gerçek iş değeri ve rekabet avantajının kaynağıdır.

Piyasa, kolay problemlere değil, karmaşık problemlere çözüm için ödeme yapar.

Değer zorluktan gelir. Her işin zor ve tatsız bir çekirdek problemi (“çamur”) vardır. Bu zor problemleri çözme yeteneği piyasada karşılık bulur (“altın”). Kolay problemler üzerine kurulu işler düşük giriş engeline ve yoğun rekabete maruz kalır.

Basit her zaman değerli değildir. Basit ve kullanımı kolay uygulamalar cazip olsa da, kullanıcı veya iş için önemli bir karmaşıklığı çözmüyorsa derin değeri olmayabilir. Tüm “karmaşık” yönlerden kaçınan şirketler (örneğin, farklı ortamlarda kurulabilen yazılımı desteklemekten kaçınanlar) pazarlarını ve gelirlerini sınırlayabilir.

Tasarım da karmaşık bir problemdir. Zarif ve yüksek kullanılabilirlikte yazılım tasarlamak başlı başına zor bir iştir. Önemli yetenek ve çaba gerektirir, bu da yüzeyde basit görünse bile rakiplerin kopyalaması zor, sürdürülebilir rekabet avantajı sağlar. Sürekli yeni ve zor problemleri çözmek, işin büyümesini ve pazarını genişletmesini sağlar.

7. Gerçekçi planlama, veriye dayalı olarak, kapsamı yönetmek ve başarılı ürünler teslim etmek için hayati önemdedir.

Harcadığınız zamanın karşılığını en çok veren işlere odaklanmak istersiniz. Ve ne kadar zaman alacağını bilmeden, bu işin maliyetini hesaplayamazsınız.

Geliştiriciler plan yapmaya direnç gösterir. Programcılar genellikle plan yapmayı gerçekçi olmayan veya zahmetli bir iş olarak görür. Oysa planlar, özellik önceliklendirme ve kaynak tahsisi için bilinçli kararlar alınmasını sağlar. Plansız projeler genellikle sapar ve gecikir.

Kanıta Dayalı Planlama (EBS). Güvenilir bir yöntem, işi küçük görevlere (16 saatten az) bölmek, gerçek harcanan zamanı (kesintiler dahil) takip ederek bireysel “hız” (tahmin/gerçek) hesaplamak ve bu tarihçeyi Monte Carlo simülasyonunda kullanarak olası teslim tarihleri aralığını güvenle tahmin etmektir. Bu, tahmin yanlılıklarını ve öngörülemeyen faktörleri hesaba katar.

Planlar kesintiyi zorunlu kılar. Gerçekçi planlamanın önemli faydası, planlanan özelliklerin mevcut zamandan fazla olduğunu ortaya koymasıdır. Bu da gerekli özellik kesintilerini zorunlu kılar, en değerli özelliklerin önceliklendirilmesini ve ürünün daha erken teslim edilmesini sağlar. Plan baskısıyla kesilen özellikler genellikle en az önemli olanlardır.

8. Mevcut kodu yeniden düzenlemek ve iyileştirmek, sıfırdan başlamaktan genellikle üstündür.

Daha az deneyimli bir şirket, belki hızlı paket teslimatı işinden gelen bir yönetici tarafından yönetiliyorsa, kodu çöpe atıp baştan başlamaya karar verebilirdi.

Yeniden yazmak risklidir. Mevcut kod karmaşıksa veya amacına uygun tasarlanmamışsa sıfırdan başlamak cazip görünür. Ancak bu genellikle hatalıdır; birikmiş bilgi (hata düzeltmeleri dahil) kaybedilir ve tahmin edilenden çok daha uzun sürer, çoğu zaman teslim edilemez veya yeni sorunlar yaratır.

Temizlemek daha etkilidir. Daha iyi yaklaşım, mevcut kod tabanını “temizlemek” veya yeniden düzenlemektir. Bu, yeni özellik eklemeden veya mevcut işlevselliği bozmadan, iç yapıyı, okunabilirliği ve sürdürülebilirliği küçük, mantıklı dönüşümlerle iyileştirmektir. Bu süreç kademeli ve öngörülebilirdir.

Yeniden düzenlemenin faydaları. Kodun satır satır temizlenmesi, yeni özellik eklemeyi kolaylaştırır, yeni hatalar yapma olasılığını azaltır (karmaşık mantığı yeniden yazmadığınız için) ve mevcut kodda yer alan değerli, zor kazanılmış bilgiyi korur. Daha sağlıklı bir kod tabanı için daha verimli ve az riskli bir yoldur.

9. Yazılım fiyatlandırması, pazar dinamikleri, müşteri değeri ve uzun vadeli stratejiyi anlamayı gerektirir.

Yazılım şirketlerinin yaptığı en büyük hata, çok az ücret talep etmeleri, yeterince gelir elde edememeleri ve iflas etmeleridir. Daha da büyük hata ise, evet, en büyük hatadan bile büyük olan, çok fazla ücret talep etmeleri, yeterince müşteri bulamamaları ve iflas etmeleridir.

Talep eğrileri aşağı eğimlidir. Genel olarak, fiyat arttıkça müşteri sayısı azalır. Ama amaç satılan birim sayısını maksimize etmek değil,
[HATA: Yanıt tamamlanmadı]

Son güncelleme::

Want to read the full book?

İncelemeler

4.05 üzerinden 5
Ortalama 546 Goodreads ve Amazon'dan gelen derecelendirmeler.

More Joel on Software, Joel Spolsky’nin yazdığı blog yazılarından oluşan bir derlemedir ve yazılım geliştirme ile iş dünyasının çeşitli yönlerini ele alır. Okuyucular, Spolsky’nin esprili dili, derinlemesine analizleri ve anlaşılır anlatım tarzını takdir eder. Kitap, programlama, yönetim ve yazılım sektörü hakkında değerli öneriler sunar. Bazı bölümler güncelliğini yitirmiş olsa da, birçok temel ilke hâlâ geçerliliğini korumaktadır. İncelemelerde, özellikle yazılım geliştirme veya girişimcilik alanında olanlar için kitabın hem keyifli hem de bilgilendirici olduğu vurgulanmıştır. Eleştirmenler, bazı tekrarlar ve eski içeriklere dikkat çekse de, genel olarak kitap pratik bilgeliği ve sürükleyici anlatımıyla olumlu karşılanmaktadır.

Your rating:
4.46
30 değerlendirmeler

Yazar Hakkında

Joel Spolsky, tanınmış bir yazılım geliştiricisi, yazar ve girişimcidir. Fog Creek Software ve Stack Overflow’un kurucu ortaklarından biri olan Spolsky, etkili blogu "Joel on Software" ile geniş kitlelere ulaşmıştır. Yazım tarzı, açıklığı, esprili dili ve karmaşık kavramları herkesin anlayabileceği şekilde anlatabilme yeteneğiyle takdir toplamaktadır. Microsoft’taki deneyimi de dahil olmak üzere yazılım sektöründeki engin tecrübesinden beslenerek, programlama, yönetim ve iş stratejileri üzerine değerli içgörüler sunar. "More Joel on Software" gibi kitapları, popüler blog yazılarının derlemelerinden oluşur ve yazılım profesyonelleri ile girişimciler için pratik tavsiyeler ve düşündürücü fikirler barındırır. Spolsky’nin çalışmaları, yazılım geliştirme topluluğu üzerinde derin bir etki yaratmış ve onu alanında saygın bir isim haline getirmiştir.

Listen
Now playing
More Joel on Software
0:00
-0:00
Now playing
More Joel on Software
0:00
-0:00
1x
Voice
Speed
Dan
Andrew
Michelle
Lauren
1.0×
+
200 words per minute
Queue
Home
Swipe
Library
Get App
Create a free account to unlock:
Recommendations: Personalized for you
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Ratings: Rate books & see your ratings
200,000+ readers
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 4
📜 Unlimited History
Free users are limited to 4
📥 Unlimited Downloads
Free users are limited to 1
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Aug 3,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
200,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Start a 7-Day Free Trial
7 days free, then $44.99/year. Cancel anytime.
Scanner
Find a barcode to scan

Settings
General
Widget
Loading...