How to Get Hired by Top Tech Companies

Disclaimer

เนื้อหาในบทความนี้เป็นมุมมองของผู้เขียนเพียงอย่างเดียว ไม่มีส่วนเกี่ยวข้องกับนายจ้างปัจจุบันหรืออนาคต เนื้อหาทุกอย่างเป็นเพียงแนวทางทั่วไป ซึ่งอาจแตกต่างไปในแต่ละบริษัทหรือตำแหน่งงาน
คิดว่าหลายๆคนคงอยากรู้ว่าการจะเข้าไปทำงานในตำแหน่งวิศวกร (Engineer) กับบริษัทใหญ่ๆระดับโลก เช่น Facebook Google Amazone Microsoft Apple ฯลฯ นั้นต้องทำอย่างไรบ้าง ผมได้มีโอกาสสัมภาษณ์งาน และกำลังจะเข้าทำงานกับหนึ่งในบริษัทข้างต้น จึงอยากมาแชร์ประสบการณ์นี้กันครับ

สไลด์ประกอบบทความนี้ดูได้ที่ https://www.

Programmer Interview by สมาคมโปรแกรมเมอร์ไทย ตอนที่ 6 –ไพบูลย์ พนัสบดี

Programmer Interview by สมาคมโปรแกรมเมอร์ไทย ตอนที่ 6 –ไพบูลย์ พนัสบดี
- อดีต CTO บริษัททำเกมส์ Levelup Studio เป็นระยะเวลา 7 ปี

ช่วงเวลาสัมภาษณ์
- 22.00 - 23.00 น. วันที่ 19 มกราคม 2560

รูปแบบการดำเนินรายการ : ถาม-ตอบ โดยพิธีกร
- 30 นาทีแรก - คำถามจากสมาคมโปรแกรมเมอร์ไทย
- 30 นาทีสุดท้าย

ผู้ดำเนินรายการ : Oak - Founder acourse.

Big Data in Action : Application and Work in Progress

เมื่อวาน (1 เม.ย. 59) ผมได้มีโอกาสไปฟังสัมมนา "Big Data in Action : Application and Work in Progress" จัดโดยภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย ร่วมกับ ILP ซึ่งหลายหัวข้อฟังสนุกมาก โดยทางภาควิชาได้ร่วมมือกับหน่วยงานต่างๆ ในการทำวิจัยหรือสร้าง Tool ต่างๆเพื่อนำไปใช้จริงจากคนที่ต้องการจริง

เดี๋ยวขอไล่ไปทีละหัวข้อนะครับ บางส่วนจดไม่ทันเพราะฟังเพลิน ถ้าผิดพลาดประการใดขออภัยมา ณ ที่นี้ครับ (แต่ละหัวข้อชื่อแรกจะเป็นอาจารย์จากภาควิชาวิศวกรรมคอมพิวเตอร์)

==========================

หัวข้อที่ 1 “Facebook Status Life”

โดย ผศ. ดร.สุกรี สินธุภิญโญ ร่วมกับ คุณณรงค์ อินทร์ธิรักษ์ นิสิตปริญญาเอก คณะวิศวกรรมศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย

เริ่มจากหัวข้อเบาๆใกล้ๆตัวเรา โดยคำถามเริ่มมาจากว่า “เรารู้พฤติกรรมผู้ใช้ Facebook ในประเทศไทยมากน้อยขนาดไหน” เลยเริ่มทำการวิเคราะห์ในแง่มุมต่างๆ โดยแง่มุมนี้คือคำถามต่อมาว่า “ช่วงชีวิตของ Status หรือ Post นั้น หลังจากโพสต์ไปแล้วอยู่ได้ยาวนานขนาดไหน?” ซึ่งเป็นที่มาของคำว่า Status Life นั่นเอง (ในโน๊ตนี้ผมอาจใช้คำว่า status หรือ post สลับไปมาแต่ความหมายเดียวกัน) ซึ่งคำว่าอยู่ได้ยาวนานขนาดไหน ตอนนี้ใช้วิธีวัดคือมีคนกด Like จนถึงไม่มีคนกดแล้วเมื่อไหร่

