เป็นไปได้หรือไม่ที่มือสมัครเล่นจะกลายเป็นโปรแกรมเมอร์ที่ดี? [ปิด]


46

โปรแกรมเมอร์มืออาชีพเต็มเวลาสามารถทำงานที่ยอดเยี่ยมด้วยการเรียนรู้จากการทำงานอย่างต่อเนื่อง โปรแกรมเมอร์มือสมัครเล่นสามารถฝึกฝนให้เป็นโปรแกรมเมอร์ที่ดีได้อย่างไร

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


3
ขวา. ดังนั้น Wozniak จึงไม่ใช่โปรแกรมเมอร์ที่ดีจนกระทั่งขาย Apple แรก (และเขาก็กลายเป็น "มืออาชีพ")
KeithS

กำหนด "ดี" ..

2
โปรแกรมเมอร์ "ดี" ทุกคนเคยเป็นมือสมัครเล่น
spudwaffle

คำตอบ:


84

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

ด้วยเหตุนี้ฉันขอเสนอให้คุณเข้าร่วมทีมเช่นโครงการโอเพนซอร์สหรือทำโครงการงานอดิเรกกับเพื่อนบางคน


9
+1 สำหรับการทำงานเป็นทีมที่ดี การมีคนที่มีทักษะเท่าเทียมกันหรือสูงกว่าในทีมของคุณเป็นแรงจูงใจอย่างมาก
BenR

ลืมส่วนของทีมใน 'หลุมพราง' รายการของฉัน +1
keppla

2
+1 ฉันคิดว่าเป็นกุญแจสำคัญ: เรียนรู้จากคนดีที่มีประสบการณ์มากกว่าคุณ การเข้าร่วมทีมที่ดีนั้นพูดง่ายกว่าทำมาก

1
+1 สำหรับบิตของทีมที่ดี หากทีมไม่ดีหรือดีกว่าคุณคุณจะไม่เรียนรู้
Spencer Rathbun

4
คุณไม่จำเป็นต้องอยู่ในทีมเพื่อเรียนรู้จากคนอื่น
Emanuil Rusev

53

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

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

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

การอ่านที่แนะนำคือPragmatic Programmer: จาก Journeyman ถึง Masterพร้อมคำแนะนำที่ดีและเป็นประโยชน์มากมายเกี่ยวกับวิธีการที่จะพัฒนาให้ดีขึ้นเรื่อย ๆ


3
+1 กฎ 10,000 ชั่วโมงของ Malcolm Gladwell จากen.wikipedia.org/wiki/Outliers_(book)
StuperUser

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

@StuperUser ลิงก์ของคุณเสีย (วงเล็บที่สองไม่รวมอยู่ในไฮเปอร์ลิงก์)
Paperjam

คำแนะนำที่ดีที่สุดที่ฉันเคยอ่าน "ถ้าคุณอยากเป็นศิลปินที่ดีวาดทุกเช้าทำสเก็ตช์คุณอดไม่ได้ที่จะดีขึ้น" .. หาโครงการ ... มีโครงการมากมาย - กำไรออกมาจากที่นั่นซึ่งต้องการความช่วยเหลือ .. ขอคำแนะนำ ("ฉันกำลังสร้างระบบการแจ้งหนี้ฉันจะเริ่มที่ไหน", "ฉันจะจัดการความปลอดภัยตามบริบทได้อย่างไร" ฯลฯ ) ต้นทุนความล้มเหลวต่ำและ คุณอาจจะได้รับการจ่ายเงินจากกิ๊ก ..
Bobby D

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

18

แต่สำหรับโปรแกรมเมอร์มือสมัครเล่นจะสามารถฝึกฝนให้เป็นโปรแกรมเมอร์ที่ดีได้อย่างไร

คุณจะดีขึ้นโดยการเรียนรู้ซึ่งเป็นส่วนที่ทำส่วนที่สะท้อนให้เห็นถึงสิ่งที่ทำ

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

