Programlama ile ilgili en saçma efsane nedir?


101

Başka bir deyişle: Programlamada en sık karşılaşılan ve sinir bozucu yanlış anlama nedir?

Hangi yaygın ve uzun zamandır devam eden mitleri / yanlış anlamaları , programcıların ortadan kaldırmak / düzeltmek için zor buluyorsunuz .

Lütfen bunun neden bir efsane olduğunu açıklayın.


24
Mythbusters'ın bunlardan bazılarını üstlendiğini görmek isterim.
47'de spong

8
Bir Mythbuggers YouTube kanalı için isteyen var mı? :-)
Tamara Wijsman 9:10

1
Ooooh, MythBusters ve yarış koşulları! Meesa gibi!

@TomWij bu isimde bir web sitesine sahip olmak harika olurdu!
Junior M

Yanıtlar:


272

Bunun nedeni bir programcı olduğunuzda, [kişinin] virüs bulaşmış makinesini nasıl çözeceğinizi biliyorsunuz.


34
Araba benzetmesi / çıkma maddesi: "Ben bir makinist değil yarış sürücüsüyım."
Peter Boughton

15
Bu çizgi roman alakalı: theoatmeal.com/comics/computers
lunixboch


21
@ Yemek yapabiliyorsa, arkadaşlarının partilerini hazırlamak için gönüllü olmaya başla
Steven A. Lowe

19
Nasıl yapılacağını bilmiyorum ama ... Makinenizi tamir ederek saatlerce harcamak istemeyeceğim zaten.
ChaosPandion 10:10

267

İş avı yaparken beni çıldırtan ortak bir İK meselesi: tüm kodlama becerilerinin dile özgü olduğu, komut setlerini aşan hiçbir yazılım mühendisliği uzmanlığı olmadığı varsayımı. Java’da ve Perl’deki bir diğer on yıllık deneyim, C # kullanan bir projede tamamen yararsız olacağınız anlamına geliyor.

“Evet, bir öğrenme eğrisi var. Ama bundan daha zorlu geçişler yaptım. Sana bir anlaşma yapacağım, ilk ay için% 80 ödeyeceğim ve o zaman sonunda yapmazsam ... Bekle, aslında bu sohbeti yapmıyoruz, çünkü İK maymununuz başvurumu silmiş. "


91
+ İK maymunu için INF.
Rusty

67
Bir İK adamım beni bir rol için reddetti çünkü C # 'yı biliyordum, ama dotNet'te kod yazabilecek birini arıyordu.
burnt_hand

11
@ burnt_hand: Evet, dotNet'i biliyorum. Excel ve Internet Explorer'ı da biliyorum. Haz sözleşmesini şimdi yapabilir miyim?
Alan Plum

Java ve C # arasında sözdizimi, yapı, SDLC vb. İle büyük çakışmalar olduğu konusunda hemfikir olmama rağmen, röportajınızda size makul derecede zor C # testi verirseniz, nasıl ücretlendireceksiniz?
JBRWilkinson

2
@Kyralessa - Bilgisayarın altında yatan bilgi işlem teorisi ve herhangi bir programlama dilinde temel hatalar yapmama konusunda yeterince bilgim olduğunu düşünüyorum. Belgeleri okuyabilirim. Ancak, sınırlı bir mühendislik becerisine sahip / yapacak / yapacak bir dile özgü işe alım yapılması, programın yapısı, tasarımı, doğruluğu, ölçeklenebilirliği, güvenilirliği ve büyük olasılıkla sabitlenmesi muhtemel olan masrafları karşılayacak bakımında temel hatalar yapmaktadır. Bu arada yazılımın kalitesinin düşük olması nedeniyle tüm müşterilerinizi kaybetmezseniz (projenizin aslında her yere ulaştığını varsayarsak).
flamingpenguin

261

Yazmıyorsanız, çalışmazsınız.

Zombi boş bakışlarının ve kahve yürüyüşlerinin kafalarında bir şeyler organize eden programcılar için şart olduğuna inanıyorum.


9
Sayfa yukarı, sayfa aşağı ... sayfa yukarı, sayfa aşağı ...
adolf sarımsak

139
Yazmak için para almadım, düşünmek için para aldım. Bonus olarak yazmaya başladım.
Kevin Laity


11
Bu yüzden, "çalışma süresi" ni bir ekran tarayıcı ve web kamerasıyla kaydetmeyi sunan çevrimiçi serbest pazarları pek düşünmüyorum. O NE LAN? Eğer teklifimin iyi olduğunu düşünüyorsan, neden ücret talep ederken tam olarak ne yaptığımı umursuyorsun ?
Alan Plum

10
"Kodlamak için daha fazla zamanım olsaydı, daha az satır yazardım." - Abe Lincoln'un teklifini al.
JeffO

158

Sadece daha fazla insanı atarak geç bir projeyi hızlandırabilirsin.


28
Ah, Efsanevi Adam Ayından. en.wikipedia.org/wiki/The_Mythical_Man-Month
spong

2
Aslında, yapabilirsin. -1 (evet, bir efsane taşıyıcısına bakın!)
P

63
"9 kadını bir odaya koyamaz ve bir ay içinde bebek yapamazsın" diyen renkli bir yazı kullanıyoruz.
Walter