เริ่มจากการเก็บข้อมูล Data ก่อน

ปัญหา - Facebook Graph API ไม่ได้ให้ข้อมูลว่าแต่ละช่วงเวลาคนเข้ามากด Like เท่าไหร่ จึงต้องคอย monitor ว่าเพจมีโพสต์ใหม่เกิดขึ้นเมื่อไหร่ แล้วจึงค่อยไปจับว่ามีคนมาคน Like ตอนไหนบ้าง โดยเขียน script เข้าไปจับ ซึ่ง script ทำงานแบบ parallel โดยแต่ละ script จะดูแล 1 post และแยกฐานข้อมูลสำหรับแต่ละ post แล้วค่อยมา merge ข้อมูลภายหลัง

หลังจากนั้นดูทุกๆ 5 นาทีว่า post นั้นมีจำนวน like เพิ่มขึ้นเท่าไหร่

โดยทำการ monitor ประมาณ 76 page ทำการ monitor เป็นเวลา 681 ชม. รวม 6,551 status, จำนวน 4 ล้าน user, จำนวน 18 ล้าน like และใช้ Tool คือ SocialBaker ในการจำแนกกลุ่ม Category ที่มีจำนวน 9 Category (เช่น กลุ่ม sport, entertainment, celebrities เป็นต้น)

การกระจายของของ Status Life ไม่ได้กระจายแบบ Normal Distribution แต่เป็น Power Law Distribution (Status ที่อายุสั้นๆมีจำนวนมาก Status ที่อายุยาวขึ้นจะมีจำนวนลดลงอย่างรวดเร็ว) แต่ก็เป็น Power Law ที่ช่วงปลายกระดกขึ้น (คือ status ที่มีอายุนานมากๆๆๆ กลับมีอยู่เยอะเหมือนกันเยอะกว่าที่อายุกลางๆ)

คำถามต่อมา: Status Life มี pattern รึเปล่า?

ลองทำ clustering ดูพบว่ามีลักษณะออกมาได้ 6 แบบ

คน like เริ่มไม่เยอะแต่แป๊ปเดียวพุ่งขึ้นเลยแล้วก็ลงเร็วจบเร็ว
เริ่มมาคน like เยอะมากแล้วค่อยๆลง
มีคน like เรื่อยๆ ยาวทั้งวัน
คล้ายๆแบบแรกแต่ไม่พุ่งขึ้นนักแล้วก็ค่อยๆลงช้าๆ
ยาวนานแล้วลงมาหน่อยแต่ก็ยังยาวต่อ
มีขึ้นลงเป็นช่วงๆ

แบบที่ 3 มีช่วงชีวิตยาวนาน ซึ่งทำให้เห็นว่า Status กลุ่มอื่นๆเป็นตาม Power Law หมดยกเว้นกลุ่มที่ 3 ที่ส่งผลให้ช่วงชีวิตยาวถึงตอนปลาย

คำถามต่อมา: คนไทยใช้เฟซบุ๊กตอนกี่โมง

นักการตลาดจะเลือก prime time ในการโพสต์ โดยจากภาพจะเห็นว่าวันเสาร์เป็นวันที่ใช้กันน้อยที่สุด ยกเว้นสายการเมือง (Sociallity) จำนวน Like ที่ขึ้นเยอะคือช่วงบ่าย 4-5 และช่วง 3 ทุ่ม ที่น่าประหลาดใจคือกลุ่ม Celebrities จะขึ้นๆลงๆทั้งวันและช่วงตี 1 ก็ยังมีขึ้นอยู่ (กลุ่มอื่นจะไม่ค่อยมีกด like หลังเที่ยงคืน) ดูโดยรวมแล้วตอน 10 โมงเช้าคนไทยกด Like Facebook กันเยอะที่สุดไม่ว่าจะเป็นกลุ่มไหนก็ตาม ซึ่งจากจำนวน like ในแต่ละช่วงเวลาทำให้พอเดาพฤติกรรมคนในกลุ่มต่างๆได้

คำถาม: อยากรู้ว่า status กลุ่มที่อายุยาวนานเป็นประเภท post แบบไหน

