แสดงบทความที่มีป้ายกำกับ ประสบการณ์ แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ ประสบการณ์ แสดงบทความทั้งหมด

วันศุกร์ที่ 8 กรกฎาคม พ.ศ. 2559

Deploy to Production Environment แบบประหยัด

ก่อนอื่น ขอบอกก่อนนะครับว่าบล็อกนี้ #สาระ #GeekAlert

เรื่องของเรื่องคือ มีโอกาสได้ไปวางระบบคอมให้กับคลินิก จึงเป็นที่มาของบล็อกนี้ คือจะเน้นเล่าประสบการณ์ ว่าการเอาระบบ IT เข้าไปใช่ในคลินิกที่ไม่ใหญ่มากเนี่ยมันเป็นยังไงนะครับ



.

.
.
.
.
เชิญบพพบกับบล็อกไร้สาระในท้องเรื่องงงงงงงง 

Deploy to Production Environment แบบประหยัด


เพื่อการโฆษณาแบบเปิดเผย กรุณาเยี่ยมชม Facebook page คลินิกหมอศุภโชค เท้า ข้อเท้า พิษณุโลก โทร 086-3433714 นี่ไม่ได้ค่าโฆษณาอะไรเลยนะ



คลินิกหมอศุภโชค เท้า ข้อเท้า พิษณุโลก โทร 086-3433714



OK ละ เข้าเรื่องของ Developer ดีกว่า ขอเริ่มจาก



Requirement

เรื่องนี้ไม่ใหม่ แต่ก็ไม่ง่าย สำหรับเรื่องความต้องการของระบบ ก็ตามมาตรฐานชายไทยหน้าตาดี ที่ระบบจะยึดหลัก CAP (Consistency, Availability, Partition tolerance) [1] คือ


  • Consistency ข้อมูลจะต้องถูกต้อง ตรงกันเสมอ
  • Availability ระบบต้องพร้อมใช้งานได้แทบจะตลอด (ภายใต้เงื่อนไขที่เป็นไปได้สูงสุด)
  • Partition tolerance ระบบจะต้องแยกกันทำงานได้อิสระ (ภายใต้เงื่อนไขที่เป็นไปได้สูงสุด)

ทีนี้เราได้หลักการละ ต่อมาสิ่งที่ต้องพิจารณาคือสภาพแวดล้อมจริง ก็ต้องมี Software ที่เอาไว้จัดการคลินิกนะครับ ไม่มีไม่ได้นะ ต้องเอาแบบที่ทำงานได้แบบไม่ Standalone ด้วยนะ ระบบจะได้มีความคล่องตัว ซึ่งก็บังเอิญมากๆ ที่มีโปรแกรมที่ชื่อว่า "Win Clinic" ที่นี่ เค้าทำมาได้ OK เลยนะ แยกตัว Database มาให้เสร็จ ก็สำเร็จไป 1 ละ

ต่อไปก็จะเป็น เรื่อง Hardware ละ อันนี้นี่เรื่องใหญ่ ใหญ่ระดับ ดาวพฤหัสเลยครับ มันคือ Database Server เพราะต้องเลือกว่าจะวาง Database Server ไว้ที่ไหนดี ระหว่าง บน Cloud หรือ บน Local เพราะแต่ละอย่างก็มีข้อดีข้อเสียต่างกันไปประมาณนี้


... Cloud Local
Consistency ไม่ต่างกัน ไม่ต่างกัน
Availability เน็ทไม่มี ก็จบ Server พังก็จบ
Partition tolerance ไม่ต่างกัน ไม่ต่างกัน

จะเห็นได้ว่า ถ้าเราเลือก Cloud ปัญหาเราจะขึ้นกับ Internet เป็นหลัก แต่ถ้าเราเลือก Local เราจะเจอปัญหาเรื่อง Maintenance แทน ซึ่งก็นะคำตอบมันชัดอยู่แล้ว ว่าถ้า 
Internet เสีย ก็แค่โทรเรียกมาก็แก้ได้ แต่ถ้า Database Server เสีย เรียกใครดี? ชัดนะ

