แสดงบทความที่มีป้ายกำกับ tip แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ tip แสดงบทความทั้งหมด

16 ตุลาคม, 2557

4 สิ่งที่ควรทำก่อนเรียนจบปี 4

เวลาที่ผ่านไปแล้ว ไม่สามารถย้อนกลับมาได้อีกนะ ... ชีวิตนักศึกษามหา'ลัย (ป.ตรีแบบปกติ ไม่นับป.โท) ก็มีได้แค่ครั้งเดียวนะ ถ้าน้องๆ ปล่อยมันผ่านไปอาจจะเสียใจที่หลังก็ได้ว่า "ตอนนั้นทำไมไม่ทำนะ"

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

1.วางแผนอนาคต (นิดหน่อยก็ยังดี)

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

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

2. สนความรู้+ประสบการณ์ดีกว่า .. เกรดไม่ใช่ทุกอย่าง (แต่ใช่ว่ามันไม่สำคัญ)

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

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

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

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

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

3. ลองทำงานจริงให้ได้มากที่สุด

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

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

4. ใช้สถานะ "นักศึกษา" ให้คุ้มที่สุด

บริษัทมากมายที่ชอบรับนักศึกษาไปฝึกงาน (ใช้งาน) แต่ถ้าน้องๆ จบมาแล้วจะไปเอาสถานะนักศึกษาจากที่ไหนอีกล่ะ ตอนนั้นมันไม่ใช่การฝึกงานแล้ว มันเป็นการ "ทดลองงาน" แล้วรู้มั้ยว่าการฝึกงานกับการสมัครงานแล้วเขาลองงานเรา 3 เดือน (ที่เขาเรียกกันว่า จะผ่านหรือไม่ผ่านโปรฯ น่ะ) มันต่างกันเยอะนะ

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

ดังนั้นถ้ายังอยากเรียนรู้อะไรอยู่ พยายามทำตัวเป็นนักศึกษาไว้ก่อนนะ โอกาสก็มีช่วงปี3-4 และหลังจบปี4 (ช่วงที่เป็นรอยต่อ ยังพอจะใช้สถานะนักศึกษาได้อยู่)


---
ตอนนี้คิดได้เท่านี้ เอาไปแค่ 4 ข้อก่อนละกัน

สรุป...

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

จาก ... คนที่ล่วงหน้าไปก่อนแล้ว ^ ^

25 ตุลาคม, 2554

