เมื่อต้นปีที่ผ่านมา 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 มาช่วยอย่างเต็มร้อย แต่เวลาว่างก็ชอบเขียนโปรแกรมเล่นอยู่แล้ว เลยไม่ค่อยรู้สึกว่าเสียเปรียบเท่าไหร่
เขียนเรื่อยๆ ครับ จนได้ลงเรียนคอมพิวเตอร์เป็น minor ตอนปี 2 ก็เขียนหนักขึ้นครับ
ส่วนมากเขียนเล่นครับ เอาโจทย์ของเพื่อนๆ CPE มาลองเล่น มีบ้างที่เขียนเพื่อแก้ไขปัญหาในชีวิตประจำวันครับ
หลักๆ เลยก็ Python ครับ แล้วก็ HTML+JavaScript
หาความรู้เองครับ
(จำไม่ได้ครับ >///<) จำได้ว่าครั้งแรกหลงเข้ามาครับ เป็นเว็บแปลกๆ อ่านไม่เข้าใจแต่ก็พยายามอ่าน
งงกับระบบ thread ของ comment ครับ ตอนนั้นยังไม่แยกไฮไลท์สีขาวสลับกับเทาเลย
หลงเข้ามาครั้งแรก แล้วหลงออกไปครับ แต่พอหาข้อมูลเทคโนโลยีบางอย่าง ก็มาลงเอยที่ Blognone ตลอดครับ
ช่วงที่ประกาศฝึกงานนั้น อ่านเป็นประจำแล้วครับ อ่านเป็นประจำมาได้ประมาณปีนึงแล้วครับ
คิดว่าจะสมัครทันทีเลยครับ แต่ตอนนั้นไม่มี project อยู่ในหัวเลย จริงๆ ตัดใจไปแล้วครับ เพราะว่าหมดเวลาสมัครไปหลายวันแล้ว แล้วอยู่ๆ มันก็คิดออกเองเลยครับ แอบถามคุณ mk ไปก่อนว่ายังทันมั้ย พอรู้ว่าทันก็จัดการทุกอย่างในวันนั้นเลยครับ
ด้านเทคนิคการเขียนโปรแกรมแล้ว ไม่มีเลยครับ
ไม่กลัวครับ เพราะว่ามีพี่ lew กับพี่ mk คอยดูแลอยู่ครับ แล้วก็มีเพื่อนๆ CPE ให้ไปปรึกษาได้
ส่วนลง coding จริงๆ คือไม่ยากเท่าไหร่ครับ แต่ที่ยากมากๆ เลยจะเป็นส่วนที่ต้องลงไปทำความเข้าใจกับเทคนิคต่างๆ และวิธีใช้งานเครื่องมือใหม่ๆ อย่างเช่น ภาษา C กว่าจะจัดการกับ String ได้ก็ใช้เวลาไปไม่น้อยเหมือนกัน
สมัยที่ยังไม่เขียน python เคยพยายามทำความรู้จักกับ C++ แต่ไม่รอดครับ เลยไม่ได้วกกลับไปลองเขียน C จนกระทั่งได้มาฝึกงานครับ
นอกจาก C แล้วก็ Flex & Bison ครับ ส่วนนี้ ตัว syntax ภาษาไม่ยากเท่าไหร่ แต่ที่งมอยู่พักนึงเลยคือ logic ของการแปลครับ
EzMatch ป็น project ที่แปลงภาษาคณิตศาสตร์แบบง่าย ให้เป็นรูปภาพสมการทางคณิตศาสตร์อย่างสมบูรณ์บนเว็บครับ เหมาะสำหรับผู้ที่ประสบปัญหากับการใช้ LaTeX โดยโค้ดส่วน PHP ตรวจสอบส่วนที่เป็น syntax ทางคณิตศาสตร์ ต่อมาก็ส่งงานให้ Flex แบ่งคำเป็น token เพื่อที่จะส่ง token ต่อให้ Bison ทำความเข้าใจ แล้วแปลออกมาเป็น LaTeX ครับ เรียบร้อยก็ส่ง LaTeX ที่แปลสำเร็จแล้วกลับมาให้ PHP วางไว้แทนที่ content เดิมแล้วให้ MathJax มาช่วยแปลผลให้ LaTeX กลายเป็นรูปสมการคณิตศาสตร์ครับ
หลักการทำความเข้าใจ "ภาษา" ของคอมพิวเตอร์ครับ ค่อนข้างแตกต่างไปจากการที่มนุษย์เราเข้าใจมากทีเดียว แล้วก็เทคนิคการเขียนโปรแกรมภาษาอื่นๆ ที่ไม่คุ้นเคยอย่าง C, PHP นอกจากนี้ก็วิธีการควบคุมโปรเจคโดยใช้ version control ครับ
สนุกดีครับ แล้วก็ได้นำความรู้ด้าน version control ไปทำงานอื่นต่อด้วย
แรกสุดเลย ก็อยากให้สำรวจตัวเองก่อน ว่าชอบงานแบบไหน แล้วก็อยากให้เลือกภาษาในใจซัก 1 ภาษา ถ้าเห็นว่าภาษาแบบ static อย่าง C, Java มันดูยุ่งยากไป เรามาเริ่มจากภาษากลุ่ม dynamic อย่าง Python, Javascript ก็ได้ พอเลือกภาษาในดวงใจได้แล้ว ก็ฝึกเขียนโปรแกรมทุกวัน จนเมื่อเขียนได้คล่องๆ คราวนี้การทำความเข้าใจกับภาษาแปลกๆ หรือแนวที่ไม่ถนัดก็จะง่ายขึ้นมากแล้ว ที่สำคัญคือ logic ของโปรแกรม อันนี้ต้องเป๊ะ พยายามเรียนรู้เทคนิคต่างๆ stackoverflow คือเพื่อนซี้เลยครับ
แล้วก็สุดท้าย ไม่มีคำว่าสาย ถ้าตั้งใจจริงครับ
ก็ขอขอบคุณพี่ lew และพี่ mk ทีทำให้โครงการนี้เกิดขึ้น ขอบคุณคุณ pittaya, wiennat, sukoom2001 และคุณ saknarak สำหรับคำแนะนำโปรเจค คุณ mr_tawan, AlninlA, javaboom และทุกๆ ท่านสำหรับกำลังใจ และที่ขาดไม่ได้ ก็ขอบคุณอลงกต ประกอบกิจที่ช่วยให้คำแนะนำโปรเจคเยอะแยะเลยครับ