สัมภาษณ์นักศึกษาฝึกงานของ Blognone: ณัฐวุฒิ เพ็ชรมาก

by lew
13 August 2011 - 19:13

เมื่อต้นปีที่ผ่านมา Blognone มีโครงการรับสมัครนักศึกษาฝึกงานหลังจากเงียบๆ ไปพักใหญ่ๆ โดยไม่มีใครสมัครเข้ามาเลย (ทราบความทีหลังว่าคนสนใจเยอะพอสมควร แต่ไม่กล้าสมัครกัน) ก็มีณัฐวุฒิ เพ็ชรมาก หรือ neizod ส่งข้อเสนอโครงการเข้ามาเป็นโครงการปรับปรุง syntax ของสมการให้ง่ายต่อการเขียนยิ่งขึ้นในชื่อว่า EzMath หลังจากพิจารณาแล้วว่าโครงการมีความยากพอสมควร ผมและ mk ก็อนุมัติให้โครงการนี้เป็นโครงการสำหรับการฝึกงานกับ Blognone และวันนี้เราจะมาสัมภาษณ์นักศึกษาฝึกงานของ Blognone คนนี้กันครับ

คุณณัฐวุฒิเป็นนักศึกษาภาควิชาคณิตศาสตร์ จากมหาวิทยาลัยเชียงใหม่ที่สนใจคอมพิวเตอร์ไม่แพ้เด็กที่เรียนตรงสายคอมพิวเตอร์คนไหนๆ นอกจากความสนใจส่วนตัวแล้วยังเลือกลงวิชารองเป็นคอมพิวเตอร์อีกหลายวิชาทำให้ความรู้ไม่ด้อยไปกว่านักศึกษาที่เรียนคอมพิวเตอร์โดยตรงเลย ช่วงเวลาที่ฝึกงานกับ Blognone ผมให้คำแนะนำไปไม่มากนัก โดยหลักๆ คือการชี้ว่าควรใช้เครื่องมือใดบ้าง เช่นระบบการแปลง syntax ที่ใช้ flex และ bison (lex และ yacc รุ่นของ GNU) หรือการเชื่อมต่อระหว่างตัวแปลงภาษาที่ใช้ pipe ผ่านทาง popen เพียงคำแนะนำกว้างๆ เหล่านี้และการตอบคำถามนานๆ ครั้ง ณัฐวุฒิก็สามารถทำโครงการที่เสนอมาจนใช้งานได้จริง (ดูหน้าสาธิตใน Jusci)

โครงการ EzMath ที่ได้จากโครงการฝึกงานนี้ สามารถนำไปใช้งานได้ทั้งแบบ command line และโมดูลของ Drupal (ล่าสุดยังมีปัญหากับโมดูลอื่นๆ ในรุ่นใหม่อยู่กำลังติดต่อกับโครงการอื่นๆ เพื่อแก้ปัญหา) อย่างไรก็ดีหากใครสนใจใช้งาน จริงๆ แล้วโครงการนี้โดยหลักคือการแปลง syntax ของสมการ EzMath ซึ่งน่าจะง่ายกว่าไปยัง LaTeX สำหรับคนที่ต้องตีพิมพ์งานวิจัยในรูปแบบของ LaTex การใช้ตัวแปลงจากโครงการนี้ก็อาจจะมีประโยชน์ในแง่ของความสะดวกที่จะไม่ต้องนั่งอ่านคู่มือ LaTex กันทุกครั้งที่เขียนสมการอีกต่อไปแล้วก็เป็นได้

ว่าแล้วก็เริ่มบทสัมภาษณ์กันเลยครับ

ตอนนี้เรียนอยู่ที่ไหนหรือครับ

ตอนนี้เป็นนักศึกษาปีที่ 4 ครับ เรียนที่มหาวิทยาลัยเชียงใหม่ คณะวิทยาศาสตร์ สาขาคณิตศาสตร์

เรียนคณิตศาสตร์แล้วทำไมมาสนใจเรืองสายคอมพิวเตอร์หรือครับ

สนุกดีครับ

เคยเขียนโปรแกรมมานานรึยัง

เขียน HTML ครั้งแรกตอนป.4 ครับ ช่วงนั้นคอมพิวเตอร์กำลังเป็นที่แพร่หลายในเมืองไทย พอได้มาเล่นเกมไปไม่นานก็เบื่อ พอได้รู้จักกับพวก HTML เลยลองเขียนดูครับ ส่วนการเขียนโปรแกรมที่เป็น logic มี I/O จริงๆก็เริ่มตอน ม.2 ครับ ตามหลักสูตร Visual Basic