10
Geçen hafta gerçekçi olmayan bir programla tanışmak için "proje" deneyimi olmayan 4 kişi ekledik. Bu haftaki proje raporunda üst yönetim listelerine yol açıyor: "Programlama kayması Nedeni: Yeni ekip üyelerinin öğrenme eğrisi nedeniyle verimlilik azaldı" ve "Kurtarma Planı: Fırsatın olduğu yerlerde daha fazla insan eklemeye devam ediliyor". Unbelieveable.
AShelly

7
@Walter, ancak 9 ayda 9 bebeğiniz ve 7 yılda küçük lig beyzbol takımınız olabilir.
Huperniketes

132

Bu yazma yazılımı kolaydır.

Zaman içinde ve bütçeyle geçen tüm bu projeleri başka nasıl açıklarsınız ve insanlar (politikacılar, medya vb.) Hala şaşırır ve müşteriler "küçük web sitelerinin" (veya her neyse) gerçekte ne alacağını söylerken şikayet ederler. birkaç bin doların gelişmesi ve maliyeti aylar (lira, Euro, [seçim para birimini girin])

Bulanık ve sürekli değişen ihtiyaçlarla bazen herhangi bir yazılımın bitmesinin şaşırtıcı olduğunu düşünüyorum!

Bundan biraz daha karmaşık olduğunu biliyorum;)


11
Ve bu, sahildeki alternatifleri daha ucuza geliştirmek için geliştirme yapmaya çalıştıkları zamandır. Sadece çok daha sonra, bunun daha da pahalı olduğu ortaya çıktı. Geliştirme ekibi ve müşteri arasındaki fiziksel ayrılık ve iletişim zorlukları nedeniyle gerçekte ihtiyaç duyduklarından daha az şey var.
7wp

1
Bu sadece yöneticiler arasında bir sorun değil aynı zamanda programcıların da kendileri. Asıl sorun, kod yazarken aktif olarak harcanmayan zamanın sıklıkla gözden kaçırılmasıdır (muhtemelen yaygın LOC = verimlilik ölçümü efsanesi nedeniyle).
Alan Plum

3
Gereksinimler değiştiği için değil, istedikleri şey değildi.
JeffO

1
Birisi programlamayı "sadece" if "ifadeleri" olarak reddetti. Tamam, belki de ... bu durumda, şiir "sadece bir demet kelime" dir ... ... film prodüksiyonu "sadece birkaç sahne" dir, vb.
JoelFan

2
Programlama bitinin işin kolay bir parçası olduğunu düşünen bir yönetici türü için çalıştım. Ve hayır, kendisi hiçbir programlama deneyimine sahip değildi.
Kaptan Sensible

114

Uygulamanın karmaşıklığı, kullanıcı arayüzünün karmaşıklığı ile doğru orantılıdır. Bu nedenle, bir hafta sonu boyunca Google veya Twitter'ı oluşturabilmelisiniz.


2
bu doğru, Twitter ve Google’ı tek bir hafta sonu boyunca kurabilirim. Bu onların yazılımı karmaşık değildir; Google için, arama algoritmaları (bir kod kütüphanesiyle veya veritabanı sürücüsüyle daha karşılaştırılabilir) ve Twitter (son 1,5 yıla kadar), yalnızca ölçeklenebilirlik ve veritabanı sorunlarının karmaşık olmasıyla olağanüstü derecede basitti. Artık daha karmaşık olduğu için (daha fazla çalışan gerektiren), ayrıca çok daha karmaşık bir kullanıcı arayüzü ve daha birçok kullanıcı arayüzü var.
orokusaki

3
Sanırım Joel Spolsky'nin blogunda okudum, ancak yazı sadece arka uç ilerleme ile ilgili olarak GUI ilerleme olarak gösterildiğini belirtti. Bu şekilde, çoğu programın göz şekerlemesinden çok daha fazlasını içerdiğini anlamayacak kadar aptal olan sivri saçlı erkeklere gerçekçi bir ilerleme tahmini verebilirsiniz.
Evan Plaice

3
1+ Eski patronuma, karmaşık arka uç kodu üzerinde çalışarak saatler harcadığım bir SharePoint ile ilgili projeyi (çok dilli bir addon) demo uyguladığımda bir zaman vardı. Sonuçta UI üzerinde çok fazla bir şey yapılmadı, bu da patronumun projede pek bir şey olmadığına inanmasına neden oldu. Bu beni kızdırdı. Klavyede saatlerce oturup SharePoint'in tuhaflıklarının yanı sıra metin değiştirme mantığını aşmaya çalışan da değildi.
Jason Evans

1
Bazı büyük, neredeyse imkansız, istek "yapmak için bir düğme ekleyebilir misin ..." şeklinde ifade edildiğinde nefret etmeyin
JoelFan

Son birkaç yıldır ne yaptığımı merak ediyorum. Tam zamanlı olarak çalıştığım tüm bu projeler hiçbir zaman bitmeden bitmiş olmalıydı, çünkü hiç bir kullanıcı arayüzü yoktu. :-)
Bart van Ingen Schenau

95

Tüm programcılar matematikte iyidir. :-)


