Wall of Text #4: ทำ Project อะไรดี

เวลาจะเรียนโปรแกรมมิ่ง คำแนะนำเราคือทำ project เยอะๆ แล้วมันจะเก่งขึ้นเร็วมากกว่านั่งทำโจทย์ไปเรื่อยๆ

น้องเค้าบอกว่า ไม่รู้จะทำอะไรดี คิดจะทำอะไรก็มีคนทำไปหมดแล้ว…

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

แต่จุดสำคัญคือ มันทำให้เราใส่ความคิดของเราเข้าไปด้วยได้

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

  • แชตตัวแรกๆ น่าจะเขียนเป็นส่วนหนึ่งของ project เกมออนไลน์ ฟีเจอร์ไม่มีอะไรคือพิมพ์คุยกันได้เฉยๆ
  • ตัวถัดมาถ้าจำไม่ผิดจะลองทำ Encrypted Chat โดยเอา AES มาเข้ารหัส end to end บน server จะไม่สามารถอ่านข้อความได้
  • แชตตัวที่สามเอามาจากที่มีคนปล่อยไว้ในเว็บ Zone-IT แต่เราเอามา modify เพิ่มฟีเจอร์หนักมากๆ มี Bot แบบ IRC
  • แชตตัวที่สี่อยู่ในเกมออนไลน์เหมือนกัน แต่มันเป็นส่วนหนึ่งของ Realtime ของเกมซึ่งทำให้เห็น player อื่นเดินในเกมได้ด้วย, แชตแยกตามแมพได้ และ GM สามารถใช้ command ประกาศ global message ได้
  • แชตตัวที่ห้าใช้ในวิทยุออนไลน์ของโรงเรียน ตัวนี้เขียนเร็วๆ ตั้งชื่อพิมพ์ข้อความได้แค่นั้น ถ้าจำไม่ผิดตัวนี้เป็นครั้งแรกที่เขียนระบบแสดงชื่อคนออนไลน์เอง
  • แชตตัวที่หกเกิดจากมีคนป่วนแชตตัวข้างบน เลยเขียนใหม่ให้มีระบบ Login ที่แน่นหนาขึ้น รวมถึงสามารถ Login โดยใช้ username/password ฐานข้อมูลนักเรียนได้ด้วยถ้าไม่มี Social login

คือขนาดแชตซึ่ง scope จริงๆ มันเล็กมากแต่เราสามารถ innovate ให้เข้ากับการใช้งานได้หลายรูปแบบ


นอกจาก Chat แล้ว ในสมัยที่เราหัดเขียนเว็บนั้นก็จะมี script PHP แจกฟรีอยู่หลายประเภท เช่น Guestbook, Login, Webboard, Blog/Diary ตอนนั้นก็คิดว่าทุกประเภทที่เรามีเหตุต้องใช้ก็น่าจะเคยเขียนเองหมดแล้ว แต่ขาดอยู่ประเภทเดียวคือ Web board เพราะเป็นระบบใหญ่มาก

คำถามเราตอนนั้นเหมือนกับคำถามที่น้องถามเรา มันค้างอยู่เป็นปีว่าถ้าเราเขียนยังไงมันก็ไม่ดีเท่า Script ที่มีแจกฟรีอยู่แล้ว แล้วเราจะเขียนทำไม?

ก็ใช้เวลาอยู่เป็นปีเหมือนกันกว่าจะค้นพบคำตอบ และคำตอบนั้นคือเราจะสร้าง Webboard แนวคิดใหม่ในเว็บ menome

ไอเดียตอนนั้นได้แรงบันดาลใจจากกระทู้รีพอร์ทที่จะต้อง Refresh ติดตามตลอดเวลา (เหมือน Live blogging สมัยนี้) รวมถึงเว็บ Siamzone ที่มีกระทู้ประเภทห้องแชต เราก็เลยคิดว่าถ้าอย่างนั้นเราน่าจะเอาข้อดีทั้งระบบ Chat และ Web board ไปรวมกัน นั่นคือ

  • เป็นระบบ Web board ที่ update Realtime เหมือนแชต
  • เป็นระบบ Chat ที่ Persistent เหมือน Web board พิมพ์แล้วไม่หายไป ย้อนอ่านได้ตลอด

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

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

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

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

ที่เล่านี่ก็คือไม่ว่ามันเวิร์คหรือไม่เวิร์คเราก็ยังภูมิใจกับไอเดียนี้นะ ที่ไม่ใช่แค่คิดแต่ได้ทำ Proof of Concept จริงๆ ด้วย