ตำนานไร้สาระที่สุดเกี่ยวกับปัญหาการเขียนโปรแกรมคืออะไร?


101

หากต้องการนำไปใช้อีกทางหนึ่ง ... อะไรคือความเข้าใจผิดที่เกิดขึ้นบ่อยที่สุดและน่าผิดหวังเกี่ยวกับการเขียนโปรแกรม

ท่านใดที่ตำนานอย่างกว้างขวางและยาวนาน / ความเข้าใจผิดหายากสำหรับโปรแกรมเมอร์ที่จะปัดเป่า / ที่ถูกต้อง

กรุณาอธิบายว่าทำไมนี่เป็นตำนาน


24
ฉันต้องการเห็น Mythbusters จัดการกับสิ่งเหล่านี้
spong

8
มีใครขึ้นอยู่กับช่อง YouTube Mythbuggers บ้างไหม? :-)
Tamara Wijsman

1
Ooooh, MythBusters และเงื่อนไขการแข่งขัน! Meesa ชอบ!

@TomWij ที่ดีมากที่มีเว็บไซต์ชื่อนี้!
Junior M

คำตอบ:


272

นั่นเป็นเพราะคุณเป็นโปรแกรมเมอร์คุณรู้วิธีแก้ไขเครื่องกำจัดไวรัสของ [person]


34
คำเปรียบเทียบรถยนต์ / ออกจากประโยค: "ฉันเป็นนักแข่งรถไม่ใช่ช่างเครื่อง"
Peter Boughton

15
การ์ตูนนี้มีความเกี่ยวข้อง: theoatmeal.com/comics/computers
lunixbochs


21
@Tim ถ้าเธอสามารถปรุงอาหารได้ให้เริ่มอาสาเธอเพื่อเลี้ยงเพื่อนของคุณ
Steven A. Lowe

19
ไม่ใช่ว่าฉันไม่รู้วิธีการ ... ฉันไม่ต้องการเสียเวลาซ่อมเครื่องที่คุณจะพังใน 2 สัปดาห์ต่อไป
ChaosPandion

267

ทรัพยากรบุคคลทั่วไปที่ผลักดันฉันถั่วเมื่อฉันกำลังหางาน: ข้อสันนิษฐานโดยนัยว่าทักษะการเขียนโค้ดทั้งหมดเป็นภาษาเฉพาะไม่มีความเชี่ยวชาญด้านวิศวกรรมซอฟต์แวร์ที่ก้าวข้ามชุดคำสั่ง ประสบการณ์สิบปีใน Java และอีกห้าใน Perl หมายความว่าคุณไม่มีประโยชน์อย่างสมบูรณ์ในโครงการที่ใช้พูด C #

“ ใช่มีช่วงการเรียนรู้ แต่ฉันเปลี่ยนช่วงยากขึ้นกว่านี้ฉันจะทำให้คุณเป็นข้อตกลงจ่ายให้ฉัน 80% สำหรับเดือนแรกและในตอนท้ายของช่วงเวลานั้นถ้าฉันไม่ใช่ ... โอ้ รอสักครู่เราไม่ได้คุยกันเพราะลิง HR ของคุณลบแอปพลิเคชันของฉันไป "


91
+ INF สำหรับลิง HR
สนิม

67
ฉันมีคนที่แต่งตัวประหลาดฝ่ายทรัพยากรบุคคลทำให้ฉันผิดหวังเพราะฉันรู้ว่า C # แต่เขากำลังมองหาใครสักคนที่สามารถเขียนโค้ดใน dotNet
burnt_hand

11
@burnt_hand: ใช่ฉันรู้ dotNet ฉันยังรู้จัก Excel และ Internet Explorer ตอนนี้ฉันสามารถทำสัญญาได้ไหม
Alan Plum

ในขณะที่ฉันยอมรับว่ามีการทับซ้อนขนาดใหญ่กับไวยากรณ์โครงสร้าง SDLC ฯลฯ ระหว่าง Java และ C # หากพวกเขาให้การทดสอบ C # ที่ยุ่งยากพอสมควรในการสัมภาษณ์ของคุณคุณจะทำอย่างไร
JBRWilkinson

2
@ Kyralessa - ฉันคิดว่าตอนนี้ฉันรู้เพียงพอเกี่ยวกับทฤษฎีพื้นฐานของการคำนวณและฟังก์ชั่นของคอมพิวเตอร์เพื่อไม่ให้เกิดข้อผิดพลาดพื้นฐานในภาษาการเขียนโปรแกรมใด ๆ ฉันสามารถอ่านเอกสาร อย่างไรก็ตามสิ่งที่การจ้างงานเฉพาะภาษาที่มีทักษะทางวิศวกรรม จำกัด / จะ / ทำคือข้อผิดพลาดพื้นฐานในโครงสร้างการออกแบบความถูกต้องความสามารถในการปรับขนาดความน่าเชื่อถือและความสามารถในการบำรุงรักษาของโปรแกรมที่อาจมีค่าใช้จ่ายจำนวนมาก หากคุณไม่สูญเสียลูกค้าทั้งหมดเนื่องจากซอฟต์แวร์มีคุณภาพต่ำในระหว่างนี้ (สมมติว่าโครงการของคุณได้รับจริงทุกที่)
flamingpenguin

261

หากคุณไม่พิมพ์คุณจะไม่ทำงาน

ฉันเชื่อว่าซอมบี้จ้องมองและการเดินเล่นกาแฟเป็นสิ่งจำเป็นสำหรับโปรแกรมเมอร์ที่จัดระเบียบสิ่งต่าง ๆ ในหัวของพวกเขา


9
เลื่อนหน้าขึ้นเลื่อนหน้าลง ... เลื่อนขึ้นเลื่อนหน้าลง ...
adolf กระเทียม

139
ฉันไม่ได้รับเงินให้พิมพ์ฉันก็ต้องคิด ฉันให้การพิมพ์เป็นโบนัส
Kevin Laity


11
นี่คือเหตุผลที่ฉันไม่คิดว่าตลาดอิสระทางอินเทอร์เน็ตที่เสนอการบันทึก "เวลาทำงาน" กับ screengrabber และเว็บแคม WTF? หากคุณคิดว่าคำพูดของฉันเป็นสิ่งที่ดีทำไมคุณดูแลสิ่งที่มันเป็นว่าที่ฉันทำในเวลาที่ฉันเรียกเก็บเงินสำหรับ?
Alan Plum

10
"ถ้าฉันมีเวลาในการเขียนโค้ดมากขึ้นฉันจะเขียนบรรทัดให้น้อยลง" - ลงที่ใบเสนอราคา Abe Lincoln
JeffO

158

ที่คุณสามารถเร่งโครงการล่าช้าโดยเพียงแค่โยนคนอื่น ๆ


28
อาจากเดือนแห่งตำนานมนุษย์ en.wikipedia.org/wiki/The_Mythical_Man-Month
spong

2
ที่จริงแล้วเอ่อคุณสามารถ -1 (ใช่ดูผู้ให้บริการในตำนาน!)
P Shved

63
เราใช้คำพูดที่มีสีสัน "คุณไม่สามารถใส่ผู้หญิง 9 คนเข้าห้องและสร้างทารกในหนึ่งเดือน"
วอลเตอร์

