“Veri Yolu Faktörü” nü arttırmak için iyi belgeler yazmalı ve temiz kod yazmalı mıyım?


48

Yazılım geliştirme şirketlerinin ana hedeflerinden biri, Otobüs faktörlerini arttırmaktır. Bu aynı zamanda Google tarafından düzenlenen bir konuşmada savunulmaktadır .

Bu, her şeyi yarın otobüsle geçerseniz, projenin devam edebileceği şekilde kodlayıp belgelemeniz gerektiği anlamına gelir. Başka bir deyişle, kendinize benzer bir beceri ile başka bir programcı tarafından kolayca değiştirilebilir olmalısınız.

Değiştirilebilir olmak, geliştiricinin çıkarına aykırı değil mi? Kitapta, 48 iktidar kanunu Kural 11, insanları iktidara gelmek için size bağımlı tutmaya çalışmanız gerektiğini ve ardından parasal ödüller anlamına geldiğini belirtir.

Bir projeye 6 ay ara verdikten sonra devam etmek için bazı belgelere ihtiyaç duyduğunuz senaryo dışında, geliştirici ile yazılım şirketi arasında açık bir çıkar çatışması var gibi görünüyor.

Bir programcı olarak, gerçekten herkes için mükemmel belgeler ve kolayca okunabilir kodlar yazmalısınız; ya da işi ve işi halledecek şekilde kod ve belgeler yazmalı ve kendiniz de anlayabilmelisiniz, fakat başka bir kişi bunu anlamakta zorlanabilir mi?


41
Greene'nin kitabı şövalyelerde iyilik kuran despotlar ve foklar için uygundur. Takım çalışması için iyi bir ahlaki felsefe değil. Kısaca söylemek gerekirse! [Vikipedi'nin bu kitabı "sosyopati" altında sınıflandırdığını unutmayın]
Steven A. Lowe

27
Seni asla işe
almazdım

37
Mezarlıklar yeri doldurulamaz insanlarla doludur.
Meslek

20
Asla yeri doldurulamaz olmak istemezsiniz - değiştirilemezseniz nasıl terfi edersiniz? Tam olarak nerede olduğunuzu mutlu değilseniz, sonsuza dek, 'Otobüs Faktörü' her zaman önemlidir.
Dave

11
“Kitap, Niccolò Machiavelli Prensi ile tematik unsurlar paylaşıyor ve Sun-Tzu'nun klasik Savaş Sanatı teziyle karşılaştırıldı.” İşyerini 16. yüzyıl İtalyan politikası ya da ... eski Çin savaşı gibi gören biriyle çalışmak istediğimi sanmıyorum.
Cascabel

Yanıtlar:


110

Başka kimsenin anlayamadığı bir kod yazarak değil, başkalarından daha fazla tecrübe ve bilgi toplayarak yeri doldurulamaz olmak için çaba göstermelisiniz. Eski yöntem, yazdığınız kodu korumaktan korktuğu ve bunlardan kaçındığı için herkesin birlikte çalışmaktan kaçınmaya çalıştığı bir geliştirici yapar. İkincisi, yöneticilerin ekiplerinde olmak istedikleri aranan bir ekip üyesi olmanız.

Tecrübelerime göre temiz, iyi belgelenmiş (ve tercihen kendini belgeleyen) kod her zaman karşılığını vermiştir. Aslında başkalarına yardım etmek ve öğretmek için hemen hemen tüm fırsatlardan faydalandım (ve daha iyi bir şey bildiklerinde onlardan öğrenmek gibi) ve benden daha az yetenekli biri tarafından değiştirilme tehlikesi hissetmedim. Aslında, bu genellikle tüm ekibin daha iyi çalışmasına ve sorunları daha hızlı çözmesine yardımcı oldu, bu her yöneticinin hayalidir - ve mantıklı bir yönetici iyi bir ekibin üyelerini değiştirmek istemiyor.


1
Bunun şimdi ortaya çıkması ilginç çünkü birkaç gün önce şu anda üzerinde çalıştığım projelerden birisinin ne kadar değerli olduğunu, muhtemelen hiç olmayacak insanlara ne kadar değerli olduğum söylendi. koda dokunun. Bu ve tabii ki bana farklı modüller ve bunların nasıl etkileşime girdiği konusunda üst düzey bir bakış açısı sunuyor. Bu bakış taze bellekte hepsine sahip olduğunda özellikle şu anda ihtiyaç olmayabilir, ancak bir yıl içinde kod yeniden ziyaret ettiğinizde neredeyse kesin ... yardımcı olacak
bir CVn