มีการแบ่งกลุ่มแต่ละประเภทว่า status ไหนของกลุ่มไหนที่ status life ยาวนาน เช่น กลุ่ม Entertainment พบว่า status ของ วู้ดดี้เกิดมาคุยจะอยู่ยาวนานมาก กลุ่ม Sports พบว่า status ของ Liverpool FC จะอยู่ยาวนานมาก (อาจารย์บอกว่าขออภัยที่ Man U. ไม่ติดชาร์ท 555)

แต่ทั้งนี้ทั้งนั้นอาจารย์ได้บอกไว้ว่ายังไม่ได้มีการกรองพวกปั๊ม like ซึ่งอาจจะส่งผลก็ได้ ต้องทำการศึกษาต่อไป
==========================

หัวข้อที่ 2 Big Data on Wheels

โดย รศ. ดร.กุลธิดา โรจน์วิบูลย์ชัย ร่วมกับ ดร.ภาสกร ประถมบุตร จากสมาคม ITS Thailand (ITS = Intelligent Transport System)

เริ่มด้วยวิดีโอแสดงคำถามว่าจะดีมั้ยถ้าเรากะเวลาของรถเมลที่จะมาได้ จึงได้ทำการติดตั้งอุปกรณ์ที่รองรับมาตรฐาน 802.11p (มาตรฐานเครือข่ายไร้สายสำหรับยานยนต์) กับรถโดยสารภายในจุฬา เพื่อให้ยานยนต์สามารถแลกเปลี่ยนข้อมูลเมื่อวิ่งผ่านกันได้ และสร้าง Mobile Application เพื่อใช้ตรวจสอบเส้นทางรถโดยสารภายในจุฬา โดยภาควิชาร่วมกับ Denso Japan และ ITS Thailand

ในการทำ Vehicular Network (VANET) นั้นส่วนใหญ่แล้วจะเพื่อเป้าหมาย 3 ประการ

Save Life
Save Environment
Save Time

โดยทางแล็บวิจัยได้ค่อยๆเริ่มพัฒนามาตั้งแต่ปี 2009

ปี 2009 เริ่มทำวิจัยโดยใช้ Simulation (ns-3) ทำการจำลองการส่งข้อมูล

ปี 2011 เริ่มทดลองจริงโดยใช้ computer 4 เครื่องในคณะ

ปี 2012 ใช้ computer 3 เครื่องทำงานบน Ubuntu/osx/windows และ android 2 เครื่อง เพื่อดูความเข้ากันได้

ปี 2014 ได้รับอุปรกรณ์ wireless unit จาก Denso Thailand จำนวน 7 ตัว มาติดบน shuttle bus ที่วิ่งภายในจุฬา

ปี 2015 ได้รับทุนจาก Asian Transport Research Society ได้อุปกรณ์เพิ่มเป็น 17 ตัว

ปลายปี 2015 ได้รับการสนับสนุนการ Toyota ให้ยืมรถยนต์เพื่อมาทำวิจัย โดยทดลองวิ่งในส่วนที่การจราจรหนาแน่น และส่วนที่ทางโล่ง และล่าสุดได้ทุนเพิ่มเติมจาก กสทช.

ปริมาณข้อมูลที่ทดลองเก็บมา

รถบัส 1 คัน 0.6 GB /วัน ซึ่งจากข้อมูลนี้ถ้าลองเอามาประมาณเป็น รถเมลของกรุงเทพ ประมาณ 7,923 คัน = 4.75 TB/วัน ถ้ารวม Taxi ด้วยจะประมาณ 607 PB/วัน ซึ่งจะเป็นปริมาณข้อมูลที่มหาศาลมาก

อุปกรณ์ที่ทดสอบได้ใช้​​ Sensor หลายประเภท ต่อกับ Rasberry Pi เช่น

GPS ใช้ Visualization ด้วยภาษา R แสดงให้เห็นว่าช่วงไหนที่รถบัสเคลื่อนที่เร็วขนาดไหนในช่วงเวลาไหน
Accelerometer ใช้ในการตรวจอบพฤติกรรมคนขับ โดยเอาค่าความเร่งในแนวแกน X (แนวนอน) เพื่อดูว่ารถคันไหนมีการเหยียบเบรกแรง คันเร่งแรงมากน้อยขนาดไหน โดยเปรียบเทียบคนขับแต่ละคนในช่วงเวลาเดียวกันบนถนนช่วงเดียวกัน
Gyroscope: ดู Rotation เพื่อดูความสั่นของรถจะเห็นได้ว่าช่วงที่มีลูกระนาดก็จะเกิดการสั่นมาก โดยสามารถเอามาเช็คหลุมบ่อตามถนนได้