Yorum yapanlar : yorumlar, uzun tartışmalar için değil, açıklama arayışı içindir. Bir çözüm varsa, bir cevap bırakın. Çözümünüz zaten yayınlandıysa, lütfen geçersiz kılın. Bu soruyu başkalarıyla görüşmek isterseniz, lütfen sohbeti kullanın . Daha fazla bilgi için SSS bölümüne bakın .

Matematikteki yeteneklerin bir şekilde programlama becerileri ile ilgili olduğunu düşünüyorum.
Diego

@Diego: Her ne kadar zorunlu olsa da, tüm programcıların matematikte iyi olduğu anlamına gelmez.
Omega

95

Bilgisayarlarla uğraşan her genç çocuk, deneyimli bir çalışan programcıya eşdeğer (veya daha üstün) yeteneklidir.

14 yaşındaki yeğenim bilgisayarlarla iyi çalışıyor ve çimlerimi biçmek için ona 10 $ / saat ödüyorum. Bir sonraki FaceBook'u yazmak için neden altı rakam ödeyeyim?


5
Muhtemelen kendi ortamlarındalar yani kendi standartlarında kendi başlarına çalışıyorlar. Onları iletişim kurmaları gereken bir takıma yerleştirin ve orası acı çektiği yer.
adolf sarımsak

36
Karşı soru şu olabilir: "Evinizi inşa etmesi için ona ne ödeyecektiniz?"

7
Nitelikleri bulunmayan ancak düzenli kod yazan bir çocuk, Bay Spagetti'yi her gün yenebilir.
Zaz

13
Bunun için hollywood'u suçluyorum
MAK

6
Başladığımda kendime öğrettiğim ve üniversitede öğrendiklerimin sadece bir başlangıç ​​olacağını umuyordum ve daha iyi programcılar ve daha bilgili geliştiriciler olan daha deneyimli insanlarla çalışacağımı ve öğreneceğimi düşünüyordum. onlardan çok. Tecrübe bana aksi öğretti. Bu kesinlikle önemlidir, ancak beceri ve tutku olmadan, deneyim sadece zaman kaybıdır.
Peter Boughton

69

Bu gerçek zamanlı hızlı demek.

Belirten "paketler gerçek zamanlı olarak işlenmesi gereklidir." değersiz ve kötü ikiz ... "X'in ne kadar hızlı olması gerekiyor?" cevabını veriyor. ile "Gerçek zamanlı" değersiz daha muhtemelen azdır ... aptal yerine cahil sınırındaki.

Gerçek zamanlı , basitçe söylemek gerekirse, Y işlevinin her zaman X miktarını alacağı ve herhangi bir sapmanın ciddi bir hataya işaret ettiği anlamına gelir. X süresi "gerçek zamanlı" tanımlamıyor, altı mikrosaniye veya altı gün olabilir. Eğer ki belirlemek X'in zaman alacak fonksiyon Y "gerçek zamanlı" tanımlar. Gerçek zamanlı sistemler bu tanımla belirleyicidir.

Öyleyse kes şunu ..


gerçek zamanlı = near-time
brian chandley

4
Ben her zaman gerçek zamanlı olmanın, gerçekleşen zamana atıfta bulunmak yerine, sizin ihtiyaç duyduğunuzda gerçekleşen şeyin ne demek olduğunu düşündüm.
burnt_hand

14
Bu muhtemelen kötü adlandırılmış bir kavramın kafa karışıklığına katkıda bulunduğu durumlardan sadece bir tanesidir.
JohnFx

2
@JohnFx Peki. Kavramlar Bağlam gerektirir.
Rusty

2
@Richard: Gerçekten, iTunes bir şey çalmadan önce her zaman birkaç dakika alır. Demek istediğin bu değil miydi?
konfigüratör

69

Siz neden buggy kodunu yazıp daha sonra hataları bulmaya çalışırken kodu okumak için çok fazla zaman harcamak yerine, ilk olarak doğru yazmıyorsunuz?

:-) :-) :-) :-) :-)


34
Açıkçası, bu iyi bir soru. Kodu iyi yapmak için en kolay zaman ilk defa yazıldığı zamandır.
DJClayworth

10
App config ayarında bir
ayarımız var

1
@DJClayworth - bu her zaman işe yaramaz. Bazı durumlarda, sorun o kadar büyük, kötü tanımlanmış ya da sadece oldukça zor, ilk kez "doğru" ya yaklaşmak bile beklenemeyecek kadar fazlaydı. Böyle bir durumda, tamamen yanlış olmayan bir "ilk kesim" yazmak, ilk kez doğru bir girişimde bulunmak için sonsuz bir şekilde tasarlamak ve yeniden tasarlamak için gün / hafta / ay harcamaktan daha iyidir.
Stephen C

Bu, "Neden TDD yapmıyorsunuz?" Adil olmak gerekirse, gerçek dünya gelişimi için aşırı basitse, lanet olası iyi bir soru.
Dan Ray

1
@Stephen C: evet, ama sadece doğru çalışması için çoğunlukla sağa ve sola doğru bir şey yapmamaya karşın çoğunlukla doğru (mükemmel bir şekilde değil) yerine bir fark vardır. Söylediğinin bu olmadığını biliyorum ama hala söylenmesi gerektiğini düşünüyorum.
n1ckp