สรุปว่า เลือก Cloud เพราะดูแลง่ายกว่าครับ (การตัดสินใจแบบมีอคติ)

แล้วพวกเครื่องที่เป็น Client ล่ะ? เอาแบบไหนดี Notebook ดีมั้ย, All in One PC ดีมั้ย หรือเอาพวก mini PC ดีล่ะ อันนี้ก็เน้นเรื่อง Maintenance เหมือนเดิม เลือก mini PC ที่เป็นแบบ Stick [2] [3] เพราะมันง่าย ง่ายทั้งเรื่องพังแล้วหาอะไรมาทดแทนได้ง่าย ดูแลง่าย เคลื่อนย้ายง่าย แล้วก็ไม่มีปัญหาเรื่องระบบ Network มากนัก เพราะมันมีระบบ Wireless ในตัวอยู่แล้ว และที่สำคัญมี Windows ลิขสิทธิ์ติดตั้งมาด้วยเรียบร้อยแล้ว


มาถึงตรงนี้ก็คิดว่าครบแล้วนะ ไม่น่าจะมีปัญหาอะไรมากมาย แต่ๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆ ก็ต้องคิดเรื่อง Network ภายในก่อน เพราะถึงแม้ จะมี Wireless Modem Router ของ 3BB มาแล้ว แต่ถ้า Internet หายไป ก็... ใช้มือถือทำเป็น Hot Spot ใช้งานไปก่อน ก็รับได้นะ ไม่ซับซ้อน แล้วก็แก้ปัญหาได้ ที่เหลือก็จะเป็นเรื่องของ คลื่นความถี่ที่ 2.4GHz ละ อันนี้จะหนีไป 5GHz ก็ยังไม่ได้เพราะยังมีอุปกรณ์ที่วิ่งได้บน 2.4GHz เท่านั้นอยู่ ซึ่งก็ดันโชคดีที่ตึกเราเมพ 

"คลื่นในไม่ให้ออก คลื่นนอกไม่ให้เข้า" Yes!



Implementation

ต่อมาก็ลงมือทำ เราเริ่มต้นที่ Internet ก่อน จากการสำรวจและมโนเอา พบว่า ในแถบพิษณุโลก เราเลือก 3BB เพราะเมพสุดละ ถึงราคาจะไม่ถูกสุด และมีระบบ Internet Backup คือ DTAC 4G หรือ TRUEMOVE H 4G แล้วแต่กรณี


เราโชคดีที่เรามี Database Server พร้อมใช้อยู่แล้ว เป็น MySQL นะ เพราะโปรแกรม Win Clinic เค้าใช้ MySQL อันนี้เลือกไม่ได้ เพราะฉะนั้นก็เบาแรงในส่วนนี้ไปได้ เอาไฟล์ SQL ที่เค้าเตรียมให้มา Import เข้าไปก็พร้อมใช้งานได้เลย

ต่อมาก็จัดการ Install โปรแกรมจนครบก็ใช้งานได้
.
.
.
ตู้มมมมมมมมมมมมมมมมมมมมมมม
.
.
.
ทำไมโปรแกรมมันช้าจัง ก็นะเอา .Net3.5 เขียนมันก็คงเร็วได้ประมาณนี้ บวกกับ ตัว CPU ของเรามันก็แค่ Atom ตัวน้อยๆ จริงๆแล้วมันก็ช้าแค่โหลดครั้งแรกนี่แหละ หลังจากนี้ก็ไม่ใช้ละนะ












แล้วไงต่อ?


ก็เสร็จแล้วนี่นา เปิดคลินิกได้แล้ว เย่!




สรุปค่าใช้จ่าย

เน็ท เดือนละ 631 กับแรกเข้า 3500 เป็น 4200 ละกัน
คอม Intel Compute stick อันละ 5500 ซื้อเอง 1 ได้มาฟรี 1 อัน เป็น 5500
จอคอม 9900 + 4500 = 14400 
เม้าส์ กับคีบอร์ด ฟรี เพราะใช้ของเก่า


รวมเป็น 4200 + 5500 + 14400 = 24100