10
เมื่อสัปดาห์ที่แล้วเราได้เพิ่ม 4 คนที่ไม่มีประสบการณ์โครงการเพื่อ "ช่วย" ให้ตรงตามกำหนดการที่ไม่สมจริง รายงานในสัปดาห์นี้จากโครงการนำไปสู่รายการผู้บริหารระดับสูง: "กำหนดการเลื่อนหลุดสาเหตุ: ประสิทธิภาพลดลงเนื่องจากช่วงการเรียนรู้ของสมาชิกทีมใหม่" และ "แผนการกู้คืน: ดำเนินการต่อเพื่อเพิ่มผู้คนเมื่อมีโอกาส" unbelieveable
AShelly

7
@ วอลเตอร์ แต่คุณสามารถมีลูกได้ 9 คนใน 9 เดือนและทีมเบสบอลลีกเล็ก ๆ ใน 7 ปี
Huperniketes

132

ซอฟต์แวร์การเขียนนั้นง่าย

คุณอธิบายโครงการเหล่านี้ทั้งหมดที่ใช้เวลาเกินงบประมาณและผู้คน (นักการเมืองสื่อ ฯลฯ ) ยังคงแปลกใจและลูกค้าบ่นเมื่อคุณบอกพวกเขาว่า "เว็บไซต์ขนาดเล็ก" ของพวกเขา (หรืออะไรก็ตาม) จะใช้เวลา 6 เดือนในการพัฒนาและค่าใช้จ่ายหลายพันดอลลาร์ (ปอนด์, ยูโร, [ใส่สกุลเงินของทางเลือก])

ด้วยความต้องการที่คลุมเครือและเปลี่ยนแปลงอยู่ตลอดเวลาบางครั้งฉันคิดว่ามันวิเศษมากที่ซอฟต์แวร์ใด ๆ ได้เสร็จสิ้นลง!

ฉันรู้ว่ามันซับซ้อนกว่านั้นเล็กน้อย;)


11
และนี่คือเมื่อพวกเขาพยายามนำการพัฒนาไปสู่ทางเลือกนอกชายฝั่งที่ถูกกว่า เท่านั้นที่จะหาข้อมูลในภายหลังว่ามันจะกลายเป็นราคาแพงมากขึ้น และน้อยกว่าสิ่งที่พวกเขาต้องการจริงๆเพราะความท้าทายทางกายภาพและการสื่อสารระหว่างทีมพัฒนาและลูกค้า
7wp

1
นี่ไม่ใช่แค่ปัญหาระหว่างผู้จัดการ แต่ก็เป็นโปรแกรมเมอร์ด้วย ปัญหาที่แท้จริงมีแนวโน้มที่จะเป็นเวลาที่ไม่ได้ใช้งานการเขียนรหัสมักจะพลาด (อาจเนื่องมาจาก LOC = ตำนานการเพิ่มปริมาณการผลิตอย่างกว้างขวาง)
Alan Plum

3
ไม่ใช่ว่าข้อกำหนดมีการเปลี่ยนแปลง แต่ไม่ใช่สิ่งที่พวกเขาคิดว่าพวกเขาต้องการ
JeffO

1
ฉันมีคนยกเลิกการเขียนโปรแกรมเป็น "งบ 'if' เพียงกลุ่ม ตกลงบางทีมันอาจเป็น ... ในกรณีนี้บทกวีคือ "เพียงแค่คำศัพท์" ... การผลิตภาพยนตร์คือ "เพียงแค่ฉาก" ฯลฯ
JoelFan

2
ฉันทำงานให้กับผู้จัดการประเภทที่คิดว่าการเขียนโปรแกรมบิตเป็นส่วนที่ง่ายของงาน และไม่เขาไม่มีประสบการณ์การเขียนโปรแกรมด้วยตัวเอง
Captain Sensible

114

ความซับซ้อนของแอพนั้นแปรผันตรงกับความซับซ้อนของ UI ด้วยเหตุผลนี้คุณควรสร้าง Google หรือ Twitter ในช่วงสุดสัปดาห์


2
นี่เป็นเรื่องจริงฉันสามารถสร้าง Twitter และ Google ในช่วงสุดสัปดาห์เดียว ไม่ใช่ซอฟต์แวร์ที่ซับซ้อน สำหรับ Google มันเป็นอัลกอริธึมการค้นหาของพวกเขา (ซึ่งเปรียบได้กับไลบรารีโค้ดหรือไดร์เวอร์ฐานข้อมูล) และ Twitter (จนถึง 1.5 ปีที่ผ่านมา) นั้นเรียบง่ายเป็นพิเศษโดยมีปัญหาการขยายขนาดและฐานข้อมูลที่ซับซ้อนเท่านั้น ตอนนี้มันซับซ้อนมากขึ้น (ต้องการพนักงานเพิ่ม) มันก็มี UI ที่ซับซ้อนมากขึ้นและ UIs อีกมากมาย
orokusaki

3
ฉันคิดว่าฉันอ่านมันในบล็อกของ Joel Spolsky แต่บทความที่กล่าวถึงเพียงแสดงว่าเป็นความคืบหน้าของ GUI ที่เกี่ยวข้องกับความคืบหน้าของส่วนหลัง ด้วยวิธีนี้คุณสามารถประเมินความคืบหน้าอย่างเป็นจริงกับคนที่มีผมแหลมซึ่งเป็นคนโง่เกินกว่าจะเข้าใจได้ว่าโปรแกรมส่วนใหญ่ประกอบด้วยมากกว่าอาหารตา
Evan Plaice

3
1+ มีบางครั้งที่ฉันสาธิตโครงการที่เกี่ยวข้องกับ SharePoint (ตัวแปลหลายภาษา) กับเจ้านายเก่าของฉันโดยใช้เวลาทำงานกับรหัสแบ็กเอนด์ที่ซับซ้อน ผลลัพธ์ที่ได้ก็ไม่มากนักบน UI ซึ่งทำให้หัวหน้าของฉันเชื่อว่าไม่ได้ทำโครงการมากนัก นั่นทำให้ฉันโกรธ เขาไม่ได้เป็นคนเดียวที่กำลังนั่งอยู่บนแป้นพิมพ์เป็นเวลาหลายชั่วโมงเพื่อที่จะได้สัมผัสกับสิ่งแปลกประหลาดของ SharePoint เช่นเดียวกับตรรกะการแทนที่ข้อความ
Jason Evans

1
คุณไม่เกลียดเมื่อคำขอที่มีขนาดใหญ่และแทบเป็นไปไม่ได้เกือบทั้งหมดเป็นวลีที่ว่า "คุณสามารถเพิ่มปุ่มที่ต้องทำ ... "
JoelFan

ฉันสงสัยว่าฉันทำอะไรเมื่อไม่กี่ปีที่ผ่านมา โครงการเหล่านั้นทั้งหมดที่ฉันทำงานเต็มเวลาควรจะเสร็จสิ้นในเวลาไม่นานเนื่องจากพวกเขาไม่มี UI ใด ๆ เลย :-)
Bart van Ingen Schenau

95

โปรแกรมเมอร์ทุกคนเก่งคณิตศาสตร์ :-)


ผู้แสดงความคิดเห็น:ความคิดเห็นมีไว้เพื่อค้นหาการชี้แจงไม่ใช่เพื่อการอภิปรายเพิ่มเติม หากคุณมีทางออกให้ออกคำตอบ หากวิธีการแก้ปัญหาของคุณโพสต์แล้วกรุณา upvote มัน หากคุณต้องการที่จะหารือเกี่ยวกับคำถามนี้กับคนอื่น ๆ โปรดใช้แชท ดูคำถามที่พบบ่อยสำหรับข้อมูลเพิ่มเติม

