ฉันเรียนจบสาขาวิทยาศาสตร์คอมพิวเตอร์ แต่ฉันไม่รู้สึกว่ารู้วิธีการโปรแกรม


1050

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

ฉันพยายามพัฒนาความรู้ของฉันโดยการศึกษาอัลกอริทึม แต่มันเป็นกระบวนการที่ยาวนานและเจ็บปวด ฉันพบว่าอัลกอริธึมยากและในอัตราที่ฉันเรียนรู้มาสิบปีจะผ่านไปก่อนที่ฉันจะเชี่ยวชาญเนื้อหาในหนังสือ จากสถานการณ์ปัจจุบันของฉันฉันใช้เวลาหนึ่งเดือนในการหางาน แต่ทักษะของฉัน (C, Python, Objective-C) ค่อนข้างตื้นและไม่เป็นที่พึงปรารถนาในตลาดท้องถิ่นที่ C #, Java และการพัฒนาเว็บสูงขึ้นมาก ในความต้องการ. ไม่ได้หมายความว่าโอกาส C และ Python ไม่มีอยู่ แต่พวกเขามักจะต้องการประสบการณ์มากกว่า 3 ปีที่ฉันไม่มี เกรดเฉลี่ยของฉันใช้ได้(3.0) แต่ไม่สูงพอที่จะนำไปใช้กับ บริษัท ขนาดใหญ่เช่น IBM หรือผลตอบแทนเพื่อการศึกษาระดับบัณฑิตศึกษา

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

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

คำตอบ:


533

วิธีที่ดีที่สุดในการเรียนรู้โปรแกรมคือการเขียนโปรแกรม

สองข้อเสนอแนะ:

  • พัฒนาเกม
  • พัฒนาเว็บไซต์

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

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

  • อีกอย่างหนึ่งก็คือ " อ่านหนังสือและตัวอย่าง " และอย่าละอายที่จะถาม หากคุณต้องการเรียนรู้คุณควรถาม :)

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

68
@Chris, -1 นั่นเหมือนกับการพูดว่านักกฎหมายที่ไม่ทำอาชีพให้กับคนยากจนในเวลาส่วนตัวของเขาอยู่ในอาชีพที่ไม่ถูกต้อง โปรแกรมเมอร์หลายคนที่ฉันรู้จักจะใช้เวลาในการเขียนโปรแกรมน้อยลงและมีเวลามากขึ้นในการทำสิ่งอื่น

21
จริงๆแล้วนักกฎหมายจำนวนมากเมื่อตัดฟันของพวกเขาได้รับเงินไม่ดีและใช้เวลาเพิ่มอีกหลายชั่วโมงเพื่อให้ได้มาซึ่งล่วงหน้า

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

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

388

ฉันรู้สึกเหมือนฉันติดกาวห้องสมุดที่คนอื่นเขียนเป็นส่วนใหญ่

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


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

14
ฉันเห็นด้วยมีบางกรณีที่มีขอบออก แต่ฉันจะบอกว่า 75-80% ของงานเขียนโปรแกรมออกมีชนิดที่คุณเพิ่งติดกาวห้องสมุดด้วยกัน

15
และไม่มีอะไรผิดปกติที่จะรวมเข้ากับห้องสมุด นั่นคือสิ่งที่ทำให้คุณมีประสิทธิผล!

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

53
เมื่อฉันไม่ได้ติดกาวเข้าด้วยกันฉันมักจะทำห้องสมุดที่ฉันจะติดกาวในภายหลัง

238

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

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

  2. เริ่มต้นเล็ก ๆ

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

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

  5. ช่วยเหลือคนอื่นใน SO! วิธีที่ดีที่สุดที่จะเข้าใจคือพยายามสอนให้คนอื่น

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

  7. เก็บที่มัน สิ่งต่าง ๆ อาจทำให้หงุดหงิดมากในบางครั้ง แต่ก็คุ้มค่ามากเมื่อเสร็จแล้ว หากคุณไม่เข้าใจบางสิ่งหยุดพักล้างความคิดและลองใหม่อีกครั้ง ถามเราที่! เราเป็นกลุ่มที่เต็มใจ :)

  8. ไม่หยุดเรียนรู้เทคโนโลยีใหม่ ๆ

  9. อ่านหนังสือ ฉันเข้าใจว่าการเป็นนักเรียนคุณจะต้องอ่านหนังสือเป็นจำนวนมาก นี่คือหนังสือจริงสองสามเล่มที่คุณอาจพบว่ามีประโยชน์ ... หวังว่า - Pragmatic Programmer: จาก Journeyman ถึง Master - รหัสเสร็จสมบูรณ์: คู่มือปฏิบัติของการสร้างซอฟต์แวร์


13
เพิ่ม Clean Code ให้กับรายการที่ต้องอ่านของคุณมันค่อนข้างดี

7
"การรู้ภาษาเดียวเป็นสิ่งที่ดี" -> ผิด การรู้ภาษาเดียวไม่เพียงพอ การรู้หลายภาษานั้นดีการเรียนรู้ภาษาก็ยิ่งดีขึ้น
Denilson Sá Maia

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