ก็แอบแพงนะ แต่ก็ถือได้ว่าไม่แพง งงมั้ย


----------------------- ตัดจบ -----------------------

 
อ้างอิง

[1] https://en.wikipedia.org/wiki/CAP_theorem
[2] http://www.thailand.intel.com/buy/th/th/product/desktop/intel-stk1aw32sc-507158
[3] http://www.thailand.intel.com/buy/th/th/product/desktop/intel-boxstck1a32wfc-472459

วันศุกร์ที่ 18 กรกฎาคม พ.ศ. 2557

GitHub 3 times โย่



GitHub 3 times โย่


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






มาเริ่มกันที่ GitHub คืออะไร

GitHub คือ 1 ใน Git
แล้ว Git คืออะไร เอาง่ายๆมันคือ Version Control 

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

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



OK เข้าเรื่อง GitHub ดีกว่า

เจ้า GitHub เวลาทำงาน มันก็จะคุมไฟล์ที่เราเลือกไว้ จะไฟล์เดียวหรือหลายไฟล์ก็ได้ เราเรียกทั้งก้อนของไฟล์ที่ GitHub คุมว่า Repository ก็เข้าใจง่ายๆว่าอะไรก็ตามที่อยู่ใน Repository เจ้า GitHub ดูแลให้หมด

ความเจ๋งของ GitHub คือความสามารถ Offline เราสามารถ Commit ได้ในขณะที่ไม่ได้ Online แล้วค่อยไป push แล้วตัว GitHub จะทำการ Merge ส่วนที่เราแก้ไข เข้ากับส่วนของคนอื่นให้เองเลย แต่ถ้ามันงงว่าจะ Merge ยังไงดี มันจะถามเราว่าจะ Merge ยังไง

พอเรารู้ว่ามีคนอื่นมาแก้ไขไฟล์เราก็ pull ลงมา ถ้าไฟล์ที่ pull ลงมามันมีส่วนที่แก้ไข เจ้า GitHub จะทำการ Merge ให้เอา และแน่นอนถ้ามันงง เราก็ต้อง Merge แบบอัตโนมือนะ





Commit, Push, Clone, Merge, Pull
คำเหล่านี้น่าจะเป็นคำหลักๆ ที่ใช้บ่อยๆๆๆๆๆๆๆๆๆๆ มาก ถามว่ามากขนาดไหน ก็เอาเป็นว่าขนาดใช้ Tool แบบ GUI ก็ยังจำได้แบบไม่ยาก





ทีนี้ในเรื่องการใช้งาน

จริงๆแล้วการใช้งาน GitHub จะทำผ่าน Command Line ซึ่ง.....(เข้าใจตรงกันนะ)....
มันก็เลยต้องมีคนทำ Tool ออกมาเป็น GUI ให้ใช้ง่ายๆๆๆๆๆ ขั้นตอนก็ไม่มีอะไรมาก ลองฝึกในเว็บของ GitHub ให้พอเห็นภาพ Commit, Push, Clone, Merge, Pull แล้วก็ใช้ Tool ได้เลย ไม่ยาก เมื่อเทียบกับการหัดใช้ Java หรือ obj C แน่นอน

ตัว Tool ที่เป็น GUI ก็มีทั้งของ GitHub เอง และของเจ้าอื่นๆอีกมากมาย เลือกใช้ได้ตามสะดวกเลยทีเดียว


ใช้ได้ฟรีมั้ย

เจ้า GitHub เนี่ย ใช้ฟรีครับ ฟรี ฟรี ฟรี แต่..... อะไรที่เราเอา Repository ไปฝากไว้กับ GitHub มันจะ Publish นะ ถ้าอยาก Private ต้องเสียเงิน

แต่ แต่ แต่ เราสามารถเปิด Server เองได้ ด้วย GitLab (คนเจ้ากับ GitHub นะ)  เท่าที่รู้ตัวที่ดังที่สุด คือ www.gitlab.com นี่แหละ



ภาคปฏิบัติ