ข้อคิดดีๆ เวลาคุณจะเขียนโปรแกรม

  1. เขียนโปรแกรมครั้งหนึ่ง จงเขียนให้เล็กที่สุดเท่าที่จะเป็นไปได้
  2. จงโปรแกรมโดยคิดว่าจะมีคนมาเขียนต่อจากเรา เพราะอย่างน้อยที่สุดหลังจากเรามาเปิดดูมันอีก1ปีต่อมาเราจะได้อ่านมันรู้เรื่องอยู่
  3. clearance (ความชัดเจน) กับ extensibility (การขยายต่อได้)...เราเลือกได้อย่างเดียว ต้องตัดสินใจดีๆ 
  4. อย่าไว้ใจ output จากfunctionอื่น แม้functionนั้นเราเป็นคนเขียนเองก็ตาม เพราะมีโอกาสที่เราจะทดสอบfuncที่เราเขียนขึ้นมาไม่ดีพอ
  5. ถ้าโปรแกรมเมอร์เขียนเองแล้วยังไม่เข้าใจว่าตัวเองทำอะไรอยู่ ก็อย่าไปขอให้คนอื่นช่วยเลย ขอไปเขาก็ไม่เข้าใจอยู่ดี ทางที่ดีลองพักสักครู่หนึ่ง กลับไปทำความเข้าใจมัน ถ้ายังไม่ได้อีก...ก็ตั้งสติแล้วเริ่มเขียนใหม่ดีกว่า อย่าเสียเวลากับอะไรที่แก้ไขไม่ได้แล้วเลย
  6. หาข้อมูลสามวันก่อนลงมือทำหนึ่งวัน หรือจะลงมือทำเลยแล้วแก้บั๊กสามวันก็เลือกเอา ข้อมูลในที่นี้รวมไปถึงการขั้นตอนการออกแบบตัวโปรแกรม flowchart data structure ที่จะใช้อะไรพวกนั้นทั้งหมดเลยนะ
  7. เตรียม tools framework program-environment ก่อนลงมือทำงาน ไม่เช่นนั้นคุณจะหงุดหงิดเวลาจะทำอะไรแล้วไม่ได้อย่างใจเมื่อเคย
  8. อย่าโทษหรือโยนความผิดให้functionหรือclassอื่นก่อน โดยเฉพาะเมื่อพวกมันมาจาก OS และ compiler
  9. พยายามทำตามกฎอย่างเคร่งครัด แต่ถ้าทำไม่ได้ก็เลี่ยงให้น้อยที่สุดพร้อมกับประกาศไว้ให้เด่นที่สุด
  10. High cohesion, Loose coupling ตามหลักของSoftware Engineering-โมดูลและฟังก์ชั่นต้องยึดเกาะให้แน่นที่สุดในตัวของมันเอง และผูกกับโมดูลอื่นให้น้อยที่สุด
  11. เก็บ หรือวางสิ่งที่คล้ายๆ หรือเหมือนกันไว้ให้ใกล้กันที่สุด แม้ในแง่ของการเขียนโปรแกรมที่ลำดับไม่สำคัญต่อการรันผลก็ตาม เพราะคนเขียนนั่นแหละที่จะงงเมื่อเขียนไปเป็นพันๆ บรรทัดแล้ว ไม่ใช่คอมหรอกที่จะงง
  12. พิสูจน์ก่อน...แล้วค่อยเชื่อ
  13. กระจายความรู้ออกไปให้มากที่สุดเพราะนั่นคือการทำ Unit Test ระดับล่างที่สุด
  14. อย่าเอาทุกอย่างใส่ลงไปในUI เพราะUIคือส่วนที่ทำ Unit Test ได้ยากมาก
  15. โปรเจคทั้งโปรเจคควรไปในทางเดียวกัน (ต้องมีConsistency)
  16. ถ้ามีสิ่งดีๆ ให้ใช้อยู่แล้วก็จงใช้มัน แต่ถ้าจำเป็นต้องเขียนเอง...ก่อนจะเขียนก็ควรศึกษาความผิดพลาดในอดีตของคนอื่นก่อน
  17. อย่ามั่นใจว่า code ชุดนี้ใช้ได้ดีจนกว่าจะTestเพียงพอ (ขนาดTestพอแล้วยังเจอบั๊กได้เลย)
  18. มีการ edit version ของโปรแกรม ให้รันUnit Testใหม่ทุกครั้ง
  19. แต่ก็อย่าเชื่อ Unit Test ให้มากนัก บางครั้งมันก็ผิดได้
  20. ถ้าคุณเขียน code อะไรซ้ำกันมากกว่า1ครั้ง มันก็เพียงพอแล้วล่ะที่จะหาวิธีลดรูปหรือแยกชุด code นั้นออกมาเขียนเป็น function
  21. อย่าเขียนโปรแกรมไปโดยคิดว่าจะoptimizeมันไปด้วย เขียนให้มันใช้งานได้ก่อนแล้วค่อยลงมือทำ แล้วถ้าไม่จำเป็นก็อย่าไปoptimizeมันเลย
  22. ประสิทธิภาพของโปรแกรม แปรผกผันกับความเข้าใจง่าย...ถ้าโปรแกรมทำงานได้ดีมากเชื่อเถอะว่า code จะเริ่มอ่านยากแล้ว
  23. เวลาเขียน จงใช้ pattern ที่ชาวบ้านเขาใช้กัน เวลาเอาไปคุยกับคนอื่นจะได้คุยรู้เรื่อง
  24. MutiThreading เป็นการเพิ่มประสิทธิภาพ แต่มันจะมาพร้อมกับ Concerency, Deadlock, IsolationLevel, Hard to debug, Undeterministic Errors.และอื่นๆ อีกมากมาย
  25. อย่าไปเพิ่มtechnologyโดยไม่จำเป็นให้โปรแกรมเรา เพราะคนเป็นโปรแกรมเมอร์จะวุ่นวายมากขึ้น
  26. โปรเจคทำอะไรอยู่คิดซะว่าอาจจะมีความเปลี่ยนแปลงได้ตลอดเวลา (เช่น requiementเปลี่ยน)
  27. อย่าย่อชื่อตัวแปรโดยไม่จำเป็น มันจะทำให้คุณงงในตัวเอง ตอนนี้โปรแกรมIDEมันฉลายขึ้นเยอะแล้ว แค่พิมพ์ตัวแรกมันก็ขึ้นhintมาให้เลือกแล้ว
  28. ถ้าโปรเจคใหญ่มากอย่าใช้ i, j, x, y, result, name, param เป็นชื่อตัวแปรยกเว้นคุณจะมีหลักการเขียนที่ตัวเองจำมันได้แน่นอนว่า พวกมันเก็บค่าอะไร
  29. แบ่งแยกดีดี ระหว่าง Exception message ในแต่ละเลเยอร์ ว่าต้องการบอกผู้ใช้ หรือ บอกโปรแกรมเมอร์
  30. ที่ระดับ UI ต้องมี catch all exception เสมอเพื่อกรอง Exception ที่ลืมดักจับ
  31. เวลาทำงานกับdatabase ระวังcolumnที่เป็นnullให้ดี เรื่องนี้ทำโปรแกรมเมอร์เจ็บมากหลายต่อหลายคนแล้วเพราะค่าnullมันconvertไม่ได้
  32. อย่าลืมว่า Database เป็น global variable ประเภทหนึ่ง แต่ละโปรแกรมที่ติดต่อเปรียบเหมือน MultiThreading ดังนั้นกฏของ Multithreading ต้องกระทำเมื่อทำงานกับ Database
  33. ระวังอย่าให้ ฟอร์มของif then else ที่ซ้อนกันมากมาก...สมองคนไม่ใช่ CPU จินตนาการไม่ออกหรอกว่ามันอยู่ตรงไหนเวลา Debug ถ้าเจอมันซ้อนกันสัก4-5ชั้นก็restructureใหม่เถอะ
  34. ด้วยเหตุผลเดียวกัน...อย่าทำnested loopให้มากนัก ไม่ใช่แค่เครื่องจะหน่วงอย่างเดียว ถ้าเจอบั๊กขึ้นมาเราก็คิดตามมันไม่ทันเหมือนกัน
  35. อย่าเขียนcodeแบบใช้magic number (คืออยู่ๆ ก็มีตัวเลขนี้โผล่ขึ้นมา เช่น if(type==18) คนอ่านอ่านมันไม่รู้เรื่องหรอก ดีไม่ดีคนเขียนจะมึนเองด้วยซ้ำ...เปลี่ยนไปใช้Enumแทนดีกว่า แบบif(type==Connection.OPEN) อย่ารู้เรื่องกว่ากันเยอะ
  36. ถ้าจะเปรียบเทียบstring ให้trim เจ้าwhite spaceออกไปก่อนจะปลอดภัยกว่า
  37. คิดให้ละเอียดก่อนเขียนTrigger แล้วเขียนเสร็จแล้วอย่างลืมว่ายังมีมันอยู่ ไม่งั้นเป็นเรื่องแน่
  38. เมื่อโปรแกรมเมอร์มาอยู่รวมกันเยอะ แน่นอนมันจะเกิดสิ่งที่เรียกว่ามลพิษทางความซับซ้อน ทางแก้คิดหาproject managerเก่งๆ สักคนมาคุมอีกที
  39. คนฉลาดกว่าคอม เพราะฉะนั้นอย่างให้มันคุมเราได้ เราต้องเป็นคนคุมมัน
  40. รับฟังผู้อื่นเสมอ แต่อย่าเสียความเป็นตัวของตัวเอง (หมายถึงเวลาโปรแกรมด้วยนะ)
อันนี้แถมท้ายให้...

ปุ่มsaveกดไว้เสมอ ไม่ได้เสียตังค์ ไม่กดบ่อยๆ ไฟดับ แบตหมด เจอerror เกิดblue screenแล้วจะไม่มีใครช่วยได้นะ

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