65

Üniversiteye gitmediysen, iş için uygun değilsin


27
Ayrıca: derecesi olan bir programcı, programcıdan iyidir ve buna göre ödeme yapılması gerekir. Aynı muhtemelen yaş ve cinsiyetçilik ile gider. Bu tür saçmalık beni çıldırtıyor - eğer iyi kod yazmayı bilmiyorsanız nereye gittiğinizi ve ne yaptığınızı daha az umursamıyorum. Bu, kurum kültürü (rütbe == otorite) ile çatışan başka bir programcı / inek kültürü örneği (beceri == otorite) olabilir.
Alan Plum

1
Ve yine de Üniversitede ders verenler, öğrencilerin ekip halinde nasıl çalıştıklarını gözlemleyerek programcıların ve projelerin davranışını genelleştirebileceklerini düşünüyor gibi görünüyor. ACM'nin iletişimi yılda 4-6 bu tür makaleler için iyidir.
MIA

1
@Billy Bir üniversite diplomasının jack anlamına geldiği yer burası, ancak bir üniversite diploması size her şeyi verecek mi? İkisi de okula gidiyor, ikisi de diğerinden daha iyi, ama sosyolojik bir fark var
Tarka

4
@Billy: Kanada'da, üniversite size bir derece verir ve kolejler size diploma verir. Kolejler "pratik şeyler öğrendiğiniz okullar" gibidir. Normal topluluk / üniversite vs ABD'de topluluk kolej düşünün. Burada genellikle iki yıllık uzmanlık gösteren uygulamalı programlar var. Bir üniversiteden bir bekar (usta, vb.) Alamazsın. Temel olarak, yazılım yazmayı öğrenmek için üniversiteye ve bilgisayar bilimlerini okumak için üniversiteye gidersiniz. Üniversite dereceleri işe alımlarda çok daha güçlü tercih edilir.
Adam Lear

4
Üniversiteler en az bir önemli şey öğretiyor: zihniyet . Bu çok önemli, ama bunu bilmeyenler ... pekala, bunu bilmiyorlar.

61

Bu erken optimizasyon, hiç optimizasyon yapmamanız gerektiği anlamına gelir. Daha korkunç veritabanları gördüm, çünkü hiç kimse tasarımdaki performansı (herhangi bir veritabanı sistemi için kritik öneme sahip) diğer herhangi bir veritabanı tasarım sorunundan daha erken bir optimizasyon olarak değerlendirmek istemedi. Çöp, bilinen performans katilleri vardır, onları ilk tercihiniz olarak kullanmayı bırakın.

Başka bir efsane, veritabanını yeniden düzenlemek çok zor. Hayır ama etkili bir şekilde yapmak için tasarım aşamasında yeniden düzenlemeyi nasıl yapacağınızı düşünmelisiniz. BTW, bu sinir bozucu tasarım temelli performans sorununu çözmek için ne kadar beklerseniz, düzeltmesi o kadar zor olacaktır.

Bir başka kötü mit, veritabanı tasarımı OOP ilkelerini yansıtmalıdır. Hayır, veritabanları OOP prensibi olmayan setlerle çalışmak üzere tasarlanmıştır. Bazı OOP olayları korkunç performans sorunlarına neden olurken, diğerleri veri tabanı açısından aptalca acı çekiyorlar.

Son olarak, uygulamada veri bütünlüğünü zorlamanız gerekir. Veritabanları uygulamayı geçecek ve uygulama değiştirildiği zaman kuralları kaybedecek, çok amaçlı uygulamalar bunlara erişecek ve uygulamadan geçmeyen şeyleri düzeltmek için doğrudan sorgular çalıştırma ihtiyacı duyulacaktır. Veritabanında iyi veri içeren veri bütünlüğünü zorlamayı reddeden bir veritabanı görmedim.


Özellikle veritabanı bütünlüğü kontrolleri hakkındaki yorumlar için +1.
Frank Shearar

+1 Özellikle son paragraf için. O davulu bir defadan fazla yedim.
İkili Savaş,

5
İlk paragraf için +1. Erken optimizasyon tüm kötülüklerin köküdür; Kanlı sebep olmadan yanlış kod yazmak daha da kötüdür.
konfigüratör

3
"Bazı OOP olayları korkunç performans sorunlarına neden olacak ve diğerleri de veritabanı açısından saçma sapan" - hangisini söyleyebilir misiniz? OOP'yi biliyorum, ancak veritabanları hakkında çok fazla şey bilmiyorum ve fikirleri her iki taraftan diğerine ne kadar uzağa taşıyabileceğimle ilgileniyorum.
Tom Anderson,

@HLGEM Ayrıca örnekleri ile de ilgilenebilirim @ Tom merak ediyor ...
Armand

53

Bazı efsanevi mutlak en iyi uygulamaların bir kaynağı olduğunu

Hiçbir sapma hiçbir zaman haklı gösterilemez.

Bir şeyi en iyi uygulama olarak tanımladığını iddia eden hiçbir belge sorgulanamaz.


1
müdürlerinize daha iyi bir ekip üyesi ...
Bill

5
Bu dokümanı bana iletir misin?
AShelly