2
@Denilson OP ระบุว่าเธอไม่รู้สึกว่ารู้วิธีการเขียนโปรแกรม รู้ภาษาเดียวสำหรับคนที่ไม่แน่ใจเกี่ยวกับการเขียนโปรแกรมเป็นสิ่งที่ดี รายการของฉันใช้ได้กับบริบทนี้เท่านั้น

7
@Denilson คุณสามารถเรียนรู้หลายภาษาได้โดยไม่ต้องเรียนภาษาเดียวก่อนหรือไม่
PéterTörök

141

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

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


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

5
+1 ฉันเห็นด้วยอย่างสมบูรณ์ เริ่มแอพเล็ก ๆ แล้วเพิ่มฟังก์ชันการทำงานตามที่คุณต้องการ เมื่ออาคารดำเนินต่อไปและคุณเริ่มตระหนักว่าสามารถทำได้มากกว่านี้คุณสามารถเพิ่มสิ่งนั้นได้

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

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

@ Xster นั่นคือสิ่งที่ฉันหมายถึง งานการเขียนแอพพลิเคชั่น "คำถามและคำตอบ" ที่มีฟังก์ชั่นพื้นฐานเป็นจุดเริ่มต้นที่ดี
Matt Olenik

106
  1. เริ่มจากหนึ่งในภาษาที่ต้องการโดยใช้โครงการอย่างที่คุณนิโคลัสพูด
  2. อย่าวัดด้วยตัวคุณเองโดย StackOverflow ที่จะท้อคุณโดยไม่จำเป็น

81
+1 สำหรับ# 2 - อย่าเปรียบเทียบตัวเองกับความรู้ของฝูงชน
แฟน

8
StakOverflow นั้นเป็นผลิตภัณฑ์อัจฉริยะ ไม่ต้องพูดถึงมีผู้คนที่มีประสบการณ์หลายทศวรรษในผลิตภัณฑ์ที่หลากหลาย

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

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

@Georg - แรงโน้มถ่วงในเกมที่ยอดเยี่ยม KGS Smandoli

72

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

ฉันเรียนจบสาขาวิทยาศาสตร์คอมพิวเตอร์ แต่ฉันไม่รู้สึกว่ารู้วิธีการโปรแกรม

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

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

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

ฉันทำงานหนัก แต่ไม่มีความมั่นใจที่จะออกไปข้างนอกด้วยตัวเองและเขียนแอปของฉัน

บางทีคุณอาจไม่ได้ทำงานอย่างหนักกับปัญหาที่เหมาะสม มันเป็นการดีที่จะพบปัญหาที่

  • มีปลายเปิด
  • มีทางออกที่ดีมากกว่าหนึ่งข้อ
  • มีทางออกที่ไม่ดีมากมาย

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

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

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

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


ฉันต้องยอมรับ ออกไปที่นั่นและพิสูจน์ให้นายจ้างของคุณทราบว่าคุณรู้ C, Python, Objective-C และสร้างแอปพลิเคชันอิสระที่ทำอะไรบางอย่าง ผู้คนมักจะเลือกเกมเพราะขึ้นอยู่กับเกมพวกเขาสามารถมีส่วนร่วมในการออกแบบและการนำไปใช้ที่ท้าทายและมีห้องสมุดจำนวนมากให้บริการฟรี หากคุณสร้างเกมสำหรับ Windows, GDI / + หรือ DirectX ล้วนเป็น libs ฟรีสำหรับคุณที่จะใช้และอื่น ๆ
DeadMG

ส่วน "สมาชิกส่วนใหญ่ของคณะฮาร์วาร์ด (ฉันเป็นหนึ่งในแปดปี) รู้สึกเหมือนว่าพวกเขาไม่ได้อยู่ที่ฮาร์วาร์ดพวกเขาไม่รู้มากพอและต้องมีข้อผิดพลาดบางอย่างที่พวกเขาได้รับการว่าจ้าง" เตือนฉัน ของ Dunning – Kruger effect =)

2
+1 เพื่อสร้างบางสิ่ง: มันทำให้คุณแตกต่างจากฝูงชนโดยเฉพาะอย่างยิ่งหากเป็นสิ่งที่มีประโยชน์

5
@ Alex ไม่เคยผ่าน HR หากคุณโชคดีคนที่คุณรู้จักจะรู้จักคนที่คุณต้องการทำงาน
นอร์แมนแรมซีย์

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

59

มีฉากเกี่ยวกับกฎหมาย & คำสั่งเก่าซึ่ง DA บ่นว่าเธอไม่ได้เรียนรู้อะไรเกี่ยวกับการทำงานของเธอที่โรงเรียนกฎหมายว่าเธอไม่ได้เรียนรู้อะไรเกี่ยวกับโลกแห่งความจริง ศาสตราจารย์ผู้ซึ่งเธอกำลังบ่นตอบว่า "มันเป็นโรงเรียนกฎหมายไม่ใช่โรงเรียนกฎหมาย"

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

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

ค้นหาโครงการโครงการใด ๆ มีโครงการที่เกี่ยวข้องมากมายใน github.com เป็นต้น

ข่าวดีก็คือเร็วกว่าที่คุณคิดไม่มีใครจะสนใจที่คุณไปโรงเรียนสิ่งที่เกรดเฉลี่ยของคุณหรืออะไรอย่างนั้น