และที่กำลังสำคัญคือเรื่อง Privacy และ Security ของข้อมูลส่วนบุคคล

ดร.ภาสกร นำเสนอข้อมูลจาก Toyota Tsucho ซึ่งเป็นสมาชิกของ ITS Thailand เช่น ภาพแสดง heap map ของเส้นทาง ทำให้เห็นว่าบริเวณไหนรถเยอะน้อย ข้อมูลช่วงเวลารถติดในแต่ละช่วงเวลา หาความสัมพันธ์สภาพจราจรกับสภาพอากาศ เป็นต้น

โดยการเก็บข้อมูลจะใช้ Engine 2 แบบ คือ 1. Cold Data Engine นำไปทำ Traffic Simulation, Traffic-Weather Analysis โดยใช้ PIG, HIVE, MapReduce, HBase, HDFS และ 2. Hot Data Engine นำไปทำ Monitoring และ ETA (ประเมินเวลาการเดินทาง) & Real-time Traffice Prediction โดยใช้ Bolt, Spark, Storm, Kafka, Zookeeper

==========================

หัวข้อที่ 3 “Big Health”

โดย ผศ. ดร.เกริก ภิรมย์โสภา ร่วมกับ นพ. กฤษณ์ เจริญลาภ คณะแพทยศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย

ข้อมูลทางการแพทย์มีทั้งข้อมูลการบันทึกคนไข้และข้อมูลจาก wearable device ต่างๆ

โดยงานนี้จะสนใจ Medical Record หรือ Clinical Data คือข้อมูลของคนไข้ทุกอย่าง เช่น ส่วนสูง น้ำหนัก ค่าผลเลือด ผลน้ำตาล ฯลฯ ที่มาจากการตรวจของแพทย์ ซึ่งจะนำไปใช้งานวิจัยต่างๆทั้งวัดประสิทธิภาพในการตรวจหรือการใช้ยาเป็นต้น

ปัญหาของระบบซอฟต์ในโรงพยาบาลคือ

ซอฟต์แวร์ต่างชาติราคาสูงมาก (บางเจ้าสูงถึงระดับหลายร้อยล้านบาท)
ปัญหาด้านวัฒนธรรม เช่น ปัจจุบันโรงพยาบาลส่วนใหญ่ยังเก็บข้อมูลเป็นกระดาษ และจะถูกทำลายทิ้งเมื่อเวลาผ่านไปเกิน 5 ปี ถ้าไม่แจ้งให้แสกนข้อมูลเก็บไว้ โดยที่ต่างประเทศ เช่น อิตาลี เวลาแพทย์เขียนแล้วจะมีเลขาฯนำมาพิมพ์เป็นไฟล์เก็บไว้
ปัญหาเรื่อง implementation ของบริษัทไทยว่าซอฟต์แวร์ที่ทำมาแล้วไปใช้ต่อไม่ได้และไม่ได้รับการดูแลต่อ
ปัญหาเรื่องการเก็บข้อมูล เพราะหมอก็จะค่อนข้างยุ่งไม่มีเวลาบันทึกข้อมูล
ปัญหาเรื่องสถานที่ในการเก็บข้อมูล ส่วนใหญ่ยังคิดว่าต้องเอาข้อมูลเดินไปกรอกที่ OPD (แผนกผู้ป่วยนอก) ควรจะใช้ประโยชน์จาก mobile device ที่ติดตัวได้มากกว่านี้
ปัญหาความละเอียดในการเก็บข้อมูล เก็บละเอียดภาระงานเยอะ เก็บน้อยไม่เกิดประโยชน์
ปัญหาด้านอุปกรณ์ มีอุปกรณ์ที่ไม่เหมาะสมเยอะ

