Tuesday, April 20, 2010

Camp Framework

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

ปัจจุนบันมีนักศึกษา Computer Science จบใหม่ขึ้นมาทุกปี ปีละจำนวนไม่น้อย แต่ละคนมีความฝันเหมือนกันคือ "อยากเก่ง" , "อยากมีรายได้ต่อเดือนเยอะ" หรือไม่ก็ "อยากมีความก้าวหน้าและมั่นคงทางการงาน" ครับ แต่!!~ ทำอย่างไรล่ะ ทำยังไงถึงจะเป็นแบบนั้นได้

จากคำถามนี้อาจทำให้หลายคนสนใจในบทความนี้ขึ้นมาไม่น้อยใช่มั้ยครับ เชื่อหรือไม่ว่าคุณสามารถทำงานเพียงแค่ 1 ปี แล้วสามารถอัพเงินเดือนได้ถึง 10,000+ บาทในการสมัครงานครั้งใหม่ได้ ก่อนอื่นผมขอออกตัวก่อนนะครับว่าผมไม่ใช่คนเก่ง คนรวย หรือ ประสปความสำเร็จทางด้านการงานมากมายแต่อย่างใด ผมแค่ต้องการจะแบ่งปันมุมมองส่วนตัว (โปรดใช้วิจารณญาณ) ให้โปรแกรมเมอร์รุ่นใหม่ (กว่า) ได้ลองดู Framework นี้ครับ


Camp Framework

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

ลองมาดูนี่ครับ Framework นี้เน้นการทำงานไปทางด้านการพัฒนาซอร์ฟแวร์ระดับ Enterprise โดยเฉพาะ Java สำหรับเด็กที่จบใหม่หรือนักศึกษา Computer Science ที่กำลังเรียนอยู่แล้วต้องการเตรียมตัวออกมานอกกะลานะครับ

Main Concept ของ Framework ตัวนี้ว่าด้วยเรื่องของการแสวงหาความรู้แบบ Optimal และใช้ควรจะใช้เวลาที่จะทำให้สำเร็จภายใน 1-3 ปีแล้วแต่ความขยัน (ผมก็ยังทำได้ไม่หมด) ก่อนอื่นต้องสร้างทักษะพื้นฐานเพื่อใช้ในการพัฒนาตัวเองภายในเวลาอันรวดเร็วครับ ซึ่งผมจะแบ่งเป็น 2 ด้านคือ Technical และ Non-Technical ซึ่งทั้ง 2 ส่วนมีความสำคัญมากไม่แพ้กันเลย ต้องยอมรับว่า Software Developer ที่ไม่มีทักษะทางด้าน Non-Technical (Soft Skill) เลยจะประสปความสำเร็จได้ช้ากว่า ดังนั้นผมจึงได้บูรณาการ Skill ที่จำเป็นเข้ามารวมไว้ด้วยกันครับ

ทักษะด้าน Technical

  • พื้นฐานด้าน Project Management
  • พื้นฐานด้าน Requirement Management
  • พื้นฐานด้าน Software Quality หรือ Quality Assurance
  • พื้นฐานด้าน CMMI, Agile, Extreme Programing (XP)
  • พื้นฐานด้าน ภาษา Programing พื้นฐาน
  • พื้นฐานด้าน Object Oriented Programing
  • พื้นฐานด้าน UML
  • พื้นฐานด้าน Web-Base Application Development และ HTTP
  • พื้นฐานด้าน Design Pattern
  • พื้นฐานด้าน Database Design
  • พื้นฐานด้าน Software Architecture
  • พื้นฐานด้าน Opensource
  • พื้นฐานด้าน Internet และ Application Security
  • พื้นฐานด้าน Architecture Framework
  • พื้นฐานด้าน Web Services, Service-Oriented Architecture

ดูแล้วมึนตึ้บใช่มั้ยครับ แต่นี่คือพื้นฐานเบื้องต้นในการประกอบอาชีพของท่าน (ก็ท่านจะเป็น Programmer ไม่ใช่หรอ) และยังต้องหาเพิ่มเติมหากท่านคิดจะยึดอาชีพสายนี้ต่อไป เพราะรู้หรือไม่ว่าเทนโนโลยีใหม่นั้น เกิดขึ้นทุก 2 ปี นั่นแปลว่า ถ้าท่านเริ่มเข้ามาเรียน Computer Science ใหม่ ประมาณปี 3 ท่านจะตกยุคถ้าท่านไม่หาความรู้เพิ่มเติม ซึ่งนี่คือ Nature ของผู้ที่ทำงานสาย IT ครับ ไม่ใช่เรื่องแปลก ดังนั้นท่านควรจะสะสมความรู้ตามที่ผมได้ List ให้ได้ภายในเวลา 1-3 ปี และที่สำคัญที่สุด ไม่ใช่แค่รู้อย่างเดียวควรจะเข้าใจและทำเป็นด้วย ถามว่าทำไมต้องรู้เยอะขนาดนี้ บางคนรู้น้อยกว่านี้ตั้งเยอะทำไมถึงเป็น Programmer ได้ล่ะ คืออย่างงี้ครับ ผมมักจะเปรียบการพัฒนา Software ให้เพื่อนหรือน้องฟังว่ามันคล้ายกับการสร้างตึกโดยสามารถแบ่งหน้าที่หลักได้เป็นระดับเรียงจากล่างขึ้นบนเฉพาะสาย Technical ได้ดังนี้ครับ

  • Software Developer / Programmer = กรรมกร
  • Software Engineer = วิศวะกร
  • System Analyst = สถาปนิก
  • Project Manager = ผู้รับเหมาก่อสร้าง