อยู่ที่นั่น! มันอาจเป็นเรื่องยาก แต่คุณจะดีใจกับประสบการณ์หนึ่งวัน


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

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

งานใด ๆ ที่ดูดีขึ้นในประวัติย่อแล้วช่องว่างไม่
Jim C

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

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

59

คุณดูที่ProjectEulerหรือไม่ ฉันสอน Python ด้วยการทำปัญหาในไซต์นั้น :] หากคุณกำลังเรียนรู้ Java หรือ C # คุณสามารถลองใช้งานได้ นอกจากนี้ฉันขอแนะนำให้ลองใช้การเขียนโปรแกรม GUI ด้วยเช่นกัน

แก้ไข:

นี่คือหัวข้อที่ยอดเยี่ยมเกี่ยวกับ SO สำหรับลิงก์จำนวนมากที่คุณสามารถดูได้จากการฝึกเขียนโค้ด:

https://stackoverflow.com/questions/662283/websites-like-projecteuler-net


4
ฉันเคยได้ยินเกี่ยวกับเว็บไซต์มากมาย แต่ไม่เคยมีเวลาลองแก้ไขปัญหา แต่ทุกวันนี้ดูเหมือนว่าสิ่งเดียวที่ฉันมีคือเวลาว่างดังนั้นฉันจึงอาจยุ่ง

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

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

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

6
pythonchallenge.comเป็นกุญแจสำคัญ! ในขณะที่ออยเลอร์มีปัญหาทางคณิตศาสตร์ที่จะสามารถแก้ไขได้โดยการเขียนโปรแกรม pythonchallenge ปัญหาการเขียนโปรแกรมบริสุทธิ์
Xster

48

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

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

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

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

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

เพิ่มเป็นความคิดภายหลัง:

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

สิ่งนี้เกี่ยวข้องกับ ....
พอลนาธาน

+1 จุดดีทั้งหมด ฉันพบความรู้สึกที่คล้ายกันกับเพื่อนร่วมงานเพื่อนหญิงเมื่อฉันอยู่ในโรงเรียน
Heather M

6
ไม่ใช่แค่เรื่องเพศหญิง คนที่มีความสามารถอยู่แล้วหรือมีความสามารถที่จะเห็นว่าพวกเขาต้องการที่จะเติบโต (Yay you!) มีแนวโน้มที่จะตั้งคำถามกับความสามารถของตัวเองมากกว่าคนที่ไม่เริ่มสงสัยความไร้ความสามารถของตัวเอง มีชื่อสำหรับปรากฏการณ์นี้ เอฟเฟ็กต์ Dunning – Kruger ประสบการณ์ที่โรงเรียนของคุณประสบความสำเร็จอย่างยิ่งใหญ่หากคุณออกจากโรงเรียนเพื่อสานต่อการเรียนรู้ตลอดชีวิตไม่ว่าคุณจะอยู่ที่ไหนก็ตามฉันขอให้คุณโชคดีที่สุด !!!
Warren P

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

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

39

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

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

  • ค้นหาผู้ทำงานร่วมกัน การเขียนโค้ดเพียงอย่างเดียวนั้นยากดังนั้นสิ่งอื่นที่จะช่วยได้อย่างมากก็คือถ้าคุณพบเพื่อนที่จะร่วมมือกับคุณในโครงการนี้ สิ่งนี้ทำให้สนุกมากขึ้นและทำให้คุณมีแรงบันดาลใจ ในบล็อกโพสต์ล่าสุดของเขา Jeff Attwood พูดถึงสิ่งที่แน่นอนนี้ในประสบการณ์ของเขาในการสร้าง SO http://www.codinghorror.com/blog/2010/05/on-working-remotely.html

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

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

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


ถ้าเป็นไปได้เลือกสิ่งที่คนอื่นจะใช้ ... นั่นเป็นวิธีที่ดีที่สุดในการรับข้อเสนอแนะ
balalakshmi

34

ความคิดเห็นเล็กน้อยจากมุมมองของคนที่เป็นนักพัฒนามานานกว่า 20 ปี:

ฉันเห็นเว็บไซต์เช่น Stackoverflow และเครื่องมือค้นหาอย่าง Google และไม่รู้ว่าฉันจะเริ่มเขียนอะไรเช่นนี้ได้ที่ไหน

พวกเขาเป็นผลิตภัณฑ์ของทีมส่วนใหญ่สร้างในห้องสมุดและโครงสร้างพื้นฐาน (.net, java, asp.net, ฯลฯ ) ที่ผลิตโดยทีมอื่น ๆ และได้รับการสนับสนุนจากประสบการณ์และทรัพยากร ที่คุณเป็นรายบุคคลไม่ทราบว่าจะเริ่มทำสิ่งที่คล้ายกันนั้นเป็นที่เข้าใจได้อย่างสมบูรณ์ ไม่ต้องกังวลเกี่ยวกับเรื่องนี้

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

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

โดยทั่วไปฉันเรียนจบสาขาวิทยาศาสตร์คอมพิวเตอร์ แต่ฉันไม่รู้สึกว่าฉันเรียนรู้วิธีการเขียนโปรแกรม

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