สำหรับ Tool ที่ใช้กับ GitHub เราก็ใช้ Tool ของ GitHub นี่แหละง่ายดี (จริงๆแล้ว มีหลายตัวมาก แต่เลือกไม่ถูก เลยเอาตัวนี้) แต่ว่าหน้าตาของ Tool ที่รันบน Mac กับ Windows มันจะแตกต่างกันนิดๆ แต่ก็เข้าใจได้ไม่ยาก

หลักการใช้งานคือถ้าเรามีโปรเจ็คของเราอยู่แล้วเป็น Folder แล้วเราต้องการเอา Folder ขึ้นบน Repository เราก็จะต้องสร้าง Repository ขึ้นมาใหม่ โดยชี้ Path ไปที่ๆ Folder งานของเราอยู่ แล้วตั้งชื่อ Repository ให้ตรงกับ Folder งานของเรา แล้วตัว Tool จะอ่านไฟล์ทั้งหมดภายใต้ Folder งานของเรา แล้วเราก็จัดการ Commit + Push ได้เลย แต่ต้องไม่ลืมที่จะใส่ข้อความกำกับการ Commit ด้วยนะ ไม่งั้นมันจะไม่ยอม Commit

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


ที่นี้ เรามาดูหน้าตาของ Tool กัน เริ่มที่



Mac OS

โหลดที่ https://mac.github.com/
จะเห็นว่า ใน Repository นี้ (mac.github.com) มีการ Commit โดยคนหลายคน หลายครั้งที่ผ่านมา และยังสามารถบอกได้ว่า การ Commit ครั้งนี้มีอะไรที่เปลี่ยนแปลง






Windows

โหลดที่ https://windows.github.com/
เนื่องการที่คือโปรแกรมที่เอาไว้ใช้งาน GitHub ถึงแม้จะรันบน OS ที่ต่างกัน แต่ความสามารถมันก็แบบเดียวกันนี่แหละ แต่สังเกตุมั้ยว่า หน้าตาโปรแกรมตัวนี้ออกแบบมาตาม Modern Design ที่ Microsoft ภูมิใจนักหนา เดะๆเลย จะว่าไป นี่เป็นโปรแกรมตัวแรกเลยนะ ที่เป็น Modern รันบน Desktop โหมด ธรรมดาได้ ที่ผู้เขียนได้ใช้ (ปกติ App ที่เป็น Modern จะบังคับให้รันใน Modern โหมด)





มาถึงตรงนี้แล้ว

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

บทความนี้ได้แรงบรรดาลใจจาก
@nuuneoi - http://nuuneoi.com/blog/blog.php?read_id=704

วันอังคารที่ 22 เมษายน พ.ศ. 2557

20 ปี สู่เส้นทาง Software Developer

blog นี้ไม่มีอะไรมาก ก็แค่อยากจะบันทึกเรื่องราวเอาไว้เฉยๆ เอาแค่ที่สนใจทางด้าน Software พอ ด้าน Hardware ไว้ทีหลัง

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

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

พอขึ้นประถม 4 เริ่มปีกกล้าขาแข็ง เสาร์-อาทิตย์ นั่งรถไฟออกจากบ้าน 7 โมงเช้า ไปเรียนคอมที่พิโลก( Siam Computer) ตอนนั้นจำได้เลยว่า ไม่ค่อยรู้เรื่องอะไรหรอก ก็มีโปรแกรมแนวๆ word excel fox-pro พวกนี้ ก็เรียนไป เรียนเสร็จประมาณ บ่าย 3 ก็ไปเที่ยวท็อปแลนด์ รอรถไฟกลับบ้านประมาณ 5 โมงเย็น ก็ซักปีกว่าๆได้ ไปมันทุกเสาร์อาทิตย์