แล้วทำไมถึงเลือกเรียนคณิตศาสตร์?

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

อย่างนี้เรียนสายคณิตศาสตร์ นี่มีวิชาสายคอมพิวเตอร์มากน้อยแค่ไหน

มีหลักๆ 1 วิชาครับ คือสอนวิธีใช้โปรแกรมทางคณิศาสตร์ พวก MATLAB, Mathematica, Maple, LaTeX

ไม่มีวิชาโปรแกรมมิ่งโดยตรงเลยหรือ?

มี Numerical Method ที่อาจารย์ทดสอบความรู้ด้านการไล่ logic ของโปรแกรมบ้าง แต่นอกจากนี้แล้วก็ไม่มีครับ

อย่างนี้แล้วตอนมาเขียนโปรแกรม คิดว่าลำบากหรือเสียเปรียบมากไหมครับ สามารถนำความรู้ด้านคณิตศาสตร์มาปรับได้ไหม?

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

แสดงว่านับจากม. 2 เป็นต้นมา ก็เขียนโปรแกรมเรื่อยมาเลย?

เขียนเรื่อยๆ ครับ จนได้ลงเรียนคอมพิวเตอร์เป็น minor ตอนปี 2 ก็เขียนหนักขึ้นครับ

ปรกติเขียนโปรแกรมเพื่ออะไรหรือครับ หรือเขียนเล่นอย่างเดียว?

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

เขียนภาษาอะไรบ้างครับ ตอนนี้

หลักๆ เลยก็ Python ครับ แล้วก็ HTML+JavaScript

ทั้งหมดนี้คืออ่านเอง?

หาความรู้เองครับ

อ่าน Blognone มานานแค่ไหนแล้วครับ