2
İşimde onları "yeri doldurulamaz" yapan kod (kötü, şaşkın) yazan birkaç kişi artık burada çalışmıyor. Daha iyi programcılar çalışmalarını kod incelemeleri sırasında ya da tatildeyken yaptıkları işleri düzeltirken gördüler. İşlerinin "kalitesini" gördüm ve konserve aldılar.
CaffGeek

44

Eğer örgütleri veya insanları bu kadar şeffaf şekilde manipüle edecekseniz, aptal olmaları veya başka bir seçenek bırakmayacakları bir reçelle daha iyi olmaları gerekir. İyi çalışan bir yazılım geliştirme mağazası belirsiz kodunuza ve eksik belgelerinize bakar ve çok fazla zarar vermeden önce sizi kovar. Zayıf koşuyorlarsa veya başka geliştiricilerin onlar için çalışmasını sağlayamıyorsanız, neden onlarla sinek olmak istiyorsunuz?

PS Ne Greene, ne de Machiavelli, zamanla "zor adam" olmaktan gurur duyan kitaplar yazmaktan başka bir şey yapamadı. Onların tavsiyelerini bir tuz tuzu ile alın.


42

Yeri doldurulamazsa, terfi edemezsin.


14
Daha da kötüsü, bazı yerlerde, başkalarının çalışmayan kodlarını alıp çalıştırabileceğinizi kanıtlarsanız, bir daha asla kendi kodunuz üzerinde çalışmanıza izin verilmez, çünkü diğer adamlara izin vermek daha ucuz olarak algılanacaktır. büyük bir buharlı kazık pürüzlü ve daha sonra büyük buharlı kazık temiz ve cilalı var.
John R. Strohm

konuyla ilgili şimdiye kadarki en iyi tartışma
ZJR

2
Gerçekten klasik cevap.
Sarawut Positwinyu

@ JohnR.Strohm Dostum !!!! Orada bulundum ve bu çok kötü geliyor. Daha dikkatli bir mühendis olarak bir göreve biraz daha zaman ayırırdım. Böylece yönetici diğer kişilerin hızlı bir şekilde eski püskü kodlar yazmasına izin verdi ve daha sonra bir kod incelemesinde temizlememi sağladı. Kendimi kötüye hissettim çünkü bu rol istediğim gibi olmasa da ekiple olan ilgim oldu. Söylemeye gerek yok, bunu anladıktan hemen sonra takımdan ayrıldım.
davidXYZ

17

Yeri doldurulamaz olmak istemezsin. İnsanların sana bağlı hissetmelerini istemiyorsun, seni takdir etmelerini istiyorsun. Genel olarak, güç yasalarının bile yarısının ilişkilere (profesyonel veya kişisel) uygulanması gerektiğine inanan insanlardan uzak kalmak istersiniz.
Bu kurallar, kazan-kazan durumunun nasıl başarılı bir şekilde kurulacağına dair bir talimattır. İstediğiniz şey bir kazan-kazan durumu.
İnsanlar hissetmeye başlar başlamaz, onları bir kazan-kaybet durumunun kaybeden tarafına itmeye çalışıyorsunuz, geri savaşacaklar. Kazanma-kaybetme durumlarını belirleme girişimleri genellikle kaybet-kaybetme sonucuyla sonuçlanır, çünkü ortaklığınızın genel başarısına yatırım yapmak yerine, ortağınızı kaybetme pozisyonuna getirme konusunda etkili bir şekilde kaynak harcarsınız.

Bunu işverenlerinizle yaparsanız, bilgi tekelinizi azaltmak için size karşı zorlamaya çalışacaklar. Çoğunlukla, bunlar işinizi nasıl yapmanız gerektiği konusunda saçma rehberlik edecek ve böylece iş hayatınızı yaşayan bir cehenneme çevirecektir. Ayrıca, bir şey kırıldığında gecenin saat 3'ünde sizi arayacaklar, çünkü onu düzeltebilecek tek kişi sizsiniz. Kaldıraç gibi durumlardan yararlanmaya çalışmak, geri tepme ve daha fazla sıkıntıya neden olabilir.

