Her programcının okuması gereken en etkili kitap nedir? [kapalı]


1439

Zamanda geriye gidip kendinize bir geliştirici olarak kariyerinizin başlangıcında belirli bir kitap okumayı söyleyebilseydiniz, hangi kitap olurdu?

Bu listenin çeşitlendirilmesini ve çok çeşitli şeyleri kapsamasını bekliyorum.

Arama yapmak için: Sağ üst köşedeki arama kutusunu kullanın. Mevcut sorunun cevaplarını aramak için tuşunu kullanın inquestion:this. Örneğin:

inquestion:this "Code Complete"

8
Bu konuya göz atmak, çoğu programla ilgili kitabın ne kadar çirkin olduğunu anlamamı sağlıyor. Çok iyi bir iplik olsa!
Carl Bergquist

23
İlginç olan şu ki, başlık " Her programcının okuması gereken en etkili kitap nedir?" Yazarken, dile özgü konularla ilgilenen birkaç kitap var. Tanım gereği ve belirtildiği gibi, burada önerilen kitaplar, çoğu programcının henüz okumayı öğrenmediğini kanıtlayan dil agnostik konuları ile ilgilenmelidir.
Kale

19
Zamanda geriye gidip kendime bir şey okumasını söyleseydim, yanımda taşıdığım bir gazete ya da spor olgusu kitabı olsa iyi olur. Başka bir şey iyi bir zaman yolculuğu israfıdır. :-)
jmucchiello

32
Bilirsiniz, aşağı inmekten endişe etmiyorsam TÜM bir partiye oy verdim, trolle gidip Alacakaranlık öneririm. "AYRICA solgun ve güneşten kaçınan insanlar hakkında!"
Jacob Bellamy

3
Birisi kitaplardaki tekrarlanan girişleri silerek cevapları temizleyebilir mi? Bunların çoğu zaten oy kullanmıştı.
rao

Yanıtlar:


1746
  • Kod Tamamlama (2. baskı) Steve McConnell
  • Pragmatik Programcı
  • Bilgisayar Programlarının Yapısı ve Yorumlanması
  • Kernighan ve Ritchie'nin C Programlama Dili
  • Cormen, Leiserson, Rivest & Stein tarafından Algoritmalara Giriş
  • Dörtlü Çetenin Tasarım Desenleri
  • Yeniden Düzenleme: Mevcut Kod Tasarımını Geliştirmek
  • Efsanevi Adam Ayı
  • Donald Knuth'un Bilgisayar Programlama Sanatı
  • Derleyiciler: İlkeler, Teknikler ve Araçlar Alfred V. Aho, Ravi Sethi ve Jeffrey D. Ullman
  • Gödel, Escher, Bach , Douglas Hofstadter
  • Temiz Kod: Çevik Yazılım İşçiliği El Kitabı Robert C. Martin
  • Etkili C ++
  • Daha Etkili C ++
  • CODE yazan Charles Petzold
  • Jon Bentley tarafından Programlama İncileri
  • Eski Kod ile Etkili Çalışma Michael C. Feathers
  • Demarco ve Lister'dan Peopleware
  • İşyerinde Kodlayıcılar by Peter Seibel
  • Şüphesiz Şaka Yapıyorsunuz, Bay Feynman!
  • Etkili Java 2. baskı
  • Kurumsal Uygulama Mimarisinin Kalıpları Martin Fowler
  • Küçük Schemer
  • Tecrübeli Schemer
  • Neden Ruby'nin (Poignant) Rehberi
  • Mahkmatmlar İltica Ediyor: Neden Yüksek Teknoloji Ürünleri Bizi Çıldırtıyor ve Akıl Sağlığı Nasıl Geri Yükleniyor?
  • Unix Programlama Sanatı
  • Test Odaklı Geliştirme: Örnek olarak Kent Beck
  • Çevik Bir Geliştiricinin Uygulamaları
  • Beni Düşünme
  • Çevik Yazılım Geliştirme, İlkeler, Desenler ve Uygulamalar Robert C. Martin
  • Eric Evans'dan Alan Odaklı Tasarımlar
  • Donald Norman'dan Gündelik Eşyaların Tasarımı
  • Andrei Alexandrescu: Modern tarz C ++ Tasarım
  • Joel Spolsky'nin En İyi Yazılım Yazımı I
  • Kernighan ve Pike Tarafından Programlama Uygulaması
  • Pragmatik Düşünme ve Öğrenme: Wetware'inizi Yeniden Düzenleyen Andy Hunt
  • Yazılım Tahmini: Siyah Sanatı Keşfedin Steve McConnel
  • Tutkulu Programcı (İşim Hindistan'a Gitti) Chad Fowler
  • Hackerlar: Bilgisayar Devriminin Kahramanları
  • Algoritmalar + Veri Yapıları = Programlar
  • Katı Kod Yazma
  • JavaScript - İyi Parçalar
  • Gerçek alınıyor 37 Sinyallerle
  • Programlamanın Temelleri Karl Seguin
  • Bilgisayar Grafiği: C İlkeleri ve Uygulamaları (2. Baskı)
  • Java'da Düşünmek Bruce Eckel tarafından
  • Hesaplama Sistemlerinin Elemanları
  • Desenlere Yeniden Bakmak - Joshua Kerievsky
  • Andrew S. Tanenbaum: Modern İşletim Sistemleri
  • Açıklamalı Turing
  • Bizi Akıllı Yapan Şeyler Donald Norman
  • Christopher Alexander'ın Zamansız Yapım Yolu
  • Son Tarih: Tom DeMarco'dan Proje Yönetimi Hakkında Bir Roman
  • Stroustrup'un C ++ Programlama Dili (3. baskı)
  • Kurumsal Uygulama Mimarisinin Kalıpları
  • Bilgisayar Sistemleri - Programcı Perspektifi
  • C # ile Çevik İlkeler, Desenler ve Uygulamalar Robert C. Martin
  • Testler Rehberliğinde Büyüyen Nesneye Dayalı Yazılım
  • Çerçeve Tasarım Yönergeleri - Brad Abrams
  • Nesne Düşüncesi Dr. David West
  • W. Richard Stevens tarafından UNIX Ortamında İleri Programlama
  • Hackerlar ve Ressamlar: Bilgisayar Çağından Büyük Fikirler
  • Tracy Kidder'dan Yeni Bir Makinenin Ruhu
  • CLR via C # yazan Jeffrey Richter
  • Christopher Alexander'ın Zamansız Yapım Yolu
  • C # Tasarım Desenleri Steve Metsker tarafından
  • Alice Harikalar Diyarında , Lewis Carol
  • Zen ve Motosiklet Bakım Sanatı by Robert M. Pirsig
  • Yüz Hakkında - Etkileşim Tasarımının Temelleri
  • Herkes Geliyor: Organizasyonsuz Organizasyon Gücü Clay Shirky
  • Programlama Tao
  • Doğanın Hesaplamalı Güzelliği
  • Steve Maguire'den Katı Kod Yazma
  • Philip ve Alex'in Web Yayıncılığı Rehberi
  • Grady Booch'un Uygulamalarıyla Nesneye Yönelik Analiz ve Tasarım
  • Etkili Java by Joshua Bloch
  • Hesaplanabilirlik NJ Cutland
  • Programlamanın Beyni
  • Tao Te Ching
  • Üretken Programcı
  • Aldatma Sanatı by Kevin Mitnick
  • Kariyer Programcısı: Kusurlu Bir Dünya İçin Gerilla Taktikleri - Christopher Duncan
  • Yapay Zeka Programlama Paradigmaları: Common Lisp'de vaka çalışmaları
  • Kıyamet Ustaları
  • Andy Hunt ve NUnit ile C # 'da Pragmatik Birim Testi Matt Hargett ile Dave Thomas
  • George Polya Nasıl Çözülür?
  • Simyacı Paulo Coelho
  • Smalltalk-80: Dil ve Uygulaması
  • Güvenli Kod Yazma (2. Baskı) Michael Howard
  • Philip Wadler ve Richard Bird'ün Fonksiyonel Programlamaya Giriş
  • Hata Yok! ile David Thielen
  • Tamir Jason freid ve DHH tarafından
  • JUnit İş Başında

16
Kod Tamam belki de üniversitede iseniz güzel bir kitap. En az 1 yıllık programlama deneyiminiz varsa, bu tam bir deliktir.
Bogdan Gavril MSFT

19
Kod Tamamlama'nın içinde birçok yararlı bilgi vardır, ancak abartı, waffle ve tekrarlamaya gömülür, bu da zor bir okuma yapar.
Jeff Yates

76
Code Complete'i 3 yıl boyunca kariyerime okudum . Bir yazılım mühendisliği kursu ya da programlama dili kursu almamıştım ama bazı giriş CS kursları almıştım. Daha iyi bir programcı olmak için şimdiye kadar okuduğum en iyi tek kitap. Sizi bir uzman yapmaz, ancak bir tamircilikten çok daha fazlasını yapar.
Shea

119
Bu kitapla ilgili sorun, yeni başlayanlar için, kavramların biraz gelişmiş olması nedeniyle gerçekten mantıklı olmamasıdır. Okumak için hazır olduğunuzda, kitaptaki kavramların% 99'unu zaten bilmeli ve uygulamalısınız.
esac

57
Bu, bu kitapta bulunanlar gibi sağduyu önerileri ile anlaşma. Sık sık geri sıralanmalarını hatırlatmanız gerekir.
JohnFx

9

K & F

@Juan: Juan'ı tanıyorum, biliyorum - ama sadece eldeki göreve başlayarak öğrenilebilecek bazı şeyler var. Bütün gün soyut ideallerle konuşmak sizi bir akademisyene dönüştürür. Soyutun uygulanmasında onların var olma nedenini gerçekten araştırdık. : P

@Keith: Alan Cooper'ın "Mahkmatmlar İltica Ediyor" undan büyük bir söz - bu kitabı okuduğumdan beri benimle birlikte çalışan herhangi bir geliştirici, benimsediği fikirlerden bahsettiğimi duydu. +1


9

Bilgisayar Bilimcileri İçin Ayrık Matematik http://ecx.images-amazon.com/images/I/51HCJ5R42KL._SL500_BO2,204,203,200_AA219_PIsitb-sticker-dp-arrow,TopRight,-24,-23_SH20_OU02_.jpg

Bilgisayar Bilimcileri İçin Ayrık Matematik JK Truss tarafından.

Bu size programlamayı öğretmese de, her programcının bilmesi gereken temel matematiği öğretir. Bu şeyleri üniversiteden hatırlayabilirsiniz, ancak yüklem mantığı yapmak programlama becerilerinizi geliştirecektir, koleksiyonları kullanarak programlamak istiyorsanız Set Teorisi'ni öğrenmeniz gerekir.

Burada problemleri farklı şekillerde düşünmenizi sağlayacak birçok ilginç bilgi var. Yeni bir şeyler öğrenmek için arada bir almak yeterlidir.


9

Systemantics: Sistemler Nasıl Çalışır ve Özellikle Nasıl Arızalar . Ucuz alın. Ancak birkaç başarısız projede çalışana kadar mizah alamayabilirsiniz.

Kitabın güzelliği telif hakkı yılıdır.

Muhtemelen kitapta sunulan en derin paket "kanun":

Temel Hata Modu Teoremi (FFT): Karmaşık sistemler genellikle hata modunda çalışır.

Herhangi bir yazılım parçasında, diğer bölümlerdeki arızalar veya diğer bölümlerdeki doğrulamalarla maskelenen hatalı parçalar olduğu düşünülmektedir. Yazılım kusurları donanım arızaları tarafından maskelenen Therac-25 radyasyon makinesinde gerçek dünyadaki bir örneğe bakın . Donanım arızaları giderildiğinde, tüm bu yıllar boyunca algılanmayan yazılım yarışı koşulu, makinenin 3 kişinin ölümüyle sonuçlandı.


1
Ayrıca aynı yazarın (John Gall) The Systems Bible'a da göz atın. Systemantics'in üçüncü baskısı, unvanını değiştirdi. Bu okuldan çalabileceğin kitap. Yetişkin yetişkinlerin bir el feneri ile bir battaniyenin altında okudukları kitap.
Chris Wenham

9

Kişisel favorilerimden biri Hacker'ın Lokumu , çünkü eğitici olduğu kadar okumak da eğlenceliydi.

Umarım ikinci baskı yakında çıkacak!


Henry S. Warren Jr tarafından "Hacker's Delight" için +1 - popüler anlamda hacklemek değil, kelimenin tam ve orijinal anlamında düşük seviyeli bit twiddling ve diğer "hack'lerde olduğu gibi kesmekle ilgili. Herkes için değil, ancak kod optimizasyonu, derleyiciler, vb. İle ilgileniyorsanız veya düşük seviyeli şeylerle ilgilenen genel bir inek iseniz, bu harika bir kitaptır.
Paul R


9

Aşırı Programlama Açıklandı: Kent Beck tarafından Değişimi Kucaklayın . Yazılım geliştirme konusunda zorlu bir XP ya da otoyol almayı savunmasam da, keşke bu kitaptaki ilkelere kariyerimde daha erken tanışmış olsaydım. Birim testi, yeniden düzenleme, basitlik, sürekli entegrasyon, maliyet / zaman / kalite / kapsam - bunlar gelişime bakışımı değiştirdi. Agile'dan önce, her şey hata ayıklayıcı ve değişiklik istekleri korkusuydu. Agile'den sonra, bu iblisler o kadar büyük değildi.





9

Programlama uygulaması. Hazırlayan: Brian W.Kernighan, Rob Pike.

Burada gösterilen stil mükemmel - kod sadece kendisi için konuşuyor ve tüm kitap KISS prensibini takip ediyor. Şahsen benim tercih ettiğim diller değil, yine de beni etkiledi.





9

Kesinlikle Yazılım İşçiliği

alternatif metin http://ecx.images-amazon.com/images/I/5186JKTDVWL._SL500_AA240_.jpg

Bu kitap, yazılım mühendisliği ve sistem geliştirme hakkında birçok şeyi açıklamaktadır. Web VS shrinkwrap VS IBM çerçevesi gibi farklı ürün geliştirme türleri arasındaki farkı anlamak da son derece yararlıdır. İnsanlar şelale modelini düşündüklerinde aklından ne çıkarmıştı? Bunu okuyun ve netleşeceğiz (umarım)


Bu kitabın en baştan yeniden yazılması gerekiyor. Konu çok ilginç ama kitap oldukça çılgın.
Chris Mountford

Chris, yorumunu anlamakta zorlandım ... Daha fazla açıklayabilir misin? Neden 'deli'?
dario minonne

Öncelikle tipografik hatalarla doludur. Addison Wesley'in genellikle birinci sınıf editoryal eli bu ciltte garip bir şekilde yok.
Chris Mountford

... devam ediyor ve burada yeterli alan yok, ama: 2. yazarın gerçek ve fikir, fıkra ve temel ilke vb. arasında değiştiği metinde asla net değildir. yazılım geliştirmenin zor yönleri. Alternatiflere ve muhtemelen dezavantajlara göre spesifik avantajları vardır. Bunun aklı başında yaklaşım olduğuna inanıyorum. Yazılımın doğal olarak bir zanaat olduğunu söylemek anlamsızdır. Çok sinir bozucu okumak, ama adil olmak için bir süre önce ve unuttuğum birçok özellik oldu. Ancak tiksinmem devam ediyor.
Chris Mountford

8

@Peter Coulton - Knuth'u okumuyorsun, çalışıyorsun.

Benim için ve işim için ... Tamamen İşlevsel Veri Yapıları , düşünülen ve işlevsel diller göz önünde bulundurularak gelişmek için mükemmeldir.


8

"Dünya Düz" Thomas Friedman tarafından.

Programlamada mükemmellik, zihinsel enerjiye yatırım yapılmasını ve tıp veya hukuk meslekleriyle karşılaştırılabilir sürekli öğrenmeye adanmışlığı gerektirir. Bu mesleklerin ödediğinin bir kısmını öder, finans sektörüne yönelen matematiksel anlayışlılara ödenen ücretler çok daha azdır. Ve kod oluşturma ücretleri aşınıyor çünkü çoğu ekonomide akıllı ve öz disiplin için nispeten kolay bir meslek .

Programlama, örneğin sıhhi tesisattan daha az ödeme noktasına kadar aşınmış durumda. Sıhhi tesisat "offshored" olamaz. Öğrenmek için bir yıl sürecek tamamen yeni bir sıhhi tesisat teknolojisi alma ayrıcalığı için Profesyonel Tesisatçı Konferansı'na her yıl katılmak için 2395 $ ödemeniz gerekmez.

Kuzey Amerika'da veya Avrupa'da yaşıyorsanız, gençseniz ve akıllıysanız, programlama rasyonel bir kariyer seçeneği değildir. İşletmeler dahil kesinlikle, programlama. İş çalışın, BS dedektörünüzü hassaslaştırmak için programlama hakkında yeterince bilgi edinin: mükemmel. Ama aslanın zihinsel enerjinizdeki payını kütüphanelere, veri yapılarına ve algoritmalara hakim olmaya adamak mı? Bu sadece programlama sizin için ekonomik bir seçimden daha fazlası ise mantıklıdır.

Eğer varsa aşk programlama ve bu nedenle Elinden kariyer yapmak niyetinde, o zaman olan kuvvetlerin bir soğuk gözlü bir anlayış geliştirmek için yararınadır ve buna bir yaşam sağlamak için de daha sert ve daha sert mesleğini yapmaya devam edecek . "Dünya Düz" size değişkenlerinize ne isim vereceğinizi öğretmez, ancak sizi zaten gelmiş olan ekonomik gerçeklere 6 veya 8 saat boyunca daldıracaktır . Eğer korkmuş olsun okumak ve yapamıyorsanız, o zaman dışarı çıkmak ve satın almak "Kod tamamlayın."


Bu iyi bir cevabın tek örneği!
Avi

8

alternatif metin

Geçen sene birkaç ders aldım. okudum

Yenilikçinin İkilemi (yıkıcı teknoloji)
Efsanevi Adam Ayı (yazılım yönetme)
Uçurumun (başlangıç)
Veri Tabanı Yönetim Sistemlerini Aşmak, COW Kitap
Programlama C #, iPhone Geliştiricilerine Başlayan OSTRICH Kitabı
, GRAPEFRUIT Kitabı

Her kitap harikaydı ama Clayton Christensen'ın (1997 !!!) Yenilikçinin İkilemi gerçekten harika bir kitap ve gerçekten modern yazılım dünyasını düşünmemi sağladı. Ele alınan zorluk yıkıcı teknolojidir ve disk sürücüsü şirketleri ile teknik olmayan şirketlerin yeni, oyun değiştiren teknoloji tarafından her zaman nasıl bozulduğudır. Muhtemelen en büyük 'web' şirketi olan Google'ı düşünürken yeni bir bakış açısı sunuyor. Neden HER ŞEYDE elleri var? Çünkü yeni bir şeyle pozisyonlarını bozmak istemiyorlar . Google'da önizleme, fikir edinmek için bolca. Oku onu!


Bu kitabın oldukça tekrarlayıcı olduğunu düşünüyorum. İlk 1/4'ü okumanızı tavsiye ederim.
Ben Haley

8

hackerlar, Steven Levy tarafından.

Kişilik ve yaşam tarzı önce gelmelidir. Diğer her şey öğrenilebilir.



8

Python dili benim için çok etkili oldu, keşke bu kitabı yıllar önce okumuş olsaydım. Python dilinin güzelliği ve sadeliği, diğer dillerde kod yazmayı gerçekten etkiledi.

alternatif metin alternatif metin


2
Bence Python ile yeni programcılar başlatmak dünyadaki çirkin kod miktarını azaltacaktır. Çizgileri rastgele girintili olan biriyle çalışıyorum - birkaç ay Python ile çalışsaydı bunu yapmazdı.
xnine

6
Bence Python ile yeni programcılar başlatmak diğer dillerin miktarını azaltacaktır.
Marco Mariani

2
Bunlar bir tesadüf mü?
Kelly




7

Bence "Unix Programlama Sanatı" mükemmel bir bilgisayar korsanı / parlak bir zihin tarafından Eric S. Raymond gibi mükemmel bir kitaptır. Bu kitap, Unix platformu altında bir proje başlatmak üzere olan her programlama için bir zorunluluktur.


6
bu bir kopya.
Christopher Mahan

7

Yukarıdaki kitapların birçoğunun mutlaka okunması gerektiğine katılırken (Pragmatik Programcı, Efsanevi Adam Ayı, Bilgisayar Programlama Sanatı ve SICP hemen akla geliyor), biraz farklı bir yöne gitmek ve A Disiplin'i tavsiye etmek istiyorum Programlama Bölümü Edsger Dijkstra. 32 yaşında olmasına rağmen, "doğrulanabilirlik için tasarım" üzerine yapılan vurgu büyük önem taşımaktadır ("doğrulanabilirlik", "birim testleri" yerine "kanıt" anlamına gelse bile).



7

Martin Fowler'ın Yeniden Düzenleme: Mevcut Kod Tasarımını İyileştirme zaten listelenmiştir. Ama neden beni etkilediğini detaylandıracağım.

Tüm kitabın özü, kodu yapılandırmakla ilgilidir, böylece insanlar tarafından okunması ve anlaşılması daha kolaydır . Bana yazdığım kodun meslektaşlarım ve haleflerim için iyi bir şey tüketmesi ve muhtemelen öğrenmesi anlamına geldiğini kuvvetle öğretiyor . Beni bilinçli bir şekilde, insanları benim adımı övecek ve tüm sonsuzluğun lanetlenmesi için lanetlemeyecek şekilde programlamaya ilham veriyor .



7

İşte o kadar geniş alkışlanmamış ama derin bir içgörü dolu mükemmel bir kitap: Agista Software Development: The Cooperative Game , Alistair Cockburn.

Bu kadar özel olan ne? Herkes açıkça "Çevik" terimini duydu ve bu günlerde en çok inananlar olduğu anlaşılıyor. Yine de inanın ya da inanmayın, Agile hareketinin neden arkasında bazı derin ilkeler vardır. Bu kitap bu ilkeleri kesin ve bilimsel bir şekilde ortaya çıkarır ve ifade eder. İlkelerden bazıları (btw, bunlar benim sözlerim, Alistair'in değil):

  1. Takım yazılımı geliştirme ile ilgili en zor şey, herkesin beyninin aynı anlayışa sahip olmasını sağlamaktır. Somut dünyada görünmez olan devasa, özenli, karmaşık sistemler inşa ediyoruz. Daha derin bir anlayışı paylaşmak için daha fazla insanın beynini almakta ne kadar iyi olursanız, ekibiniz yazılım geliştirmede o kadar etkili olacaktır. Çift programlamanın mantıklı olmasının altında yatan sebep budur. Çoğu insan bunu reddeder (ve başlangıçta ben de yaptım), ancak bu prensibi göz önünde bulundurarak başka bir şans vermenizi şiddetle tavsiye ederim. Yeni oluşturduğunuz alt sistemi derinlemesine anlayan İKİ kişiyle iletişim kuruyorsunuz ... Bu kadar derin bir bilgi aktarımını bu kadar çabuk almanın başka birçok yolu yok. Bu bir Vulcan zihni gibidir.
  2. Derin anlayışı hızlı bir şekilde iletmek için her zaman kelimelere ihtiyacınız yoktur. Ve bir sonuç: çok fazla kelime ve dinleyicinin / okuyucunun kapasitesini aştınız, yani denediğiniz anlayış aktarımı gerçekleşmiyor. Çocukların dilin nasıl konuşulduğunu "batırılmış" ve "emici" olarak öğrendiklerini düşünün. Sadece dil de değil ... yerde trenle oynayan bazı çocuklara örnek veriyor. Boyunca bile olmamıştı başka bir çocuk geliyor GÖRÜLDÜĞÜ önce ... ama diğer çocuklar izleyerek bir tren, o oyunun özünü alır ve sağ boyunca oynar. Bu insanlar arasında her zaman olur. Bu çok fazla kelime hakkında sonuç ile birlikte eski "şelale" gün ne kadar yanlış olduğunu görmenize yardımcı olur 700 sayfa ayrıntılı gereksinimleri özellikleri yazmaya çalışın.

Orada da çok daha fazlası var. Şimdi çeneni kapatacağım, ama bu kitabı şiddetle tavsiye ediyorum!


2
Benzersiz bir katkı ve neden okumaya değdiğini açıklamak için zaman ayırdınız. Özgünlük ve çaba için +1! Bunu yakında okumayı dört gözle bekliyorum ...
Avery Payne

İyi. Hayal kırıklığına uğrayacağınızı sanmıyorum.
Charlie Flowers

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.