วิธีการฝึกอบรมโปรแกรมเมอร์รุ่นเยาว์สำหรับสภาพแวดล้อมบนเว็บในปัจจุบัน (ซับซ้อน)?


39

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

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

เมื่อฉันเริ่มเขียนโปรแกรม 15 ปีที่แล้วฉันใช้เฉพาะ Delphi และ Source Safe และสามารถผลิตซอฟต์แวร์ที่ใช้ได้ตั้งแต่ต้น ทั้งสองเป็นเครื่องมือง่าย ๆ และง่ายต่อการเจาะลึกถึงผลงานภายในของสิ่งแวดล้อม ช้าฉันเริ่มใช้เฟรมเวิร์กของบุคคลที่สามได้เปลี่ยนเป็น CVS, SVN และ Git ในที่สุดได้เรียนรู้สิ่งต่าง ๆ ที่ทำให้เว็บของวันนี้เช่น HTTP, JavaScript, CSS, REST และอื่น ๆ วันนี้แม้หลังจากผ่านไปหลายปี มากเกี่ยวกับการทำงานของ Ruby on Rails ภายในที่ฉันทำในอดีตเกี่ยวกับ Delphi และสำหรับฉันนั่นสำคัญมากฉันจึงสามารถเชื่อมต่อบล็อกการเรียนรู้พื้นฐานกับเครื่องมือที่ฉันใช้

ฉันคิดว่าโปรแกรมเมอร์ที่ฉันจ้างจะใช้เวลานานในการรวมเข้ากับทีมและสร้างสิ่งที่ใช้งานได้เพราะมีหลายสิ่งหลายอย่างที่ต้องเรียนรู้ที่จะใช้กรอบเดียว (Rails): Ruby, HTML, CSS, JavaScript, ส่วนที่เหลือ, กรณีทดสอบ, การเข้าถึงฐานข้อมูล (ด้วย SQL ที่สร้างขึ้นอย่างน่าอัศจรรย์ภายในกรอบ!), MVC, ตัวจัดการแพ็กเกจที่แตกต่างกันสามแบบ (เหมาะสำหรับ Ubuntu, อัญมณีและ Bundler สำหรับ Ruby), ssh, git, Apache และ Phusion Passenger

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


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

เพียงแค่ FYI เส้นโค้งการเรียนรู้ที่สูงชันหมายถึงคุณเรียนรู้บางสิ่งที่รวดเร็วอย่างแท้จริง มันทำให้บางคนสับสนเมื่อใช้ไม่ถูกต้อง :)
Alternatex

ฉันมักจะใช้การแสดงออกเป็นความหมาย "ยาก" (ภาษาอังกฤษไม่ใช่ภาษาแม่ของฉัน) แต่ Wikipedia บอกว่ามันไม่ชัดเจนดังนั้นฉันจึงไม่รู้ตัวเลือกที่ดีที่สุดที่นี่: en.wikipedia.org/wiki/Learning_curve :)
Rômulo Ceccon

คำตอบ:


39

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

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

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

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

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


ฉันทำสิ่งเดียวกัน คำตอบที่ดี.
Rocklan

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

8

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

แต่สมมติว่าพวกเขามีความสามารถขั้นตอนแรกคือส่งพวกเขาไปที่ชั้นเรียน ชั้นเรียนหนึ่งสัปดาห์จะมีค่าใช้จ่าย $ 2,000 - $ 3,000 (US) อย่างไรก็ตามจะทำให้พวกเขามีประสบการณ์ตรงกับผู้สอนที่ (หวังว่า) จะเข้าใจเนื้อหาและแผนการสอนที่ออกแบบมาเพื่อนำพวกเขาไปสู่ความรวดเร็ว การส่งหนังสือให้ใครบางคนและคำสั่งให้ "เรียนรู้สิ่งนี้" ไม่ได้อยู่ใกล้กับที่มีค่าและมีแนวโน้มที่จะเสียค่าใช้จ่ายมากขึ้น (ค่าใช้จ่ายของชั้นเรียนเท่ากับหนึ่งสัปดาห์โปรแกรมเมอร์เสีย)

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


4

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

จากนั้นนักพัฒนาซอฟต์แวร์แต่ละคนควรสามารถแยกวิชาของตนเองออกเป็นวิชาที่เกี่ยวข้องเช่น Javascript, CSS, DAL's, เครื่องกำเนิดแม่แบบการกำหนดเส้นทางและอื่น ๆ คุณสามารถให้คำแนะนำแก่พวกเขาในหัวข้อที่จะศึกษา (อาจเป็นไปตามความต้องการเร่งด่วนที่สุดของ บริษัท ของคุณ) ให้คำปรึกษาและติดตามความคืบหน้าของพวกเขา ย้ายนักพัฒนาทีละคนไปยังโครงการง่าย ๆ ที่สร้างฟังก์ชั่นการทำงานซึ่งจะทำให้ความพยายามในการพัฒนาที่แท้จริงของคุณไปข้างหน้าทันทีที่พวกเขาแสดงให้เห็นถึงทักษะที่จำเป็น

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

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

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