วิธีการให้คำปรึกษาแก่นักพัฒนาจูเนียร์


99

ชื่อนี้ค่อนข้างกว้าง แต่ฉันอาจต้องให้พื้นฐานเล็กน้อยก่อนที่ฉันจะสามารถถามคำถามของฉันได้อย่างถูกต้อง

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

เมื่อฉันพูดว่า "นักพัฒนาใหม่" พวกเขาอาจอยู่ที่ใดก็ได้จากวิทยาลัยที่สดใหม่ไปจนถึงการมีประสบการณ์หนึ่งหรือสองปี

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

ฉันจะให้ข้อมูลที่เพียงพอได้อย่างไรเพื่อพวกเขาจะได้เรียนรู้ แต่ไม่ได้ให้มากพอที่จะแก้ปัญหาให้พวกเขาได้?

หรือบางที:

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

คำถามเหล่านี้อาจเป็นคำถามสอนทั่วไปและไม่ได้มีส่วนเกี่ยวข้องกับการพัฒนาซอฟต์แวร์โดยเฉพาะ

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

วัตถุประสงค์หลักของฉันคือ:

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

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

14
คุณสิทธิที่มีจำนวนมากเกี่ยวกับเรื่องนี้ที่ไม่เฉพาะเจาะจงในการพัฒนาซอฟแวร์ แต่มันเป็นเกี่ยวกับการเป็นครูที่ดี (ถึงแม้ว่าจะไม่ใช่งานหลักของคุณ) ในบริบทของการสอนฉันเขียนชิ้นเล็ก ๆที่ Chronicle of Higher Ed ซึ่งบอกว่าความสำเร็จสามารถเกิดขึ้นได้เมื่อคุณเล่นสามบทบาท: เป็นแบบอย่างที่ดีทำหน้าที่เป็นฝ่ายสนับสนุนด้านเทคนิค (จนกว่าพวกเขาจะหาวิธีถามคำถามที่ดี ) และเป็นเชียร์ลีดเดอร์ (ผู้ป่วยและสนับสนุน)
jcmeloni

1
มีข้อเสนอแนะมากมายในหัวข้อนี้ที่นี่: programmers.stackexchange.com/questions/137708/ …
KodeKreachor

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

3
และ .. ตรวจสอบให้แน่ใจว่าลูกบาศก์ของพวกเขาอยู่กึ่งกลางบนเส้นทางจากคิวบ์ของคุณไปยังห้องน้ำ ...
vrdhn

คำตอบ:


121

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

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

แต่นอกจากนั้นต่อไปนี้เป็นเคล็ดลับอื่น ๆ :

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

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

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

68
+1 สำหรับอย่าแตะแป้นพิมพ์ ส่วนหนึ่งเป็นเพราะการสอนพวกเขาถึงวิธีการทำบางสิ่งที่สำคัญกว่าการทำให้เสร็จในสถานการณ์การให้คำปรึกษา แต่จริงๆแล้วเพราะฉันเกลียดคนที่ขโมยแป้นพิมพ์ของฉัน
fire.eagle

3
ฉันรู้ว่ามันถูกพูดแล้ว แต่ "อย่าแตะแป้นพิมพ์" เป็นจุดที่ดีมาก
Tom Squires

3
มันทำให้ฉันตกใจว่าสิ่งเหล่านี้มากมายเป็นเพียงการสอนผู้พัฒนารุ่นเยาว์ให้ถามคำถามอย่างชาญฉลาด แหล่งข้อมูลที่ดีสำหรับสิ่งนี้: catb.org/esr/faqs/smart-questions.html
TALlama

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

1
@ Jae: คำแนะนำสำหรับผู้ให้คำปรึกษาที่จะไม่แตะแป้นพิมพ์ของจูเนียร์
ftr

21

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

