โปรแกรมเมอร์ใหม่ควรเน้นที่เทคโนโลยีเดียวจนกว่าเขาจะเชี่ยวชาญหรือไม่ [ปิด]


10

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

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

นี่ไม่ใช่ปัญหา เขายังคงกระโดดไปยังเทคโนโลยีใหม่ ๆ (Node.js, MongoDB, EC2 และอื่น ๆ ) ฉันพยายามบอกเขาว่าเขาควรเรียนรู้พื้นฐานบางอย่างเกี่ยวกับ RDMS ทางเลือกของเขา (MySQL) ในขณะที่เขาใช้มันทุกวันก่อนที่จะลงทุนเวลาในการเรียนรู้พื้นฐานของ MongoDB (และอาจย้ายไปหาสิ่งใหม่)

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


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

นอกจากนี้ที่เทคโนโลยีเดียวควรจะเรียนรู้?

@ ThorbjørnRavnAndersenไม่มากเทคโนโลยีเดียว แต่ LAMP stack เป็นสิ่งที่เขาทำงานกับทุกวัน ฉันคิดว่าเขาควรเรียนรู้พื้นฐานทั้งหมด / เกี่ยวข้องกับรายละเอียดงานของเขาเกี่ยวกับ MySQL, Apache, PHP และ JavaScript อย่างน้อยที่สุด
Brandon Wamboldt

1
ถ้าอย่างนั้นคุณจะต้องตอบคำถามของคุณเองด้วย "ไม่"

1
เขาไม่ได้เรียนรู้เทคโนโลยีที่หลากหลายเช่นเว็บฐานข้อมูลและอื่น ๆ อีกหรือไม่ ขอบเขตของสิ่งที่ถือเป็นเทคโนโลยีที่นี่มีอะไรบ้าง
JB King

คำตอบ:


18

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

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

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


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

+1 มีสถานการณ์ที่คุณจะได้เรียนรู้ที่จะมุ่งเน้นเช่นเมื่อคุณมีงานเขียนโปรแกรม "ของจริง" แต่คุณจะได้งานอย่างไรถ้าคุณได้รับเพียงกรอบเดียว? เรียนรู้การเขียนอะไรมากกว่าหนึ่งเฟรมเวิร์ก / ไลบรารีเพื่อให้คุณสามารถใส่ประวัติย่อของคุณและแสดงว่าคุณไม่ได้ลำเอียงกับเทคโนโลยีเฉพาะอย่างใดอย่างหนึ่ง ;-) คุณสามารถเรียนรู้สิ่งต่าง ๆ เช่นการให้เลขหน้าและ RMDB ในภายหลังเมื่อคุณได้รับบริบทที่แท้จริงแล้ว
Spoike

@Spoike เขามีงานเขียนโปรแกรม "ของจริง" ดังนั้นเหตุผลที่ฉันพยายามทำให้เขาให้ความสำคัญกับเทคโนโลยีที่เขาใช้ในชีวิตประจำวันสำหรับงานนั้น
Brandon Wamboldt

1
@RougeCoder: ให้งานที่เหมาะสมกับเขา (หน้ารายการขนาดยักษ์รายการกรองแผนภาพวาดด้วยกลุ่มตัวอย่าง ฯลฯ ) เพื่อให้เขาเรียนรู้วิธีการทำแนวคิดที่คุณต้องการให้เขารู้ หากไม่มีงานดังกล่าวแล้วก็ไม่มีบริบทสำหรับเขาที่จะทำให้ความรู้ที่ติด
Spoike

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

5

มีเหตุผลที่ดีทั้งสองด้านของปัญหานี้ การรู้จัก " พอ " เกี่ยวกับเทคโนโลยีที่แตกต่างกันมากมายนั้นมีค่าอย่างแน่นอน รู้จัก " นิดหน่อย " เกี่ยวกับเทคโนโลยีที่แตกต่างกันมากมาย? ไม่มากนัก.

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

ดังนั้นมันจึงอยู่ในสมดุล ถ้าเขาสร้างแอพที่ยอดเยี่ยมด้วย nosql ทำไมเขาต้องรู้ถึงความแตกต่างระหว่างเอนจิ้น InnoDB และเอ็นจิ้น MyISAM?


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

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

3

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

เมื่อนั่งลงกับสิ่งหนึ่งและทำให้ดีขึ้นจริงๆ

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

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

หลักการมีความสำคัญแม้ว่า

อย่างน้อยฉันก็เข้าใจหลักการพื้นฐาน เมื่อฉันสร้างสิ่งต่าง ๆ ใน C # และ XNA ฉันเข้าใจสิ่งที่ฉันทำ - และถ้าฉันทำไม่ได้ฉันเรียนรู้เกี่ยวกับมัน

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

