นักเขียนที่ไม่ดีทำโปรแกรมเมอร์ที่ไม่ดีหรือไม่? [ปิด]


16

ฉันกำลังอ่านCoders at Workโดย Peter Seibel และหลายครั้งที่มีการกล่าวถึงว่าโปรแกรมเมอร์ที่ไม่สามารถเขียนได้มักจะทำให้โปรแกรมเมอร์ไม่ดี - Douglas Crockford, Joshua Bloch, Joe Armstrong, Dijkstra (และฉัน) อ่านเพียงครึ่งเล่ม)

คุณคิดอย่างไรกับเรื่องนี้? การไม่สามารถแสดงความสามารถในการเขียนด้วยภาษาธรรมชาติเช่นภาษาอังกฤษเป็นอุปสรรคในการเขียนรหัสที่ดีหรือไม่?


9
ฉันไม่รู้เกี่ยวกับทักษะในฐานะโปรแกรมเมอร์ แต่สำหรับการขายตัวเองในฐานะโปรแกรมเมอร์ smart = sexy ในโลกอิสระ ดังนั้นหากคุณสามารถเขียน (และพูด) ได้ดีคุณจะถูกมองว่าฉลาดและได้รับการพิจารณาว่าน่าเชื่อถือมากขึ้นในฐานะนักพัฒนาซอฟต์แวร์
Dan Rosenstark

เมื่อ "ไม่สามารถเขียน" หมายความว่าไวยากรณ์ของพวกเขาไม่ถูกต้องหรือไม่ นั่นอาจเป็นปัญหาใหญ่กว่าสิ่งต่าง ๆ เช่นการไหลที่ไม่ดี ฯลฯ
Maxpm

1
@ Maxm: อาจ แต่ยังไม่สามารถถ่ายทอดความหมายของพวกเขาในการเขียนแม้จะถูกต้องตามหลักไวยากรณ์
gablin

คำตอบ:


30

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

โปรแกรมเมอร์ที่มีเวลาในการแสดงออกอย่างชัดเจนในการเขียนอาจไม่สามารถสื่อสารกันได้ดีในขณะที่ผู้ที่มีความเข้าใจในภาษาและการเขียนที่ดีสามารถแปลทักษะเหล่านั้นเป็นรหัสที่พวกเขาเขียนได้

ฉันคิดว่าการเขียนไม่ดีและสื่อสารได้ดีจะป้องกันไม่ให้เป็นโปรแกรมเมอร์ที่ดีมาก

ดังที่ Jason Fried และ David Heinemeier Hansson (จาก 37 สัญญาณ) พูดในหนังสือของพวกเขา Rework:

หากคุณกำลังพยายามที่จะตัดสินใจในการเติมตำแหน่งให้จ้างนักเขียนที่ดีที่สุด

การเป็นนักเขียนที่ดีเป็นมากกว่าการเขียน การเขียนที่ชัดเจนเป็นสัญญาณของการคิดที่ชัดเจน นักเขียนที่ยอดเยี่ยมรู้วิธีการสื่อสาร


2
ใช่แล้วและฉันคิดว่าทุกคนเห็นพ้องต้องกันว่าหนึ่งในคุณภาพของโปรแกรมเมอร์ที่ดีคือความสามารถในการแสดงตัวเองอย่างชัดเจนในโค้ดดังนั้นจึงไม่แปลกใจเลยที่ความสามารถในการแสดงออกอย่างชัดเจนในการเขียนมีความสัมพันธ์กับความสามารถในการแสดงออกอย่างชัดเจน ในรหัสของคุณ (และในทางกลับกัน) +1
n1ckp

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

ฉันพบคำตอบของคุณน่าสนใจมาก! แต่เมื่อฉันมองย้อนกลับไปในความทรงจำของฉันเพื่อค้นหาว่าใครเป็นโปรแกรมเมอร์ที่ดีที่สุดที่ฉันทำงานด้วยทำงานหรือทำงานให้ฉันฉันพบว่าหลายคนในพวกเขาเขียนได้แย่มาก อย่างไรก็ตามพวกเขาทำได้ดีมาก อย่างไรก็ตามฉันจะเก็บคำตอบที่ยอดเยี่ยมไว้ในใจและจะลองใช้ในอนาคต +1

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

4

ฉันคิดว่าถ้าเราตรวจสอบคำถามเราได้รับคำตอบโดยตรง:

การไม่สามารถแสดงความสามารถในการเขียนด้วยภาษาธรรมชาติเช่นภาษาอังกฤษเป็นอุปสรรคในการเขียนรหัสที่ดีหรือไม่?

การเขียนโค้ดที่ดีหมายความว่าอย่างไร

โปรแกรมจะต้องถูกเขียนขึ้นเพื่อให้ผู้คนอ่านและมีเพียงเครื่องที่จะทำงานเท่านั้น
- Abelson & Sussman โครงสร้างและการตีความโปรแกรมคอมพิวเตอร์

มันหมายถึงการแสดงตัวเองอย่างชัดเจนรัดกุมถูกต้องและสง่างามในการเขียนภาษาการเขียนโปรแกรม

ความแตกต่างเพียงอย่างเดียวระหว่างการแสดงความชำนาญในภาษาอังกฤษหรือภาษาโปรแกรมคือภาษาอังกฤษนั้นให้อภัยมากกว่า


3

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


3