เป็นหลักคุณต้องการส่งเสริมให้พวกเขาเรียนรู้ บางคนคิดว่าหลังจากเรียนจบแล้วพวกเขาไม่ต้องอ่านหนังสือหรือเรียนรู้อีกต่อไป ทัศนคติแบบนี้สามารถนำไปสู่การค้นหาทางลัดและเพียง "ทำให้เสร็จ"
รับ "Pragmatic Programmer" และให้พวกเขาอ่าน หนังสือเล่มนี้จะช่วยให้พวกเขารู้ว่าการเขียนโปรแกรมเป็นงานฝีมือ / อาชีพและไม่ใช่แค่งาน แนะนำหนังสือให้พวกเขาอ่านทุก ๆ ไตรมาส ช่วยพวกเขาสร้าง "แฟ้มความรู้" (ดังที่กล่าวไว้ใน Pragmatic Programmer) ฉันขอแนะนำSafari Books Onlineที่มีหนังสือ CS / Programming จำนวนมาก

ด้วยแฟ้มสะสมความรู้พวกเขาจะรู้ว่าต้องดูว่าพวกเขามีปัญหาหรือไม่ สอนให้พวกเขาดู ตัวฉันเองค้นพบประโยชน์ของ StackOverflow เมื่อเร็ว ๆ นี้ (และอย่างที่คุณรู้มันดูดีกว่าที่นี่แค่ Google)

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

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


10

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

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

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

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

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

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

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

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


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

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

1
@ S. Robins ฉันได้พบว่ามันช่วยชี้ให้เห็นว่าคุณรู้สิ่งนี้เพราะความผิดพลาดที่คุณพบ
HLGEM

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

Re: "จับพวกเขาทำอะไรบางอย่างที่ถูกต้อง": ฉันไม่แน่ใจว่าฉันเห็นด้วยกับเรื่องนี้เพราะมันหมายความว่าคุณมักจะมองข้ามไหล่ของพวกเขาหรืออย่างน้อยก็ตรวจสอบพวกเขาเป็นประจำ อาจมีความสัมพันธ์บางอย่างที่จำเป็น แต่ฉันไม่คิดว่าความสัมพันธ์ที่ปรึกษา / protégéเป็นหนึ่งในนั้น และมันขัดแย้งกับคำแนะนำที่ยอดเยี่ยมของคุณในการ "ปฏิบัติต่อพวกเขาอย่างเท่าเทียมกัน"
ruakh

คุณทำให้เป็นจุดที่ยอดเยี่ยม ฉันได้รับการสอนจากผู้จัดการของฉันเมื่อฉันเป็นผู้จัดการครั้งแรก (เขาเป็นที่ปรึกษาของฉัน แต่เขามาจากบรูคลิน ... ) และฉันไม่เคยถามถ้อยคำจนกระทั่งตอนนี้ เหมาะสมกว่า: "สังเกตสิ่งที่ถูกต้องเกี่ยวกับสิ่งที่พวกเขากำลังทำ" ฉันนำไปสู่สิ่งนั้น เมื่อปัญหา 'off by 1' ที่หลีกเลี่ยงไม่ได้เกิดขึ้นกับโปรแกรมเมอร์ C ฉันอาจสังเกตว่าการสร้างลูปของเธอนั้นกะทัดรัดและมีความคิดเห็นดีแล้วจึงขอให้เธอพาฉันผ่านตรรกะ ขอบคุณ
Thomas McNamee

ตกลงใช่ฉันอยู่บนกระดานด้วย +1 :-)
ruakh

7

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

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

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

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


5
+1 ฉันเรียนรู้เพิ่มเติมเกี่ยวกับงานแล้วฉันจะได้ไปเรียนที่มหาวิทยาลัยเพราะผู้คนใช้เวลาในการสอนฉัน
James Khoury

7

ขึ้นอยู่กับงานที่ได้รับฉันจะถูกล่อลวงให้ใช้แนวทางที่แตกต่างกันสองสามประการ:

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

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

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

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


+1 ฉันกำลังจะเขียนอะไรบางอย่าง แต่ผลรวมมันในแนวทางของฉัน
Jason Sebring

5

สิ่งหนึ่งที่ฉันได้ทำที่นี่ในงานของฉันที่ฉันพบว่ามีประโยชน์จริง ๆ คือการตั้งค่าฟอรัม (เช่น PHPbb) สำหรับคำถามและคำตอบภายในและปฏิบัติตามกฎว่าถ้าคำถามและ / หรือคำตอบใช้เวลามากกว่า 5 นาที ถามและตอบผ่านฟอรั่ม ประโยชน์ที่ได้รับ:

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