ฉันคิดว่าความสามารถในวิชาคณิตศาสตร์นั้นเกี่ยวข้องกับทักษะการเขียนโปรแกรม
Diego

@Diego: แม้ว่าจะไม่ได้หมายความว่าโปรแกรมเมอร์ทุกคนเก่งคณิตศาสตร์อย่างไรก็ตาม
Omega

95

เด็กวัยรุ่นทุกคนที่แฮ็คกับคอมพิวเตอร์มีความสามารถเทียบเท่า (หรือดีกว่า) ในการทำงานกับโปรแกรมเมอร์ที่มีประสบการณ์

หลานชายอายุ 14 ปีของฉันใช้คอมพิวเตอร์ได้ดีและฉันจ่ายเงินให้เขา $ 10 / ชม. เพื่อตัดหญ้า ทำไมฉันต้องจ่ายตัวเลขหกตัวให้คุณเขียน FaceBook ครั้งต่อไป


5
พวกเขาอาจอยู่ในสภาพแวดล้อมของตนเองเช่นทำงานด้วยตนเองตามมาตรฐานของตนเอง วางพวกเขาในทีมที่พวกเขาต้องสื่อสารและนั่นคือสิ่งที่พวกเขาต้องทนทุกข์ทรมาน
อดอล์ฟกระเทียม

36
คำถามตอบโต้คือ: "คุณจะจ่ายเงินให้เขาเพื่อสร้างบ้านของคุณ"

7
เด็กที่ไม่มีคุณสมบัติ แต่การเขียนโค้ดที่เรียบร้อยสามารถเอาชนะ Mr. Spaghetti ได้ทุกวัน
Zaz

13
ฉันโทษฮอลลีวู้ดที่
MAK

6
เมื่อฉันเริ่มฉันคาดว่าสิ่งที่ฉันจะสอนตัวเองและรับที่เดียวจะเป็นเพียงจุดเริ่มต้นและฉันจะทำงานกับคนที่มีประสบการณ์มากขึ้นซึ่งเป็นโปรแกรมเมอร์ที่ดีขึ้นและนักพัฒนาที่มีความรู้มากขึ้นและฉันจะเรียนรู้ มากมายจากพวกเขา ประสบการณ์สอนฉันเป็นอย่างอื่น มันเป็นสิ่งสำคัญอย่างยิ่ง แต่หากปราศจากทักษะและความหลงใหลประสบการณ์จะเสียเวลาเพียงอย่างเดียว
Peter Boughton

69

ที่เวลาจริงหมายถึงการได้อย่างรวดเร็ว

ระบุ"แพ็คเก็ตจะต้องดำเนินการในเวลาจริง" ไร้ค่าและความชั่วร้าย ... ตอบว่า "X ต้องเกิดขึ้นเร็วแค่ไหน?" ด้วย"เรียลไทม์"อาจน้อยกว่าไร้ค่า ... ติดกับโง่มากกว่าไม่รู้

เรียลไทม์หมายความว่าเพียงแค่ใส่ฟังก์ชั่น Y ที่จะใช้เวลาจำนวน X และการเบี่ยงเบนใด ๆ ที่บ่งบอกถึงข้อผิดพลาดร้ายแรง ระยะเวลาของ X ไม่ได้กำหนด "แบบเรียลไทม์" ซึ่งอาจเป็นหกไมโครวินาทีหรือหกวัน ที่คุณสามารถกำหนดฟังก์ชั่น Y จะใช้เวลา X กำหนด "เรียลไทม์" ระบบตามเวลาจริงถูกกำหนดโดยคำจำกัดความนี้

ดังนั้นเคาะมันออกไป ..


เรียลไทม์ = ใกล้เวลา
brian chandley

4
ฉันมักจะคิดแบบเรียลไทม์หมายถึงสิ่งที่เกิดขึ้นตามที่คุณต้องการไม่ใช่การอ้างอิงถึงเวลา
burnt_hand

14
นี่อาจเป็นเพียงหนึ่งในกรณีที่แนวคิดที่มีชื่อไม่ดีมีส่วนทำให้เกิดความสับสน
JohnFx

2
@ JohnFx ใส่ดี แนวคิดต้องมีบริบท
สนิม

2
@ ริชาร์ด: แน่นอน iTunes ใช้เวลาไม่กี่นาทีก่อนที่จะเล่นอะไร โอ้นั่นไม่ใช่สิ่งที่คุณหมายถึง?
กำหนดค่า

69

ทำไมพวกคุณไม่เขียนแค่ครั้งแรกแทนที่จะใช้เวลามากในการพิมพ์รหัส buggy จากนั้นอ่านรหัสในภายหลังเพื่อค้นหาข้อบกพร่อง?

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


34
ตรงไปตรงมานั่นเป็นคำถามที่ดี เวลาที่ง่ายที่สุดในการสร้างรหัสคือเมื่อมันถูกเขียนขึ้นในครั้งแรก
DJClayworth

10
เรามีการตั้งค่าในแอป config: <add Key = "Bugs" Value = "true" />
burnt_hand

1
@DJClayworth - นั่นไม่ได้ผลเสมอไป ในบางกรณีปัญหามีขนาดใหญ่ไม่ชัดเจนหรือยากเกินไปที่จะเข้าใกล้ "ขวา" ในครั้งแรกที่คาดหวังมากเกินไป ในกรณีเช่นนี้ควรเขียน "การตัดครั้งแรก" ที่ไม่ผิดทั้งหมดกว่าการใช้วัน / สัปดาห์ / เดือนอย่างไม่มีที่สิ้นสุดในการออกแบบและออกแบบใหม่เพื่อพยายามทำให้ถูกต้องในครั้งแรก
สตีเฟ่นซี

นี่อาจเป็นเวอร์ชั่นของคนธรรมดาของ "ทำไมพวกคุณไม่ทำ TDD" ซึ่งเป็นธรรมเป็นคำถามที่ดียี้ถ้าง่ายเกินไปสำหรับการพัฒนาโลกแห่งความจริง
Dan Ray

1
@ สตีเฟน C: ใช่ แต่มีความแตกต่างในการทำให้มันถูกต้องส่วนใหญ่ (แทนที่จะเป็นที่ที่สมบูรณ์แบบ) เทียบกับการทำอะไรซ้ายและขวาส่วนใหญ่ที่จะทำให้มันทำงาน ฉันรู้ว่านี่ไม่ใช่สิ่งที่คุณพูด แต่ฉันยังคิดว่ามันต้องพูด
n1ckp

65

หากคุณไม่ได้ไปมหาวิทยาลัยคุณไม่เหมาะกับงาน


27
นอกจากนี้โปรแกรมเมอร์ที่มีวุฒิการศึกษาดีกว่าโปรแกรมเมอร์ที่ไม่มีและควรได้รับเงินตามนั้น เช่นเดียวกันอาจเกิดขึ้นกับยุคสมัยและการกีดกันทางเพศ เรื่องไร้สาระแบบนี้ทำให้ฉันโกรธ - ถ้าคุณไม่รู้วิธีเขียนรหัสที่ดีฉันก็ไม่สนหรอกว่าคุณจะไปที่ไหนและทำอะไรอยู่ นี่อาจเป็นอีกกรณีหนึ่งของวัฒนธรรมโปรแกรมเมอร์ / คนโง่ (ทักษะ == ผู้มีอำนาจ) ปะทะกับวัฒนธรรมองค์กร (อันดับ == ผู้มีอำนาจ)
Alan Plum