เริ่มทำงานในโครงการที่คุณพูดถึง แต่เช่นเดียวกับการเพิ่มความรู้การเขียนโปรแกรมของคุณลองใช้มันเป็นวิธีที่จะได้รับประสบการณ์ของทักษะที่เกี่ยวข้องเช่นการควบคุมเวอร์ชันการทดสอบหน่วยและการรวมและแม้แต่การเขียนเอกสารง่าย ๆ ทักษะเหล่านี้เป็นสิ่งที่แยกความแตกต่างของนักพัฒนาจากโปรแกรมเมอร์และเป็นตัวอย่างที่ดีสำหรับผู้ที่คาดหวัง มีเครื่องมือฟรีมากมายให้เลือกใช้ (Visual Express, GitHub, Nunit, Google Apps)

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

โชคดี!


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

ฉันยอมรับว่าผู้พัฒนาที่ดีควรทราบว่าโครงสร้างข้อมูลและอัลกอริทึมพื้นฐานเหล่านี้ทำงานอย่างไรและสามารถใช้งานได้ ฉันต้องม้วนรายการลิงก์ของฉันเองสองสามครั้ง แต่ไม่เคย (โชคดีสำหรับฉัน) ต้องเขียน quicksort ประเด็นของฉันคือว่า OP ไม่ควรกังวลมากเกินไปเกี่ยวกับอัลกอริทึมที่เธออาจศึกษาในระดับปริญญาเพราะหลายภาษา / แพลตฟอร์ม (.net, Java, C ++ ฯลฯ ) อาจรวมถึงการใช้งานที่เขียนไว้ล่วงหน้า

31

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

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

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


27

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

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

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

ฉันขอขอบคุณความจริงที่ว่าบางส่วนขององศา comp.sci ดั้งเดิมมากกว่าบางแง่มุมของวงจรการพัฒนาซอฟต์แวร์คุณอาจจะไม่ได้ยินเสียงพูดเกี่ยวกับ TDD การทดสอบหน่วย แต่ขอพูดอย่างไร้ความปราณี: มันไม่ใช่วิทยาศาสตร์จรวดหรอกใช่ไหม? คุณจะไม่ได้ยินเกี่ยวกับ SCRUM หรือการวิเคราะห์จุดฟังก์ชั่น การสอนหลักสูตรที่มีรายละเอียดเกี่ยวกับปัญหาพื้นฐานดังกล่าวนั้นค่อนข้างซ้ำซ้อนแม้ว่าในปัจจุบันหลาย ๆ องศาจะมีหลักสูตรเกี่ยวกับการออกแบบระบบซึ่งพวกเขาจะทำให้นักเรียนเข้าใจว่าสิ่งเหล่านี้ทำงานอย่างไร

จริงอยู่ที่คุณอาจไม่ได้เป็นผู้เชี่ยวชาญใน. NET, PHP หรือมาตรฐานอุตสาหกรรมอื่น ๆ ในปัจจุบัน แต่ควรจะไม่เกี่ยวข้อง ในเวลา 5-10 ปีภาษาของตัวเลือกจะเปลี่ยนไป เพียงเพราะคุณเรียนรู้ที่จะขับในเปอโยต์ไม่ได้หมายความว่าคุณไม่ควรขับ Fiat และควรใช้ภาษาการเขียนโปรแกรมเช่นเดียวกัน ควรฝึกสักสองสามเดือนกับหนังสือดี ๆ สองสามเล่มเพื่อฝึกฝนภาษาต่าง ๆ

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

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

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


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

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

1
ฉันได้พบ CS จบหลายสิบคน - ในขณะที่สัมภาษณ์พวกเขา - นั่นไม่สามารถอธิบายอัลกอริธึมการเรียงลำดับใด ๆ ได้แม้ว่าจะเหลือเวลาคิดนานห้านาทีก็ตาม บางทีมาตรฐานของมหาวิทยาลัยที่นี่ในอเมริกาอาจไม่ได้ถูกนำไปใช้อย่างทั่วถึง @Chris S ชี้ให้เห็นว่ามันง่ายพอที่จะเลื่อนระดับโดยไม่ต้องเรียนรู้อะไรมากมาย
Dean J

คุณกำลังผสมสองสิ่งที่นี่ ฉันพบว่าการทำปริญญามีประโยชน์อย่างไม่น่าเชื่อ - ฉันรู้ว่ามันทำให้ฉันเป็น coder ที่ดีขึ้นมาก แต่ฉันไม่สามารถทำงานออกมาได้อย่างแน่นอนว่าทำไม (สันนิษฐานว่าเป็นการรวมกันของความรู้เล็ก ๆ น้อย ๆ ที่กล่าวว่ามีบัณฑิตจำนวนมากอยู่ที่นั่น (จากมหาวิทยาลัยที่มีชื่อเสียงพอสมควร) ซึ่งไม่สามารถแม้แต่จะคิดวิธีการใช้ (9,5) ECC ด้วยตารางการค้นหาขนาด 512 ไบต์ ผู้เขียนที่ดีคือคนที่ก้าวข้าม“ ฉันไม่เข้าใจสิ่งนี้ แต่ฉันสามารถทำคำถามสอบได้”

1
ปัญหาที่น่าสนใจ แต่ทำไมคุณถึงต้องทำการทดสอบ ECC ปกติ) ยกเว้นฮาร์ดแวร์ แต่แน่นอนว่ามันเป็นตัวอย่างที่ดีของสิ่งที่คุณไม่ชอบ / ไม่สามารถทำได้ เรียนรู้ที่ compSci