หลุมพรางมือสมัครเล่นคือ imho

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

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

ข้อผิดพลาดระดับมืออาชีพคือ

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

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

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

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

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


นี่มันทำร้ายจิตใจฉันจริง ๆ มันช่างเป็นความจริงสำหรับฉัน 1 ปีแห่งรหัสสปาเก็ตตี้ที่คุณไม่ได้รับอนุญาตให้สร้างใหม่ ("คุณกำลังซับซ้อนอยู่!")
Terrance

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

@ Chris Marisic: งั้นฉันก็ยินดีที่จะทำงานร่วมกับคุณ น่าเศร้าที่คุณจะได้รับการยกเว้นในสายงานของนายจ้างของฉัน
keppla

8

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

นั่นคือเหตุผลที่นักพัฒนาเต็มเวลาจำนวนมากเป็นมือสมัครเล่นพวกเขาเขียนโค้ดต่อหลังเลิกงานพวกเขากำลังเล่นกับโครงการของเล่นของตัวเอง - มันเป็นอิสระที่จำเป็นสำหรับการเติบโต


6

ในฐานะโปรแกรมเมอร์มือสมัครเล่นคุณมีความเป็นไปได้มากมายที่จะพัฒนาทักษะของคุณ ฉันทำสิ่งต่อไปนี้เพื่อพัฒนาทักษะของฉันในขณะที่เรียนวิศวกรรมซอฟต์แวร์

  • อ่านหนังสือเช่นUML กลั่น , Programmer ศาสตร์ , รู้เบื้องต้นเกี่ยวกับอัลกอริทึม
  • เว็บไซต์อ่านเช่นhttps://softwareengineering.stackexchange.com/ ฉันได้ทำสิ่งนี้ในช่วงไม่กี่เดือนที่ผ่านมาขณะนั่งอยู่ในรถไฟใต้ดิน / รถไฟ ช่วยให้อ่านคำถามและความคิดเห็นของผู้อื่นได้อย่างแน่นอน
  • เข้าร่วมการบรรยายหลักสูตรหรือการสัมมนาฟรี ตัวอย่างเช่นคุณสามารถเข้าร่วมกลุ่มผู้ใช้ Java บางครั้งก็มีการสัมมนาฟรีสำหรับนักเรียนด้วย
  • สมัครสมาชิกนิตยสารซอฟต์แวร์
  • สมัครสมาชิก RSS ฟีดที่น่าสนใจเช่นโจเอลซอฟแวร์ , Google-Code-Blog , มาร์ตินฟาวเลอร์
  • ฟังพอดคาสต์ขณะขับรถไปทำงานหรือโรงเรียนเช่นSE-วิทยุ
  • ลองใช้OpenCourseWareและทำสิ่งที่ได้รับมอบหมายจากมหาวิทยาลัย!

แน่นอนคุณต้องใช้ความรู้ของคุณ ทำสิ่งนี้ผ่านการฝึกงานโครงการกับเพื่อนหรือเรียนหลักสูตร มีหลายวิธีในการพัฒนาตนเองคุณเพียงแค่เต็มใจลงทุนเวลาว่างของคุณ นอกจากนี้ขอให้สนุกกับการเรียนรู้สิ่งใหม่ !


4

เป็นไปได้หรือไม่ที่มือสมัครเล่นจะกลายเป็นโปรแกรมเมอร์ที่ดี?

ใช่เป็นไปได้แต่ใช้เวลานาน:

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


โปรแกรมเมอร์มือสมัครเล่นสามารถฝึกฝนให้เป็นโปรแกรมเมอร์ที่ดีได้อย่างไร

อีกครั้งจากแหล่งเดียวกัน :

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

ฉันมักจะไม่ +1 คำตอบที่ประกอบด้วยลิงค์เท่านั้น แต่บทความนี้คุ้มค่าที่จะอ่าน ขอบคุณ
sarnold