ช่วงตั้งแต่ประถม 4 จนถึง มัธยม 3 ก็ไม่ค่อยมีอะไรมากเน้นเล่นเกมเป็นหลัก จนช่วงปิดเทอร์มใหญ่ ขึ้นมัธยม 4 นี่แหละที่ได้ไปเรียนพิเศษที่กรุงเทพ (ที่จริงคือโดนบังคับไปสอบเตรียมอุดม แต่ไม่ค่อยอยากไป  เลยขอเรียนพิเศษ) ก็ไปลงเรียน HTML กับ JavaScript ที่ Siam Computer แถวๆสยาม ก็ ok อ่ะ เด็กบ้านนอกเข้ากรุงฯ (เอาซะใจกลางกรุงฯเลยด้วย) ก็นะเรียนเสร็จก็ไปนั่งเล่นชมวิวแถวน้ำพุ (ตอนนี้เป็นห้าง Digital Gateway ไปซะแล้ว) ได้ความรู้มานิดๆหน่อยๆ สะพานเหล็ก สะพานพุทธ คลองถม บ้านหม้ออยู่ตรงไหน จตุจักรอยู่ไหน เซ็นทรัลลาด ฟิวเจอร์รังสิต พันทิพย์ ไปมาหมด (ไม่เกี่ยวกับ HTML รึ JavaScript ซักอย่าง)

พอขึ้น มัธยม 4 ก็ได้ไปแข่งงานศิลปะ... (จำชื่อเต็มไม่ได้แล้ว) ผลคือระดับจังหวัดมันก็สบายๆอยู่ แต่พอผ่านไประดับภาคนี่ ทำไมเค้าเก่งกันจังหว่า เก่งชนิดที่ว่าเทพเลย (คือตอนนั้นรู้สึกแบบนั้นจริงๆ) ก็เลยเริ่มหาหนังสือด้าน Programming มาอ่าน ไม่รู้ท่าไหน ไปหยิบได้ ภาษา C มา ก็งงซิ อ่านยังไงก็ไม่เข้าใจ ก็พอดีว่าอาจารย์สอนคอม บางทีพอดีเวลาว่างก็สอนเรา ไอ้เราก็ได้มั่ง ไม่ได้มั่ง ตามเรื่องตามราวไป

แล้วพอดีว่าช่วงงานวันวิทย์ที่ ม.นเรศวร เค้ามีแข่งเขียนโปรแกรม แน่นอนเราไม่พลาดถึงแม้จะไม่ค่อยรู้เรื่อง ผลคือ เค้าให้โจทย์ว่า ให้ทำตัวเดินหมากฮอส(ตัวม้า) ว่าถ้าอยู่ที่ช่อง (x,y) จะเดินไปที่ไหนได้บ้าง แล้วพอเดินไปช่องนั้น จะเดินไปไหนต่อได้อีก โอ้ววววววว คิด Algorithm ได้นะ แต่ code เป็น C ไม่สำเร็จ จำไม่ได้ละว่าทำไมถึงไม่สำเร็จ

จากความสำเร็จ(?)ในตอนที่ไปแข่งที่ มน. ก็เป็นแรงผลักดันให้สนใจด้านคอมมากขึ้น ก็เริ่มแบ่งเวลาจากการเล่นเกมมาศึกษามากขึ้น พอช่วงปิดเทอร์มขึ้น ม.5 มันมีแข่งทำเว็บวันแม่ โดย CITCOM มน. ก็ส่งแข่ง ผลคือ ได้ที่ 2 คุยโมไปได้ 7 วัน 7 คืน 555

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

พอขึ้น ม.6 ช่วงนี้ติดสาว ก็ไม่มีอะไรมาก จนมาเรียนระดับมหาวิทยาลัย ชั้นปีที่ 1 วิชา Introduction to Computer อันนี้แหละที่ได้เรียนรู้อะไรใหม่ๆหลายๆอย่าง กับวิชา Introduction to Programming ที่เรียกได้ว่าทุ่มสุดตัว

พอขึ้น ปี 2 มีเรียน OOP โอ้วโลกนี้มันช่วงกว้างใหญ่นัก ไหนจะวิชา Web ที่เรียกได้ว่าถนัดที่สุด ที่สำคัญ ปีนี้เป็นปีแรกที่ได้แข่ง Debug โปรแกรม ก็นะ ใครก็ไม่รู้หน้าตาเอ๋อๆมึนๆ แข่งครั้งแรก ชนะเลิศครับ คุยแม่งเป็นเดือนกว่าจะหายเห่อ

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

