เหตุใดจึงเป็น“ ฉันควรเรียนรู้ภาษาใดต่อไป” เสมอไปแทนที่จะเป็น“ โครงการใดที่ฉันควรแก้ไขปัญหาต่อไป” [ปิด]


14

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

ทำไม Eric Raymond ในบทความ " เรียนรู้วิธีการโปรแกรม " ของบทความ " How To กลายเป็นแฮ็กเกอร์ " ของเขาพูดคุยเกี่ยวกับลำดับที่คุณควรเรียนรู้ภาษา (เทียบกับลำดับที่คุณควรจัดการโครงการ)

ช่างไม้เริ่มถามว่า "ฉันรู้วิธีใช้ค้อน ... ฉันควรเรียนรู้วิธีใช้เลื่อยหรือระดับต่อไปหรือไม่"

ฉันถามเพราะฉันพบว่าเกือบทุกโครงการที่มีความหมายฉันสนใจในการแก้ปัญหา (เช่นเว็บแอปชุดของเครื่องมือในการวิเคราะห์โป๊กเกอร์) กำหนดให้ข้าพเจ้าต้องเรียนรู้พอเพียงของความหลากหลายของภาษา (งูหลาม, C, HTML, CSS , Javascript, SQL) และเฟรมเวิร์ก / ไลบรารี (wxPython, tkinter, Django) เพื่อนำไปใช้

ขอบคุณ

ไมค์


5
ดูเหมือนว่าจะเป็น ... กางเกงในความซื่อสัตย์ บางทีคุณอาจลบข้อความแจ้งข่าวออกและทิ้งคำถามไว้ได้ไหม?
อานนท์

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

ความคิดเห็นที่เป็นธรรมอีกครั้ง: ranty ... กำลังจะให้ความบันเทิง ขอโทษถ้ามันเป็นกางเกง
MikeRand

4
การเปรียบเทียบภาษาการเขียนโปรแกรมกับมือนั้นไม่ใช่การเปรียบเทียบที่ดี ดูเหมือนจะทำให้รู้สึกตื้น ๆ แต่สลายไปอย่างรวดเร็วและจบลงด้วยการเป็นอันตรายมากกว่าที่เป็นประโยชน์ วิธีที่ผู้คนมากเกินไปปฏิบัติต่อมันเหมือนเป็นความจริงที่ไม่มีข้อสงสัย ผู้ชายคนนี้ทำงานได้ดีโดยสรุปเหตุผลบางประการว่าทำไมมันไม่ทำงาน journal.dedasys.com/2007/12/12/…
Nick Knowlson

ฉันชอบคำถามนี้ ... !
Michael K

คำตอบ:


6

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

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

ในที่สุดการเรียนรู้ภาษาก็สนุกแม้ว่าคุณจะไม่มีโครงการหรือเป้าหมายที่เฉพาะเจาะจง


6
  • แรงจูงใจของนักพัฒนาเต็มเวลาจำนวนมากคือการจ้างงานได้มากขึ้น

  • การมีงานทำมากขึ้นมักจะหมายถึงการผ่านอุปสรรค์ของผู้คัดกรองทรัพยากรบุคคล (และหลังจากผ่านการกีดกันการสัมภาษณ์จริง)

  • โปรแกรมตรวจสอบทรัพยากรบุคคลทั่วไปมักจะมีรายการตรวจสอบภาษาที่สามารถจับคู่กับประวัติย่อ แต่ไม่มีวิธีการประเมินทักษะหรือโครงการ

  • ความสำเร็จในการสัมภาษณ์จริงมักขึ้นอยู่กับโชคและทักษะขั้นต่ำในภาษามากกว่าจากประสบการณ์และความเข้าใจในภาษาอย่างลึกซึ้ง

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


น่าเศร้าที่ผ่านหน้าจอฝ่ายทรัพยากรบุคคลคุณต้องระบุรายการคำที่มีเสียงดังประจำวัน กระบวนการคัดกรองทรัพยากรบุคคลเป็นตัวกรองหลักสูตรที่ค่อนข้างจะทำให้ผู้สมัครที่ผ่านการคัดเลือกจำนวนมากอยู่เบื้องหลัง
เจฟฟ์

1
@ เจฟฟ์จากสิ่งที่ฉันได้ยินเกี่ยวกับการคัดกรองทรัพยากรบุคคลสิ่งที่พวกเขาต้องการคือการลดจำนวนเรซูเม่ต่อระดับที่สามารถจัดการได้และพวกเขาใช้ตัวกรองตามอำเภอใจมากมายเช่น "bin ถ้ามากกว่า 2 หน้า"
Dominique McDonnell

2

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

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


1

อาจเป็นส่วนหนึ่งเกี่ยวกับความคิดของแฮ็กเกอร์อย่างน้อยสำหรับโปรแกรมเมอร์บางคน แฮ็กเกอร์ถูกกำหนดในไฟล์ศัพท์แสงเป็น

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

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

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

โดยเฉพาะอย่างยิ่งแฮ็กเกอร์ที่สนใจในมุมมองแนวคิดแนวคิดนามธรรมและวิธีการคิดการแฮ็กทางจิตใจชนิดใหม่:

"ภาษาที่ไม่ส่งผลกระทบต่อวิธีที่คุณคิดเกี่ยวกับการเขียนโปรแกรมไม่คุ้มค่าที่จะรู้" - Alan Perlis


0

ปัจจุบันภาษาที่มีการใช้กันอย่างแพร่หลายมีมากมายเช่น C, C ++, C #, Java, JavaScript, Python, Perl, Ruby, Visual Basic เป็นต้นโปรแกรมเมอร์ทำขึ้นเพื่อความน่าสนใจโดยรวมของภาษาเหล่านี้โดยการเรียนรู้และผสมกัน ด้วยกัน.

มีชุมชนเล็ก ๆ รู้ว่าเป็นชุมชนเสียงกระเพื่อมที่เป็นอิสระจากความวิปริตที่แพร่หลายคอมพิวเตอร์

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


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

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

0

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

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