4

ฉันจะให้แนวโน้มที่นี่และแนะนำว่าคุณไม่พยายามกระตุ้นให้ผู้พัฒนารุ่นน้องเรียนรู้วิธีค้นหาคำตอบด้วยตนเอง ดูเหมือนว่าเกม "ฉันมี แต่ฉันจะไม่มอบให้คุณ"

จับคู่กับพวกเขาในการหาคำตอบ คุณกำลังจะไป google มันดังนั้นทำในขณะที่นั่งกับพวกเขา พวกเขาจะบอกว่านี่เป็นวิธีหาคำตอบ

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

กุญแจคือ: หนึ่ง - เพื่อให้ตัวเองพร้อมใช้งานเพื่อให้พวกเขาสามารถดูวิธีการทำงานของคุณ และสอง - พูดออกมาดัง ๆว่าทำไมคุณถึงทำสิ่งที่คุณทำอยู่ "รหัสนี้ซ้ำตัวเองดังนั้นฉันจะ refactor มัน" ไม่ "ใช้วิธีการแยกในสามบรรทัดนี้"


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

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

4

ฉันเคยฝึกหัดโปรแกรมเมอร์รุ่นเยาว์เพียงครั้งเดียวเท่านั้น เพื่อช่วยรักษาระบบที่ฉันสร้างขึ้น ในที่สุดเป้าหมายก็คือมอบระบบทั้งหมดให้เขา

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

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


3

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

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

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

สิ่งนี้จะทำให้สำเร็จดังต่อไปนี้:

  • รับภาระจากผู้พัฒนาที่มีประสบการณ์
  • บังคับให้นักพัฒนาใหม่เพื่อเรียนรู้
  • ความสุขสำหรับทุกคน

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


3

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

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


1

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

แต่สถานการณ์น้อยมากในชีวิตก็เป็นเช่นนั้น เว้นแต่ว่างานของคุณเป็น "โรงงานจิต" ที่เกี่ยวข้องกับการผสานวิดเจ็ต A ไปยังวิดเจ็ต B ด้วยเครื่องมือ C จากนั้นคุณจะต้องมีรายการสองสามรายการ:

  • กล่องเครื่องมือของทักษะและเครื่องมือ
  • วิธีการแก้ปัญหา

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

เมื่อนักพัฒนาซอฟต์แวร์รุ่นใหม่เข้าใจวิธีแก้ปัญหาพวกเขาจำเป็นต้องมีชุดเครื่องมือที่จะทำเช่นนั้น

  • ดีบักเกอร์ (วิทยาลัยไม่เคยพูดถึงเรื่องนี้)
  • โปร
  • แก้ไขข้อความ
  • เชลล์ (และสิ่งที่เกี่ยวข้อง)
  • แหล่งข้อมูล (หนังสือ, google, SO, manpages)

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

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

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


1

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

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

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

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

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


1

คำตอบอื่น ๆ ดีมาก แต่ฉันต้องการแสดงความคิดเห็นในประโยคนี้

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

คนส่วนใหญ่ต้องการทราบวิธีการทำบางสิ่งบางอย่าง ทัศนคตินี้ดีในการเริ่มต้นเมื่อคุณจมกับการเรียนรู้สิ่งใหม่และเรียนรู้วิธีการทำงานของคุณ

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

บางคนใช้รหัสเพื่อรับเงินอย่างดี คนอื่นรับเงินอย่างมีความสุขสำหรับการเข้ารหัส มันดีกว่าการทำงานกับคนที่มีความหลงใหลในการออกแบบและการเข้ารหัส น่าเสียดายสำหรับฉันมันก็ค่อนข้างหายาก อย่างน้อยก็จนกว่าฉันจะพบกองกำลังล้น


1

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

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

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

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

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


1

ฉันจะให้คุณดูกับมัน