หลังจากนั้นร้อนวิชาไปแข่งอะไรซักอย่างในกรุงเทพฯ ผลคือแพ้เยินเลย เจ็บใจสุดๆตอนนั้น ก็เลยตั้งอกตั้งใจเรียนมากขึ้นในช่วง ปี 3-4 ก็มาถึงปลายทางชีวิตในมหาวิทยาลัยละ เน้นเอาดีทาง Java กับ Web สุดท้ายผลจากการตั้งใจเรียนมากขึ้น เกรดจบ ป.ตรี เลยพ้น 3 มาได้ แบบเฉียดฉิว

หลังจากเรียนจบ ช่วงนี้หลุมดำ แต่ก็ได้หัดๆ Android บ้าง เล็กๆน้อยๆ เข้างานนั่นนุ่นนี่อย่างพวก barcamp, google devfest และที่สำคัญที่สุดเมื่อปี 56 ได้มึนๆไปเข้า Startup Camp ที่ ม.กรุงเทพ กล้วยน้ำไท ตอนแรกก็ไม่รู้หรอกว่ามันเป็นยังไง รู้แต่ว่าถึงเวลาที่จะต้องทำอะไรใหม่ๆ ต้องเปลี่ยนแปลงได้แล้ว ก็ไป ผลคือ ได้รู้ว่าถึงเราจะไม่เก่งมากนัก แต่ก็ไม่ได้ปลายแถวนะ ถ้ามีแรงผลักดันในตัวเองมากพอ อะไรๆเราก็ทำได้ ถึงจะไม่ได้ผลดีมากนัก แต่ก็ ok อยู่ ไม่ขี้เหร่

อ้าว ข้ามจุดสำคัญไป เมื่อ ปี 2555 ได้กลับไปเริ่มเรียนโท ที่ มน. ที่เดิมที่จบตรีมา ทำไมเลือกที่นี่น่ะหรอ ใกล้บ้านคือคำตอบเลย แต่ว่าไม่ได้เรียน Com Sci แบบตอน ป.ตรีแล้วนะ รอบนี้ เรียน IT เพราะว่าความขี้เกียจในตัวมีเยอะ กลัวจะเรียนไม่จบเอา ความรู้สึกในการเรียนรอบนี้ส่วนใหญ่ คือ เหมือนไปนั่งทบทวนสิ่งที่รู้แล้ว กับเติมเต็มส่วนที่ขาดหายไป แต่ถึงอย่างนั้นก็ได้อะไรใหม่ๆมาหลายอย่างอยู่

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

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


to be the Great Software Developer

ปล. บรรยากาศตอนเรียนตรี กับโทที่ภาควิชาต่างกันมาก ตอนนี้มีกิจกรรมทางวิชาการเพิ่มมาเยอะมาก มีวิทยากรมาบรรยาย และทำ workshop ถี่กว่าเมื่อก่อนมากเลย

วันพฤหัสบดีที่ 1 พฤศจิกายน พ.ศ. 2555

ประสบการณ์ 26 ปี


พอดีว่า blognone เค้าทำ [Ask Blognone] คณะหรือสาขาทางสายไอทีของท่านศึกษาเกี่ยวกับอะไรบ้าง? ก็เลยไปตอบไว้ด้วย ก็เอาเฉพาะของตัวเองมาลงไว้อีกที่ เผื่อว่าจะเป็นประโยชน์มากขึ้น