(จำไม่ได้ครับ >///<) จำได้ว่าครั้งแรกหลงเข้ามาครับ เป็นเว็บแปลกๆ อ่านไม่เข้าใจแต่ก็พยายามอ่าน

แสดงว่าแรกๆ อ่านไม่ค่อยรู้เรื่อง?

งงกับระบบ thread ของ comment ครับ ตอนนั้นยังไม่แยกไฮไลท์สีขาวสลับกับเทาเลย

หลงเข้ามาครั้งแรกก็อ่านมาเรื่อยๆ เลย?

หลงเข้ามาครั้งแรก แล้วหลงออกไปครับ แต่พอหาข้อมูลเทคโนโลยีบางอย่าง ก็มาลงเอยที่ Blognone ตลอดครับ

ช่วงนี้ Blognone ประกาศรับฝึกงานนี่อ่านเป็นประจำอยู่รึเปล่าครับ?

ช่วงที่ประกาศฝึกงานนั้น อ่านเป็นประจำแล้วครับ อ่านเป็นประจำมาได้ประมาณปีนึงแล้วครับ

เห็นประกาศแล้วคิดว่าจะสมัครทันทีเลยรึเปล่าครับ

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

ตอนเสนอโครงการนี่ มีไอเดียไว้ก่อนรึเปล่าครับ ว่าจะทำยังไง?

ด้านเทคนิคการเขียนโปรแกรมแล้ว ไม่มีเลยครับ

แล้วไม่กลัวทำไม่ได้หรือครับ

ไม่กลัวครับ เพราะว่ามีพี่ lew กับพี่ mk คอยดูแลอยู่ครับ แล้วก็มีเพื่อนๆ CPE ให้ไปปรึกษาได้

พอโปรเจคผ่านแล้วทำจริงๆ ยากไหม

ส่วนลง coding จริงๆ คือไม่ยากเท่าไหร่ครับ แต่ที่ยากมากๆ เลยจะเป็นส่วนที่ต้องลงไปทำความเข้าใจกับเทคนิคต่างๆ และวิธีใช้งานเครื่องมือใหม่ๆ อย่างเช่น ภาษา C กว่าจะจัดการกับ String ได้ก็ใช้เวลาไปไม่น้อยเหมือนกัน

ไม่เคยเขียน C มาก่อนเลย?

สมัยที่ยังไม่เขียน python เคยพยายามทำความรู้จักกับ C++ แต่ไม่รอดครับ เลยไม่ได้วกกลับไปลองเขียน C จนกระทั่งได้มาฝึกงานครับ

ต้องเรียนอะไรเพิ่มมั่งนอกจาก C ครับ

นอกจาก C แล้วก็ Flex & Bison ครับ ส่วนนี้ ตัว syntax ภาษาไม่ยากเท่าไหร่ แต่ที่งมอยู่พักนึงเลยคือ logic ของการแปลครับ

แนะนำการทำงานของ EzMath คร่าวๆ สักหน่อย

EzMatch ป็น project ที่แปลงภาษาคณิตศาสตร์แบบง่าย ให้เป็นรูปภาพสมการทางคณิตศาสตร์อย่างสมบูรณ์บนเว็บครับ เหมาะสำหรับผู้ที่ประสบปัญหากับการใช้ LaTeX โดยโค้ดส่วน PHP ตรวจสอบส่วนที่เป็น syntax ทางคณิตศาสตร์ ต่อมาก็ส่งงานให้ Flex แบ่งคำเป็น token เพื่อที่จะส่ง token ต่อให้ Bison ทำความเข้าใจ แล้วแปลออกมาเป็น LaTeX ครับ เรียบร้อยก็ส่ง LaTeX ที่แปลสำเร็จแล้วกลับมาให้ PHP วางไว้แทนที่ content เดิมแล้วให้ MathJax มาช่วยแปลผลให้ LaTeX กลายเป็นรูปสมการคณิตศาสตร์ครับ

หลังจากทำโครงการนี้แล้ว คิดว่าได้ความรู้อะไรเพิ่มเติมบ้างครับ

หลักการทำความเข้าใจ "ภาษา" ของคอมพิวเตอร์ครับ ค่อนข้างแตกต่างไปจากการที่มนุษย์เราเข้าใจมากทีเดียว แล้วก็เทคนิคการเขียนโปรแกรมภาษาอื่นๆ ที่ไม่คุ้นเคยอย่าง C, PHP นอกจากนี้ก็วิธีการควบคุมโปรเจคโดยใช้ version control ครับ

รู้สึกยังไงกับเรื่องที่ต้องเรียนรู้เพิ่มเติมเหล่านี้ครับ?

สนุกดีครับ แล้วก็ได้นำความรู้ด้าน version control ไปทำงานอื่นต่อด้วย

เข้าใจว่ามีคนที่ไม่ได้เรียนสายคอม อยู่ใน Blognone เยอะพอสมควร และจำนวนมากอยากทำงานด้านคอม มีอะไรจะฝากถึงคนเหล่านั้นสักหน่อยไหมครับ

แรกสุดเลย ก็อยากให้สำรวจตัวเองก่อน ว่าชอบงานแบบไหน แล้วก็อยากให้เลือกภาษาในใจซัก 1 ภาษา ถ้าเห็นว่าภาษาแบบ static อย่าง C, Java มันดูยุ่งยากไป เรามาเริ่มจากภาษากลุ่ม dynamic อย่าง Python, Javascript ก็ได้ พอเลือกภาษาในดวงใจได้แล้ว ก็ฝึกเขียนโปรแกรมทุกวัน จนเมื่อเขียนได้คล่องๆ คราวนี้การทำความเข้าใจกับภาษาแปลกๆ หรือแนวที่ไม่ถนัดก็จะง่ายขึ้นมากแล้ว ที่สำคัญคือ logic ของโปรแกรม อันนี้ต้องเป๊ะ พยายามเรียนรู้เทคนิคต่างๆ stackoverflow คือเพื่อนซี้เลยครับ

แล้วก็สุดท้าย ไม่มีคำว่าสาย ถ้าตั้งใจจริงครับ

อยากจะบอกอะไรเพิ่มเติมอีกไหม?

ก็ขอขอบคุณพี่ lew และพี่ mk ทีทำให้โครงการนี้เกิดขึ้น ขอบคุณคุณ pittaya, wiennat, sukoom2001 และคุณ saknarak สำหรับคำแนะนำโปรเจค คุณ mr_tawan, AlninlA, javaboom และทุกๆ ท่านสำหรับกำลังใจ และที่ขาดไม่ได้ ก็ขอบคุณอลงกต ประกอบกิจที่ช่วยให้คำแนะนำโปรเจคเยอะแยะเลยครับ

Blognone Jobs Premium