1
Tamamen katılıyorum. Python kodunda sekmeleri ve boşlukları karıştırmanız kimin umurunda?
Zaz

4
@Josh - Sekme konumlarının nerede olduğu konusunda farklı bir fikri olan bir araç zinciri kullanarak kaynak kodunuzu görüntülemek zorunda olan biri.
Stephen C

1
"En iyi uygulama" yı "bunu haklı çıkaramam" olarak yorumluyorum. Kesinlikle bu şekilde kullanıyorum.
Tom Anderson,

51

Pazarlamanın, bir ton küçük özellik eklemenin, tek bir özellik yerine oldukça ağır bir özellik eklemekten daha az iş olduğunu düşünüyor gibi görünmesi. Muhtemelen, “görev değiştirmenin hiçbir ek yükü olmadığı” yanlış anlaşılmasının daha belirgin bir örneğidir.


12
Ve pazarlamanın daha da eğlenceli olanı, hangi özelliklerin kolay olduğu ve neredeyse imkansız olduğu konusunda hiçbir fikre sahip olmamaktır.
derobert

4
@derobert Tam olarak, daha düşünceli pazarlama çalışanlarından bazılarının, uygulamanın çok zor olduğunu düşündüğü bazı basit / kolay özellikler hakkında soru sormaktan korkmakta olduğu deneyimim oldu. Tersini çok daha sık tecrübe etmeme rağmen: işte müşteriye çoktan sattığımız X "kolay" özelliklerin bir partisi, lütfen dün
yapalım

50

Bu yorum koduna gerek yok ya da "iyi kodların yorumlara ihtiyacı yok". Bazen karmaşık bir kod parçasının ne yaptığını açıklamanız gerekir. Ayrıca, kod bölümlerini yorumlamak çok daha etkili bir şekilde okumayı sağlar.


14
@DisgruntledGoad - Yine de doğru. Bu "mit" deki yanlış anlama, çok sayıda programcının monolitik kafa karıştırıcı kodlarını "iyi" olarak değerlendirmesinden kaynaklanmaktadır. if user.is_logged_in: print('Welcome')Yorum yapmak gerekmez.
orokusaki

3
@orokusaki Her algoritma bu kadar basit değil.
Jouke van der Maas

25
@orokusaki, "basit kodların yorumlara ihtiyacı yok" ile "iyi kodların yorumlara ihtiyacı yok" ile karıştırıyorsunuz. İyi kod her zaman basit değildir.
Hoşnutsuz Goat

3
@Juke van der Mass: elbette. Ancak algoritmanın ne kadar karmaşık olduğu önemli değildir, amaç algoritmayı basitçe ifade etmektir. yani iyi kod, karmaşık algoritmaları, kuralları, optimizasyonları basit ve anlaşılmaz bir şekilde anlaşılabilir bir şekilde ifade eder. Basit şeyleri basitçe ifade etmek, nispeten kolaydır. Karmaşık şeyleri basitçe ifade etmek, becerinin olduğu yerdir.
flamingpenguin

2
@orokuskai: iyi kod basittir. Yaptığı şeyler karmaşık olabilir ama kodun basitliğini (zarafeti) bence iyi yapan şey bu! Elbette, kod başka birçok şey yapar ve çöp kodu size çok para kazandırabilir. Ancak amacım, karmaşık durumlarda bile basit kod yazmak.
flamingpenguin

50

En kötü efsane: Uzun süredir programlama yapıyorsanız kolayca Proje Yöneticisi olabilirsiniz.

Ve eğer uzun süredir programlama yapıyorsanız, proje yöneticisi olmalısınız.


3
Daha da kötüsü, bir programlama projesini hiç programlamadıysanız veya yönetmediyseniz, birkaç kitap okumak ve sihirli bir şekilde yazılımın gerçekleşmesini sağlamak. Daha önce bir Başbakanla o yolda bulundum ve yaşadığım sürece tekrar etmeyi umursamıyorum.
Evan Plaice

4
Daha da kötüsü: Takımdaki tüm harika programcılar rapor yazarken kod yazmayı tercih ettiğinden, vasat programcıyı Proje Yöneticisine tanıtmalıyız. Düşünce "yeterince teknik" olacak. Gerçek şu ki, ekiple üst yönetim arasında bir dezenformasyon filtresi olması biter.
AShelly

2
Ayrıca: En iyi programcıysanız, proje yöneticisi olmanız ve o andan itibaren gerçek bir programlamayı kendiniz durdurmanız gerekir! Hayır, çok teşekkür ederim, ama yine de zam yapacağım. Not: Lider programcı veya böyle bir şey olmaktan bahsetmiyorum, herkesi yeterli yetersizlik seviyesine yükseltmenin akıllıca bir fikir olduğunu düşünen yöneticilerden bahsediyorum.
Alan Plum

1
Peter Principle olarak da bilinir. en.wikipedia.org/wiki/Peter_Principle
Spoike

iyi dedi gerçekten
Michael Easter

50

Projemizde Java, C # ve C ++ dışında bir şey kullanırsak, destekleyecek programcı bulamayacağız.


Bunu hiç duymamıştım ama geçerli. Tabii ki karanlık bir dil kullanıyorsanız, bu olur.
Maniero

