ฉันจะสอนคนที่ฉลาดได้อย่างไรโดยไม่มีประสบการณ์การเขียนโปรแกรมวิธีการเขียนโปรแกรม [ปิด]


100

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

ดังนั้นคำถาม: สิ่งใดที่คุณคิดว่าเป็นวิธีที่ดีที่สุดในการทำให้ผู้พัฒนาที่ไม่ใช่นักพัฒนาเร็วขึ้นอย่างรวดเร็วในการพัฒนา (.Net ในกรณีนี้)


1
อาจจะมีคำถามที่เกี่ยวข้อง: programmers.stackexchange.com/questions/10930/… : D
jmservera

ฉันได้ยินมาว่าLearn Python The Hard Wayนั้นดีสำหรับผู้ที่ไม่ใช่โปรแกรมเมอร์
john2x

ลองดูที่ขนาดเล็กขั้นพื้นฐาน มันง่าย แต่มีประโยชน์สำหรับผู้เริ่มต้น

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

1
ฉันขอให้เขาอ่าน Edgser Dijkstra's | ด้วยความโหดร้ายของการสอนวิทยาศาสตร์คอมพิวเตอร์อย่างแท้จริง | ให้เขาได้เรียนรู้เกี่ยวกับเหตุผลของบทความนั้นเพื่อเขาจะได้ระมัดระวังเกี่ยวกับความเสียหายของสมองที่อาจเกิดขึ้นได้ซึ่งเป็นที่ยอมรับโดยทั่วไป วิธีการสอนการเขียนโปรแกรม
vfclists

คำตอบ:


125

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

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

  1. รหัสโดย Charles Petzold
  2. ภาษาโปรแกรม C, K&R
  3. โครงสร้างและการตีความโปรแกรมคอมพิวเตอร์ Abelson และ Sussman

กฎของฉันคือ: ทำงานของคุณผ่านหนังสือทั้งสามเล่มโดยบังคับถ้าจำเป็น ถามคำถามที่คุณมี แต่หลังจากพยายามดิ้นรนเพื่อคิดออกเอง หากคุณสามารถทำให้มันผ่านหนังสือสามเล่มแสดงความยินดีคุณเป็นโปรแกรมเมอร์ตอนนี้ฉันสามารถโยนคุณ PERL ใน 15 นาทีหรืออะไรก็ตามที่ขยะอยู่ที่ร้านหนังสือใน Big Bookcase ของ Java และคุณจะจัดการได้ดี หากคุณไม่สามารถทำให้มันผ่านหนังสือสามเล่มนี้ยอมแพ้กลับบ้านคุณจะไม่มีวันได้มันมา

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