โดยทั่วไปฉันเรียนรู้ได้ดีเมื่อฉัน:

  1. ฉันได้รับการแนะนำอย่างเป็นทางการในหัวข้อ ฉันไม่สามารถเรียนรู้สิ่งใหม่ ๆ ได้โดยไม่มีใครสักคน (ใช่คน) ตอบคำถามทั้งหมดที่ฉันมีเกี่ยวกับแนวคิดใหม่ เมื่อฉันทำเสร็จแล้วฉัน ...
  2. รับหนังสือ ในฐานะที่ปรึกษาของฉันคุณควรจะมีหนังสือเล่มเดียวกันเพื่อฉันจะได้พูดอะไรบางอย่างเช่น "เฮ้นั่นหมายถึงอะไรในบทที่สี่หน้า 72 วรรค 6 ... " และคุณจะรู้ว่าฉันกำลังพูดอะไรอยู่ เกี่ยวกับ เมื่อฉันมีหนังสือฉันเป็นอิสระมากขึ้นและถามคำถามจริงๆเท่านั้น แล้วฉัน...
  3. เริ่มต้นโครงการด้วยกัน นี่เป็นส่วนที่สำคัญที่สุดของกระบวนการ นี่คือที่ที่คุณสามารถเริ่มสอนฉันเกี่ยวกับวิธีปฏิบัติที่ดีที่สุดอัลกอริทึมคุณสมบัติภาษาที่ยาก (แต่มีประโยชน์) ฯลฯ

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

ด้วยที่กล่าวว่าคุณยังคงต้องทำงานกับเขาเป็นประจำ "ไทม์ไลน์" ทั่วไปควรเป็น:

  • 1 เดือน. ควรรู้ไวยากรณ์พื้นฐาน ยังไม่เป็นอิสระเมื่อเข้ารหัส
  • 3 เดือน. เมื่อมาถึงจุดนี้เขาควรรู้ไวยากรณ์เหมือนหลังมือของเขาและควรจะสามารถแก้ปัญหาง่าย ๆ ได้อย่างง่ายดาย เขาเป็นอิสระมากขึ้น แต่ก็ยังไม่ค่อยมี
  • 6 เดือน. พวกเขาควรรู้ว่าเหนือสิ่งอื่นใด: วิธีปฏิบัติที่ดีที่สุดอัลกอริธึมทั่วไป ฯลฯเขาควรจะสามารถสร้างโครงการด้วยตัวเองได้ด้วยความช่วยเหลือจาก SO

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

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

ฉันหวังว่านี่จะช่วยได้! โดยวิธีการที่ปล่อยให้เขาอ่าน: สอนตัวเองการเขียนโปรแกรมในรอบสิบปี


0

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

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

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


0

ฉันไม่ได้เห็นคนที่นี่กล่าวขวัญพระเอกส่วนตัวของฉัน, แรนดี้ Pausch

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

  • บรรลุความฝันของคุณ (เขาเป็นอาจารย์และสิ่งนี้มีความสัมพันธ์อย่างมากกับแรงจูงใจผู้อื่น) และ
  • การจัดการเวลา

-4

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

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


9
ไม่ทางใดก็ทางหนึ่งนายจ้างของคุณจ่ายเงินให้คุณเรียนรู้
smp7d

13
คุณมีค่าน้อยกับนายจ้างของคุณถ้าคุณไม่เคยเคยดีกว่าคุณเป็นวันที่คุณได้รับการว่าจ้างเป็นโปรแกรมเมอร์จูเนียร์

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

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

6
หากคุณต้องการทางออก "บนจาน" คุณจะไม่มีวันหมดสถานะในฐานะนักพัฒนารุ่นน้อง การเรียนรู้จากโซลูชั่นที่สมบูรณ์ให้กับคุณอาจจะเป็นไปได้แต่มันแน่นอนไม่ได้มีประสิทธิภาพ นั่นเป็นวิธีการทำงานของสมอง: ถ้าคุณได้สัมผัสกับวิธีการที่จะแก้ปัญหาไม่ได้เป็นเพียงการแก้ปัญหาตัวเองคุณจะได้เรียนรู้มากขึ้นกว่าเพียงแค่ใครสักคนที่กำลังศึกษาวิธีการอื่นนำเสนอให้คุณ
perdian
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.