5
@bigown, "belirsiz"? Ne kadar belirsiz? TCL belirsiz mi? Haskell? Pascal (Delphi)? Python? Bence karanlık değiller. Pek çok insan kendilerine inanıyor ve çok ciddi bir dil grubuna (C ++, C # ve Java) "ciddi" gelişimde izin veriliyor.
P

5
@bigown: oh, COBOL gibi gizsiz demek istiyorsun? : p
AnonJr

2
Bir keresinde Linux'ta Objective-C kodu yapan küçük bir şirkette çalıştım. Mühendis olmayan fakat teknik bilgisi olan CEO, çevresinde ObjC programcılarının olduğuna veya başka birinin kullandığına inanamadı. Aslında, iyi geliştiricileri işe alma konusunda hiçbir problem yaşamadılar.

4
Tam tersinin doğru olduğuna dair bir argüman okudum: belirsiz (veya en azından ticari olarak önemsiz) olan diller için ama havalı, eğlenceli ve ilginç (ki bu bağlamda Python ve Ruby anlamına gelir), işten daha çok programcı var. Ayrıca, hepsi havalı, eğlenceli ve ilginç dilleri bilen insanlar, bu yüzden akıllı olmalılar. Aslında, Python'da çalışmak, akıllı programcıları işe almayı Java'da çalışmaktan daha kolay bulacağınız anlamına gelir. İnanıp inanmadığımı bilmiyorum, ama en azından Ortodoks fikri kadar mantıklı!
Tom Anderson,

42

Java, farklı sınıflara sahip sadece C ++.


57
+1 Bir keresinde bir görüşmeci bana "C ++ ve Java arasındaki fark nedir?" Diye sordu. Bu yüzden bazı farklılıkları listeledik. Yerel derleyici ve JVM, ANSI standardı vs. tescilli, çöp toplama, sınıf yükleyicileri vs. Öğrenci değildi, mühendislik müdürüydü.
Bill Karwin

11
@Bill, cevabım o zaman, "öyleyse neden onlara tamamen farklı isimlerle bakalım?"
Jesse C. Dilimleyici

2
@Bill, bu yüzden testi geçtiniz ve işe aldınız?

20
Cevabım "Hoşçakal" olur.
Foole

6
@Foole System.exit (1) demek istemiyor musunuz?
Barry Brown


33

Muhtemelen gördüğüm en tehlikeli olanı, çok kolay bir şekilde kabul edildiğinden, hızlı bir şekilde kod yazabilmenin iyi olduğu ve bu nedenle verilen bir dilde [buraya özellik ekle] ne kadar çabuk kodlayabiliyorsanız, dil o kadar iyi dır-dir.

Bu ciddi bir erken optimizasyon örneğidir, çünkü kodu oluşturmaktan çok daha fazla çalışma kodu korumaya gidiyor . Bu, hızlı yazılması kolay olan koddan daha kolay okunması, anlaşılması ve hata ayıklanması için kod yazmanın çok daha önemli olduğu anlamına gelir ve okunması kolay kodun kolaylaştırılması, dil kalitesinin çok daha kullanışlı bir ölçümüdür.


14
işte tam olarak çalıştığım firmanın ürünlerinden birine ne oldu; koştu gelişme parlak olarak görüldü. LOOKED ok ürünü ve geliştirici üst yönetim tarafından övgüyle karşılandı. Başka bir küçük geliştirici daha sonra "küçük" bir hatayı düzeltmekle görevlendirildi ve bir hafta sonra kodu anlamaya çalıştıktan sonra, kodun ne kadar çöp olduğuna inanamayan bir kıdemli öğrenciden rehberlik istedi. Üst yönetim kabul etmeyi reddetti, iki yıl boyunca büyük bir sorun olarak ortaya çıktı, sonunda sonunda bir hurda yığını olduğu ve sıfırdan tekrar kodlanması gerektiğine karar verdi - ve bu sefer
Sk93

4
Teknik yöneticiler arasında, yetenekli geliştiricilerinizin vasıfsız geliştiricilerden on kat daha üretken olduğu konusunda köklü bir mit vardır. Bu efsanenin doğrudan sonucu, hızlıca kod üretebilen herhangi bir geliştiricinin - ne kadar tehlikeli veya ne kadar zor olursa olsun - övgü ve terfi almasıdır.
rtperson

3
Sen İHTİYACINIZ güçlü bir dil. : Ti yapmaya olanak sağlar Paul Graham dillerin tartışma ve ne bakınız paulgraham.com/power.html

4
@ Thorbjørn: Bu makaleyi okudum ve Paul Graham yanlış yazdı. O bir Lisp savunucusu, bu yüzden Lisp'in güzel görünmesi için gerçekleri kendi kendine hizmet eden tartışmalara çeviriyor. Belki bilinçli bile değil, çünkü gerçekten çok fazla büküm almıyor. Makalenin sonuna işaret ettiği için okunabilirlik ve özlülük arasında çok fazla örtüşme var. Ancak çıkardığı sonuçlar, gerçek dünyadaki yazılım geliştirme durumu ile tamamen senkronize değil. Evet, güçlü bir dile ihtiyacınız var, ancak gücü yanlış ölçütlere göre ölçüyor ve söylediklerine inanmak zararlı.
Mason Wheeler

3
@rtperson: Verimliliğin on faktörü tarafından değişebileceği söylenemez. Hızlı biten insanlar mutlaka daha üretkendir.
David Thornley

31

Yazılım geliştirme sürecine imalat dersleri uygulanabilir.


6
Derslere bağlıdır. Bir yatak fabrikasında çalışırken, görev değiştirmenin üretimimiz için zararlı olduğunu öğrendik. Çok önemliydi, çünkü saat başına değil, yapılan yatak sayısı ... ve aynı sebepler için de geçerli olan bir dersle.
AnonJr

Çoğunlukla donanım yapan bir yerde çalışırken bu kalıcı bir efsanedir. Yazılımımızı 'inşa etmeyi' bir donanım 'parçası' ile aynı modele sığdırmak için atladığımız çemberler şaşırtıcı ...
AShelly

5
Şey, üretim yazılımı önemsizdir. Kopya yapmak kolaydır ve milyonlarca kopya çıkarmak o kadar pahalıya mal olmaz. Bu, insanların imalat bölümünü tamamen görmezden gelmelerine ve imalat sürecini tasarım sürecine uygulamasına neden olur.
David Thornley

Bunun için +100, özellikle ekonomi eğitimi alan insanlar bunu düşünüyor
Kugel

1
Herkes Jack Reeves'i okumalıdır: developerdotstar.com/mag/articles/reeves_design_main.html - bu, kaynak kodun bir ürün değil bir tasarım olduğu fikrinin kökenidir (veya en azından erken ve güçlü bir ifadedir) . Programcılar taslak odasındaki tasarımcılar gibidir, fabrika katındaki makineciler değil, programlama yönetimi de imalat değil diğer mühendislik tasarımlarının yönetimi gibi olmalıdır.
Tom Anderson,

31

Bir programcı olarak en son donanım trendleri, overclock, vaka modları vb. hakkında her şeyi bildiğiniz için arkadaşlarınız ve akrabalarınız viteslerini satın aldıklarında size danışıyorlar.


5
Bunlardan bazılarını üst lisede tutardım, ama bugünlerde genelde benim yaptığım şeyle alakasız olduğunu ve bazıları temizken, zamanlarını bilen ve zamanını kullanan birine para vermeyi tercih ederim. ne istersem onu ​​yap (örneğin, kod yazarken). Belki başka bir "bilgisayarlar ile iyi" yanlış anlama.
Alan Plum

2
+1, ya da hafifçe bir tanjant - Bir programlayıcınız nedeniyle, piyasaya sürülmeden önce üretim tesisinden gönderilen yeni marka serisinin üst kısmında yanıp sönen, 300 LED'lık bir fanı döndüren süper kandırıcınız var. Gerçekten değil! Terbiyesizce hızlı bir makine, siyah, çok ucuz bir durumda. Bunun ötesinde gerçekten umrumda değil!
Cerrahi Kodlayıcı

Gülmek, işte evde bir tanrı-yüce oyun teçhizatı olan bir PM asistanı var, ilgisiz bir notla (A Ürünü) veya (B Ürünü) satın alıp almayacağını sormak için her zaman Dev bölgesine yöneldi. Ayrıca dev ekibi varsayar tüm (o aslında yok ki.), 4chan üzerinde takılmak - nefes
ocodo

+1 Kelime. Bu nokta açık. Bir yazılım geliştiricisiyim ve birisinin internetini birçok kez yapılandırmam istendi ve temelde yaptığım deneme yanılma ve Google aramaları. En iyisi, birisini bir iyilik yaptıktan sonra tamamen alakasız bir şeyle kırmak ve sonra sizin suçunuz.
Anne Schuessler

30

Programcılar yapmanın çok zor / basit bir şekilde imkansız olduğunu söylerken İK tembel ve motivasyonsuz olduklarını düşünüyor


2
Yönetimi de dahil et
Prasham

Hayır dediğinizde, onunla çalışmak için zor bir insan olduğunu düşünüyorlar.
Kaptan Sensible

+100, ve yeterli "motivasyon" ile cevabınızı değiştirebilirler. Veya başka bir [daha az deneyimli] geliştiriciye gidin ve onu evet demesini sağlamak için, sadece gelişimin yarısını bitirmek ve onları hakkında uyardığınız tam soruna çarpmak için ayrıntıların yarısını bilerek bırakın.
wildpeaks

28

İşim için açık kaynak kodlu bir program olmalı. Sadece indirebilir ve gereksinimlerime uyamazsın.


2
+1. Oh, evet, ne yapmamız gerekiyorsa, zaten açık kaynakta olmalı.
sharptooth

7
çoğu zaman var ... en azından web geliştirme için doğru olan.
WalterJ89

@ WalterJ89: Orada olabilir, ama bu onu kullanmanın iyi bir fikir olduğu anlamına gelmez. Açık kaynak otomatik olarak iyi kod anlamına gelmez.
Alan Plum

doğru .. ama Wordpress, Drupal, jQuery söz konusu olduğunda, e-Ticaret gibi özgürlüğün çok büyük olmadığı, web’in çok açık olmadığı kadar sık ​​bir alan olabilir. açık kaynak topluluğu, özel bir yardım masasından çok daha fazlası.
WalterJ89 19:10

7
Bunun tersi de bir efsanedir. İş ihtiyaçlarınızı karşılamak için FOSS kullanamazsınız.
terminali

27

Birden fazla kişinin bana, sadece doğrudan ikili olarak ya da matematiksel semboller kullanarak programladığımızı düşündükleri sohbette ortada gerçekleştirmenin nasıl programlanabileceğini sordular.

Bilmiyorum, bu efsaneyi ortadan kaldırmak istiyorsam, beni gerçekten akıllı gösteriyor!


6
Çoğu insanın hangi programlamanın gerçekte ne olduğunu bile bilmemesine yardımcı olmuyor ... yazılım
ürettiği

7
"Örgü tarifleri yazıyoruz". Büyükanneler bunu anlama eğilimindedir.

C dilinde bir program yazacak kişileri tanıyorum, sonra Meclis'teki en kritik parçaları tekrar edeceğim.
Zaz

1
@Josh - Bir performans sorunu yoksa, bu zaman kaybı gibi görünüyor.
JohnFx

1
@ oosterwal - Derleme ikili değildir ve matematiksel semboller kullanmaz.
JohnFx

26

Bence en büyük yanılgı, kodu kolayca yazabilmek ve kodu okumaktan daha önemli olduğudur.


5
* v (int) (geçersiz) ++
Rusty

1
@Rusty: Sözdizimsel olarak doğru olmak zorunda olmasam bile , çok daha kötü örnekler bulabilirim.

4
Ahh, evet, "Sadece yaz" kodu ...
Paddyslacker

24

Programlama aynı montaj hattı işi gibidir. Bir ürün üzerinde belirli bir süre (belki iş arkadaşlarınızla) çalışıyorsunuz ve sonunda gönderiyorsunuz. Tıpkı tuğladan bir ev inşa etmek gibi.

Kontra: Programlama çok fazla yaratıcılık ve planlama içerir. Bu sanat. Mason gibi, programcı da tuğlayı biçimlendirmekle bütün bir katedral planlamak arasındaki farkı bilir.


6
Montaj hattı çalışmasından farklılıklar konusunda hemfikir olun - ama birçok yönden bir ev inşa etmekten çok farklı olduğunu sanmıyorum.
Billy ONeal

24

Bir programın C ++ 'a taşınması otomatik olarak daha hızlı çalışmasını sağlar.


Başka bir düşük seviyeli dile kadar uzanırdım. Programcı ne yaptığını bilmediğinde bunun tam tersi olabilir.
Maniero

2
Diğer bir yaygın değişken, istemci-sunucu mimarisine geçmektir. "SQL'e yükseltmek, uygulamamı çok daha hızlı hale getirecek!" Şart değil.
JohnFx

Evet, çoğu zaman tam tersi. SQL tür veritabanları ACID olmak iyidir veya neredeyse, fiyat ile geliyor. Ve en kötüsü de olabilir, SQL teknikleri hakkındaki yanlış düşünceler performansa zararlı olabilir.
Maniero

6
Python / Perl / Ruby / etc ile yazılmış olanlar için C ++ / C kodludur. C / C ++ ile yazılmışlar için asm'a taşıma: P. Acaba neyi kabul edersiniz? donanımın içine mi tasarladınız?
MAK


21

Bir tür görsel tasarımcılı herhangi bir programlama ortamı, işletme kullanıcılarının programı "yazabilmesi" ve gerçek programcılara ihtiyaç duyulmamasını sağlayacaktır.


9
Ah evet. Bazı şirketler programcıları gereksiz kılmak için yeni bir yazarlık aracı yarattıklarında ve sonra bunu benimseyen herkes ilerlediğinde ve gerçekten kullanmak için yüksek ücretli <yazarlık aracı> uzmanlarını işe almak her zaman eğlencelidir. Konuya ilişkin örnek: Joomla! ve tüm bu anlamsız.
Alan Plum

HA HA HA HA HA HA HAAA HA +1 :)
Billy ONeal 02:00

Cobol çoktan denedi :)
Carra

20

OOP yeniden kullanımı. Programlamada pazarlanan en büyük yanlışlıktır.


1
İyi. HP XL WESM, yaklaşık% 85 oranında Symbol WS5100 ile aynıdır (OEMming oluyor). İzleme ve yapılandırma kodumun bu yüzdesini kopyalayıp yapıştırmamı ister misiniz, böylece iki kat daha fazla hata olur, yoksa sıfırdan yazmayı ve kırk kez uzun sürsün ve beş kez daha uzun olmasını mı tercih edersiniz? Yoksa $ projesini daha hızlı yapmanın birkaç büyülü dereden biri olduğunu düşünen aptalca bir yönetimden mi baskı yapıyorsunuz?

1
Küçük yeniden kullanım 40 yıl önce ve daha çözüldü. IMHO'nun büyük bölümünde yeniden kullanımı zordur ve henüz çözülmemiştir. Tıpkı Robert Glass'ın dediği gibi , yazılım mühendisliğinin Gerçekleri ve Yanılgıları
MarkJ
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.