Mezarlıklar vazgeçilmez erkeklerle dolu.
- Gaulle, Charles De

Yani saçmalığı kes ve işini düzgün yap. Başka bir şey için değilse, o zaman sizin için, çünkü sen, 2 yıl sonra kodda bazı değişiklikler yapmak zorunda olan, fakir bir ruh olacaksın.


Her zaman bir "kazan-kazan" durumu oluşturmaya çalıştığımda, insanların kazanıp üstün görünmek istediklerini öğrendim. Mafya'nın nasıl çalıştığı hakkında neredeyse bir kitap gibi: bir akranınıza eşit gibi davranırsanız, kısa bir süre sonra sizin için üstün olduğunu varsayacaktır. 3 yıl boyunca üniversiteden yeni çıkan grafik tasarımcı üzerinde çalışıyor - ona daha çok saygı duyduğumda, bana daha çok kir gibi davrandı. Şimdi ilk başta üstün görünüyorum ve daha çok insan bana saygı duyuyor. Bu garip. Ancak fark yerinin farklı bir kültürü olması gerekir. Boğaz kesiminde silikon vadisinde işe girişmelerde çalışıyorum.
nopole

1
@ 動靜 能量: Bu daha çok kazan-kazan gibiydi. Kazanmanın amacı, koşulsuz olarak herkese iyi davranmamaktır. Birinin size pislik gibi davrandığı hissine sahipseniz, açık, net ve makul bir şekilde ele almalısınız. Kolayca gösterilebilir, eğer takımınızdaki bir kişi bir pislik gibi davranırsa, genel takım performansına fayda sağlamaz.
back2dos

"Kazan-Kazan", "kazan-kazan" veya "kazan-kazan" sistemindeki özel bir durum mu? Bununla ilgili fazla bilgi bulamıyorum ... ama dünyadaki her şeyin kazan-kazan olamayacağına dikkat edin. Yönetmen veya takım lideri olmak isteyen iş arkadaşı kesinlikle kazanmaz. Veya süper yıldız olarak görünmek veya terfi etmek, zam almak veya "mimar" unvanını korumak veya 1 yıllık hisse senedi opsiyonu seçim tarihinden önce kovulmak istemeyen iş arkadaşları, kesinlikle Seni yere indirmesi gerektiğinde "kazan-kazan". Şimdi başlamak için "kaybet-kazan" durumuna bile girmek istemiyorum ...
nopole

Bunun nedeni, eğer önce bana pislik gibi davranırsa, muhtemelen ondan biraz nefret edeceğim ve daha sonra iyi bir ilişki olmayacak. Eğer üstün görünürsem ve bana biraz saygı duyuyorsa, ilişki aşağı ve yukarı olmadan daha iyi devam edebilir. Ama doğru, silikon boğazı silikon vadisinde, "kabul" ve "hoşgörülü" iseniz, insanların adım atmayı sevdikleri bir paspas haline geldiğinizi gördüm. Bu yüzden kesinlikle uygun şekilde misilleme yapmak veya sonuç olduğunu bilmesini sağlayın.
nopole

@ 動靜 能量: Lütfen gönderimdeki linki takip edin. Senin durumunda açıkça kazan-kazan savunuculuğunu yapmalısın ya da anlaşma yapmamalısın. Genellikle her türlü etkileşim kavgaya dönüşür, aslında etkileşimin nasıl ele alındığına dair tartışmak zaman harcadığında olayları çözerdi. Bu kadar basit: "Bir ilişki yerine işbirliğimizi tercih ederim, bir rekabet yerine ve buna göre taahhütte bulunmaya istekliyim. Bunu bir seçenek olarak görmüyorsanız, şimdi söyleyecek kadar dürüst olun. Bunu beni zekâsı olarak kullanmak için toplarını sökeceğim. " Son parçayı tekrarlamak isteyebilirsiniz, ancak)
back2dos

15

Olumsuz tepkiler, bu sitenin çektiği ortalamadan daha iyi programcıların sayısı göz önüne alındığında şaşırtıcı değildir. Yetenekli insanlar genellikle bu tür gizlilik güvenliği taktiklerini kullanmak zorunda kalmazlar. Ancak, Fortune 500 otomotiv tedarikçisinde, kendi tasarladıkları korkunç arayüzler için bol miktarda dokümantasyon oluşturarak gayretli bir şekilde korunan az sayıda yetenek geliştirmiş birkaç yetenekli geliştiriciyle çalıştım .