1. กำลังศึกษาอยู่ในคณะ/สาขาใด มหาวิทยาลัยใด
ป.ตรี(2547-2550) - วิทยาการคอมพิวเตอร์(Computer Science) มหาวิทยาลัยนเรศวร
ป.โท(กำลังศึกษา) - เทคโนโลยีสารสนเทศ(Information Technology) มหาวิทยาลัยนเรศวร
2. เนื้อหาที่ได้ศึกษานั้นมีด้านไหนบ้าง
ป.ตรี - วิชาทาง programming เยอะมากครึ่งๆของวิชาเอก ครอบคลุมภาษาดังๆในสมัยนั้นค่อนข้างครบ ตอนนี้ปรับปรุงหลักสูตรใหม่แล้ว ลดภาษาที่มีความนิยมน้อย เพิ่ม mobile programming เข้ามา นอกจากนี้ยังมี
network communication+security
operation system
system analysis and design
data structure ศึกษาเกี่ยวกับโครงสร้างข้อมูล วิธีการจัดเรียง แนวๆนี้
computer graphic
programming language ศึกษาลักษณะของภาษาโปรแกรมมิ่งแบบต่างๆ ว่าทำงานอย่างไร ใช้งานอย่างไร
database ศึกษาเรื่องฐานข้อมูล
AI-artificial intelligence ศึกษาลักษณะของ AI ว่ามีหลักการอะไรบ้าง
ยังมีอีกแต่จำไม่ได้แล้ว
ป.โท - ความรู้สึก ณ ปัจจุบันคือ ส่วนใหญ่รู้มาตั้งแต่ ป.ตรีแล้ว บวกกับประสบการณ์ทำงานแล้ว มีที่รู้เพิ่มไม่มาก แต่เนื่องจากยังเรียนไม่จบ ยังอาจจะมีอะไรมากกว่านี้ก็ได้
3. คำแนะนำเพิ่มเติมสำหรับผู้ที่ต้องการจะศึกษาด้านนี้
เปิดใจให้กว้างเสมอ พยายามอัพเดทตัวเองตลอดเวลา อย่าหยุด เรียนด้านนี้ ควรจะฝึกฝนการแก้ปัญหาให้ดี มองปัญหาให้ออก คิดแก้ให้รอบด้าน ตัดสินใจให้ไว ไม่โลเล แต่ไม่บุ่มบ่าม
อย่าเข้าใจว่ามาเรียนสายนี้แล้วจะซ่อม-ประกอบคอม ลงวินโดวส์เก่ง ฯลฯ ไม่ใช่นะ คนละเรื่องกัน เรื่องวิชาเรียน แยกง่ายๆเป็นวิชาพื้นฐาน กับวิชาเอก
สำหรับคนบางคนวิชาพื้นฐานบางตัวแทบไม่รอด แต่พอวิชาเอกเก็บ A เรียบ แต่บางคน วิชาพื้นฐาน AB ชิวๆ แต่พอวิชาเอกหา A ไม่เจอ เรื่องนี้น่าจะขึ้นอยู่กับความชอบเป็นหลัก พอชอบมันก็สนุก พอสนุกอะไรๆมันก็ง่าย
ส่วนเรื่องมีคนพูดๆกันว่าเขียนโปรแกรมศึกษาเองได้ อันนี้ผมไม่ออกความเห็นเพราะเรียนมาตรงสาย แต่จากประสบการณ์ที่เจอมา ผมมีข้อสรุปของตัวเองในการแบ่งระดับความสามารถของคนที่เรียกตัวเองว่า developer คือ
  1. Make it work = good
  2. Make it right = better
  3. Make if Fast = best
ตัวอย่างเช่น OOP-JAVA คงมีน้อยคนที่อธิบายได้ว่า primitive type กับ reference type ต่างกันอย่างไร ในสถานการณ์ไหน ควรใช้แบบไหน
4. จบมาแล้วได้ทำงานตรงสายที่เรียนรึเปล่า
ไม่ตรงสาย เพราะต้องทำงานในกิจการครอบครัว
5. ถ้าตรงสายแล้วได้ใช้ความรู้ด้านไหนบ้าง
แอบรับงานนอกบ้าง ตรงนี้บอกได้คำเดียวว่า โลกกว้างใหญ่ องค์ความรู้เดินหน้าตลอดเวลา เหมือนเทียบระดับกีฬาสีกับโอลิมปิค
6. คิดว่าจะเรียนต่อสายเดิมหรือไปสายใหม่
กำลังเรียน ป.โท อยู่ในสายเดิม ไม่ต่อทางสายบริหาร ขอไม่บอกเหตุผล