24

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

ทำงานผ่านการฝึกตามที่คนอื่นแนะนำ - ที่Project Eulerและที่อื่น ๆ

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

ติดกับมัน; คุณจะสบายดี


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

@Ian ฉันยอมรับการแก้ไขของคุณอย่างนอบน้อม ;-) อย่างจริงจัง - มันเป็นจุดที่ดีและเป็นบทความที่ดี ฉันไม่ชอบข้อสรุปที่ผู้หญิงควรจะเป็นเหมือนผู้ชาย แต่มันก็ยากที่จะเถียงกับการปฏิบัติจริงของมัน
Carl Manaster

@Carl - เร็วเกินไปของข้อสรุป :-) การจ้างพนักงาน / ผู้จัดการกินความเย่อหยิ่ง / การโปรโมตตัวเองขึ้นมา โดยเฉพาะอย่างยิ่งเมื่อประเมินผู้สมัครสำหรับตำแหน่งทางเทคนิคที่พวกเขาไม่เริ่มเข้าใจข้อกำหนดของ ฉันเคยเห็นผู้ชายที่มีคุณวุฒิจำนวนมากในเรือลำเดียวกันกับผู้หญิงที่น่าสงสารเหล่านี้เมื่อคน ๆ หนึ่งที่มีความมั่นใจเกินกว่าจะปรากฏตัวและขโมยรายการ ฉันไม่คิดว่าเราจะสามารถพิจารณาว่ามันเป็นชัยชนะที่จะกระตุ้นให้ผู้หญิงมีความมั่นใจมากขึ้น สถานที่ที่เราสามารถทำสิ่งที่ดีที่สุดได้คือ IMHO โดยการฝึกอบรมบุคคล HR เพื่อการตัดสินใจที่ดีขึ้นหรือโดยการแก้ไขกระบวนการ

23

การสำเร็จการศึกษาระดับ comp compi นั้นไม่ได้ทำให้คุณเป็นโปรแกรมเมอร์ที่ยอดเยี่ยมกว่าการสำเร็จการศึกษาจากโปรแกรมเพลงที่ทำให้คุณเป็นนักดนตรีที่ยอดเยี่ยม

ไม่มีสิ่งใดทดแทนการฝึกฝนการฝึกฝนการฝึกฝนและประสบการณ์ โปรแกรม 8 ชั่วโมงต่อวันและใน 5 ปีคุณอาจเข้าใจว่าคุณขาดในตอนนี้


6
นั่นคือ catch-22 ใช่ไหม? โปรแกรมเต็มเวลาเพื่อให้ได้งานที่คุณต้องการ
Jim Schubert

16
ไม่มีใน 5 ปีคุณจะรู้ว่าคุณรู้อะไร :)
Earlz

1
@Earlz และในที่สุดก็ไม่มีอะไรที่คุณรู้ว่าล้าสมัยไปแล้ว
Dan Bryant

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

1
@Earlz เท่าไหร่เซน :)
Tullo_x86

23

เป็นคำถามที่ตรงไปตรงมาและคำตอบที่ดี - ฉันจะพูดในเวลาสั้น ๆ :)

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

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

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

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

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

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

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

เฮ้และเมื่อประเมินเริ่มต้นด้วยแบ่งงานของคุณเป็นบิตรวมเวลาแล้วเพิ่มเป็นสองเท่า (เรียกว่าหารหารพิชิตเอาชนะบ้าน;)

โชคดี! ฉันออกจากโรงเรียนโดยคาดหวังว่าจะเป็นอาจารย์สอนสกีและจบเป็นผู้นำการสอน ฉันแน่ใจว่าคุณจะทำได้ดีในสิ่งที่คุณทำด้วย


10
ประโยคแรกของคุณบอกว่าคุณจะพูดสั้น ๆ ... แต่คุณมีคำตอบที่ยาวที่สุดที่นี่ ;)

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

เพิ่งพิมพ์สิ่งนี้และติดกับผนัง
คำถามคืออะไร

22

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

อย่างไรก็ตามดูเหมือนว่าคุณกำลังทำสิ่งที่ถูกต้องมากที่สุด:

  • โปรแกรมนอกเวลาทำงาน
  • อ่านหนังสือเกี่ยวกับการพัฒนาซอฟต์แวร์ (Code Complete, รูปแบบการออกแบบ, Mythical Man-Month, ฯลฯ )
  • การเรียนรู้เทคโนโลยีใหม่ ๆ อย่างต่อเนื่อง - โรงเรียนควรสอนวิธีการเรียนรู้ภาษาไม่ใช่ภาษาเอง เรียนรู้กรอบใหม่ IDE ของ apis ห้องสมุดเครื่องมือสร้าง ฯลฯ
  • เที่ยวชมในไซต์อย่าง SO และที่นี่ การมีปฏิสัมพันธ์กับผู้คนที่มีประสบการณ์เป็นประจำเป็นหนึ่งในทางลัดกึ่งทางลัดสู่ภูมิปัญญา