1
แต่คนที่สอนในมหาวิทยาลัยก็ดูเหมือนจะคิดว่าพวกเขาสามารถสรุปพฤติกรรมของโปรแกรมเมอร์และโครงการโดยการสังเกตว่านักเรียนทำงานอย่างไรเมื่อทำงานร่วมกัน การสื่อสารของ ACM นั้นดีสำหรับบทความ 4-6 เรื่องต่อปี
MIA

1
@Billy เอาเป็นว่าที่นี่ประกาศนียบัตรวิทยาลัยหมายถึงแจ็ค แต่ประกาศนียบัตรมหาวิทยาลัยจะมอบทุกอย่างให้คุณ? ทั้งสองไปโรงเรียนทั้งคู่มีเนื้อหาที่ดีกว่าคนอื่น ๆ แต่มีความแตกต่างทางสังคมวิทยา
Tarka

4
@Billy: ในแคนาดามหาวิทยาลัยได้รับคุณวุฒิปริญญาและวิทยาลัยจะมอบประกาศนียบัตรให้คุณ วิทยาลัยเป็นเหมือน "โรงเรียนที่คุณเรียนรู้สิ่งที่เป็นประโยชน์" คิดว่าวิทยาลัยชุมชนในสหรัฐอเมริกากับวิทยาลัย / มหาวิทยาลัยปกติ ที่นี่พวกเขามักจะมีโปรแกรมพิเศษสองปี คุณไม่สามารถรับปริญญาตรี (ปริญญาโท ฯลฯ ) จากวิทยาลัยได้ โดยพื้นฐานแล้วคุณจะไปที่วิทยาลัยเพื่อศึกษาวิธีการเขียนซอฟต์แวร์และไปยังมหาวิทยาลัยเพื่อศึกษาวิทยาศาสตร์คอมพิวเตอร์ วุฒิการศึกษาจากมหาวิทยาลัยจะได้รับความสนใจอย่างมากในการจ้างงาน
อดัมเลียร์

4
มหาวิทยาลัยสอนสิ่งที่สำคัญอย่างน้อยหนึ่งคือความคิด นี่เป็นสิ่งที่สำคัญมาก แต่คนที่ไม่รู้ว่า ... ดีไม่รู้เหมือนกัน

61

การเพิ่มประสิทธิภาพก่อนวัยอันควรหมายความว่าคุณไม่ควรปรับให้เหมาะสมเลย ฉันเห็นฐานข้อมูลไม่ดีอย่างน่ากลัวเพราะไม่มีใครต้องการพิจารณาประสิทธิภาพ (สำคัญต่อระบบฐานข้อมูลใด ๆ ) ในการออกแบบเนื่องจากเป็นการปรับให้เหมาะสมก่อนเวลามากกว่าปัญหาการออกแบบฐานข้อมูลอื่น ๆ ขยะมีนักฆ่าประสิทธิภาพที่รู้จักหยุดใช้มันเป็นตัวเลือกแรกของคุณ

อีกเรื่องที่ยากเกินกว่าจะสร้างฐานข้อมูลใหม่ได้ ไม่ แต่คุณต้องพิจารณาว่าจะทำการ refactoring ในขั้นตอนการออกแบบอย่างไรเพื่อให้มีประสิทธิภาพ และ BTW ยิ่งคุณรอการแก้ไขปัญหาประสิทธิภาพการออกแบบที่น่ารำคาญยิ่งนานเท่าไหร่การแก้ไขก็ยากขึ้นเท่านั้น

ตำนานที่ไม่ดีอีกประการการออกแบบฐานข้อมูลควรสะท้อนถึงหลักการของ OOP ไม่ฐานข้อมูลถูกออกแบบมาเพื่อทำงานกับชุดไม่ใช่หลักการของ OOP บางสิ่ง OOP จะทำให้เกิดปัญหาประสิทธิภาพการทำงานที่น่ากลัวและอื่น ๆ เป็นเพียงความเจ็บปวดในแง่ของฐานข้อมูล

สุดท้ายคุณควรบังคับใช้ความถูกต้องของข้อมูลในแอปพลิเคชัน ฐานข้อมูลกำลังจะผ่านแอปพลิเคชั่นล่าสุดและจะสูญเสียกฎเมื่อมีการแทนที่แอปพลิเคชันแอปพลิเคชันที่ไม่สามารถเข้าถึงได้จำนวนมากและมักจะต้องเรียกใช้แบบสอบถามโดยตรงเพื่อแก้ไขสิ่งที่ไม่ผ่านแอปพลิเคชัน ฉันไม่เคยเห็นฐานข้อมูลที่ปฏิเสธที่จะบังคับใช้ความถูกต้องของข้อมูลในฐานข้อมูลที่มีข้อมูลที่ดี


+1 โดยเฉพาะสำหรับความคิดเห็นเกี่ยวกับการตรวจสอบความสมบูรณ์ของฐานข้อมูล
Frank Shearar

+1 โดยเฉพาะสำหรับย่อหน้าสุดท้าย ฉันตีกลองนั้นมากกว่าหนึ่งครั้ง
Binary Worrier

5
+1 สำหรับวรรคแรก การเพิ่มประสิทธิภาพก่อนวัยอันควรเป็นรากฐานของความชั่วร้ายทั้งหมด การเขียนโค้ดที่ไม่ดีโดยไม่มีสาเหตุที่ทำให้เลือดนั้นเลวร้ายลง
กำหนดค่า

3
"สิ่ง OOP บางอย่างจะทำให้เกิดปัญหาประสิทธิภาพการทำงานที่น่ากลัวและอื่น ๆ เป็นเพียงความเจ็บปวดในแง่ของฐานข้อมูล" - คุณสามารถพูดได้ว่าอะไร ฉันรู้เกี่ยวกับ OOP แต่ไม่มากเกี่ยวกับฐานข้อมูลและฉันสนใจว่าฉันสามารถนำความคิดจากแต่ละด้านไปสู่อีกไกลได้แค่ไหน
Tom Anderson

@HLGEM ฉันสนใจในตัวอย่าง @Tom ด้วยความสงสัย ...
Armand

53

ว่ามีบางแหล่งที่มาในตำนานของการปฏิบัติที่ดีที่สุดแน่นอน

ไม่มีการเบี่ยงเบนใด ๆ ที่สามารถพิสูจน์ได้

ไม่มีเอกสารที่อ้างว่ากำหนดสิ่งที่เป็นแนวปฏิบัติที่ดีที่สุดที่จะถูกตั้งคำถาม


1
เป็นสมาชิกในทีมที่ดีกว่าผู้จัดการของคุณ ...
Bill

5
คุณสามารถส่งต่อเอกสารนั้นให้ฉันได้ไหม
AShelly

1
เห็นด้วยอย่างสิ้นเชิง. ใครสนใจถ้าคุณผสมแท็บและช่องว่างในรหัสไพ ธ อน?
Zaz

4
@Josh - ผู้ที่ต้องดูซอร์สโค้ดของคุณโดยใช้เครื่องมือโซ่ที่มีแนวคิดที่แตกต่างกันว่าตำแหน่งแท็บอยู่ที่ใด
Stephen C

1
ฉันตีความว่า "เป็นวิธีปฏิบัติที่ดีที่สุด" เนื่องจาก "ฉันไม่สามารถพิสูจน์ได้" ฉันใช้มันอย่างนั้นอย่างแน่นอน
Tom Anderson

