สู่โคตรเซียนโปรแกรมเมอร์ ด้วยบัญญัติ 7 ประการ

Nuttavut Thongjor

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

ลื่น

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

หมายเหตุตัวเท่าบ้าน: แหม จั่วหัวมาซะแรงขนาดนี้ก็ต้องขอออกตัวก่อนครับว่าผู้เขียนไม่ได้เก่งอะไรเป็นพิเศษ เพียงแต่ต้องการนำเสนอมุมมองที่คิดว่าน่าจะมีส่วนช่วยพัฒนาทักษะการโปรแกรมเท่านั้นเอง จริงจี๊ง (เสียงสูง)

ความรักจุดประกายเซียน

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

หลักการพื้นฐานของความสำเร็จคือ ความรักที่จะทำ

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

เพื่อให้ง่ายต่อการอธิบาย ผมขอแบ่งแรงขับเคลื่อนเป็นสองระดับคือ ระดับแรงกล้าและระดับต่อเนื่อง

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

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

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

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

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

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

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

จงใช้เหงื่อเพื่อสร้างบันไดเซียน

ยาวไปไม่อ่าน: เลิกเอาแต่เรียนซะ แล้วไปลงมือทำ จะสร้างโปรเจคเองหรือจะทำ open source กับชาวบ้าน บอกเลยว่าได้หมดถ้าสดชื่น

ถ้าเราอยากเรียนรู้อะไรซักอย่างจะเริ่มต้นอย่างไร? ตอนนี้ Go เป็นภาษาที่ได้รับความนิยม แหม.. อยากเขียนเป็นบ้างเดี๋ยวตกเทรน ไปหาคอร์สเรียนซักหน่อยดีกว่า...

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

ข้อมูลใหม่จากการอ่านหรือการเรียนจะเข้าสู่ความจำชั่วคราว (Short Term Memory) หากปราศจากการทวนซ้ำเราก็จะลืม ไม่ต้องให้พ้นวันหรอก แค่เราเรียนบทแรกจบแล้วไปเรียนบทสองต่อทันที บางทียังลืมบทแรกไปเรียบร้อยแล้วเลย

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

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

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

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

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

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

เกิดเป็นเซียน ย่อมอยู่ในสังคมเซียน

ยาวไปไม่อ่าน: มีอีเวนต์เกี่ยวกับงาน IT ที่ไหนก็ไปบ้าง อะไรบ้าง

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

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

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

คณิตศาสตร์คือบัลลังก์เซียน

ยาวไปไม่อ่าน: ฝึกคณิตศาสตร์ซักนิดเพื่อชีวิตที่ดีกว่า

คุณเชื่อไหมคณิตศาสตร์ทำให้คุณเขียนโปรแกรมได้ดีขึ้น?

สมมติผมมีโจทย์ว่าให้สร้าง Dialog โดยระบุได้ว่าต้องการให้มีปุ่มอะไรบ้าง (Yes, No, Cancel) คุณสามารถเขียนโปรแกรมได้ดังนี้

JavaScript
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}
14
15const dialog = new Dialog()
16// แสดงปุ่ม Yes, No เท่านั้น
17dialog.show(true, true, false)

จากตัวอย่างข้างต้นพบว่าการเรียกใช้งาน show ช่างอุบาทว์ยิ่งนัก จากมุมมองของการเรียกใช้งานการส่งค่า true, true, false ไม่ได้สื่อความหมายให้เข้าใจได้เลยว่าแต่ละค่าคืออะไร

อาศัยความรู้ทางคณิตศาสตร์เรื่องการดำเนินการระดับ Bit ทำให้เราสามารถใช้ Bitwise Operators เพื่อเพิ่มความสวยงามของโค้ดได้ดังนี้

JavaScript
1class Dialog {
2 static YES = 1
3 static NO = 2
4 static CANCEL = 4
5
6 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}
18
19const 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 แล้วไปเห็นคลิปสอนอะไรซักอย่างซึ่งส่วนตัวคิดว่าตนเองฉลาดพอที่จะทำเป็นอยู่แล้ว แถมยังแอบดูถูกในใจอีกว่าคนในคลิปคงสอนแค่ผิวเผิน นี่หละครับการอวดฉลาดอย่างแท้จริง เพราะนั่นทำให้ผมพลาดในสิ่งที่คนนั้นนำเสนอในคลิปของเขาที่ผมหาจากที่ไหนไม่ได้อีกแล้ว

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

เซียนไม่โง่เพราะคำดูถูก

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

บางคนไม่ได้โง่เพราะเขาไม่รู้ครับ แต่เขาโง่เพราะคนรอบข้างทำให้เขาดูโง่

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

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

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

อย่าหยุดพัฒนาตัวเองเพียงเพราะคนอื่นกลั่นแกล้งเราหรือดูถูกเราตลอดเวลาครับ

จงเป็นดั่งโพธิสัตว์

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

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

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

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

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

สรุป

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

สารบัญ

สารบัญ

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