คุณจะอธิบายเกี่ยวกับเรื่องนี้ในรายละเอียดเพิ่มเติมได้อย่างไร - มันจะตอบคำถามที่ถามได้อย่างไรและทำไม? "เชื่อมโยงเท่านั้นคำตอบ"ไม่ได้ค่อนข้างต้อนรับที่กองแลกเปลี่ยน
ริ้น

1
@gnat ลิงก์บอกว่ามันทั้งหมด - หวังว่ามันจะดีกว่าหลังจากการแก้ไข
BЈовић

3

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

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

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

หลักปฏิบัติบางประการที่คุณควรเรียนรู้และนำไปใช้:

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

2

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

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


2
จริงๆแล้วมันคือความสามารถที่เป็นธรรมชาติ คุณไม่สามารถฝึกวิศวกรซอฟต์แวร์ที่น่าสงสารให้เก่งได้ แต่โดยทั่วไปคุณสามารถฝึกฝนให้ใครก็ตามเป็นคนดีได้ มันเป็นเหมือนความสามารถด้านดนตรีหรือศิลปะคุณสามารถฝึกฝนเกือบทุกคนให้ดูดี แต่คุณไม่สามารถฝึกให้ใครเป็นคนที่ยอดเยี่ยมพวกเขาฝึกฝนตัวเองและอาจจะดีกว่าผู้ฝึกสอนของพวกเขา เช่นเดียวกับนักกีฬาระดับโลกที่มีไม่กี่คนที่เคยพบกับความสามารถในการเขียนโปรแกรมระดับโลกซึ่งอาจอธิบายได้ว่าทำไมโปรแกรมเมอร์ส่วนใหญ่ไม่ทราบว่ามันมีอยู่จริง :)
Bill K

2

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


2

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

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


1

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


1

ให้ความหมายดั้งเดิมที่แท้จริงของคำว่า ( มือสมัครเล่นชาวฝรั่งเศส"คนรัก" จากภาษาฝรั่งเศสโบราณและท้ายที่สุดจากภาษาละตินamatoremนาม. Amator , "คนรัก" - วิกิพีเดีย) เราอยากจะเชื่อว่ามืออาชีพจำนวนมากก็เป็นมือสมัครเล่นเช่นกัน หากคุณไม่รักฝีมือของคุณคุณจะได้รับการฝึกฝนหรือไม่

แน่นอนว่าเป็นไปได้ - ถ้าคุณรักการเขียนโปรแกรมคุณจะฝึกฝนและเมื่อเวลาผ่านไปคุณก็จะเก่ง (อาจไม่เคยยอดเยี่ยมได้รับความสามารถส่วนตัวหรือขาดไป) แต่อย่างน้อยก็ดี


ความหมายที่แท้จริงของมือสมัครเล่นคือความหมายที่คุณพบใน OED หรือ NOAD นิรุกติศาสตร์ของคำไม่ได้กำหนดความหมายของมัน "ผู้ที่มีส่วนร่วมในการแสวงหาการศึกษาวิทยาศาสตร์หรือกีฬาเป็นงานอดิเรกมากกว่าเป็นอาชีพ"
Django Reinhardt

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

0

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

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

ในที่สุดอ่านมากเพื่อพัฒนาทักษะทัศนคติการปรับปรุงอุตสาหกรรมพัฒนารสนิยมและไปกับความหลงใหล สิ่งต่างๆจะติดตามคุณได้อย่างง่ายดาย!


ทั้ง Bill Gates และ Mark Zuckerberg ศึกษาวิทยาศาสตร์คอมพิวเตอร์ที่ Hardvard จนกระทั่งพวกเขาเริ่มต้นธุรกิจของตนเองและเลิกกิจการ ไม่ได้เป็นตัวอย่างที่ดีของมือสมัครเล่น
vartec

ฉันสงสัยว่า Harvard มีบทบาทสำคัญในการพัฒนาทักษะการเขียนโปรแกรมของพวกเขายกเว้นสภาพแวดล้อมที่น่ากลัว!
sarat

0

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

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

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


0

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

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

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