ทางภาควิชากับคณะแพทย์เลยร่วมกันพัฒนา Mobile Application ชื่อ Simplified Medical Record เพื่อเก็บประวัติคนไข้ง่ายๆ ใช้เสียงในการบันทึกข้อมูล (พูดภาษาไทย) ถ่ายรูปบันทึกและวงได้ หรือเลือกรูป preset ได้ ซึ่งช่วยอำนวยความสะดวกกับแพทย์ในการบันทึกประวัติคนไข้มาก

และปกติแล้วคำวินิจฉัยจะต้องมา map เข้ากับรหัสกลุ่มโรคมาตรฐาน ซึ่งจะใช้คนมาทำการ map แล้วให้หมอตรวจสอบว่า map ถูกมั้ย ในอนาคตก็จะใช้ machine learning มาช่วย map อัตโนมัติ

นอกจากนั้นได้ลองเอาคำที่คุณหมอวินิจฉัยมาตัดคำแล้วนับความถี่คำแล้วดึง 400 คำแรกที่มีความถี่มากที่สุดมาทำ word cloud แล้วลองมาแบ่งกลุ่มตามช่วยอายุ จะเริ่มเห็นว่าได้แต่ละช่วงอายุจะมีโรคต่างๆเพิ่มขึ้นมา

ถ้าเกิดมีข้อมูล location หรือข้อมูลอื่นๆเพิ่ม เราอาจวิเคราะห์ได้ถึงว่าโรคไหนกระจายอยู่ที่ไหน หรือเกิดการระบาดเริ่มมาจากที่ไหน และด้วยความสามารถการคำนวณแบบขนานทำให้ลดเวลาในการวิเคราะห์ข้อมูลจากเดิมหลายเดือนเหลือเวลาเพียงไม่กี่ชั่วโมง

ดังนั้นในยุค Data-Driven Economy ก็จะนำมาซึ่งยุค Data-Driven Healthcare

==========================
หัวข้อที่ 4 “What’s for lunch?”

โดย ผศ. ดร.ณัฐวุฒิ หนูไพโรจน์ ร่วมกับ คุณภัทราวุธ ซื่อสัตยาศิลป์ CTO จาก Wongnai.

สถาปัตยกรรม Microservices กับเทคโนโลยี Containers

หลายๆ คนน่าจะได้ยินคำว่า Microservices อยู่บ่อยๆ ในช่วงนี้ ผมไปเจอบทความ Using Containers to Build a Microservices Architecture อ่านแล้วชอบเลยเอามาลองสรุปดู ซึ่งตัว Microservices นั้นเป็นวิธีการหนึ่งที่ทำให้การพัฒนาระบบที่เป็น Web-based ทำให้เราสามารถรองรับการเปลี่ยนแปลงได้เร็ว และก็สามารถดูแลรักษาตัว code base ของเราได้ง่ายขึ้น และการเข้ามาของ Containers ช่วยสร้าง microservices ได้อย่างไร

Demis Hassabis ผู้สร้าง DeepMind และ AlphaGo

ผมได้ดูวิดีโอนี้แล้วได้แรงบันดาลใจมาก

The Theory of Everything โดย Demis Hassabis

Demis Hassabis ผู้สร้างบริษัท DeepMind และตอนนี้ Google ได้ซื้อไป (ที่สร้าง AlphaGo ชนะ Lee Sedol) ปัจจุบันอายุ 39 ปี

ตอนเด็กรู้สึกว่า 2 วิชาที่ควรค่าแก่การศึกษา คือ 1. ฟิสิกส์ ศึกษาเกี่ยวกับโลกภายนอก 2. Neuroscience ศึกษาการทำงานของสมองภายใน ซึ่งเค้าพบว่าอันหลังสำคัญกว่า เพราะจิตใจจะตีความสิ่งที่ให้เราเห็นภายนอก

เริ่มสนใจ AI (Artificial Intelligence - ปัญญาประดิษฐ์) จากการเล่นเกมและเล่นหมากรุก โดยเริ่มเล่นหมากรุกตอนอายุ 4 ขวบ พออายุ 12 ได้เป็น Chess Master