1
จริงๆแล้ว Mythical Man-Month นั้นพูดเกินจริงไปแล้วใช่ไหม? (แต่ฉันชอบหนังสือประเภท "* in a nutshell")
Camilo Martin

2
@Camilo ไม่เห็นด้วย Mythical Man Month เป็นเรื่องของวิศวกรรมซอฟต์แวร์ในขณะที่หนังสือสั้นเป็นเรื่องเกี่ยวกับเทคโนโลยีเดียว ในที่สุดคุณจะต้องมีความเข้าใจในประเด็นของ Peopleware กับการพัฒนาซอฟต์แวร์ MMM เป็นหนึ่งในการอ่านที่ครอบคลุมหัวข้อ
Brian Wigginton

21

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

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

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

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

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


2
+1 สำหรับการกล่าวถึงความสำคัญของทักษะการทำงานร่วมกัน / การสื่อสาร บัณฑิตส่วนใหญ่ขาดพวกเขา
Denis Otkidach

1
ฉันไม่เห็นด้วยกับความเชี่ยวชาญทุกเทคโนโลยีจะตายสักวันดังนั้นถ้าคุณชำนาญมากเกินไปคุณจะจบลงโดยไม่ต้องทำงาน ... ตกลงเทคโนโลยีบางอย่าง (=> COBOL) ตายช้ามากทำให้คุณมีเวลาเพียงพอในการใช้เทคโนโลยีใหม่ แต่ก็ยังมีความเสี่ยง

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

21

ตกลงเห็นข่าวแฮ็กเกอร์นี้และฉันก็เหมือน "HOLY CRAP นั่นแหละฉัน !!"

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

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

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

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

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


1
ผมบอกว่า บริษัท ขนาดใหญ่เช่น IBM มีมากขึ้นในการเข้าถึงกว่าสถานที่อื่น ๆ อีกมากมาย - พวกเขามีคนพอมีที่พวกเขาสามารถขึ้นรถไฟสระว่ายน้ำของพวกเขามีความสามารถพิเศษแตกต่างจากสถานที่ที่มีขนาดเล็กที่คุณต้องการจะคาดว่าจะตีพื้นทำงาน และมีการฝึกงานอยู่เสมอ - มันอาจจะช้าไปหน่อยเมื่อจบการศึกษาไปแล้ว แต่หน่วยงานภาครัฐหลายแห่งเข้ามาฝึกงานภาคฤดูร้อน ... ดังนั้นคุณจะได้รับ 'NASA' หรือคล้ายกับประวัติย่อ

20

ว้าวคำตอบอะไรมากมายก่อนหน้านี้

วิธีการตอบสนองที่แตกต่างอย่างสิ้นเชิง ...

ให้ปรับแก้ปัญหาของคุณในแง่ของการเป็นมนุษย์

"ฉันเรียนจบชั้นมรรตัยแล้วฉันเพิ่งจะเกิดแม่ของฉันกำลังจะมาถึงและฉันจะส่งพรุ่งนี้เช้าวันพรุ่งนี้ แต่เมื่อฉันมองนักกีฬาอย่างUsain Boltฉันคิดว่า" ฉันจะวิ่งได้อย่างไร ได้อย่างรวดเร็ว?"

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

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

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

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

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

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

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

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

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

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

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

อย่างจริงจังคิดเกี่ยวกับมัน ทางออกที่ไม่เจ๋งเกินไปอาจเป็นคำตอบที่ถูกต้อง


-1: คุณช่วยทำให้เรื่องนี้แน่นขึ้นและจดจ่อกับคำถามมากขึ้น
Jim G.

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

คำตอบที่ดีสตีเฟ่น มาจากมุมมองที่แตกต่างจากคำตอบอื่น ๆ ที่นี่

+1, หวังว่าฉันจะเพิ่ม 1,000 คะแนนเพื่อให้เป็นคำตอบที่ดีที่สุด สัมผัสฉัน!

18

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


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

17

ปฏิบัติตามกฎ 10,000 ชั่วโมง

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

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


1
และคุณต้องแน่ใจว่าคุณไม่ได้ทำในชั่วโมงเดียวกันซ้ำแล้วซ้ำอีก! ผลักดันตัวเองเพื่อให้การเรียนรู้
Froome

+1 สำหรับกฎ 10k ได้ยินครั้งแรกของมัน แต่ฟังดูดีทางการตลาดและเป็นจริงมาก

14

แค่สองสามความคิดถ้าฉันอาจ

เวนดี้บอกว่าเราสามารถจบการศึกษาระดับปริญญา CS ได้ แต่ก็ยังมีแนวคิดเล็กน้อยเกี่ยวกับการฝึกเขียนโปรแกรม มันไม่น่าเป็นห่วงอย่างมากแม้แต่น่ากลัวใช่ไหม มันเป็นเรื่องที่รบกวนการฉ้อโกงที่จมอยู่ใต้น้ำแผนกภาษาอังกฤษในยุค 70: วรรณกรรมไม่ได้เป็นคอลเลกชันของความคิดที่หนึ่งสามารถเข้าใจและบูรณาการ แต่พวงของ 'ตำรา' ว่านักเรียนต้องนามธรรมและ 'แยกแยะ' ( http: / /www.answers.com/topic/deconstruction ) อย่างมีความสุขกระแสลมที่เหม็นนั้นกำลังลดน้อยลงบางทีอาจเป็นเพราะผู้สอนที่เช็ดออกไปในคลื่นที่เต็มไปด้วยคลื่นกำลังออกไป

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