51

ความจริงที่ว่าการตลาดดูเหมือนจะคิดว่าการเพิ่มฟีเจอร์เล็ก ๆ น้อย ๆ นั้นทำได้น้อยกว่าการเพิ่มฟีเจอร์เดียว แต่ค่อนข้างหนัก ซึ่งอาจเป็นกรณีที่เฉพาะเจาะจงมากขึ้นของความเข้าใจผิดว่า "การสลับงานไม่มีค่าใช้จ่าย"


12
และสิ่งที่สนุกยิ่งกว่าคือการตลาดที่ไม่มีความคิดใด ๆ ว่าคุณสมบัติใดเป็นเรื่องง่ายและเป็นเรื่องที่เป็นไปไม่ได้
Derobert

4
@derobert แน่นอนฉันมีประสบการณ์บ่อยครั้งที่ผู้คนในแวดวงการตลาดที่มีน้ำใจบางคนกลัวที่จะถามเกี่ยวกับคุณสมบัติที่ง่าย / สะดวกซึ่งพวกเขาคิดว่าเป็นเรื่องยากมากที่จะนำไปใช้ แม้ว่าฉันจะได้พบกับสิ่งที่ตรงกันข้ามบ่อยกว่านี้: นี่เป็นชุดของคุณสมบัติ "ง่าย" X ที่เราได้ขายให้กับลูกค้าแล้วโปรดดำเนินการโดยเมื่อวานนี้ ....
Giel

50

รหัสความคิดเห็นนั้นไม่จำเป็นหรือว่า "รหัสที่ดีไม่ต้องการความคิดเห็น" บางครั้งคุณต้องอธิบายว่าโค้ดที่ซับซ้อนกำลังทำอะไรอยู่ นอกจากนี้การแสดงความคิดเห็นในส่วนของรหัสช่วยให้คุณอ่านได้อย่างมีประสิทธิภาพมากขึ้น


14
@DisgruntledGoad - มันเป็นความจริง ความเข้าใจผิดใน "ตำนาน" นี้มาจากความจริงที่ว่าโปรแกรมเมอร์จำนวนมากคิดว่าโค้ดที่ทำให้เกิดความสับสนว่าเป็น "ดี" if user.is_logged_in: print('Welcome')ไม่ต้องการความคิดเห็น
orokusaki

3
@orokusaki ไม่ใช่ทุกอัลกอริทึมนั้นง่าย
Jouke van der Maas

25
@orokusaki คุณเข้าใจผิด "รหัสที่ดีไม่จำเป็นต้องแสดงความคิดเห็น" กับ "รหัสง่ายไม่จำเป็นต้องแสดงความคิดเห็น" รหัสที่ดีนั้นไม่ง่ายเสมอไป
DisgruntledGoat

3
@Jouke van der Mass: แน่นอน แต่มันไม่สำคัญว่าอัลกอริทึมซับซ้อนเพียงใดเป้าหมายคือการแสดงอัลกอริธึมง่ายๆ เช่นโค้ดที่ดีจะแสดงอัลกอริทึมที่ซับซ้อนกฎการปรับให้เหมาะสมด้วยวิธีที่ง่ายและเข้าใจได้ง่าย การแสดงสิ่งที่เรียบง่ายนั้นค่อนข้างง่าย การแสดงสิ่งที่ซับซ้อนเป็นเพียงความชำนาญ
flamingpenguin

2
@orokuskai: รหัสที่ดีนั้นง่าย สิ่งที่กำลังทำอาจซับซ้อน แต่ความเรียบง่าย (ความสง่างาม) ของรหัสคือสิ่งที่ทำให้ดีในความคิดของฉัน! แน่นอนรหัสทำสิ่งอื่น ๆ อีกมากมายและรหัสขยะสามารถสร้างรายได้ให้คุณมากมาย แต่เป้าหมายของฉันคือการเขียนโค้ดอย่างง่ายแม้ในสถานการณ์ที่ซับซ้อน
flamingpenguin

50

ตำนานที่แย่ที่สุด: หากคุณกำลังเขียนโปรแกรมเป็นเวลานานคุณสามารถเป็นผู้จัดการโครงการได้อย่างง่ายดาย

และคุณควรเป็นผู้จัดการโครงการหากคุณเขียนโปรแกรมมาเป็นเวลานาน


3
หรือแย่กว่านั้นคือหากคุณไม่เคยตั้งโปรแกรมหรือจัดการโครงการเขียนโปรแกรมอ่านหนังสือสองสามเล่มและจะทำให้ซอฟต์แวร์เกิดขึ้นอย่างน่าอัศจรรย์ ลงถนนนั้นด้วย PM ก่อนหน้าและไม่สนใจที่จะทำซ้ำตราบใดที่ฉันยังมีชีวิตอยู่
Evan Plaice

4
ยิ่งแย่ไปกว่า: เนื่องจากโปรแกรมเมอร์ที่ยอดเยี่ยมในทีมชอบเขียนโค้ดมากกว่าการเขียนรายงานเราควรส่งเสริมโปรแกรมเมอร์ธรรมดา ๆ ให้เป็น Project Manager ความคิดคือเขาจะเป็น "tecnical พอ" ความจริงก็คือเขากลายเป็นตัวกรองข้อมูลระหว่างทีมและการจัดการด้านบน
AShelly

2
นอกจากนี้: หากคุณเป็นโปรแกรมเมอร์ที่ดีที่สุดคุณควรเป็นผู้จัดการโครงการและจากจุดนั้นหยุดทำโปรแกรมจริง ๆ ด้วยตัวเอง! ไม่ขอบคุณมาก แต่ฉันจะยังคงเพิ่ม หมายเหตุ: ฉันไม่ได้พูดถึงการเป็นโปรแกรมเมอร์นำหรืออะไรแบบนั้นฉันกำลังพูดถึงผู้จัดการที่คิดว่ามันเป็นความคิดที่ฉลาดที่จะส่งเสริมให้ทุกคนอยู่ในระดับไร้ความสามารถที่เพียงพอ
Alan Plum

1
หรือที่รู้จักในชื่อ Peter Principle en.wikipedia.org/wiki/Peter_Principle
Spoike

พูดได้ดีแน่นอน
Michael Easter

50

หากเราใช้อย่างอื่นที่ไม่ใช่ Java, C # และ C ++ ในโครงการของเราเราจะไม่พบโปรแกรมเมอร์ที่จะสนับสนุนมัน


ฉันไม่เคยได้ยินเรื่องนี้มาก่อน แต่มันใช้ได้จริง แน่นอนถ้าคุณใช้ภาษาที่คลุมเครือมันจะเกิดขึ้น
Maniero