ขึ้นอยู่กับสิ่งที่คุณหมายถึงโดย "รหัสดี"

หากคุณหมายถึงรหัสที่ใช้งานได้แทบจะไม่มีความสัมพันธ์ใด ๆ ระหว่างความสามารถในการสื่อสารกับมนุษย์และความสามารถในการสื่อสารกับคอมพิวเตอร์

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

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


2

สิ่งสำคัญคือการเข้ารหัสยังเป็นทักษะการสื่อสาร Jack Ganssle ใน Embedded e-newsletter ของเขาได้อ้างถึง Doug Abbott:

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

โปรแกรมเมอร์ที่ไม่รู้วิธีเขียนร้อยแก้วก็อาจไม่รู้วิธีเขียนโค้ดเช่นกัน

เพิ่มเติมเกี่ยวกับบทความที่น่าสนใจนี้:

การเขียนที่ไม่ดีสะท้อนทักษะการเขียนโปรแกรมที่ไม่ดีหรือไม่?


2

นี่คือประวัติโดยรวม แต่:

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

ถึงกระนั้นเขาก็เป็นโปรแกรมเมอร์ซุปเปอร์สตาร์ ลำดับความสำคัญมีประสิทธิผลมากขึ้นและเปิดมากกว่าค่าเฉลี่ย

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


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

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

@ n1ck: ตอนนี้ที่คุณพูดถึงคนที่ฉันคิดว่าไม่ดีในการบันทึกรหัสของเขา ตัวรหัสนั้นดีและออกแบบมาอย่างดี แต่เขาไม่ได้ใส่ความคิดเห็นไว้รอบ ๆ บิตของรหัสที่ซับซ้อนซึ่งหมายความว่าเป็นการยากที่จะรักษามากกว่าที่ควรจะเป็น ไม่เคยคิดอย่างนั้น :)
Bobby Tables

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

2

หากพวกเขาไม่สามารถเขียนได้ดีพวกเขาจะโน้มน้าวคุณได้อย่างไรว่าพวกเขาเป็นโปรแกรมเมอร์ที่ดี?


0

มีใครบางคนที่ไม่สามารถแสดงระบบองค์กรที่แม่นยำหรือความคิดโดยการเขียนมันจะสามารถเขียนโค้ด - ซึ่งเป็นคำสั่งที่แม่นยำ - ตีความอย่างถูกต้องโดยคอมพิวเตอร์ใบ้ (มาก)?


แต่คุณจะได้รับข้อเสนอแนะที่ชัดเจนและทันทีจากคอมพิวเตอร์ถ้ารหัสของคุณเขียนไม่ถูกต้อง ฉันคิดว่าคุณน่าจะเขียนภาษาอังกฤษได้แย่มากและแทบจะไม่เคยถูกบอกเลยแม้แต่น้อยก็ให้คำติชมที่คุณต้องปรับปรุง
Carson63000

คุณต้องเรียนรู้ที่จะชัดเจนและถูกต้องแม้กระทั่งกับคอมไพเลอร์เพราะถ้าคุณไม่ทำคุณก็ไม่เคยรวบรวมอะไรในท้ายที่สุด
Klaim

0

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

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

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

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


0

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


1
ส่วนหนึ่งของงานโปรแกรมเมอร์คือการแสดงตัวของเขาเองอย่างชัดเจนในโค้ด (และความคิดเห็น) ดังนั้นไม่ใช่แค่คอมพิวเตอร์ แต่มนุษย์อื่น ๆ ก็สามารถอ่านรหัสได้ มันจะทำให้รู้สึก (แต่ไม่ได้รับการพิสูจน์ AFAIK) ว่าทักษะเหล่านี้มีความสัมพันธ์
n1ckp

0

ไม่ได้อย่างแน่นอน!

นักเขียนที่ดีคืออะไรมากกว่านักเขียนที่ดี ขอให้นักเขียนที่ดีอธิบายแนวคิดของฐานข้อมูลกับบุคคลที่ไม่ใช่ด้านเทคนิค คุณคิดว่าคุณจะได้อะไร ... ?

นักเขียนที่ดีเขียน โปรแกรมเมอร์ที่ดีเขียนโค้ดที่ดี

  • รหัสที่ผู้อื่นสามารถอ่านได้หกเดือนหลังจากได้รับการพัฒนา
  • รหัสที่สมเหตุสมผลในเวลา 2:00 น. ในตอนเช้าเมื่อระบบล้มเหลวและกำลังทำการดีบัก
  • รหัสที่คนอื่นชอบยืมเพราะพวกเขาเข้าใจและสามารถแก้ไขได้ง่าย
  • รหัสที่ใช้ได้ 24/7 365

ฉันกำลังจะไปเรื่อย ๆ แต่ฉันอยากใช้เวลาตอบกระทู้อื่น ๆ ฉันคิดว่าพวกคุณรู้ว่าฉันอยู่ตรงไหนในประเด็นนี้


1
ฉันคิดว่าสัญลักษณ์แสดงหัวข้อย่อย 1,2 และ 3 จำเป็นต้องใช้เพื่อเป็นนักเขียนที่ดีนอกเหนือจากการเป็นโปรแกรมเมอร์ที่ดี ในสาระสำคัญคุณกำลังพิจารณาทักษะการเขียนที่ดีเป็นลักษณะโดยปริยาย
Mamta D
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.