ดังนั้นเมื่อเช้านี้เมื่อได้ยินเสียงร้องไห้ของเวนดี้ฉันคิดว่าแน่นอนว่า MIT จากทุกแห่งไม่สามารถเจือจางเครื่องเซ่นและหลอกนักเรียนด้วย (ในบริบทของการฝึกเขียนโปรแกรม) ไร้สาระไร้ประโยชน์ แต่เมื่อฉันดูหลักสูตร EE / CS ของ MIT ฉันเห็นว่าเป็นเพียงสิ่งที่เกิดขึ้น:

http://student.mit.edu/catalog/m6a.html

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

จากนั้นฉันก็ได้พบกับการบริจาคให้กับ Coding Horror ( http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html ) และคิดว่ามันเป็นสิ่งที่ดีมาก ของการสนทนานี้:

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

"1. เชิงวัตถุซึ่งทำให้นักเรียนมีความเข้าใจน้อยหรือไม่มีเลยเกี่ยวกับวิธีการดำเนินการและ

"2. คลาส Weed-out ชั้นเรียนประกอบด้วยคำอธิบายของปัญหาประเภทต่างๆและคณิตศาสตร์ที่อยู่เบื้องหลังพวกเขามากกว่า ayntax และโครงสร้างซึ่งผู้คนถูกบอกให้อ่านหนังสือ

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

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

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

"2. รับคลาสแกนกลางเกี่ยวกับทฤษฎีระบบปฏิบัติการหลังจากถูก deluged ด้วย Java และพบว่าอยู่ใน C (แน่นอน) โดยไม่มีแม้แต่คลาส C หนึ่งตัวในมหาวิทยาลัย?

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

เพียงสองสามจุดข้อมูล แต่อย่างที่คนอื่นพูด

- พีท


ฉันเหนื่อยกับมุมมองที่น่าเบื่อนี้
Andres Jaan Tack

Python เป็นหนึ่งในภาษาสอนที่ดีที่สุดที่มีอยู่
Casebash

@Icplben, Pete หรือ Jamaal จาก codinghorror.com?
ซากิ

14

ประการแรกแขวนที่นั่น!

ประการที่สองนี่คือสิ่งที่ช่วยฉัน:

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

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


14

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


1
น่าเสียดายจริง ๆ ปริญญาตรีนั้นไร้ประโยชน์ยกเว้นเป็นตราสัญลักษณ์ที่คุณสามารถจัดการให้สำเร็จ ที่กล่าวว่าหลักสูตร comp sci นั้นน่ากลัวในระดับปริญญาตรี หลักสูตรของ CM นั้นต้องการคณิตศาสตร์ 5 วิชา แต่เป็นการรวมภาษาทางการออโตมาตาและการคำนวณให้เป็นหนึ่งวิชาและนั่นคือวิชาเลือก
MIA

4
ยอมรับ 100% ทำไมคุณถึงเป็นผู้เชี่ยวชาญในบางสิ่งที่คุณเพิ่งผ่านการรับรอง ?
Alex Feinman

13

ฉันพบไซต์ที่ชั่วร้ายนี้ในวันอื่น ๆhttp://99designs.com/ ภายใต้การออกแบบเว็บไซต์หรือการออกแบบอื่น ๆ คุณอาจพบโครงการที่เกี่ยวข้องกับซอฟต์แวร์

นี่จะเป็นวิธีที่ดีในการสร้างรหัสพัฒนาทักษะใหม่พบปะผู้คนใหม่ที่อาจเป็นนายจ้างที่มีศักยภาพและคุณอาจทำเงินได้ด้วยซ้ำ

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


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

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

13

ไม่ต้องกังวล กรุงโรมไม่ได้สร้างในวันเดียว

For each P in PeopleYouKnow
Try
  ask/call P for a Job apply for job;
Catch Denial As Exception
  don be worry;
  //you'll get a job later
End Try

Finally
 If you haven't found a job yet
  For each programmingJobAd in internet

 Try
    apply for job;
    Follow up;
  Catch Denial As Exception
   don be worry;
  //you'll get a job later
 End Try
end
//Keep trying.
//find a bug from this code.

แก้ไข: #! diff A B

3c3
<   ask/call P for a Job apply for job;
---
>   ask/call P for a Job job; if job is available apply for job;
9a10
>  //(sic)
14c15
<     apply for job;
---
>     apply for programmingJobAd;
20c21
< end
---
> End

12

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

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

อย่าพยายามเขียนโค้ดเว็บแอป (เช่น google หรือ stack overflow) เว้นแต่คุณต้องการลงทุนประมาณ 6 เดือน มันเป็นช่วงการเรียนรู้ที่ยิ่งใหญ่ คุณต้องเรียนรู้การจัดการ VCS, เรียกใช้เว็บเซิร์ฟเวอร์, HTML JS และ CSS coding, ระบบฐานข้อมูลและภาษาของเว็บแอป มันโหดร้าย เทคโนโลยีเหล่านี้ส่วนใหญ่ไม่สามารถถ่ายโอนได้เว้นแต่คุณต้องการทำงานบนเว็บ