Bir adamın tüm işi, iki ayrı köprü alt sistemi içeren ve her sistemdeki modüllerin bir UART aracılığıyla iletişim kurmasına izin veren bir kodun kodunu korumaktı. Temel olarak, Seri Programlama 101 idi. Sadece şuna benzeyen genel bir arayüz yaratmak yerine:

  int sendData (int targetModule, void * veri, size_t byteCount);
  int recvData (int sourceModule, void * veri, size_t maxBytes);

her iki iletişim modülünün birbirinden göndermek isteyebileceği her mesaj için ayrı bir kod yazdı. Bu, modülünün her mesaj hakkında bilgi sahibi olması ve bir mesaj eklendiğinde veya değiştirildiğinde, güncellenmesi gerektiği anlamına geliyordu. Uygunsuz samimiyetten bahsedin!

Mesele şu ki, bu adam düzgün bir şekilde tüm kodları / mesajları listeleyen bir Word doktoru tuttu ve özenle gerektiği şekilde güncelledi. Onun bütün işi oldu . Haftada birkaç kez, kritik yollarda bulunabilecek kadar talihsiz olan tüm insanlara yeni bir revizyon gönderdi. Ve bu, 'profesyonel' olarak görüldü, çünkü yönetim dokümantasyonu görmeyi sevdi . Beni otomotiv endüstrisi için ağlatıyor.

Sanırım amacım şudur: bazen belgeler yazmak, vasat programcıları koruyabilir . Yöneticiler genellikle iyi tasarım ile kötü tasarım arasındaki farkı söyleyemez ve çoğu sınırlı bilgi ile teknik kararlar vermek zorunda kalır. Bu onlar için inanılmaz derecede stresli. Bir Word dokümanını düzinelerce özenle biçimlendirilmiş tablolarla görmek çok rahatlatıcı olabilir - tarif ettiği şey temelde kötü bir fikir olsa bile.


İlginç bir bakış açısı.
scribu

Bu sadece otomotiv endüstrisi ile sınırlı değil. Yazılım / teknoloji alanında olmayan, ancak yazılım geliştiricileri kullanan (diğer BT Çalışanlarının yanı sıra) herhangi bir büyük kuruluşun bu türden bir şeyden daha az veya daha fazla acı çekeceğini düşünüyorum.
CraigTP

Belgelerin değerine inanıyorum, ama belgeler bu adamın işini koruyan şey değil. Sadece orada yetersiz yönetim ve rahatlık nedeniyle var. Kimsenin günlerinin 90 dakikasını, başlıklı bir not yazmak için hayrete düşürmesi şaşırtıcı: Milyonlarca doların nasıl kurtarılacağı ve daha iyi bir ürün üretileceği. Belki de bu GM ve Chrysler gibi şirketlerin kendilerini çok derin, çok pahalı deliklerde bulmasının bir parçasıdır.
Caleb

1
@Caleb: Herhangi bir büyük organizasyonda hiçbir iyilik cezasız kalmaz. Başkalarına onların fethiyatlarına izin vermek ve mümkünse kendiniz için bir fightdom yapmak çok daha kolaydır.
Gilbert Le Blanc

3
@Caleb: Konudan ayrılıyoruz, ama ben ve diğerleri benim gibi doğaya karşı savaşmamaya karar verdik. Küçük bir (<20) bilgi teknolojisi grubunda bir meritokrasi elde edebilirsiniz, ancak 100 kadar yazılım geliştiricisini geçtiğinizde, ister istemeseniz de, kuruluşunuz bir vesile olacaktır.
Gilbert Le Blanc

14

Değiştirilebilir olmak, geliştiricinin çıkarına aykırı değil mi?

Bunu kırmaktan nefret ediyorum ama herkes değiştirilebilir. Elbette, bazen (sizi yeterince deneyimliyseniz ve yeterince zeki iseniz) yerine koymak zor olabilir, ancak bu imkansız ışık yıllarıdır.

İşvereninize gerçekten değerli bir ürün olmanın yolu (yalnızca mevcut işveren değil, herhangi bir işveren değil), kodu okuyan herkes tarafından kolayca okunabilen bir kod yazma yeteneğini göstermek (onunla çalışmak için az bir rampa süresi) ve belge Kod (herkes koda girmeden sistemlerinize yüksek düzeyde genel bakış sağlayabilir).