ความพยายามในการใช้ทางลัดและไปที่การเรียนรู้สิ่งที่คุณต้องการเรียนรู้โดยตรงในขณะนี้ (เช่นเริ่มต้นด้วย C # และ ASP.NET) ถึงวาระแล้ว


25
ในฐานะที่เป็นคนที่ต้องตบหัวของเขาบนโต๊ะเหนือ "โปรแกรมเมอร์" ที่แนะนำอย่างมากสำหรับความสามารถของ C # แต่ไม่สามารถทำสิ่งต่าง ๆ อย่างง่าย ๆ เช่นใช้คลาสฐานที่มีเอกสารดีมากค้นหาหน่วยความจำรั่วในโปรแกรม c และ c ++ หรือเพียงแค่หาปัญหาด้วยตัวเองหรือเรียนรู้แนวคิดใหม่ที่แม้กระทั่งในระดับปานกลางฉันเห็นด้วย นี่ไม่ใช่ลัทธิอภิสิทธิ์; มันเป็นสามัญสำนึก หากคุณไม่สามารถควบคุมตัวชี้และการเรียกซ้ำได้คุณจะไม่มีประโยชน์กับผู้ที่ต้องการนักพัฒนาที่สามารถแก้ปัญหาได้ด้วยตนเอง
Jonathan Henson

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

32
ในบางครั้งคุณอาจโดนใจโจเอล
Robert S.

46
ขออภัยหนังสือพิมพ์ใช้เวลาสองสามวันในการมาถึงสโมสรส่วนตัวของฉันเพราะพวกเขาจำเป็นต้องรีดด้วยรถรับส่งก่อนที่เราจะได้เห็นพวกเขา
Joel Spolsky

19
น่าเสียดายที่คำตอบนี้ล้มเหลวup to speed quicklyส่วนหนึ่ง
rlb.usa

30

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

หากต้องการประสบความสำเร็จผู้สมัครจะต้องมีความอยากรู้อยากเห็นอย่างน้อยเกี่ยวกับการเขียนโปรแกรม (โดยไม่คำนึงถึงแพลตฟอร์ม)

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

ฉันเห็นด้วยอย่างสมบูรณ์กับ @karudzo - ความสำเร็จในตนเองและการทบทวนที่สร้างสรรค์สามารถสร้างแรงบันดาลใจได้มาก


29
"ถ้าคุณต้องการสร้างเรืออย่าตีกลองผู้คนเพื่อรวบรวมไม้และไม่มอบหมายงานและการทำงานให้พวกเขา แต่สอนให้พวกเขาทำต่อไปเพื่อให้ได้ทะเลที่ไม่มีวันสิ้นสุด" - Antoine de Saint-Exupery
Julien Chastang

จูเลียน - ดีมาก! แน่นอน!
jkoreska

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

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

12

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

วิธีที่เร็วที่สุดอาจจะให้เวลาเขาแม้ว่ามันอาจจะเป็นปีหรือสองปีก็ตาม

แน่นอนว่าดูเหมือนง่ายที่จะสอนเขาด้วยภาษาที่เรียบง่าย (C #, ถ้าเขาทำสิ่ง. NET) แต่การเรียนรู้ภาษาไม่ได้เรียนรู้ที่จะเขียนโปรแกรม

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

มีเนื้อหาที่ครอบคลุมอยู่มากมาย (เช่นหนังสือเล่มล่าสุดของ Stroustrupที่สอนการเขียนโปรแกรมโดยใช้ C ++ แทนที่จะสอนภาษา C ++) แต่ไม่มีอะไรมากและไม่มีอะไรครอบคลุมทั้งหมด ดังนั้นคนที่แต่งตัวประหลาดต้องยินดีที่จะเรียนรู้และอ่านหนังสือและบทความมากมาย

สำหรับวิธีการทำสิ่งนี้: ฉันไม่มีหลักสูตรที่สมบูรณ์ที่จะวางที่นี่ (ขออภัย)
สิ่งที่ฉันขอแนะนำคือเริ่มต้นด้วยการสอนภาษาการเขียนโปรแกรมภาษาเดียวให้เขาเพื่อที่เขาจะได้มีโอกาสก้าวหน้าอย่างรวดเร็วและได้ผลลัพธ์ที่น่ายินดี มีหนังสืออยู่สองสามเล่มสำหรับสอนภาษาดังกล่าวเลือกหนังสือที่คุณคุ้นเคย หากหนังสือมีแบบฝึกหัดมากมายและเขายินดีที่จะทำเตรียมความพร้อมสำหรับการใช้เวลาส่วนใหญ่ในการช่วยเหลือเขา หากหนังสือไม่มี (m) ให้เริ่มคิดเองก่อนดี แต่เตรียมพร้อมที่จะปรับให้เข้ากับระดับ / ความเข้าใจของเขา
หากภาษาแรกนั้นไม่ใช่ C หรือ C ++ IMO เขาควรเรียนรู้ภาษาใดภาษาหนึ่งต่อไปนี้ K&R ดีสำหรับเรื่องนี้เช่นเดียวกับ TCPL ของ Stroustrup หรือถ้าเขาสามารถ (ด้วยความช่วยเหลือของคุณ) จัดการกับเส้นโค้งการเรียนรู้ที่สูงชันนิก / หมู่ เหตุผลที่ฉันแนะนำนี้คือเมื่อคุณรู้จัก C หรือ (IMO โดยเฉพาะอย่างยิ่ง) C ++ มันค่อนข้างง่ายที่จะรับ C derivates เหล่านั้นเช่น C #, Java, ObjC ...

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


1
"นักพัฒนาระดับเริ่มต้นสนับสนุนแอปพลิเคชั่น. Net ที่มีอยู่" ... "เขาจะต้องเรียนรู้เกี่ยวกับอาร์เรย์รายการที่เชื่อมโยงรูปแบบการรวบรวมภาษาที่เขาเรียนรู้การทำให้เป็นโมดูลการจัดการทรัพยากรกระบวนทัศน์รูปแบบบิต - โอโน้ต" ล้วน แต่เป็นสิ่งที่ดีสำหรับผู้ที่สนใจ แต่ฉันคิดว่านักพัฒนาที่เขียนโค้ดนี้ไม่มีทักษะเหล่านั้น
Kirk Broadhurst

1
@ KirkBroadhurst: ถ้าเป็นเช่นนั้น บริษัท ของคุณมีบางอย่างผิดปกติ
sbi

@sbi ฉันคิดว่าคุณจะพบว่ามีบางอย่างผิดปกติใน บริษัท จำนวนมาก บริษัท ของ OP แนะนำว่าไม่ใช่โปรแกรมเมอร์ (แต่เขาเป็น 'คนฉลาด'!) ถูกย้ายไปยังบทบาทที่สนับสนุนแอปพลิเคชัน ฉันไม่รู้ว่าคุณทำงานที่ไหน... แต่จากประสบการณ์ของฉันนั่นคือ 'โลกแห่งความจริง' ดีมากโปรแกรมเมอร์ผู้มีความสามารถเป็นข้อยกเว้นเช่นในอุตสาหกรรมส่วนใหญ่คนส่วนใหญ่ทำได้ดีพอที่จะผ่านไปได้
Kirk Broadhurst

1
@ KirkBroadhurst: ที่ฉันทำงานคือการตัดสินใจของฉัน ฉันหนีออกจาก บริษัท ที่ไร้ความสามารถและฉันจะหนีไปหากไม่มีนักพัฒนาคนใดรู้เรื่องเหล่านี้อย่างน้อยที่สุด
sbi

7

ฉันจะไม่เริ่มต้นที่. NET ฉันทำผิดพลาดหลายครั้งเกินไป อย่าปล่อยให้นายจ้างกดดันให้คุณสร้างโปรแกรมเมอร์ที่ไร้ความสามารถเพราะเวลา .NET อาจเป็นแพลตฟอร์มการพัฒนาที่รวดเร็ว แต่ไม่ได้บังคับให้นักพัฒนาเรียนรู้การเขียนโปรแกรม ใน C # เพียงอย่างเดียวคุณจะพบว่านักพัฒนาติดกับประเภทการอ้างอิงอายุการใช้งานของวัตถุพวกเขาจะปล่อยให้หน่วยความจำรั่วมาก (ใช่มันเป็นไปได้ใน. NET) และจะมีการออกแบบที่ไม่ดี มันจะเป็นการดีกว่าถ้าคุณเริ่มต้นบน C หรือ C ++ (อาจเป็น c ++ เนื่องจากพวกเขาจะต้องใช้แนวคิด OOP) แล้วพูดบางสิ่งเช่น: "ตอนนี้มันจะไม่ดีถ้าหน่วยความจำของคุณจัดการสำหรับคุณทุกสิ่งเป็นวัตถุ และคุณไม่ต้องจัดการกับพอยน์เตอร์ที่น่ารังเกียจเหล่านี้ทั้งหมดเหรอ? " นี่คือ C # และ JAVA หากพวกเขาเชี่ยวชาญ c ++ พวกเขาจะพิชิตทั้งสองในหนึ่งหรือสองสัปดาห์ ฉันแนะนำกองทหารของโจเอล นั่นคือรายการที่ครู CS 101 ของฉันมอบให้ฉันและฉันดีขึ้นมากเมื่อฉันวิเคราะห์ตัวเลขเพราะมัน วิธีนี้จะช่วยให้คุณทราบก่อนหน้านี้ว่าผู้สมัครจะตัดมัสตาร์ดหรือไม่ นอกจากนี้เมื่อคุณได้รับ c และ c ++ คุณจะเข้าใจ c # และ java โดยอัตโนมัติหลังจากอ่านคำนำหนังสือ ไม่เพียง แต่คุณจะเข้าใจพวกเขา แต่คุณจะเข้าใจพวกเขาได้ดีกว่าคนที่ไม่รู้จัก c และ c ++


4
"" ตอนนี้มันจะไม่ดีถ้าหน่วยความจำของคุณได้รับการจัดการสำหรับคุณทุกอย่างเป็นเชิงวัตถุและคุณไม่ต้องจัดการกับตัวชี้ที่น่ารังเกียจเหล่านี้ทั้งหมด? "คุณหมายถึงนี่คือ STL รอสิ่งที่ ทำไมคุณไม่สอนให้ฉันใช้ STL ใน C ++ ตั้งแต่เริ่มต้น!
Raynos

ดี STL หวาน ฉันหมายถึง Windows API มากขึ้นเรื่อย ๆ จนถึงการเขียนโปรแกรม Windows windows API ไม่ได้รับการออกแบบโดยคำนึงถึง OOP ฉันพบว่ามันเป็นแบบฝึกหัดที่ยอดเยี่ยมในการทำให้แอปพลิเคชั่นที่ไม่ดีบางตัวใช้ API ใน c ++ จากนั้นฉันให้เขา / เธอเขียนคลาส Window และใส่แคปซูลลูปของเหตุการณ์ไปเรื่อย ๆ ... คุณรู้ไหมทำให้มันเป็นวัตถุเชิง หลังจากนั้นในที่สุดพวกเขาก็ใช้งานได้ฉันแสดง Windows Forms มันบังคับให้พวกเขาต้องจัดการกับแนวคิดพื้นฐานบางประการเช่นวิธีที่แอปพลิเคชัน Windows ใช้งานได้ - บางคนจะไม่มีวันได้รับถ้าพวกเขาเพิ่งกระโดดเข้าสู่. NET
Jonathan Henson

4
ทำไมทุกคนจะสัมผัสกับ windows API ด้วยไม้ ฉันหมายถึงกำลังพูดถึงhWNDยุค 80 ใช่ไหม? เห็นได้ชัดว่าคุณใช้สิ่งที่เป็นนามธรรมที่ดีแทน (ซึ่งสิ่งที่เป็นนามธรรมคือการอภิปรายที่แตกต่างกันอย่างสิ้นเชิง) แน่ใจว่ารู้วิธีการทำงานภายใต้ประทุนเป็นสิ่งที่ดี แต่คุณไม่จำเป็นต้องใช้ C # .NET สำหรับสิ่งที่เป็นนามธรรม
Raynos

2
Windows API นั้นยอดเยี่ยมมาก อย่างไรก็ตามฉันใช้มันเป็นเครื่องมือในการสอนเท่านั้น ตัวอย่างเช่นผู้คนมักจะไม่เข้าใจว่าเหตุการณ์ต่างๆเกิดขึ้นได้อย่างไรในโปรแกรม windows มันจะมีประโยชน์สำหรับพวกเขาที่จะต้องเล่นกับห่วงเหตุการณ์ นอกจากนี้โปรแกรมเมอร์อย่างน้อยต้องคุ้นเคยกับ hWND โดยเฉพาะอย่างยิ่งหากพวกเขาจะจัดการกับ apis ที่เล่นกับกราฟิก - เช่นเดียวกับที่คุณจะมีเวลาทำสิ่งที่ยากลำบากใน Unix โดยไม่รู้วิธีการใช้ XID อย่างไรก็ตามมันบังคับให้พวกเขาเรียนรู้วิธีการทำงานของโปรแกรม windows พวกเขาก็รู้ว่า Windows ทำงานอย่างไรรูปแบบ
Jonathan Henson

ไม่จำเป็นต้องเปลี่ยนไปใช้ C # btw เพียงเพื่อ. NET โดยทั่วไป ฉันคิดว่า @Joel มีบทความที่ดีเกี่ยวกับ Law of Leaky Abstractions ว่าทำไมมันมักจะดีสำหรับโปรแกรมเมอร์ที่จะดูภายใต้ประทุนก่อนที่จะใช้กรอบ
Jonathan Henson

6

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


6

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

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


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

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

2

ให้เขา IDE ดี (สตูดิโอภาพแสดงยังดี) สอนให้เขา 60% ทั่วไปของไวยากรณ์ (ออกจากผลผลิต, linq, enums, คุณลักษณะ ฯลฯ ทำสอนชั้นเรียนเสมือนและแทนที่) ใช้เวลากับดีบักเกอร์ (โดยเฉพาะ callstack) จากนั้นบอกเขาให้ google "msdn functionanme" เมื่อใดก็ตามที่เขาต้องการความช่วยเหลือและนั่นจะทำให้เขาเริ่มต้นได้อย่างรวดเร็ว

สอนเขาด้วยว่าอย่าจับและกลืนข้อยกเว้น บอกเขาว่าเขาจะต้องทำใหม่หรือบันทึกมัน!

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


1

ฉันรู้ว่าผู้คนจำนวนมากพูดคุยเกี่ยวกับภาษาและหนังสือสำหรับภาษาเหล่านั้น ฉันแตกต่าง

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

ขั้นต่อไปคือพื้นฐานของภาษา เริ่มต้นด้วยภาษาที่ต้องการ ให้ปัญหากับโปรแกรม

หลังจากการตัดครั้งแรกจบลงแล้วให้พวกเขาทำพื้นฐาน CS และรูปแบบการออกแบบ

ตอนนี้ให้พวกเขาทำ reprogram ปัญหาก่อนหน้านี้กับแนวคิดใหม่เหล่านี้


1

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

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

เรียนรู้การเขียนโปรแกรมเป็นแหล่งข้อมูลที่ดีสำหรับการเขียนโปรแกรม Ruby ทำให้สนุกง่ายและสนุกสนาน


1

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

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

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

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