ปัญหาที่นี่คือ: เขารู้สิ่งที่ @ $ #! เขากำลังทำอยู่หรือเป็นโปรแกรมเมอร์ที่ไม่รู้ว่าจะเขียนโปรแกรมอย่างไร


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

ใช่แล้วนั่นเป็นปัญหา หากเขาเขียนโค้ดเขาไม่เข้าใจว่าเขาเป็นครึ่งหนึ่งของการเป็นโปรแกรมเมอร์คัดลอกและเป็นโปรแกรมเมอร์ที่ไม่มีความคิดว่าเขากำลังทำอะไรอยู่
doppelgreener

3

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

มีเส้นแบ่งระหว่างการเรียนรู้ทฤษฎี / การสร้างรากฐานและพยายามที่จะยังคงมีแรงจูงใจอยู่

อย่างน้อยเขาก็ไม่ได้ติดอยู่ในภาษาเดียว บางครั้งคุณก็เอาความดีไปพร้อมกับความเลว


3

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

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

วิธีการเกี่ยวกับการวิจารณ์ที่สร้างสรรค์กับสิ่งที่เขาทำ “ ว้าวคุณทำอะไรซักอย่างได้ดี แต่มันจะไม่ดีกว่านี้ถ้าคุณทำแบบนี้โดยเน้นการเพิ่มประสิทธิภาพและแนวทางปฏิบัติที่ดีที่สุด

ฉันคิดว่าการเปรียบเทียบระหว่างการฝึกฝนที่ดีและการฝึกฝนที่ไม่ดีสามารถกระตุ้นความคิดของเขาได้

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

ฉันคิดว่าเขากำลังทำวิธีการจากบนลงล่างในขณะที่คุณต้องการให้เขาทำวิธีการจากล่างขึ้นบน


1

ทำไมมันไม่ดี?

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

ที่จริงแล้วฉันก็ทำเหมือนกันในฐานะโปรแกรมเมอร์ และฉันขอแนะนำ เมื่อใดก็ตามที่ฉันมีโครงการใหม่พฤติกรรมของฉันจะเป็นดังนี้:

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

ฉันคิดว่ามันสมเหตุสมผลดี


1

โดยส่วนตัวถ้ามีคนให้ความสำคัญกับเทคโนโลยีเพียงตัวเดียวฉันจะบอกว่ามันควรจะเป็น C # / Java ที่ใช้กับ SQL

จากนี้ฉันเชื่อว่าคุณสามารถปรับให้เข้ากับเทคโนโลยีอื่น ๆ

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

เป็นการดีที่จะให้แพลตฟอร์มหนึ่งเป็น object-Oriented แพลตฟอร์มสำหรับมือถือหนึ่งแพลตฟอร์ม web-platform หนึ่งและจากนั้นก็มีความรู้เกี่ยวกับ SQL (หรือสภาพแวดล้อมฐานข้อมูลอื่น ๆ )

และพื้นฐานก่อนอื่นไม่เช่นนั้นเขาจะติดอยู่ในภายหลัง!


0

ไม่เลวถ้าเขาเป็นผู้เริ่มต้นในการเขียนโปรแกรม

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

ฉันมีปัญหากับตัวเองฉันต้องการรู้ทั้งหมด Java, C, C ++, C #, Phyton, ASP.NET ... ฯลฯ แต่ฉันรู้ว่าฉันไม่สามารถรู้ได้ทั้งหมดดังนั้นฉันจึงมุ่งเน้นไปที่สิ่งต่าง ๆ และมันมาก ดีกว่า

ดังนั้นเขาควรทำอย่างไร (แนะนำเขา):

  1. คิดว่าสิ่งที่คุณต้องการจะทำ
  2. สำรวจตัวเลือกทั้งหมด
  3. ค้นหาสิ่งที่เหมาะกับคุณ
  4. เรียนรู้มัน
  5. ไม่หยุดเรียน

ฉันจะไม่เห็นด้วยกับ @arnaud ถ้าคุณสำรวจและเรียนรู้สิ่งใหม่ ๆ เสมอเมื่อมีโครงการใหม่ต่อหน้าคุณ (ไม่สมบูรณ์) ใช้เวลานานเกินไปในการสำรวจและเรียนรู้สิ่งใหม่ ๆ ซ้ำแล้วซ้ำอีกและบางโครงการมีเวลา จำกัด แต่ในทางกลับกันถ้าคุณต้องการเรียนรู้สิ่งใหม่ ๆ ง่ายๆมันก็โอเค: D


0

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

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