5
@bigown, "obscure" หรือไม่? คลุมเครืออย่างไร TCL ปิดบังหรือไม่ Haskell? ปาสคาล (Delphi)? งูใหญ่? ฉันคิดว่าพวกเขาไม่ปิดบัง หลายคนคิดว่าพวกเขาเป็นและมีเพียงชุดของภาษาแคบ ๆ (C ++, C # และ Java) ที่ได้รับอนุญาตในการพัฒนา "ร้ายแรง"
P Shved

5
@ ใหญ่: โอ้คุณหมายถึงคลุมเครือเหมือนภาษาโคบอล? : p
AnonJr

2
ฉันเคยทำงานให้ บริษัท ขนาดเล็กที่ทำโค้ด Objective-C บน Linux CEO ซึ่งไม่ได้เป็นวิศวกร แต่มีความรู้ด้านเทคนิคไม่อยากจะเชื่อเลยว่ามีโปรแกรมเมอร์ของ ObjC อยู่แถว ๆ นั้นหรือใครก็ตามที่ใช้มัน ในความเป็นจริงพวกเขาไม่เคยมีปัญหาใด ๆ ในการว่าจ้างนักพัฒนาที่ดี

4
ฉันได้อ่านข้อโต้แย้งว่าสิ่งที่ตรงกันข้ามนั้นเป็นจริง: สำหรับภาษาที่คลุมเครือ (หรืออย่างน้อยก็ไม่มีนัยสำคัญทางการค้า) แต่เจ๋งสนุกและน่าสนใจ (ซึ่งในบริบทนั้นหมายถึง Python และ Ruby) มีโปรแกรมเมอร์มากกว่างาน นอกจากนี้พวกเขาทุกคนล้วนเป็นภาษาที่เท่ห์สนุกสนานและน่าสนใจดังนั้นพวกเขาจึงต้องฉลาด ดังนั้นการทำงานใน Python หมายความว่าคุณจะพบว่าจ้างโปรแกรมเมอร์อัจฉริยะได้ง่ายกว่าการทำงานใน Java ไม่รู้ว่าฉันเชื่อหรือไม่ แต่อย่างน้อยก็เป็นไปได้ตามแนวคิดดั้งเดิม!
Tom Anderson

42

Java เป็นเพียง C ++ ที่มีคลาสที่แตกต่างกัน


57
+1 ฉันเคยมีผู้สัมภาษณ์ถามฉันว่า "C + + Java แตกต่างกันอย่างไร" ดังนั้นฉันแสดงความแตกต่างบางอย่าง คอมไพเลอร์พื้นเมืองเทียบกับ JVM มาตรฐาน ANSI กับกรรมสิทธิ์คอลเลกชันขยะ classloaders ฯลฯ เขาคำราม "ผิด! ไม่มีความแตกต่าง! พวกเขาเหมือนกัน!" เขาไม่ใช่นักเรียนเขาเป็นผู้จัดการฝ่ายวิศวกรรม
Bill Karwin

11
@Bill คำตอบของฉันก็คือ "ถ้าอย่างนั้นทำไมถึงพูดถึงพวกเขาด้วยชื่อที่ต่างกันโดยสิ้นเชิง"
Jesse C. Slicer

2
@Bill ดังนั้นคุณล้มเหลวในการทดสอบและได้รับการว่าจ้าง?

20
คำตอบของฉันคือ "ลาก่อน"
Foole

6
@Foole คุณไม่ได้หมายถึง System.exit (1)?
Barry Brown

33

Java เป็น ช้า


18
แต่เพื่อความเป็นธรรมมันเคยเป็น ...
Dan Diplo

70
มันยังคงเป็น ....
Fosco

16
กาแฟจะช้าได้อย่างไร?
สนิม

6
@ สนิม Decaf? .
Joe Phillips

29
“ เคาะ, เคาะ” -“ ใครอยู่ที่นั่น?” - หยุดชั่วคราวนานมาก… “ Java” (ความอนุเคราะห์จากstackoverflow.com/questions/234075// )
RegDwight

33

อาจเป็นสิ่งที่อันตรายที่สุดที่ฉันเคยเห็นเพราะมันได้รับการยอมรับอย่างรวดเร็วนั่นก็คือการเขียนโค้ดได้อย่างรวดเร็วนั้นดีมากดังนั้นยิ่งคุณสามารถเขียนโค้ด [ใส่คุณลักษณะที่นี่] ในภาษาที่กำหนดได้เร็วเท่าไหร่ภาษาที่ดีกว่า คือ.

นี่เป็นตัวอย่างที่สำคัญของการเพิ่มประสิทธิภาพก่อนเวลาอันควรเนื่องจากการทำงานมากขึ้นไปที่การบำรุงรักษาโค้ดมากกว่าการสร้างมัน ซึ่งหมายความว่าการเขียนโค้ดที่อ่านเข้าใจและดีบักได้ง่ายกว่าโค้ดที่เขียนได้เร็วและการอำนวยความสะดวกในการอ่านรหัสคือการวัดคุณภาพภาษาที่มีประโยชน์มากกว่า


14
นี่คือสิ่งที่เกิดขึ้นกับหนึ่งในผลิตภัณฑ์ที่ บริษัท ของฉันทำ การพัฒนาแบบเร่งด่วนถูกมองว่ายอดเยี่ยม ผลิตภัณฑ์มองตกลงและนักพัฒนาได้รับการยกย่องอย่างสูงจากผู้บริหารระดับสูง ผู้พัฒนารุ่นเยาว์อีกคนได้รับมอบหมายให้แก้ไขบั๊ก "เล็ก ๆ " และหลังจากหนึ่งสัปดาห์ของการพยายามทำความเข้าใจกับโค้ดเลิกและค้นหาแนวทางจากรุ่นพี่ .. ผู้ไม่เชื่อว่ารหัสขยะเป็นอย่างไร ผู้บริหารระดับสูงปฏิเสธที่จะยอมรับว่าเป็นปัญหาที่สำคัญเป็นเวลาสองปีหลังจากนั้นในที่สุดก็ตกลงกันว่ามันเป็นกองขยะและต้องถูกเข้ารหัสอีกครั้งตั้งแต่เริ่มต้น - และในเวลานี้
Sk93

4
มีตำนานที่เป็นที่ยอมรับในหมู่ผู้จัดการทางเทคนิคว่านักพัฒนาที่มีทักษะของคุณมีประสิทธิผลมากกว่านักพัฒนาที่ไม่มีทักษะสิบเท่า ผลลัพธ์โดยตรงของตำนานนี้คือนักพัฒนาซอฟต์แวร์ใด ๆ ที่สามารถสร้างรหัสได้อย่างรวดเร็วโดยไม่คำนึงถึงว่าบั๊กหรือยากที่จะรักษาจะได้รับการยกย่องและการส่งเสริม
rtperson

3
คุณต้องการภาษาที่ทรงพลัง ดูการอภิปรายของ Paul Grahams เกี่ยวกับภาษาและสิ่งที่ ti ช่วยให้คุณทำ: paulgraham.com/power.html

4
@ Thorbjørn: ฉันได้อ่านบทความนั้นแล้ว Paul Graham เข้าใจผิด เขาเป็นผู้สนับสนุนเสียงกระเพื่อมดังนั้นเขาจึงบิดข้อเท็จจริงเป็นข้อโต้แย้งการบริการตนเองเพื่อให้เสียงกระเพื่อมดูดี อาจจะไม่เป็นห่วงเพราะมันไม่ได้บิดมากนัก มีการทับซ้อนกันมากมายระหว่างการอ่านและความกระชับในขณะที่เขาชี้ไปที่ส่วนท้ายของบทความ แต่ข้อสรุปที่เขานำมาใช้นั้นไม่สอดคล้องกับสถานะของการพัฒนาซอฟต์แวร์ในโลกแห่งความเป็นจริงอย่างสมบูรณ์ ใช่คุณต้องการภาษาที่ทรงพลัง แต่เขาวัดพลังตามเกณฑ์ที่ผิดและเป็นอันตรายที่จะเชื่อในสิ่งที่เขาพูด
Mason Wheeler

3
@rtperson: ความสามารถในการผลิตนั้นแตกต่างกันไปตามปัจจัยสิบประการนั้นไม่ใช่ตำนาน คนที่จบเร็วนั้นจำเป็นต้องมีประสิทธิผลมากกว่า
David Thornley

31

บทเรียนการผลิตสามารถนำไปใช้กับกระบวนการพัฒนาซอฟต์แวร์


6
ขึ้นอยู่กับบทเรียน เมื่อฉันทำงานที่โรงงานที่นอนเราเรียนรู้ว่าการสับเปลี่ยนงานเป็นอันตรายต่อการผลิตของเรา ค่อนข้างสำคัญเพราะเราจ่ายเงินตามจำนวนที่นอนที่ทำและไม่ใช่ชั่วโมง ... และบทเรียนที่ใช้ที่นี่ด้วยเหตุผลหลาย ๆ อย่าง
AnonJr

นี่เป็นตำนานที่ไม่หยุดยั้งเมื่อคุณทำงานในสถานที่ที่ทำฮาร์ดแวร์เป็นส่วนใหญ่ ห่วงที่เราข้ามเข้ามาเพื่อให้พอดีกับ 'สร้าง' ซอฟต์แวร์ของเราในรูปแบบเดียวกับฮาร์ดแวร์ 'ส่วน' ที่น่าทึ่ง ...
AShelly

5
สิ่งที่เป็นซอฟต์แวร์การผลิตที่ไม่สำคัญ ง่ายต่อการทำสำเนาและไม่เสียค่าใช้จ่ายในการทำสำเนาหลายล้านชุด สิ่งนี้ทำให้คนไม่สนใจส่วนการผลิตทั้งหมดและพยายามนำการผลิตไปใช้กับกระบวนการออกแบบ
David Thornley

+100 สำหรับสิ่งนี้โดยเฉพาะผู้ที่ศึกษาเศรษฐศาสตร์คิดอย่างนี้
Kugel

1
ทุกคนควรอ่านแจ็ครีฟส์: developerdotstar.com/mag/articles/reeves_design_main.html - นี่คือต้นกำเนิด (หรืออย่างน้อยเป็นคำสั่งในช่วงต้นและมีประสิทธิภาพ) ความคิดที่ว่ารหัสที่มาเป็นการออกแบบไม่ได้เป็นสินค้าที่มีความ โปรแกรมเมอร์เป็นเหมือนนักออกแบบในห้องร่างไม่ใช่ช่างเครื่องบนพื้นโรงงานและการจัดการการเขียนโปรแกรมจะต้องเหมือนกับการจัดการการออกแบบทางวิศวกรรมประเภทอื่น ๆ ไม่ใช่การผลิต
Tom Anderson

31

ในฐานะโปรแกรมเมอร์คุณรู้ทุกอย่างเกี่ยวกับแนวโน้มของฮาร์ดแวร์การโอเวอร์คล็อกการปรับเปลี่ยนเคสและอื่น ๆ เพื่อน ๆ และญาติ ๆ จะปรึกษาคุณเมื่อพวกเขาซื้ออุปกรณ์


5
ฉันมักจะเก็บสิ่งเหล่านี้ไว้ในโรงเรียนมัธยม แต่ทุกวันนี้ฉันพบว่าพวกเขาไม่เกี่ยวข้องกับสิ่งที่ฉันทำและในขณะที่บางคนก็เรียบร้อยฉันค่อนข้างจะจ่ายคนที่รู้เรื่องของพวกเขาและใช้เวลา บันทึกทำสิ่งที่ฉันชอบ (เช่นการเขียนรหัส) บางทีอีกคน "ดีกับคอมพิวเตอร์" ก็เข้าใจผิด
Alan Plum

2
+1 หรือแทนการสัมผัสเล็กน้อย - เนื่องจากโปรแกรมเมอร์ของคุณคุณมีพัดลมระบายความร้อนด้วยน้ำ LED 300 duper หมุนรอบด้านบนของแบรนด์ใหม่ส่งมาจากโรงงานผลิตก่อนที่จะถูกปล่อยออกมา เอ่อไม่ได้จริงๆ! มันเป็นเครื่องจักรที่เร็วพอสมควรมันเป็นเคสสีดำราคาถูกมาก ไม่สนใจเลยจริงๆ!
Coder ราคาประหยัด

หัวเราะมีผู้ช่วย PM ในที่ทำงานที่มีแท่นขุดเจาะเกมเทพผู้ยิ่งใหญ่ที่บ้านมักจะไปที่พื้นที่ Dev เพื่อถามว่าเขาควรจะซื้อ (ผลิตภัณฑ์ A) หรือ (ผลิตภัณฑ์ B) ... ในบันทึกที่ไม่เกี่ยวข้องหรือไม่ ยังถือว่าทีมงาน dev ทั้งหมดออกไปเที่ยวบน 4Chan (ซึ่งเขาทำอย่างนั้นจริง ๆ ) - ถอนหายใจ
ocodo

+1 คำ นี่คือจุดที่ ฉันเป็นนักพัฒนาซอฟต์แวร์และฉันถูกขอให้กำหนดค่าอินเทอร์เน็ตของใครบางคนหลายครั้งและโดยทั่วไปสิ่งที่ฉันทำคือการลองผิดลองถูกและการค้นหาโดย Google ฉันชอบที่ดีที่สุดเมื่อมีอะไรบางอย่างที่ไม่เกี่ยวข้องอย่างสมบูรณ์หลังจากที่คุณทำบางสิ่งบางอย่างที่ไม่ดีต่อใครคนหนึ่งและจากนั้นก็เป็นความผิดของคุณ
Anne Schuessler

30

เมื่อโปรแกรมเมอร์บอกว่ามันยากมากที่จะทำ / เป็นไปไม่ได้ง่าย ๆ ฝ่ายทรัพยากรบุคคลคิดว่าพวกเขาขี้เกียจและไม่ได้รับการเอาใจใส่


2
รวมการจัดการด้วย
Prasham

เมื่อคุณบอกว่าไม่พวกเขาคิดว่าคุณเป็นคนที่ทำงานยาก
Captain Sensible

+100 และนั่นคือ "แรงจูงใจ" เพียงพอพวกเขาสามารถเปลี่ยนคำตอบของคุณ หรือไปที่นักพัฒนาอื่นที่มีประสบการณ์น้อยกว่าและตั้งใจทิ้งรายละเอียดครึ่งหนึ่งเพื่อให้เขาตอบว่าใช่เพียงเพื่อจบครึ่งทางผ่านการพัฒนาและชนกับปัญหาที่คุณเตือนไว้
wildpeaks

28

ต้องมีโปรแกรมโอเพ่นซอร์สสำหรับธุรกิจของฉัน คุณไม่สามารถดาวน์โหลดและปรับแต่งตามความต้องการของฉัน


2
+1 โอ้ใช่สิ่งที่เราต้องทำต้องอยู่ในโอเพ่นซอร์สแล้ว
sharptooth

7
หลายครั้งที่มี ... อย่างน้อยก็เป็นเรื่องจริงสำหรับการพัฒนาเว็บ
WalterJ89

@ WalterJ89: มันอาจจะอยู่ที่นั่น แต่นั่นไม่ได้หมายความว่าควรใช้มัน โอเพ่นซอร์สไม่ได้แปลว่ารหัสที่ดีโดยอัตโนมัติ
Alan Plum

จริง .. แต่ในกรณีของ Wordpress, Drupal, jQuery, ... อาจมีบางพื้นที่ที่ฟรีไม่ดีอย่าง e-Commerce แต่บ่อยกว่าเว็บที่เปิดอยู่มากและฉันพบว่าฉันสนุกกับการทำงานกับ ชุมชนโอเพนซอร์ซเป็นมากกว่าโต๊ะช่วยเหลือของยานอวกาศ
WalterJ89

7
ตรงกันข้ามเป็นตำนานด้วย ที่คุณไม่สามารถใช้ FOSS เพื่อตอบสนองความต้องการทางธุรกิจของคุณ
จุดประสงค์

27

ฉันมีมากกว่าหนึ่งคนถามฉันเกี่ยวกับสิ่งที่มันเป็นเหมือนการเขียนโปรแกรมเพียงเพื่อให้ตระหนักถึงตรงกลางผ่านการสนทนาที่พวกเขาคิดว่าเราเขียนโปรแกรมโดยตรงในไบนารีหรือใช้สัญลักษณ์ทางคณิตศาสตร์

ฉันไม่รู้ว่าฉันต้องการปัดเป่าตำนานนั้นหรือไม่มันทำให้ฉันดูฉลาดจริงๆ!


6
มันไม่ได้ช่วยให้คนส่วนใหญ่ไม่รู้ว่าการเขียนโปรแกรมคืออะไร ... พวกเขามีความคิดที่คลุมเครือว่ามันกำลังสร้างซอฟต์แวร์ ... แต่พวกเขาไม่มีความคิดที่ชัดเจนว่าซอฟต์แวร์คืออะไร ...
Spudd86

7
"เราเขียนสูตรถักไหมพรม" คุณย่ามีแนวโน้มที่จะเข้าใจว่า

ฉันรู้ว่าคนที่จะเขียนโปรแกรมใน C จากนั้นทำซ้ำส่วนที่สำคัญที่สุดในการประกอบ
Zaz

1
@ Josh - ยกเว้นว่าจะมีปัญหาเรื่องประสิทธิภาพดูเหมือนว่าจะเสียเวลาเปล่า
JohnFx

1
@oosterwal - ชุดประกอบไม่ใช่แบบไบนารีและไม่ใช้สัญลักษณ์ทางคณิตศาสตร์
JohnFx

26

ฉันคิดว่าความเข้าใจผิดที่ใหญ่ที่สุดคือการสามารถเขียนรหัสได้ง่ายกว่าการอ่านและทำความเข้าใจรหัส


5
* v (int) (เป็นโมฆะ) ++
สนิม

1
@ สนิม: ฉันสามารถสร้างตัวอย่างที่แย่กว่านี้ได้มากถ้าฉันไม่ต้องแก้ไขให้ถูกต้อง

4
อ๊ะใช่โค้ด "เขียนอย่างเดียว" ...
Paddyslacker

24

การเขียนโปรแกรมเหมือนกับงานสายการประกอบ คุณกำลังทำงานกับผลิตภัณฑ์ในช่วงเวลาหนึ่ง (อาจเป็นกับเพื่อนร่วมงาน) และในที่สุดคุณก็จัดส่ง เช่นเดียวกับการสร้างบ้านอิฐ

การเขียนโปรแกรมประกอบด้วยความคิดสร้างสรรค์และการวางแผนมากมาย มันเป็นศิลปะ โปรแกรมเมอร์ก็รู้ถึงความแตกต่างระหว่างการสร้างอิฐกับการวางแผนมหาวิหารทั้งหมด


6
ยอมรับเกี่ยวกับความแตกต่างจากงานสายการประกอบ - แต่ในหลาย ๆ วิธีฉันไม่คิดว่ามันแตกต่างจากการสร้างบ้านมากนัก
Billy ONeal

24

การย้ายโปรแกรมไปยัง C ++ จะทำให้โปรแกรมทำงานเร็วขึ้นโดยอัตโนมัติ


ฉันจะขยายเป็นภาษาระดับต่ำอีกภาษาหนึ่ง เป็นไปได้ที่จะกลับตรงกันข้ามเมื่อโปรแกรมเมอร์ไม่รู้ว่ากำลังทำอะไรอยู่
Maniero

2
ตัวแปรทั่วไปอีกตัวหนึ่งกำลังสลับไปใช้สถาปัตยกรรมไคลเอนต์ - เซิร์ฟเวอร์ "การอัพเกรดเป็น SQL จะทำให้แอปของฉันเร็วขึ้นมาก!" ไม่จำเป็น.
JohnFx

ใช่มันค่อนข้างตรงกันข้ามหลายครั้ง ฐานข้อมูลชนิด SQL นั้นดีที่จะเป็นกรดหรือเกือบนั้นมันมาพร้อมกับราคา และอาจแย่ที่สุดการคิดผิดเกี่ยวกับเทคนิค SQL อาจเป็นอันตรายต่อประสิทธิภาพ
Maniero

6
การย้ายไปยัง C ++ / C สำหรับการเขียนใน Python / Perl / Ruby / etc การย้ายไปยัง asm สำหรับสิ่งที่เขียนใน C / C ++: P ฉันสงสัยว่าคุณจะพอร์ต asm เพื่ออะไร ออกแบบไว้ในฮาร์ดแวร์หรือไม่
MAK


21

สภาพแวดล้อมการเขียนโปรแกรมใด ๆ กับนักออกแบบภาพบางประเภทจะทำให้มันเพื่อให้ผู้ใช้ทางธุรกิจสามารถ "เขียน" โปรแกรมและโปรแกรมเมอร์จริงไม่จำเป็น


9
อ่าใช่ มันสนุกเสมอเมื่อ บริษัท บางแห่งสร้างเครื่องมือการเขียนใหม่เพื่อทำให้โปรแกรมเมอร์ซ้ำซ้อนและจากนั้นทุกคนที่ปรับใช้มันจะดำเนินต่อไปและจ้างผู้เชี่ยวชาญ <เครื่องมือการเขียน> ที่มีค่าใช้จ่ายสูงมาใช้จริง ในกรณีที่จุด: Joomla! และสิ่งที่ไม่สมเหตุสมผล
Alan Plum

HA HA HA HA HA HA Haaa 1 :)
บิลลี่ ONeal

Cobol ลองทำแล้ว :)
Carra