ตอนอายุ 8 ขวบแข่งหมากรุกชนะเลยเอาเงินไปซื้อคอมพิวเตอร์ และสอนตัวเองเขียนโปรแกรม และเริ่มเขียน AI เพื่อเล่น Chess

ตอนอายุ 17 ปี เป็นคนเขียนโปรแกรมเกม Theme Park (คนรุ่นผมตอนเด็กๆคงได้เคยเล่นกัน) เป็นเกมขายดีระดับหลายล้านก๊อปปี้ ซึ่งมีการเขียน AI ให้ปรับตัวตามการเล่นไปเรื่อยๆ และแทบทุกๆเกมที่เค้าทำมักจะมี AI ด้วยเสมอ

ปี 2010 ก่อตั้งบริษัท DeepMind โดยคาดหวังจะให้เป็น "An Apollo Programme for AI" (เปรียบเทียบกับยานอพอลโลที่ส่งคนไปเหยียบดวงจันทร์)

ประเภทของ AI ที่สร้างเป็น General-Purpose Learning Machine คือนำไปใช้กับงานได้ทุกแบบ โดยไม่ต้องมีการกำหนดค่าเฉพาะเจาะจงบางอย่างสำหรับแต่ละงาน (เช่น IBM Watson ที่ใช้ในการแข่ง Jeopardy ที่มีการกำหนดสโคปของโปรแกรมไว้ก่อน)

มีโชว์ตัวอย่างเกม Space Invaders (เกมยานยิงๆ) และ Breakout (เกมแท่นเด้งลูกบอลขึ้นไปทำลายบล็อคไม่ให้ลูกบอลร่วง) ที่ตอนเริ่มเกมไปไม่นานระบบยังง่อยๆมาก แต่พอทิ้งไว้เพียงข้ามคืน ระบบเรียนรู้ด้วยตัวเองไปหลายร้อยเกมก็กลายเป็นเทพเลย (แนะนำให้ดูช่วง 10:30 - 12:30)

ใฝ่ฝันจะสร้างนักวิทยาศาสตร์ AI และวิทยาศาสตร์ที่ใช้ AI ช่วยให้เป็นไปได้

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

ปิดท้ายเกี่ยวกับการค้นหาสิ่งเร้นรับของจักรวาลว่า การสร้าง AI และนำมาเปรียบเทียบกับจิตใจมนุษย์ เราอาจจะปลดล็อคความเร้นลับบางอย่างได้ และการค้นหา Theory of Everything ที่แท้จริงนั้น เราอาจจะต้องแก้ไขปัญหาเรื่องความชาญฉลาด (intelligence) เสียก่อน

แนะนำให้ลองดูวิดีโอกันครับ

[embedyt] https://www.

Read more 1 Comment

เปิด Vagrant Environment บนเครื่องตัวเองแบบสาธารณะ

บทความนี้จะมาแนะนำความสามารถหนึ่งของ Vagrant (อ่านว่า เว’-เกรินทฺ) ซึ่งเป็นเครื่องมือที่สามารถควบคุม virtual machine ผ่าน command line ได้ ความสามารถนั้นคือ “Share”

ใช้ RVM จัดการ Environment สำหรับการเขียน Ruby

ในการพัฒนา Ruby แอพพลิเคชั่นแต่ละโปรเจค เราจะใช้ไลบรารี่หรือสภาพแวดล้อมในการพัฒนา (development environment) ที่แตกต่างกัน อีกทั้งเวอร์ชั่นของ Ruby ที่อาจจะแตกต่างกันด้วย ตัวช่วยที่ทำให้เราสามารถพัฒนาแอพพลิเคชั่นต่างๆ กันบนเครื่องของเราเครื่องเดียวได้นั้นคือ Ruby Version Manger (RVM)

การเขียน Git Commit Message

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

Read more 2 Comments

มาเขียน Unit Test ใน Python กัน