หากคุณต้องการทำเว็บแอพคุณอาจมองไปที่การติดตั้งแอพพลิเคชั่นเว็บง่าย ๆ (เช่นแอพพลิเคชั่นค้นหาตามประเทศ django บน IP - http://www.coulix.net/blog/2006/aug/17/ip- country-flag-django-comments / ) คุณสามารถเลือกซื้อรหัสส่วนลด Dreamhost ราคา $ 90 (เพื่อให้คุณสามารถทำงานบนเว็บเซิร์ฟเวอร์จริง) และลองตั้งค่าต่างๆ ไม่ต้องกังวลมากเกินไปเกี่ยวกับการรักษาความปลอดภัยหรือประสิทธิภาพ ( แต่ไม่ใช้ SSH) - เป็นเพียงโครงการการเรียนรู้

หากคุณต้องการทำสิ่งต่าง ๆ บนเดสก์ท็อปคุณสามารถดู pygame ได้


ฉันคิดว่า google เวอร์ชันแรกทำในเวลาอันสั้นใช่ไหม เหมือนหน้าร้อนหรืออะไรแบบนั้น
เอิร์ลซ์

Apache ที่ทำงานภายใต้ Linux บนเดสก์ท็อปของคุณคือ "เว็บเซิร์ฟเวอร์จริง" ไม่จำเป็นต้องใช้เงิน คุณคิดว่า บริษัท โฮสติ้งกำลังทำงานอยู่
TMN

@TMN โดยเว็บเซิร์ฟเวอร์ฉันหมายถึงฮาร์ดแวร์การผลิตและซอฟต์แวร์สแต็ค ฉันรู้ว่า DH ใช้ Apache และ MySQL แต่การพัฒนาบนเซิร์ฟเวอร์การผลิตมีข้อดี (ทุกอย่างถูกตั้งค่ารวมถึงสิ่งที่ยุ่งยากเช่นอีเมลและพวกเขาทำการลงทะเบียนโดเมนสำหรับคุณ) และข้อเสีย (เช่นไม่มีรากและคุณต้องได้รับ ใช้เพื่อการพัฒนาระยะไกล) การใช้เซิร์ฟเวอร์ที่ใช้งานจริงช่วยให้คุณดำดิ่งลงสู่เว็บไซต์

11

คุณสามารถอ่านทั้งหมดเกี่ยวกับการเขียนโปรแกรม แต่คุณจะไม่เรียนรู้วิธีการตั้งโปรแกรมจริงๆจนกว่าคุณจะดี .. เริ่มต้นการเขียนโปรแกรม!

ฉันอยากจะแนะนำให้คุณเริ่มโครงการส่วนตัว คุณต้องการสร้างอะไร เกม? บล็อก? มันไม่สำคัญ ทำอะไรสักอย่าง!

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

ฉันจะไม่เสียเวลากับการอ่านหนังสือมากมายเลย ฉันจะบอกว่าส่วนใหญ่คุณควรอ่านประมาณ 20% ของเวลาและเขียนรหัสอีก 80% (แน่นอนตามเวลาฉันหมายถึงเวลาของคุณที่กำหนดไว้สำหรับการเขียนโปรแกรมสิ่งต่าง ๆ ที่เกี่ยวข้อง)


9

ทีนี้นี่คือสองเซนต์ของฉัน ... ควบคู่ไปกับคำพูดจากแหล่งอื่น ๆ

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

- Dan Kegel ผ่าน Jeff Atwood

http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html

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

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

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

ฉันขอแนะนำให้คุณเริ่มต้นด้วยการสร้างแอปพลิเคชั่นบางอย่างด้วยวัตถุประสงค์เฉพาะลองคิดดูว่าคุณสามารถทำอะไรได้บ้างและอะไรที่ท้าทายให้คุณก้าวไปข้างหน้าจากนั้นไปยังสถานที่ที่คุณสามารถรับงานอิสระได้ อย่าคาดหวังว่าจะได้รับเงินจำนวนมากสำหรับงานอิสระที่คุณรับบนเว็บคุณกำลังมองหาที่จะเพิ่มลงในประวัติย่อของคุณไม่ใช่กระเป๋าเงินของคุณ เมื่อคุณมีไอเท็ม 3-5 รายการที่คุณสามารถชี้และพูดว่า "ฉันสร้างมันขึ้นมา" หรือ "ฉันออกแบบฟังก์ชันการทำงานนั้นให้กับพวกเขา" จากนั้นระบุรายการทั้งหมดนั้นออกมาและค้นหา บริษัท จัดหางาน (ทุกที่ .. . headhunters) และทำงานร่วมกับคนไม่กี่คนเพื่อปรับปรุงประวัติย่อของคุณดังนั้นมันจึงเน้นการศึกษาและความมั่งคั่งของคุณในการหางานทำและลดแง่มุมของการขาดประสบการณ์

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

ขอให้คุณโชคดี

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