20

OOP ใช้ซ้ำ เป็นความผิดพลาดที่ใหญ่ที่สุดในตลาดในการเขียนโปรแกรม


1
ดี. HP XL WESM นั้นประมาณ 85% เหมือนกับ Symbol WS5100 (มี OEM กำลังดำเนินการอยู่) คุณจะให้ฉันคัดลอกและวางเปอร์เซ็นต์ของรหัสการตรวจสอบและการกำหนดค่าของฉันเพื่อให้มีข้อผิดพลาดมากเป็นสองเท่าหรือคุณต้องการให้ฉันเขียนใหม่ตั้งแต่เริ่มต้นและใช้เวลานานถึงสี่สิบเท่า หรือคุณเพิ่งถูกกดดันจากการจัดการที่โง่เขลาซึ่งคิดว่ามันเป็นหนึ่งในยาวิเศษที่จะทำให้ $ โครงการเร็วขึ้น?

1
การใช้ซ้ำในขนาดเล็กได้รับการแก้ไข 40 ปีที่ผ่านมาและอื่น ๆ การใช้ซ้ำขนาดใหญ่นั้นทำได้ยากและยังไม่ได้รับการแก้ไข แต่ IMHO เช่นเดียวกับ Robert Glass กล่าวในข้อเท็จจริงและความ
ล้มเหลว
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.