Aslında kod dokümantasyonunda iyi olmak , bugünlerde gelmesi zor bir kalitedir, bu yüzden yalnız kalmak sizi diğerlerinden ayırmanıza yardımcı olacaktır.

Temiz ve iyi belgelenmiş kod, özgeçmişe (en azından somut sonuçları, yani " nyeni geliştiricileri en az rampa ve belgelendirmeme yardım ederek getirebildik ), yapım konusunda sinsice davranmaya başladığımıza değiniyor. kendin "yeri doldurulamaz" değil.


-1: Sana kırmaktan nefret ediyorum ama herkes değiştirilebilir. - Evet, ancak bazı kişilerin yerini diğerlerinden daha zordur.
Jim G.

10

Değiştirilebilir olmak, geliştiricinin çıkarına aykırı değil mi?

Bu geliştiricinin çıkarlarının ne olduğuna bağlı. Eğer tüm kariyeriniz boyunca tek bir işe sokmak isteyen biriyseniz, yetersizliği ödüllendiren ve kesinlikle iyi para kazanan bir şirket için tamamen vazgeçilmez olun.

Fakat şirket çöktüğünde ne olur, büyük olasılıkla çok fazla insanı işe aldıkları için? Bir sonraki nereye gideceksin? Peki neden 15 yıl boyunca aynı işte kaldığını sordukları zaman? Ve bunun gibi.

Şimdi farklı bir yolla bakalım: Kaç tane geliştirici kodunu yazan birinin okuyabileceği bir kişi olarak işini kaybetti?

Bunun olmasının tek olasılığı, şirketin başının derde girmesi ve insanları gereksiz kılmasıdır. Eğer bu gerçekleşirse, çıkmakta daha iyi olursunuz ve gelecek görüşmeler için çok iyi hazırlanacaksınız. Ayrıca vicdanınız tamamen ücretsiz olacak - kendi kazancınız için yazdığınız açıklanamayan kodu geride bırakmayacaksınız.

Ne tür bir insan olduğunu bilmiyorum, ama bu benim çıkarlarıma daha iyi hizmet ediyor.

Şahsen, en güçlü yanlarımdan birinin kendi işimi otomatikleştirmek olduğunu düşünüyorum. Bir şirketin kendi gereksinimlerimi fazlasıyla kazandığımda ne düşünme eğiliminde olduğunu düşünüyorsunuz? "Tamam, ondan şimdi kurtulacağız" mı, yoksa "neden onu başka bir role taşımayacağımızı ve tekrar yapmasına izin vermeyeceğimizi" düşünüyorlar mı?


9

Değiştirilebilir olmak, geliştiricinin çıkarına aykırı değil mi?

Haklısın, ama bence değiştirilebilmenin anlamını yanlış anladın. Kısa sürede sürdürülemez bir karmaşaya dönüşebilecek belgesiz kodlu, telaşlı kod yazan 1000 geliştirici bulabilirim.

Sadece istikrarlı programlar üretmekle kalmayıp aynı zamanda temiz kod, bilgilendirici belgeler de üreten ve projenin devamlılığını sağlayan geliştiriciler, bu sadece yeri doldurulamaz değil, paha biçilemez .


7

Bu soruya farklı bir bakış açısıyla değineceğim, çünkü zaten birkaç mükemmel cevap var.

Başkalarının kodunuzun nasıl çalıştığını öğrenmesini önlerken, kendinizi "yeri doldurulamaz" yapmaya çalışarak küçük oyunlar oynadığınızda ne olacağını düşünün. Şirket sizi tolere ettiği sürece, kendi meselelerinizi sürdürmekle aynı işte çalışıyorsunuz. Ve en iyi durum senaryosu, en kötü durum senaryosu, şirketinizdeki diğer, daha yetenekli ve daha etik mühendislerin ve yöneticilerin, zayıf uygulamalarınızın şirkete verdiği engelleri görmeleri ve bu konuda bir şeyler yapmaya karar vermeleridir: sizi kovup yeniden yazarak sıfırdan her şey. Yapıldı. Aslında, gerçekleşmesi oldukça yaygın bir şey.

Şimdi iyi kod ve iyi belgeler yazarken ne olacağını düşünün. İyi çalışan bir bileşen veya sistem yaratırsınız, bir süre sonra çalışma sırasında hataların düzgün bir şekilde çalışması ve bakılması zor bir işlemdir. Bunu sürdürmek için çok az çaba harcar. Daha sonra, kemerinizin altında sağlam bir zaferle daha büyük ve daha iyi projelere geçebilirsiniz. İnsanlar iyi iş çıkardığınız için sizi tanıyacak ve fikrinize saygı duymaya başlayacaktır. Besin zincirinde yukarı doğru hareket etme ve daha anlamlı kararlar verme, daha önemli ve etkili iş yapma veya projeleri daha yüksek düzeyde yönetme yeteneğine sahip olacaksınız. Kariyerin gelişecek, terfi alacaksın, daha fazla para kazanacaksın, meslektaşlarınca tanınacak ve onay alacaksın, rekoruna daha fazla ve daha önemli projelerin başarısını daha da artıracaksın.

Hangi rotayı tercih ederdin?


4

Tek başarısızlık noktasıysanız, müşteriniz (veya işvereniniz) muhtemelen sizi değiştirmeye çalışacaktır; Her zaman, ne kadar önemli olursa olsun, yazılımı değiştirmekten daha az maliyetli olduğu bir nokta vardır. BT'nin en dış kaynaklı mesleklerden biri olmasının bir nedeni var.

Öte yandan, değiştirilebilmeniz size paha biçilmez faydalar sağlar:

  • tatil yapabilmek
  • çağrı yapmamak
  • yeni ve çıkmakta olan bir projede ayrılma ve çalışma özgürlüğü

-1: Tek başarısızlık noktasıysanız, müşteriniz (veya işvereniniz) muhtemelen sizi değiştirmeye çalışacaktır; - Benim tecrübeme göre değil. Lütfen @evadeflow cevabına bakınız.
Jim G.

3

Hızlı bir belge hazırlamak için 5 dakikanızı harcamazsanız, bir saatini tekrar okumak ve kodunuzu kullanmaları gerektiğinde insanlara açıklamak için bir saat harcayacaksınız.

Daha da kötüsü günlerce yeni bir iş aramak için harcayabilir, çünkü patronunuz bakım kodu yazamayacağınızı öğrendi.


3

Mükemmel belgeler sonunda yeniden yapılanma / evrimleşme ile modası geçmiş olacak ve güncel tutulması gerçekten zaman alıyor.

Temiz kod + birim testi> mükemmel belgeler


1
Kabul. Takımdaki herkesin (ben de dahil olmak üzere) “bu sefer doğru şekilde” yapmaya karar verdiğimiz ve her şeyi belgelemek ve bunları devam ettirmek için doxygen veya CppDoc kullanmaya karar verdiğine karar verdiğim kaç proje olduğunu size söyleyemem. tarih, randevu, biriyle çıkmak. Daha olmadı. Proje programları oldukları gibi, dokümanlar kaçınılmaz olarak koda göre senkronize olur ve test kapsamımız asgari veya var olmaz. Şimdi, doxygen kullanımı öneren herkese dart bakma eğilimindeyim ve önce bana testlerini göstermelerini isteyin. Herhangi bir test içermeyen kod belgeleri sadece bir yalanlar paketidir.
evadeflow

Bu tür konunun dışında biridir - iyi birim testler şunlardır belgeler. Sadece belirli bir çeşit temiz, dokümante edilmiş kodu savunuyorsunuz, yapılmaması gerektiğini söylemiyorsunuz.
Cascabel

2

Sorunuzun cevabı evet". Evet, iyi belgeler ve temiz kod yazmalısınız. Kasıtlı olarak başka türlü yapmak, iş dünyasında giderek daha yaygın olmasına rağmen, bir anda aniden "iyi" bir şey olmamakla birlikte bir bütünlük eksikliği göstermektedir.

Kimse yeri doldurulamaz. İnsanların olmadığını zor yoldan bulma eğiliminde olduklarını düşündükleri bir durum üreten insanlar. Kendinize bir bağımlılık üretmek, yalnızca işvereninizi değil, sizi de sınırladığı için üretkendir.


2

Yazılım geliştirme şirketlerinin ana hedeflerinden biri de otobüs faktörlerini artırmak.

Sahte öncül. Bir yazılım geliştirme şirketinin temel amacı (yine de çalıştığım her biri), en azından o sırayla değil, ellerinden geldiğince en iyi yazılımı üretmek ve para kazanmaktır. "Veri yolu faktörünü" azaltmak para kaybetmemek için sadece bir yoldur.

Kanun 11 İnsanları size bağımlı tutmayı öğrenin.

Bunun sizin için anlamı nedir?

İnsanların size güvenmesini istiyor musunuz, çünkü yalnızca sizin yardımınızla ilerleyebilecekleri şekilde onları baltaladınız mı? Yoksa insanların size güvenmesini mi istiyorsunuz, çünkü akıllı ve anlayışlı, güvenilir, güvenilir ve diğerlerinin de işlerini daha iyi yapmalarına yardımcı olabilirsiniz? Meslektaşlarınızın yardımınız olmadan kötü görünmesini mi istiyorsunuz yoksa iyi görünmelerini sağladığınız için sizi takdir etmelerini mi istiyorsunuz?

Bu senin çağrın.


1

(üretim kodu varsayarsak)

Biraz daha ileri gitmeye meyilliyim. Programları "aptal kanıtı" yapma konusunda yazdım, ancak her zaman şunu kabul etmiyorum: Başkalarının görmeyeceği veya çalışamayacağı çok fazla kod yazıyorum (en azından, bu yazılan beklenti budur). benBen bu durumda kendimi savunmaya çalıştığım aptalım. Programınız sizin için sorunları tespit ettiğinde iyi bir şeydir ve sorun o kadar basitleştirilmiştir ki, bir hatanın ve kökeninin olduğu oldukça açıktır. Gerçek şu ki, bir program yazdığınızda uygulama detayları açıktır (erken uygulama yapmıyorsanız), ancak müşteriler için soyutlanmalı ve hataya dayanıklı olmalıdır (modül konumu mevcut olsa bile). Bunun nedeni, programların çok karmaşık hale gelmesidir. Bazen problemleri ayırabilirsin ama her zaman değil. Bileşenlerinizi çok katı, basit, iyi kapsüllenmiş ve salak kanıt olarak tutarsanız, iyi ölçeklendirme eğilimi gösterir ve çoğu kusur sevk edilmeden önce algılanır. Yeniden kullanmak daha kolay ve programları yeniden kullanmak için daha fazla güvene ve daha kolay zamana sahip olursunuz. yazdığınız bu karmaşık programlar, programdan bir süre sonra ancak sizin için bile daha karmaşık hale gelir. 6 ayda okuduğunuzda, salak deneme sürümüyle karşılaştırıldığında anlamak ve hata ayıklamak çok saçma bir zaman alabilir. Bir bileşen bir kırılma değişikliği getirirse, aksi takdirde uzun süre tespit edilemez. Programlar karmaşıktır; Bu gerçeklikten kaçamazsınız, ancak aptal kanıtı sağlayabilirsiniz, ki bu bir şeyler ters gittiğinde ya da yeniden kullanılması ya da değiştirilmesi gerektiğinde hayatınızı çok daha kolaylaştıracaktır. Bu nedenle, salak kanıtlama yaklaşımı, yazılımınızın ekipteki gençler veya gençler tarafından da anlaşılabileceği, yeniden kullanılabileceği veya sürdürülebileceği anlamına gelir (sadece sizin kadar iyi / deneyimli biri değil). Değişim ayrı bir konudur: İnsanlar programlarınızla çalışmayı seviyorsa, iyi bir iş çıkarıyorsunuzdur - t Değiştirme konusunda endişelenmeyin. Şüphesiz, anlaşılmaz programların işinizi kurtarabileceği senaryolar bulabilirim, ancak başkalarının kullanabileceği ve koruyabileceği iyi bir program yazmak açıkça daha az kötülüktür (diğerlerinin görevlerine bakın). Kendimi aptal kanıtlamayan bir şey yazarken yakalarsam, onu düzeltmeye çalışırım.

Bir projeye 6 ay ara verdikten sonra devam etmek için bazı belgelere ihtiyaç duyduğunuz senaryo dışında, geliştirici ile yazılım şirketi arasında açık bir çıkar çatışması var gibi görünüyor.

Gerçek olmayan uygulamaları tekrar ziyaret ettiğinizde bir süre ne düşündüğünüz hakkında hiçbir fikriniz yok. Eğer zaman gerçekten deneyimli sen kurulmuş metodolojiler veya kullanmak yaklaşımlara daha güvenebilirsiniz çünkü o zaman sorun basittir. Bununla birlikte, bu metodolojilerin de değişmez olduğu varsayılmaktadır. Dokümantasyonun gecikmesine rağmen uygulamalarınızda hala savunucunuz olmak zorundasınız (örneğin, bu senaryoda NULL’u geçmekten daha iyi biliyorsunuz - bu koşulu test edin).

Bir programcı olarak, gerçekten herkes için mükemmel belgeler ve kolayca okunabilir kodlar yazmalısınız; ya da işi ve işi halledecek şekilde kod ve belgeler yazmalı ve kendiniz de anlayabilmelisiniz, fakat başka bir kişi bunu anlamakta zorlanabilir mi?

Bus faktörü yaklaşımından daha net ve daha hataya dayanıklı olan salak geçirmez yaklaşımı öneririm. Programlarınızı ve dokümantasyonunuzu, projenin dışından birisi tarafından kolayca anlaşılabilecek şekilde yazın - bu sizin için de iyidir. Bunu yapmak şirketinize ve ekibinize olan değerinizi artıracak, sizi değiştirmek istemeyeceklerdir .


1

Oyunu temelde yanlış anladınız. Oyun, daha önce yaptığınız eski şeyleri yapmaya devam etmemek, yazdığınız tüm kodlardan sorumlu olmak, çünkü başka hiç kimse almıyor. Oyun, bir projeyi tamamlamak ve bir sonrakine geçmek, sizin arkanızda başkalarının kolayca anlayabileceği ve üzerinde çalışabileceği bir kod bırakarak yeni şeyler yapabilmenizi ve daha fazla ve farklı sorumluluklar alabilmenizi sağlar. Öncülün, yalnızca, aynı şeyi tekrar tekrar öğrenmek veya geliştirmek için şansa gerek kalmadan sıkışıp kalmaktan memnun olduğunuzda işe yarar.


1

Ayrıca, bu koda çok sık bakma fırsatınız yoksa, bunu kasıtlı olarak gizlemeye zorlarsanız, altı ay içinde çözmekte zorlanacağınıza da dikkat çekeceğim.


0

Ben küçük kod ben yazma, o kadar başkalarının okuyabileceği, ama çok da ne belgelemek ben 3 ay sonra okuyabilirsiniz! Bakımı kolaylaştırmakla ilgili. Yazdığınız koddan sorumluysanız ve satırın ilerleyen kısımlarında görünen hataları düzeltemezseniz, daha sonra iyi belgelendirilmesini isteyeceksiniz ... Yapamıyorsanız, ne kadar değiştirilebileceğiniz önemli değildir işini yapmak için!


-1: Neden kendini belgeleyen kod için çaba göstermiyorsunuz? En iyi ihtimalle, gereksiz dokümantasyon ve en kötüsü, çok hızlı bir şekilde eski haline gelecek olan dokümantasyonun aksine olarak? Lütfen @xsAce cevabına bakınız.
Jim G.

0

Etkileşim sıkıntısı yaşadığım her "yeri doldurulamaz" bilgisayar profesyoneli, büyük ölçüde, işverenlerinin kaynaklarını rehin tutmaya çalıştıkları için değiştirildi. Bana rapor eden kişilerin zamanlarının "atık" belgelendirmeye "değerli" olduğunu söylediklerinde, en kısa zamanda değiştiririm.

Potansiyel bir çalışanın 48 güç yasasını etik veya ahlaki olarak kabul edilebilir bulduğu düşünülürse, o zaman onlarsız daha iyi olursunuz.


-1: Bana rapor eden kişilerin zamanlarının “atık” belgelere değinmek için değerli olduğunu söylediklerinde, onları en kısa zamanda değiştiriyorum.
Jim G.

@ Jim G: Güzel. Zaman ayırdığınızı belgelemek için değerli olduğunuzu farz edeceğim ...
John Percival Hackworth

0

GERÇEKTEN yeri doldurulamaz olmak istiyorsanız (ki tüm cevapları okuduktan sonra tekrar gözden geçirmek isteyebilirsiniz ...) - neden kodu belgelemeyi bırakalım?

Kesinlikle okumanız gereken sürdürülemez bir kodun nasıl yazılacağı hakkında gerçekten harika bir rehber var: http://thc.org/root/phun/unmaintain.html

Keyfini çıkarın! (Ben kesinlikle yaptım ...)


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.