สู่โคตรเซียนโปรแกรมเมอร์ ด้วยบัญญัติ 7 ประการ
โปรแกรมเมอร์วัยละอ่อนมักมีปัญหาปวดตับคือ ทำไงให้เขียนโปรแกรมได้เก่งๆ อยากเขียนคล่อง ลื่นไหลปรื๊ดๆเป็นเน็ต DTAC เอาให้ลื่นไถลไปทั้งตัวแล้วไปสลบคาตักอั้ม พัชราภาเลย โปรแรงๆแบบนี้มีจริงไหมในยุทธจักรของการเขียนโปรแกรม?
ชีวิตจริงมันโหดร้ายครับ โปรแรงชนิดลื่นปรื๊ดมันหายาก แต่ไอ้โปรแบบลื่นปรื๊ดไปประท้วงหน้าตึกผู้ให้บริการเพราะเครือข่ายล่ม แบบนี้ซิยังจะหาง่ายกว่า การพัฒนาตนเพื่อเป็นนักพัฒนาที่ยอดเยี่ยมก็ไม่มีโปรไหนจัดให้ได้ มันอยู่ที่การเรียนรู้และชั่วโมงบินที่มากกว่า บทความนี้จึงเกิดขึ้นเพื่อช่วยให้คุณบินอย่างถูกทิศและพิชิตให้ถูกทางมุ่งสู่บันไดของ โคตรเซียนโปรแกรมเมอร์
หมายเหตุตัวเท่าบ้าน: แหม จั่วหัวมาซะแรงขนาดนี้ก็ต้องขอออกตัวก่อนครับว่าผู้เขียนไม่ได้เก่งอะไรเป็นพิเศษ เพียงแต่ต้องการนำเสนอมุมมองที่คิดว่าน่าจะมีส่วนช่วยพัฒนาทักษะการโปรแกรมเท่านั้นเอง จริงจี๊ง (เสียงสูง)
ความรักจุดประกายเซียน
ยาวไปไม่อ่าน: จะพัฒนาตัวเองให้เก่งขึ้นต้องเริ่มจากรักในสิ่งที่ทำก่อน กำหนดเป้าหมายให้เจอก่อนว่าต้องการพัฒนาตนเพื่ออะไร หากต้องการเก่งเพื่อได้งานที่ดีกว่า แรงขับเคลื่อนแบบนี้จะอยู่ไม่ทนเท่ากับต้องการพัฒนาตนให้เก่งขึ้นเพราะความชอบที่ได้ทำ
หลักการพื้นฐานของความสำเร็จคือ ความรักที่จะทำ
คุณมีเป้าหมายในชีวิตหรือยังครับ? แรงขับเคลื่อนที่ทำให้คุณอยากเป็นโปรแกรมเมอร์ที่เก่งขึ้น ถ้ายังไม่มีจงหามันซะ! เพราะนั่นคือสิ่งที่จะจุดประกายความสำเร็จให้กับคุณ หากคุณมีเป้าหมายคุณจะพร้อมทำทุกอย่างเพื่อไปให้ถึงจุดหมายนั้น
เพื่อให้ง่ายต่อการอธิบาย ผมขอแบ่งแรงขับเคลื่อนเป็นสองระดับคือ ระดับแรงกล้าและระดับต่อเนื่อง
มีคำกล่าวว่าแรงขับของสิ่งมีชีวิตทุกประเภทคือการสืบพันธุ์ ไม่ว่ามนุษย์หรือสัตว์ล้วนคงอยู่เพื่อรอคอยการสืบพันธุ์ แม้นเราจะกล่าวว่าปัจจัยทั้ง 4 คือ อาหาร, เครื่องนุ่งห่ม, ที่อยู่อาศัย และ ยารักษาโรค จะเป็นสิ่งที่ทำให้เรามีชีวิตอยู่รอดได้ แต่แท้จริงแล้วปัจจัยทั้ง 4 ล้วนมีขึ้นเพื่อคงชีวิตให้อยู่ได้ถึงวันถ่ายทอดพันธุกรรม
เพื่อให้การสืบพันธุ์เกิดขึ้นได้ มนุษย์ต้องทำทุกวิถีทางเพื่อคงไว้ซึ่งปัจจัย 4 ไม่ว่าจะเป้นการตั้งหน้าหาเงินเพื่อซื้อปัจจัยทั้ง 4 แรงขับเคลื่อนนี้กล่าวได้ว่าเป็นแรงขับระดับแรงกล้า นั่นเพราะเราต้องทำทุกวิถีทางเพื่อดำรงเผ่าพันธุ์ให้คงอยู่
เมื่อเราตั้งเป้าหมายให้ตัวเองเป็นโปรแกรมเมอร์ที่เก่งขึ้นเพียงเพราะต้องการงานต้องการเงิน หรือต้องการงานและเงินที่ดีกว่า ด้วยแรงขับเคลื่อนระดับแรงกล้านี้ย่อมทำให้คุณเป็นโปรแกรมเมอร์ที่เก่งขึ้นได้เช่นกัน
เมื่อแรงขับอันแรงกล้าสิ้นสุดลง เช่น คุณได้งานในตำแหน่งที่ต้องการแล้ว หรือมีเงินเดือนที่สูงพอแล้ว แรงขับดังกล่าวจะหมดบทบาทลง หากคุณไม่มีแรงขับอื่นมาเสริม การพัฒนาตนเองของคุณก็จะหยุดลง ด้วยเหตุนี้แรงขับประเภทที่สองจึงเข้ามามีบทบาทสำคัญ...
แรงขับระดับต่อเนื่อง คือแรงขับที่ส่งให้คุณมีการพัฒนาที่ดีกว่า การสร้างแรงขับนี้นั้นไม่ยาก เพียงแค่คุณรักในสิ่งที่ทำคุณจะรู้สึกอยากเรียนรู้และเพลินเพลินไปกับมันตลอดเวลา ถือเป็นแรงขับที่ดีเยี่ยมที่ทำให้คุณพัฒนาตนเองอยู่อย่างเสมอ
หลักธรรมข้อนึงในพุทธศาสนาเพื่อสร้างหนทางสู่ความสำเร็จคือ อิทธิบาท 4 โดยข้อแรกของธรรมข้อนี้คือ ฉันทะ ความพอใจ, ความชอบ หรือความต้องการที่จะทำ และนี่คือสิ่งยืนยันว่า รักในสิ่งที่ทำคือหนทางสู่ความสำเร็จ
จงอย่าสร้างแรงจูงใจด้วยอำนาจเงินหรือตำแหน่งงานเท่านั้น แต่จงเพิ่มความรู้สึกรักที่จะทำลงไปในเนื้องานด้วย และนี่คือข้อสรุปของหัวข้อแรกของเรา
จงใช้เหงื่อเพื่อสร้างบันไดเซียน
ยาวไปไม่อ่าน: เลิกเอาแต่เรียนซะ แล้วไปลงมือทำ จะสร้างโปรเจคเองหรือจะทำ open source กับชาวบ้าน บอกเลยว่าได้หมดถ้าสดชื่น
ถ้าเราอยากเรียนรู้อะไรซักอย่างจะเริ่มต้นอย่างไร? ตอนนี้ Go เป็นภาษาที่ได้รับความนิยม แหม.. อยากเขียนเป็นบ้างเดี๋ยวตกเทรน ไปหาคอร์สเรียนซักหน่อยดีกว่า...
การเรียนหรือการอ่านเป็นสิ่งแรกๆที่เรามักคิดถึงครับ เพียงแต่เราไม่สามารถพัฒนาตนเองได้เพียงเพราะการอ่านหรือการเรียน สิ่งสำคัญสุดของกระบวนการคือการลงมือทำต่างหาก
ข้อมูลใหม่จากการอ่านหรือการเรียนจะเข้าสู่ความจำชั่วคราว (Short Term Memory) หากปราศจากการทวนซ้ำเราก็จะลืม ไม่ต้องให้พ้นวันหรอก แค่เราเรียนบทแรกจบแล้วไปเรียนบทสองต่อทันที บางทียังลืมบทแรกไปเรียบร้อยแล้วเลย
การเปลี่ยนความจำระยะสั้นให้เป็นความจำระยะยาว (Long Term Memory) ต้องอาศัยการทวนซ้ำครับ ไม่ว่าจะเป็นการอ่านซ้ำหรือการเรียนซ้ำก็ตาม แต่การทวนซ้ำของเราเนี่ยมันต้องทวนเรื่อยๆนะ ไม่ใช่ทวนอยู่แค่เดือนหรือสองเดือนก็จะจำได้ติดหัว ถ้าใครไม่เชื่อไหนลองบอกผมซิยังจำสูตรแคลคูลัสสมัยที่เรียนปีหนึ่งได้ไหม? แน่นอนถ้าจบการศึกษาไปแล้วโดยไม่ได้ทวนซ้ำอีก ยังไงก็ลืม
หากเรามีการทวนซ้ำอย่างสม่ำเสมอ เราก็จะจำสิ่งที่เราเรียนรู้เข้าไปได้ดียิ่งขึ้นครับ แต่นั่นไม่ใช่ขั้นตอนของการพัฒนาซะทีเดียวนะ การพัฒนามันต้องผ่านขั้นตอนการลองผิดลองถูก สมมติคุณเรียนคอร์ส Go จากสถาบันแห่งหนึ่ง แน่นอนว่าผู้สอนคงสอนคุณแบบไวยากรณ์เป๊ะๆ ไม่ปล่อยข้อผิดพลาดใดๆให้คุณเห็นเลย ในฐานะผู้เรียนคุณก็จะได้แค่ทักษะการจำจากผู้สอน แต่ไม่เกิดการพัฒนาใดๆขึ้น
สิ่งที่จะทำให้คุณพัฒนาคือการลงมือทำ เริ่มจากพิมพ์ตามที่ผู้สอนอธิบายก่อนก็ได้ แน่นอนว่าหากคุณทำอะไรซักอย่างผิด โปรแกรมต้องบ่นถึงข้อผิดพลาดซึ่งนั่นอาจอยู่นอกเหนือขอบข่ายการสอนไปแล้ว แต่ตอนนี้เพื่อให้การเรียนของคุณไม่ติดขัด คุณก็ต้องหาวิธีผ่านอุปสรรค์ตรงนั้นไปได้ถูกไหม สิ่งนี้หละที่ทำให้คุณได้เรียนรู้และพัฒนาอย่างแท้จริง
กระบวนการเรียนรู้แบบลงมือทำจะทำให้คุณจำได้นานขึ้น ทำไมเวลาเราเรียนคณิตศาสตร์ต้องฝึกทำโจทย์? นั่นเพราะเราต้องการฝึกด้วยการลงมือทำ การลงมือทำจะช่วยตอกย้ำความจำของเราผ่านประสบการณ์ซึ่งจะทำให้เราจำได้นานยิ่งขึ้น นอกจากนี้การลงมือทำยังเปลี่ยนความจำให้เป็นทักษะอีกด้วย
กระบวนการเรียนรู้ภาษาที่สองที่ดีคือการสร้างทักษะ หากเราจำไวยากรณ์อย่างเดียว ทุกครั้งของการสนทนาย่อมต้องผ่านกระบวนการแปลเป็นภาษาแม่ก่อนเสมอ หากเราเรียนรู้จนเป็นทักษะย่อมสามารถโต้ตอบและสนทนาได้ทันทีโดยไม่ต้องผ่านการแปล เช่นเดียวกัน เมื่อเราพัฒนาการเขียนโปรแกรมจนเป็นทักษะ เราจะเขียนโปรแกรมได้ลื่นไหลแบบไม่ต้องถามหาเหตุผลว่าทำไมต้องเขียนแบบนั้น แค่เราเจอปัญหาก็รู้ถึงวิธีแก้ทันที
สิ่งที่อยากแนะนำให้เพื่อนๆทำ เพื่อฝึกกระบวนการเรียนรู้ด้วยการลงมือทำจนเป็นทักษะนั่นคือ การเข้าไปมีส่วนร่วมในชุมชน Open Source ครับ ลองหาโปรเจคที่สนใจซักตัว ลองเข้าไปอ่านโค้ดเขาดู เริ่มลงมือใช้ ค่อยๆเรียนรู้การทำงาน จนกระทั่งเป็นหนึ่งในผู้พัฒนาเล็กๆ เหล่านี้จะช่วยให้เพื่อนๆได้ฝึกฝนและเรียนรู้ในสิ่งที่เราไม่เคยรู้มาก่อนได้แน่นอนครับ
เกิดเป็นเซียน ย่อมอยู่ในสังคมเซียน
ยาวไปไม่อ่าน: มีอีเวนต์เกี่ยวกับงาน IT ที่ไหนก็ไปบ้าง อะไรบ้าง
สภาพแวดล้อมเป็นหนึ่งปัจจัยที่หล่อหลอมให้เราเป็นในสิ่งที่เป็นครับ ถ้าคุณอยากเป็นไฮโซ แค่ใช้ของแบรนเนมตั้งแต่วิกผมแบรนเนม จนถึงกางเกงในแบรนเนม และที่สำคัญคือคบหากับเพื่อนไฮโซ แค่นี้คุณก็เป็นไฮโซได้สบายๆ แม้กระเป๋าตังค์จะแฟบ หรือบริโภคมาม่าอยู่ทุกสิ้นเดือนก็ตาม
สมมติตอนนี้คุณไปศึกษาต่อต่างประเทศ เอาเป็นฮอกวอตส์แล้วกัน นักเรียนที่นี่ควิกดิชเป็นหมด คุณเป็นนักเรียนมาใหม่ อย่าว่าแต่ควิกดิชเลย ลำพังถือไม้กวาดทีไรต้องไปกวาดท้ายครัวทุกที แบบว่าขี่ไม้กวาดไม่เป็นไง เมื่อสถานการณ์เป็นเช่นนี้คุณจะทำอย่างไร? แน่นอนครับว่าทุกคนคงต้องไปฝึกเล่นควิกดิช เพื่อที่จะคุยกับคนอื่นรู้เรื่อง ไม่งั้นคงต้องเป็นแกะดำแน่นอน
เมื่อคุณอยากพัฒนาตนเองด้านการโปรแกรม คุณก็ควรเอาตัวเข้าไปอยู่ในสังคมนั้น เมื่อทุกคนรอบข้างคุยกันในเรื่องไหน เพื่อให้ตัวคุณเองสื่อสารรู้เรื่อง มันจึงเกิดแรงขับที่จะทำให้คุณต้องเรียนรู้ตาม นี่ถือเป็นการพัฒนาเพื่อความเป็นโปรแกรมเมอร์ที่ดีกว่าอีกทางหนึ่ง ทุกวันนี้เรามีจัดอีเวนต์ด้านการเขียนโปรแกรมมากมายครับทั้งฟรีและไม่ฟรี เลือกเอาตามที่ชอบเลยฮะ หรือจะเลือกจากความสวยของวิทยากรอันนี้ก็ไม่ว่ากัน!
คณิตศาสตร์คือบัลลังก์เซียน
ยาวไปไม่อ่าน: ฝึกคณิตศาสตร์ซักนิดเพื่อชีวิตที่ดีกว่า
คุณเชื่อไหมคณิตศาสตร์ทำให้คุณเขียนโปรแกรมได้ดีขึ้น?
สมมติผมมีโจทย์ว่าให้สร้าง Dialog โดยระบุได้ว่าต้องการให้มีปุ่มอะไรบ้าง (Yes, No, Cancel) คุณสามารถเขียนโปรแกรมได้ดังนี้
1class Dialog {2 show(yesBtn, noBtn, cancelBtn) {3 if (yesBtn) {4 /* แสดงปุ่ม Yes */5 }6 if (noBtn) {7 /* แสดงปุ่ม No */8 }9 if (cancelBtn) {10 /* แสดงปุ่ม Cancel */11 }12 }13}1415const dialog = new Dialog()16// แสดงปุ่ม Yes, No เท่านั้น17dialog.show(true, true, false)
จากตัวอย่างข้างต้นพบว่าการเรียกใช้งาน show ช่างอุบาทว์ยิ่งนัก จากมุมมองของการเรียกใช้งานการส่งค่า true, true, false
ไม่ได้สื่อความหมายให้เข้าใจได้เลยว่าแต่ละค่าคืออะไร
อาศัยความรู้ทางคณิตศาสตร์เรื่องการดำเนินการระดับ Bit ทำให้เราสามารถใช้ Bitwise Operators เพื่อเพิ่มความสวยงามของโค้ดได้ดังนี้
1class Dialog {2 static YES = 13 static NO = 24 static CANCEL = 456 show(buttons) {7 if (buttons & Dialog.YES) {8 /* แสดงปุ่ม Yes */9 }10 if (buttons & Dialog.NO) {11 /* แสดงปุ่ม No */12 }13 if (buttons & Dialog.CANCEL) {14 /* แสดงปุ่ม Cancel */15 }16 }17}1819const dialog = new Dialog()20// แสดงปุ่ม Yes, No เท่านั้น21dialog.show(Dialog.YES | Dialog.NO)
ด้วย Bitwise Operators ทำให้การเรียกใช้เมธอด show
ของเรามีความหมายมากขึ้น เราจะทราบทันทีว่าค่าที่ส่งไปแต่ละตัวคืออะไร เป็นต้น
จากตัวอย่างที่ผมยกมา เพื่อนๆน่าจะเริ่มมองเห็นประโยชน์ของคณิตศาสตร์กันบ้างแล้ว บางท่านอาจยังย้อนแย้งว่าคณิตศาสตร์ไม่จำเป็น ไม่ต้องมีความรู้เลขก็เขียนโปรแกรมได้ ผมต้องขอแย้งตรงจุดนี้เลยครับว่าไม่เป็นความจริง อย่างน้อยที่สุดการใช้งาน if-else
คุณก็กำลังเล่นกับหลักของตรรกศาสตร์เป็นที่เรียบร้อยแล้ว
ไม่ใช่ทุกเรื่องของคณิตศาสตร์ที่โปรแกรมเมอร์ต้องทราบครับ แต่อย่างน้อยที่สุดสำหรับผมโปรแกรมเมอร์ควรผ่านมือและเรียนรู้วิชา Discrete mathematics (สมัยก่อนเราแปลว่าคณิตศาสตร์แบบจำนวนไม่ต่อเนื่อง แต่สมัยนี้รู้สึกแปลกันว่า คณิตศาสตร์เต็มหน่วย) กันบ้าง
ในวิชาแคลคูลัสเราศึกษาถึงความต่อเนื่องของตัวเลขครับ เช่นการหาลิมิตเมื่อ x เข้าใกล้ศูนย์ ลองจินตนาการดูครับคำว่าเข้าใกล้ศูนย์แสดงว่า x อาจเป็น 0.000001 ก็ได้ หรือเป็น 0.0000001 ก็ย่อมได้เพราะทั้งคู่ล้วนใกล้ศูนย์ เลขเหล่านี้มันอยู่ติดๆกันบนเส้นจำนวนใช่ไหมครับ เราจึงบอกว่าเลขเหล่านี้มีความต่อเนื่อง แต่ Discrete mathematics จะเป็นเรื่องของสิ่งที่เป็นค่าไม่ต่อเนื่องกัน เช่น True, False สองตัวนี้คือค่าบูลีนจากตรรกศาสตร์ จะเห็นว่ามันแยกกันเลย True ก็คือ True ไม่มี True.5 เหมือน 0.5 ที่อยู่ระหว่าง 0 กับ 1 ใช่ไหมครับ นั่นหละครับมันจึงไม่ต่อเนื่องเพราะมีค่าเฉพาะตัวไปเลย
Discrete mathematics เป็นหัวใจของศาสตร์คอมพิวเตอร์ครับ มันรวมทุกสิ่งอย่างที่เราใช้เขียนโปรแกรมกันทุกวันนี้ ไม่ว่าจะเป็นตรรกศาสตร์ที่เราใช้ตั้งประโยคเงื่อนไขใน if-else ทุกวันนี้ หรือเรื่อง recusive function ก็อยู่ในวิชา discreate mathematics เช่นกัน ในส่วนของ data structure พวก graph ก็อยู่ในส่วนของ graph theory ของ discrete mathematics ด้วย แม้แต่การออกแบบคอมไพเลอร์ก็ยังอิงกับทฤษฎีการคำนวณเช่นกัน จึงไม่ต้องแปลกใจครับที่วิชานี้จะเป็นวิชาบังคับของเด็กปี 1
หากเพื่อนๆต้องการเป็นมากกว่าโปรแกรมเมอร์ธรรมดา ยังมีคณิตศาสตร์อีกมากที่จำเป็นต้องเรียนรู้ เช่นสำหรับสาย Data Science เพื่อนๆควรรู้สิ่งเหล่านี้ด้วย
- Calculus: คงไม่ต้องอธิบายสรรพคุณกันใช่ไหม วิชาที่ฉุดเกรดพวกเธอว์ยังไงละ
- Linear Algebra: แปลเป็นไทยกิ๊บเก๋ว่าพีชคณิตเชิงเส้น มาตั้งแต่ Matrix, Vector, ปริภูมิยูคลิเดียน และอื่นๆ
- Abstract Algebra: วิชานี้สำคัญสำหรับพวกทำ Security เหมือนกันนะ การเข้ารหัสก็ต้องใช้วิชานี้
- Statistics: ตายๆ สาย Data Science ไม่รู้จักวิชานี้ถือว่าผิด
- Combinatorics: ว่าด้วยการนับทั้งหลาย, หลักการรังนกพิราบ, ความสัมพันธ์เวียนเกิด, กราฟ, อื่นๆ
- Operational Research
- Fuzzy Logic
- Stochastic Models
- Optimization methods
- อื่นๆ เยอะเกิ๊น
จงเป็นเซียนที่โง่เพื่อฉลาด
ยาวไปไม่อ่าน: แกล้งโง่บ้างก็ไม่เสียหาย จะได้รู้แนวคิดคนอื่น
เมื่อโปรแกรมเมอร์ต๊อกต๋อยก้าวเข้าสู่วัยสะเทินน้ำสะเทินบก วรยุทธิ์อันแกร่งกล้าทำให้เขาไม่อาจจะให้คนอื่นมองว่าไม่รู้ได้ เหตุนี้จึงต้องดำรงตนให้ทุกคนเชิดชู วางตัวเป็นปรจารย์ตักม้อ เหมือนวัตถุโบราณเคลื่อนที่ใครถามอะไรก็ต้องตอบได้ทุกเรื่อง
ถ้าเพื่อนๆเป็นดังย่อหน้าแรกที่ผมกล่าว มันน่าเสียดายมากครับที่เราจะไม่ได้รับรู้ในหลายๆสิ่งที่ควรรู้
การวางตัวให้ฉลาดตลอดเวลาจะทำให้เราหมดโอกาสเรียนรู้ในสิ่งที่ไม่รู้ บางครั้งที่มีคนเสนอแนะอะไรเราต้องรับฟังเขาบ้าง บางไอเดียที่เขาเสนออาจเป็นสิ่งที่เราไม่เคยรู้มาก่อนก็เป็นได้
ผมเคยเปิด Youtube แล้วไปเห็นคลิปสอนอะไรซักอย่างซึ่งส่วนตัวคิดว่าตนเองฉลาดพอที่จะทำเป็นอยู่แล้ว แถมยังแอบดูถูกในใจอีกว่าคนในคลิปคงสอนแค่ผิวเผิน นี่หละครับการอวดฉลาดอย่างแท้จริง เพราะนั่นทำให้ผมพลาดในสิ่งที่คนนั้นนำเสนอในคลิปของเขาที่ผมหาจากที่ไหนไม่ได้อีกแล้ว
อย่าฉลาดไปซะทุกเรื่อง ทำตัวให้โง่บ้างเพื่อรับรู้สิ่งใหม่ๆที่เราไม่เคยรู้ เพราะนั่นจะเป็นปัจจัยที่ผลักดันให้เราพัฒนาไปอีกขั้นหนึ่ง
เซียนไม่โง่เพราะคำดูถูก
ยาวไปไม่อ่าน: ปล่อยคนอื่นดูถูกเราไป แต่เราห้ามดูถูกตนเอง จงพัฒนาตามหนทางที่เราอยากเป็น ไม่ใช่สิ่งที่คนอื่นต้องการให้เราเป็น
บางคนไม่ได้โง่เพราะเขาไม่รู้ครับ แต่เขาโง่เพราะคนรอบข้างทำให้เขาดูโง่
สถานการณ์แบบนี้มักเกิดกับโปรแกรมเมอร์ต๊อกต๋อยผู้เริ่มทำงานครับ มีหลายสิ่งที่เรามักทำพลาดไปเมื่อเริ่มต้น ด้วยนิสัยของคนไทยส่วนหนึ่งที่ชอบยกตนเองให้ดูเหนือกว่า ชอบถากถางและซ้ำเติมด้วยการกดให้โปรแกรมเมอร์น้องใหม่รู้สึกแย่และจมดินลึกลงไป ลึกลงไปอีก ลึกจนถึงแกนกลางโลกก็ยังคงกดต่อไปด้วยการยกพวกรุมประจาร...
แหม... บางคนอาจบอกมันเวอร์ไปไหม สังคมแบบนั้นไม่มีหรอก ผมยืนยัน นอนยัน นั่งยัน เลยครับว่ามีจริงๆ แถมเยอะด้วย ทั้งจากประสบการณ์ตรง เห็นมากับตา ได้ฟังจากแชทเยอะแยะ จึงตั้งใจเตือนสติซักหน่อยในข้อนี้
เราห้ามคนอื่นไม่ให้วิจารณ์เราไม่ได้ครับ สิ่งที่เราควรทำคือพิจารณาว่าที่เขาพูดมาเราทำผิดจริงไหม ถ้าจริงให้แก้ไขซะ อย่าเอาแต่โทษตัวเองว่าโง่ อย่ามองแง่ร้ายว่าเขาเอาแต่ดูถูกเรา แบบนี้ไม่มีประโยชน์ครับ ต่อให้เขาว่าเราเสียหายอย่างไรมันก็ทำอะไรเราไม่ได้ตราบเท่าที่เรายังเข้มแข็งพอที่จะพัฒนาตนเองต่อไป
อย่าหยุดพัฒนาตัวเองเพียงเพราะคนอื่นกลั่นแกล้งเราหรือดูถูกเราตลอดเวลาครับ
จงเป็นดั่งโพธิสัตว์
ยาวไปไม่อ่าน: เมื่อเก่งแล้วแบ่งปันสู่สังคมบ้าง การได้แบ่งปันคือการใช้สมองเพื่อเรียบเรียง ถือเป็นการทบทวนและพัฒนาอีกขั้นตอนนึง
เมื่อเราชำนาญพอควรแล้ว อย่าเก็บความรู้ที่มีไว้คนเดียวครับ จงแบ่งปันให้สังคมบ้างไม่ว่าจะเป็นการเขียนบทความ การเป็นวิทยากรถ่ายทอดความรู้ การอัดวิดีโอสอนฟรี และอื่นๆ
การที่เราถ่ายทอดความรู้ออกไป ความรู้ที่เรามีอยู่มันก็ไม่ได้สูญหายไปนะครับ มันก็ยังคงมีอยู่เหมือนเดิมนั่นแหละ เพิ่มเติมคือได้ทบทวนในสิ่งที่ตนรู้ แถมกระบวนการเรียบเรียงเพื่อถ่ายทอด ยังเป็นการสร้างความสัมพันธ์ของระบบความคิดให้เกิดขึ้นอย่างชัดเจนมากขึ้นเช่นกัน
ในกระบวนการเขียนโปรแกรมปกติ บางทีเราไม่ค่อยถามหาเหตุผลครับ เรารู้เพียงว่าโจทย์แบบนี้ต้องเขียนโปรแกรมแบบนี้โดยไม่รู้ลึกตื้นหนาบาง แต่การถ่ายทอดความรู้จะทำให้เราได้ทวนสอบความรู้ที่เรามีอีกรอบครับ
ขอเล่าประสบการณ์จากการเขียนบทความให้ฟังครับ บางครั้งเรามั่นใจอยู่แล้วว่าข้อมูลเราแน่น แต่พอเริ่มเขียนออกไปเราเริ่มเจอความสับสน เริ่มไม่แน่ใจว่าให้เหตุผลถูกต้องไหม จนสุดท้ายต้องไปหาเอกสารอ้างอิง นั่นจึงทำให้เกิดการเติมเต็มความรู้ให้มากขึ้นตามไปด้วยเช่นกัน
สรุป
ทั้งหมดทั้งมวลผมจึงขอสรุปขั้นตอนสั้นๆของกระบวนการพัฒนาตนเองให้เป็นโปรแกรมเมอร์ที่ดีขึ้น เริ่มจากพยายามทำในสิ่งที่ชอบและชอบในสิ่งที่ทำก่อน จากนั้นจึงเริ่มการเรียนรู้ด้วยการลงมือทำจริง รวมถึงสร้างสภาพแวดล้อมให้อยู่ในสังคมของการพัฒนา หมั่นฝึกคิดฝึกคณิตศาสตร์บ้าง อีกข้อที่สำคัญก็คือต้องไม่ปิดกั้นความคิดคนอื่นด้วยการรับฟังคนอื่นเพื่อให้ได้เรียนรู้ในสิ่งที่ไม่เคยรู้ นอกจากนี้ต้องไม่เสียศรัทธาในตนเอง อย่าหยุดพัฒนาตนเองเพียงเพราะคนอื่นดูถูกว่าเราทำไม่ได้ เมื่อไหร่ที่เพื่อนๆเป็นผู้เชี่ยวชาญแล้ว จงอย่าลืมที่จะแบ่งปันสู่สังคม และนี่คือทั้งหมดของบทความนี้ครับ
สารบัญ
- ความรักจุดประกายเซียน
- จงใช้เหงื่อเพื่อสร้างบันไดเซียน
- เกิดเป็นเซียน ย่อมอยู่ในสังคมเซียน
- คณิตศาสตร์คือบัลลังก์เซียน
- จงเป็นเซียนที่โง่เพื่อฉลาด
- เซียนไม่โง่เพราะคำดูถูก
- จงเป็นดั่งโพธิสัตว์
- สรุป