แนวคิดการเขียนโค้ดเพื่อทดสอบโค้ดของเรานั้นอาจจะไม่ใช่แนวคิดที่ใหม่แต่อย่างใด แต่การเขียนโค้ดเพื่อทดสอบ “ก่อน” เขียนโค้ด (Test-Driven Development หรือ TDD) ยังคงเป็นเรื่องใหม่สำหรับหลายๆ คน ปัญหาหลักอีกอย่างหนึ่งก็คงเป็นเพราะเราไม่รู้ว่าจะเริ่มต้นเขียนอย่างไร เราจะมาเริ่มต้นเขียนโค้ดเพื่อทดสอบ และเขียน “ก่อน” ที่เราจะเขียนโค้ดเพื่อทำงานจริงๆ กันโดยใช้ Python ในบทความนี้

Soft Skill คืออะไร ?

Soft Skill เป็นศัพท์ที่นิยมใช้ในงานฝ่ายบุคคล ซึ่งเชื่อว่านักพัฒนาซอฟท์แวร์หลายท่านอาจจะยังไม่เข้าใจเมื่อไปฟังในงานต่างๆหรือได้ยินใครพูดถึง ว่ามันหมายถึงอะไร

Soft Skill ก็คือ ความรู้และทักษะความชำนาญที่ไม่เกี่ยวโดยตรงกับสายงาน แต่เป็นตัวช่วยหนุนให้การทำงานดีขึ้น ดีมากขึ้น จนถึงยอดเยี่ยม

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

สมรรถนะด้านเก่งงาน (Work Related Competency)
สมรรถนะด้านเก่งคน (People Management Competency)

ด้านบริหารตนเอง-บริหารเวลา จัดการตนเอง จูงใจตนเอง ความมั่นใจในตนเอง เชาวน์อารมณ์
ด้านทำงานร่วมกับคนอื่น-การจูงใจ การบริหารทีมงาน การสื่อสาร การนำเสนอ การจัดการข้อโต้แย้ง การบริหารคนดื้อ การจัดการการเปลี่ยนแปลง เป็นต้น

การบริหารตนเอง

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

การบริหารเวลา

เราชาวไอทีก็มีโปรแกรมที่บริหารมากมาย อย่างเช่น Microsoft Project , Todo List , Trello ถ้าจะให้ลิสต์ออกมาคงไม่ต่ำกว่า 50 ตัว ข้ออ้างในการบริหารเวลาไม่ดีที่มักจะได้ยินบ่อยๆคือ รถติด บ้านไกล ถ้านักบริหารได้ยินคำเหล่านี้เขาไม่สนใจปัญหาเหล่านั้นและไม่ได้อยากได้ยินมันบ่อยๆหรอก เพราะนั่นหมายถึงคุณไม่มีความสามารถในการบริหารแม้กระทั่งตัวคุณเองถ้าไม่ได้เกิดเพราะเหตุสุดวิสัยจริงๆ ถ้าคุณมาทำงานสายทุกวันแล้วบอกว่าบ้านไกล รถติด คุณต้องเดินทางโดยรถเมล์ คุณก็ต้องประเมินเวลารถเมล์เที่ยวแรกได้ว่าออกกี่โมง ใช้ระยะเวลาเท่าไรถึงออฟฟิศ ถ้าครั้งแรกสาย คุณก็ต้องปรับปรุงประเมินเวลาใหม่สิ ถ้ายังสายตลอดแสดงว่าคุณไม่ได้มีการพัฒนาอะไรขึ้นเลย แล้วใครจะกล้าเชื่อมั่นกับเวลาที่คุณสัญญากับงานต่างๆของคุณ มันก็แสดงว่าคุณไม่ให้ความสำคัญ สำหรับชาวต่างประเทศเรื่องการรักษาเวลาเป็นเรื่องใหญ่มาก ทุกคนมีเวลา 24 ชม.เท่ากัน การที่คุณไม่รักษาเวลาคนอื่นนั่นหมายความว่าคุณไม่ให้ความสำคัญเขา เป็นการดูถูกความสำคัญเวลาของคนอื่น ทำให้เวลาของเขาเสียไปโดยปล่าวประโยชน์ ฉะนั้นไม่ว่าอาชีพไหนๆการบริหารเวลาเป็นการฝึกพัฒนาตนเองที่สำคัญมาก ใครสนใจเรื่องการบริหารเวลาในการทำงานลองศึกษาเรื่อง GTD (Get things done) http://gettingthingsdone.

Read more 1 Comment