ถ้าทุกคนมองอุตสหกรรมการพัฒนา Software เป็นภาพนี้แล้วนั้น จะเป็นคำตอบของหลายคำถามได้อย่างดีครับ ถามว่าถ้าผมเป็นผู้รับเหมาแล้วผมต้องการจะจ้างกรรมกรซักคน โดยปกติแล้วการจ้างงานจะมี Normal Rate หรือ ฐานเงินเดือนปกติครับ แต่ถ้าท่านอยากได้เงินมากกว่ากรรมกรคนอื่นล่ะ จะทำยังไง คำตอบง่ายมากครับ "ท่าต้องโดดเด่นกว่ากรรมกรคนอื่น" เพราะพวกเค้าคิดตามแบบ ROI (Return of Invesment) ครับถ้าใช้เงินลงทุนมากเค้าก็คาดหวังที่จะได้ผลตอบแทนมากเช่นกัน การที่เราจะสามารถสร้างมูลค่าทางความสามารถให้กับตัวเองให้กับตัวเองสามารถทำได้ โดยผมใช้หลักแนวทางดังต่อไปนี้ครับ

  • หนังสือเล่มหนา ผมไม่จำเป็นต้องอ่านหนังสือทุกหน้า แต่เน้นลองสร้างโจทย์แล้วลองทำดู เมื่อติดจึงเปิดหาวิธีแก้
  • ผมใช้เวลาวันละ 10-30 นาทีในวันทำงานเพื่อศึกษาเทคโนโลยีเพิ่มเติมจากงานประจำที่ทำ บางคนอาจมองว่า อ่าว!!~ ไอ่นี่อู้งานนี่หว่า แต่นี่คือวิธีสร้างองค์ความรู้ใหม่ให้กับตัวเองอีกทั้งองค์กรยังอาจจะได้ใช้ประโยชน์จากจุดนี้ไม่น้อยเลยทีเดียว
  • ผมอัพ Blog โดยใช้ความรู้เทคโนโลยีที่ได้อ่านมาจากข้อข้างบนแล้วเรียบเรียงบวกกับใส่ความคิดเห็น มุมมอง และทัศนะคติส่วนตัวเข้าไป เพื่อเป็นการทวนและ กระตุ้นให้สมองได้วิเคราะห์อยู่ตลอดเวลา
  • ผมขยันถามและตอบในกระทู้ Technical Forums ซึ่งนั่นเป็นการกระตุ้นให้ผมไม่เฉื่อยจนเกินไป การตอบกระทู้จะทำให้เรามองเห็นปัญหา ข้อดี และ ข้อเสีย ของเทคโนโลยีมากขึ้นอีกทั้งยังเป็นการกระตุ้นให้เราพยายามหา Solution ในปัญหาบางอย่างที่เราตอบไม่ได้
  • รับงานสอนหนังสือหรืองานอาชพอิสระบ้างตามโอกาส แต่ต้องรู้จักเลือกงานครับ เลือกเฉพาะงานที่เสริมทักษะ ความรู้ หรือ Connection ไม่ใช่เพื่อเงินอย่างเดียว ไม่เลือกงานยาวจนผูกมัดตัวเองจนเกินไป
  • เน้นหาประสปการณ์ที่หลากหลาย อย่าตกเป็นสาวกของเทคโนโลยี พยายามมองว่าเทคโนโลยีเป็นเพียงเครื่องมือในการประกอบอาชีพเท่านั้นดังนั้นท่าจึงควรขยันของานที่หลากหลายจากหัวหน้างานเพื่อสร้างทักษะและประสปการณ์ให้กับตัวเองได้รู้จักเครื่องมือใหม่ ที่ท่านสามารถนำมาประยุกต์ใช้กับงานหลากหลายแขนงได้อย่างมีประสิทธิภาพ

ทักษะด้าน Non-Technical

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

ก่อนอื่นต้องหาเป้าหมายของตัวเองให้เจอครับ วาง Career Path ให้ชัดเจนแล้วมุ่งเป้าไปให้ได้ ผมมักจะตั้งเป้าหมายทั้งระยะสั้นและระยะยาวให้กับตัวเอง เป้าหมายระยะยาวก็เช่น ภายในเวลาไม่เกิน 2 ปี ผมจะต้องเป็น Software Engineer ให้ได้อะไรประมาณนี้ ส่วนเป้าหมายระยะสั้นก็เช่น ภายใน 1 เดือน ผมต้องศึกษาและทำความเข้าใจเกี่ยวกับ EJB ให้ได้ หรืออะไรทำนองนี้ การตั้งเป้าหมายจะทำให้เราไม่เฉี่อยต่อการดำเนินชีวิตจนเกินไป แต่ก็ไม่ใช่ตั้งจนบีบตัวเองมากเกินไปนะครับ เดี๋ยวจะหมดไฟในการทำงานซะก่อนตั้งแบบพอดีแต่ค่อนข้างเบนไปทางบีบนิดหน่อย เว้นช่องใว้ให้เวลาส่วนตัวบ้างตามสมควร

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

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

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

Note : เขียนไม่ค่อยรู้เรื่องเท่าไหร่ เดี๋ยวเอาไว้ว่างค่อยมาเรียบเรียงใหม่

2 comments:

  1. ขอบคุณนะคะ จะทำให้ได้บ้าง

    ReplyDelete
  2. คนๆนี้ไม่ธรรมดาจริงๆ.. หุหุ ^-^

    ReplyDelete