วันจันทร์ที่ 25 พฤศจิกายน พ.ศ. 2562

สรุปการไป workshop เส้นทางสู่สุดยอดวิทยากร และแนวทางปรับใช้สำหรับชาวเดฟ ที่ nexup

เนื่องจากแอบมี pain point ชีวิตในเรื่องนี้อยู่ เลยมาเรียนดูจ้า และมาเล่าให้คนอ่านฟัง เอ้ยยย อ่านกัน

https://www.facebook.com/nexupdoer/photos/a.1597267907037847/2472361342861828/?type=3&theater

เอ้อออออ เคยได้ยินประโยคนี้ลอยๆ มีแต่ speaker หน้าเดิมๆ มันอาจจะเกิดจากปัญหาที่ว่าไม่กล้าขึ้นเวที ไม่รู้จะพูดอะไร คนจะเก็ทไหม พูดไม่ค่อยเก่งเลยอ่ะ ก็เลยแว่บไปเรียนรู้วิชาและมาแบ่งปันชาวเดฟจ้า

เราลง workshop เส้นทางสู่สุดยอดวิทยากรของทาง สถาบันฝึกการพูด nexup ซึ่งตั้งอยู่ที่มูลนิธิเซ็นคาเบียร ซอยทองหล่อ 25 ซึ่งเราเองอยากลองเรียนดูสักรอบนึง และเรียนฟรีแค่ลงมัดจำ 500 บาทเท่านั้น เอาวะ มาลงเรียนดูให้หายคาใจว่าเราควรเพิ่มอะไร ถึงแม้เราจะผ่านเวลาการพูดมาบ้างแล้วก็เถอะ และเราเอง เคยเรียนกับครูพี่อ๊อฟมาแล้ว อ่านได้ด้านล่างจ้า

free workshop "Presentation ให้ทะลุถึงหัวใจ" พร้อมการเตรียมตัวอย่าง strong โดย อาจารย์สมบัติ ทรงเตชะเลิศ
ปล. บางเนื้อหาอาจจะซํ้ากับข้างบน แต่ควรอ่านข้างบนด้วยเลยจะได้ความรู้ครบถ้วน

Part 1 : สิ่งที่เรียนรู้

เราขอสรุป 5 ความรู้ที่ทางวิทยากรได้บอกไว้เป็นข้อๆตามลำดับของเวลาแล้วกัน

1. coaching card ด้วยความที่ครูพี่อ๊อฟเรียนโค้ชด้วยการ์ดจากสถาบัน ICF International (ซึ่งย่อมาจาก International Coach Federation) เลยสามารถนำมาใช้กับผู้เรียนได้ การ์ดชุดนี้เรียกว่า point of you coaching card มาจากประเทศอิสราเอล รวบรวมภาพสวยๆคุณภาพ HD จากช่างภาพ 1 ชุดมีทั้งหมดไม่เกิน 200 ใบ อาจจะมีภาพซํ้ากันบ้าง

coach หมายถึง ผู้นำพาจากจุดหนึ่งไปยังอีกจุดหนึ่งที่ดีขึ้น ด้วยกระบวนการนำศักยภาพออกมา

โดยตัวกิจกรรมจะเป็นดังนี้


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

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

มาสรุปของเราดีกว่า
การ์ดรอบแรกได้เป็นรูปนี้


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

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

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

2. เทคนิคหรือเคล็ดลับการนำเสนอแบบสตีฟ จ็อบส์ หรือทั่นศาสดาของใครหลายๆคน

ตัวอย่างการนำเสนอในที่นี้คือ สิ่งที่สตีฟ จ๊อบส์ตอนนั้นได้พรีเซนต์ iPhone ในปี 2007 จ้า



ควรทำสไลด์ที่เห็นแล้วเข้าใจทันที
T time ยกปีของ product ขึ้นมา เช่น ปีที่เกิด macintosh และ iPod
U unique ยกจุดแตกต่าง หาใจความสำคัญ เราต้องการสื่อสารอะไรให้กับคนฟัง อันไหนที่ไม่เกี่ยวข้องให้ตัดทิ้ง เช่น พูดถึงความแตกต่างของผลิตภัณฑ์
R result นำไปสู่ผลลัพธ์ที่ต้องการ คนฟังได้อะไรกลับไป เช่น คนฟังอยากได้เจ้า iPhone ถึงแม้จะไม่เห็นหน้าตาและราคาก็ตาม
N number มีตัวเลขกำกับให้คนฟังจับประเด็นได้มากขึ้น เช่น 3 revolution ทั้ง iPod จอกว้าง โทรศัพท์ และต่ออินเตอร์เน็ทได้ ในเครื่องเดียว

ตัวอย่าง ที่ไม่ได้นำมาใช้ แต่บังเอิญตรง เอ๊ะยังไง 555
อันนี้เป็นสไลด์งาน Android Bangkok 2018 ตอนนั้นทำงานสตาร์ทอัพแห่งหนึ่งที่มีเป็นอาณาจักรเพลงอินดี้ฟังได้ไม่จำกัด แล้วตอนนั้นเราหาคนพูดถึง ExoPlayer เป็น library ที่ใช้เล่นเพลงและวิดีโอไม่เจอ


Time ในหน้า 10 เราแค่เรียง timeline ว่า ExoPlayer เกิดขึ้นเมื่อไหร่ ตอนที่พูดเป็น version เท่าไหร่แล้ว
Unique พูดเรื่องที่ยังไม่เคยมีใครพูดเลย
Result ให้คนดูสามารถนำไปใช้กับโปรเจกตัวเองได้
Number หน้า 14 บอกว่าปัจจุบันจะนิยมใช้ API Level ตํ่าสุดเท่าไหร่ ซึ่งสอดคล้องกับหน้า 13 ที่บอกว่า ExoPlayer สามารถใช้ได้ตั้งแต่ API Level 16, หน้า 20 เรานำสถิติจาก video session ExoPlayer ใน Google I/O มาให้ดูว่าคนใช้ ExoPlayer กี่แอพได้

ซึ่งรายละเอียดอื่นๆที่อาจจะตามไม่ทัน เราจะมีบล็อกใน medium ให้ตามอ่านกัน พร้อมตัวอย่างโค้ดจ้า

ครูพี่อ๊อฟบอกว่า 3 นาทีทองคำ บอกคนฟังว่า session ของเราจะมีอะไรบ้าง (ส่วนใหญ่ชาวเดฟหรือมี recap หลังสุดก็บุญหล่ะ 555 แถมบางทีการบอกคร่าวๆว่า session นี้เจอกับอะไรน้านนน จบก่อนมาม่าสุกไปอีกจ้า)

3. การครองเวที
หลักการ WHO STEP พยายามจำให้เชื่อมโยงกับเรา นั่นก็คือ ใครอยู่ที่บันได
W walk เทคนิคการดูดดึงความสนใจ อย่างตอนแรกที่ครูพี่อ๊อฟเดินจากข้างหลังห้องเพื่อให้ทุกคนเห็น และพอถึงแล้วก็อย่าเพิ่งพูดทันที เพื่อให้ทุกคนงงๆว่าจะพูดยังแล้วห้องมันจะเงียบเอง อย่าลืมตัดไฟและโปรเจกเตอร์
H hand มือนึงจับไมค์ อีกมือทิ้งไว้ ถ้าใช้ handset เราจะมีมือว่างสองข้างเนอะ เราสามารถใช้มือแต่พอดีเพื่อสื่อความหมายประกอบการพูดได้ เช่น ขนาด number ลำดับที่ ระยะทาง ทิศทางของผู้ฟัง การเชื้อเชิญ
O overview มองภาพรวมของห้องทั้งหมด ให้ทุกคนในห้องมองเห็นเรา อาจจะเปลี่ยนอิริยาบถของผู้ฟังให้ตรงกันข้าม เช่น จากนั่งให้ยืน

S Smile ยิ้ม
T tone of voice การใช้นํ้าเสียงสูงตํ่าเบาดัง ไม่ monotone
E eye contact มองหาสายตาที่เป็นมิตรและคุยกับเขา คุยกับคนแรกเสร็จก็เปลี่ยนคนคุย แต่อย่าบ่อยเกินจนมองว่าสายตาเราดูหลุกหลิก
P participate การมีส่วนร่วมกับคนฟัง

จริงๆเราก็ให้คนเรียนขึ้นมาพูด เราคิดในหัวคร่าวๆ แต่ลองมาคิดตอนเขียน จะประมาณนี้
หลักการ WHO STEP คนที่อยู่ที่บันได นั่นคือ สตาฟผู้จัดงานนั่นเอง แฮร่
ถ้ามองแยก WHO คือใครเป็นคนเข้ามาฟังเราใน session นี้ ส่วน STEP คือลำดับเรื่องราวให้คนฟังเข้าใจได้ง่ายๆนั่นเอง

walk แน่นอนว่าไม่ใช่ developer ทุกคนที่เดินไปมาได้ขนาดนั้น ถ้านึกออกก็มีอยู่แค่คนเดียว คือ คุณตั้ง เป็น GDE Web ที่มีลีลาการพูดที่มีความเร้าใจ มีความสบตาคนดูตลอด รวมถึงการยิงมุมคนดูตอนเข้ามาในห้องระหว่างที่ตัวเองกำลังพูดอยู่ด้วย ในงาน Android Bangkok 2019 ที่ผ่านมา แต่ส่วนใหญ่มักไม่ค่อยเดินกันเพราะโอกาสบังจอสูงมาก หรือสถานการณ์ไม่อำนวย อ่านต่อข้อต่อไป
hand แย่หน่อยที่เราขึ้นไปพูดทั้ง 4 เวที ไม่เคยใช้ handset เลย งานแรกยังดีมีขาตั้งไมค์ แต่เราไม่สามารถเดินไปมาได้ เพราะ เรานั่งอยู่หน้าคอมแล้วก็กดเปลี่ยนสไลด์จากหน้าคอมเลย งานที่สามคล้ายกันกับงานแรก มือถือไมค์ อีกข้างกดเปลี่ยนสไลด์ แถมต้องใช้มือชี้สไลด์ จนคนเดินมาเต็มห้องแล้วเพิ่งรู้ตัวทีหลัง งานที่สองและสี่นั้นเป็นงานชื่อเดียวกันแต่ละคนปี แน่นอนว่ามือสองข้างเราจะไม่ว่าง เพราะข้างนึงถือไมค์ อีกข้างถือทริคเกอร์เลื่อนสไลด์ พร้อมกับชี้ในสไลด์อีก
overview โชคดีที่สามารถมองเห็นทุกคนได้ครบหมด เพราะในสามงานนั้นคนฟังประมาณ 50-100 คน งานที่สองนี่น่าจะหลายร้อยอยู่ เอ้อออ ตอนนั้นพูดที่โรงละครเคแบงก์สยามพิฆเนศด้วย ไม่ได้มองชั้นสอง เข้าใจว่าไม่ค่อยมีคนขึ้นไปนั่ง เนื่องจากสายเดฟเรายิงเนื้อหายาว แต่เราพยายามแทรกมุขมาด้วยถ้าจังหวะมันได้นะ

smile ทางนี้ดูเลิ่กลั่ก 555 เอาจริงๆเดฟไม่ยิ้มขนาดคนที่มา workshop ในวันนี้หรอกนะ แต่แค่ดูเป็นมิตรกับคนฟังก็พอแล้วแหละ
tone of voice มันก็เกือบๆ monotone แต่นํ้าเสียงไม่ได้ไปสุดทางขนาดน้าน
eye contact เอ่อออออ ไม่ค่อยได้มองคนมากนัก บางทีมองสไลด์ เพราะทริคเกอร์บางทีงอแง ก็ต้องดูด้วยว่ามันกระโดดสไลด์ให้เราหรือเปล่า แต่เราก็จะพยายามมองๆอยู่บ้างเนอะ
participate แต่ละ session ของเดฟยิงเนื้อหายาว มีบางอย่าง Q & A หรือแจกของ แต่ชาวเดฟเขาถามในสิ่งที่เขาสงสัยและอยากรู้จริงๆ บาง session ที่เราได้ไปฟังนั้น คนถามเยอะจน speaker บอกว่าไปถามเขาหลังไมค์ได้อ่ะ 555

4. 4 ทักษะที่ทุกคนฝึกได้
- แจ่งแจ้ง พูดให้ชัดเจน เคลียร์ เป็นขั้นเป็นตอน
- จูงใจ ทำให้คนเชื่อ
- แกล้วกล้า พูดอย่างมั่นใจ
- ร่าเริง ฟังแล้วสนุก

5. เทคนิคการทำสไลด์ให้โดดเด่น
เขาบอกว่าคนใช้ PowerPoint 95% นี่ประมาณ 500 ล้านคนเลยหรอ ฮ่าๆ

แต่ส่วนตัวเราใช้ Google Slide ทำอ่ะ เพราะว่า สามารถ sync ได้หลาย device สามารถเอาไปดูสไลด์ตอนเดินทาง หรือแก้ที่บ้านได้ อีกอย่าง ทุกงานที่เราขึ้นไปพูด การใช้ Google Slide มันสะดวกในการดูย้อนหลังของคนที่ได้ไปงานและไม่ได้ไปงาน และทางงานสามารถเอาไปตัดต่อกับคลิปย้อนหลัง แล้วก็ไม่ต้องมานั้งเสียบไฟล์ ส่งลิ้งค์ให้ผู้จัดงานไปเปิดต่อเครื่องอื่นได้อีกด้วย สบายสุดๆ แต่ tools ไม่ใช่เรื่องสำคัญ แค่เล่าว่าเราอาจจะเป็นคนแปลกเฉยๆมั้งนะ

Rule of Slide >> GHOST
G giant ตัวต้องใหญ่ ต้องง่ายและเข้าใจได้ทันที คนข้างหลังยังอ่านเห็นอยู่ ซึ่งสำคัญสุดๆ
H hot มีความร้อนแรง
O original ใช้ภาพถูกลิขสิทธิ์ เขาแนะนำ pixabay แต่เราแนะนำ unsplash มันถูกจริตเรากว่า ภาพสวยกว่าง่า หรืออีกนัยนึงคือภาพที่เราทำเองอ่ะ แบบถ่ายเอง วาดเองงี้
S simple มีความเรียบง่าย เห็นแล้วเข้าใจทันทีว่าคืออะไร
T talent ทำให้โดดเด่น เช่น การใช้สี ความชัดเบลอ, พื้นหลังสีขาวทำให้สินค้าเด่นทุกตัว, ภาพต้องเห็นไม่ใช่อ่าน

เนื้อหาในวันนี้คือ less is more ทำน้อยได้มาก
เลือกใช้ภาษาและ content ให้ถูกต้องกับคนฟัง

เพิ่มเติม การทำ course หรือขึ้นมาเป็น speaker ต้องมีหลักการ 3 อย่าง คือ


- Love พูดในเรื่องที่เราชอบ หรือเรื่องที่เรารัก
- Know พูดเรื่องที่เรารู้ ทำมัน และเชี่ยวชาญเป็นอย่างดี
- Wanted พูดเรื่องที่คนสนใจและอยากฟังจากเรา ก็คือพูดเรื่องที่มีตลาดต้องการนั่นเอง
การทำหลักสูตร เป็นการเปลี่ยนความเชี่ยวชาญในด้านนั้นๆ จากความรู้ของเราเป็นทรัพย์สิน

อันนี้เป็นการเขียน outline course จ้า พูดแบบสั้นๆ


Part 2 : เหตุการณ์ทั้งหมด


เหตุการณ์คร่าวๆ มีการกล่าวเปิดงาน ตัวแทน 10 คนส่งตัวเองมาแนะนำตัวกับเพื่อนๆ 5 ความรู้สำหรับการเป็นสุดยอดวิทยากร จับกลุ่ม 3 กลุ่มใหญ่ นับ 1-100 โดยมีอุปสรรคคือ คนที่นับเลข 2 และ 7 ปรบมือแทนนับเลข ถ้าผิดก็เริ่มใหม่เลย แล้วมีผิดกันหลายรอบ แล้วกลุ่มเราดันนับเสร็จก่อน ชนะเลย เห้อ 555555 จากนั้นแบ่งกลุ่มย่อยของกลุ่มใหญ่เป็น เสือ สิงห์ กระทิง อินทรี จากนั้นแนะนำตัว และก็เปิดวิดีโอที่สตีฟ จ๊อบส์เสนอไอโฟนเครื่องแรก แล้วก็เบรค แล้วก็กิจกกรม coach ด้วยการ์ด ก่อนกินข้าวมีขายคอร์สของเขาเอง แนะนำ nexup แนะนำสตาฟหรือ TA ที่เป็นจิตอาสาทั้งหมด

จากนั้นมื้อกลางวัน ด้วยความที่เลือกบัตรฟรีลงแค่มัดจำ เลยได้ 500 บาทไปกินข้าวเที่ยงร้าน Tiny Cup Café ราคาอาจจะแรงไปนิดแต่อร่อยสุดๆไปเลยจ้า ส่วนคนที่เสียค่าบัตร 500 บาทนั้นกลางวันมีบุฟเฟ่ต์และอาหารว่างเบรกให้จ้า พร้อมคอร์สออนไลน์ด้วย ทำไมเราถึงเลือกมัดจำแทน เพราะเราสามารถเลือกอาหารว่าอยากกินอะไรแถวๆนั้นได้ และไม่อยากดองคอร์สออนไลน์ด้วย


ตอนบ่ายกลับมาต่อกับเทคนิคการนำเสนอแบบสตีฟ จ๊อบส์ พอเห็นคนง่วงเลยมีกิจกรรมเรื่องความเชื่อ แบบร่างกายสั่งได้ ประมาณว่านิ้วข้าวขวายาวกว่าข้างซ้าย นิ้วข้างซ้ายยาวกว่าข้างขวา แล้วมีคนเชื่อว่ามันยาวกว่าจริงๆเว้ย 555 แล้วก็จับคู่มาทบทวนเรื่อง turn เราเองใช้เวลาสั้นกว่ากำหนด 555 แล้วก็เรื่อง who step ก็จะมีคนออกมาทบทวนด้วย

จากนั้นกลับมาอยู่กลุ่มย่อยเดิม ระหว่างนั้นเราไปเข้าห้องนํ้ากลับมาอ้าวต้องมีกรุ๊ปไลน์กันด้วยหรอ มีหลัก 4 ข้อ แล้วให้แต่ละกลุ่มกัน brainstorms ที่เรามองว่ามันก็ไม่ใช่วิธีที่ดีที่สุด แหะๆ เพราะคนที่พูดเก่งก็จะพูดๆๆๆเว้ย เออ ignore แล้วกันง่ายดี 555 (รู้แหละให้พูดแต่ก็นะ…) แล้วให้ตัวแทน 3 คนพูดสิ่งที่ brainstorms กันมาให้แต่ละกลุ่มฟังแล้วเราก็ให้ feedback กลับไปว่าชอบตรงไหนที่พูดและควรปรับปรุงตรงไหน และแปะมือเป็นการขอบคุณ ซึ่งที่เรียนมาแปปๆอ่ะ มันก็ใช่ได้จะคล่องในเวลาอันรวดเร็วอะนะ ก่อนพักเบรกมีแนะนำเพจของทาง nexup เองและ lead ทุกคนให้คอมเมนต์เกี่ยวกับงานนี้ โพสรูปบนสุดที่เราลงอ่ะ ทางนี้เลยสรุปบล็อกเลย เผื่อคนไหนหลงมาเจอจะได้มาลองอ่านรีวิวยาวๆกันแบบนี้

หลังเบรคเรียนกันไปนิดหน่อย มีวิธีการทำสไลด์และก็การเขียน course outline ที่ก็เป็นหัวข้อคร่าวๆอ่ะ แต่ช่วงจะจบขายคอร์สตัวเองเพิ่มเติม (คอร์สของ nexup นั่นแหละ) ซึ่งค่อนข้างยาวนิดนึง เลยทำให้จบเลทอ่ะ อะแง (แต่เข้าใจ business model ว่าทำไมถึงมาท่านี้) คนสนใจเยอะแหละ แต่ไม่ใช่เราง่า จริงๆทางที่นี่มีคอร์สฟรีหลายคอร์ส และคอร์สเสียเงินด้วย ซึ่งเขาก็ต้อง lead แบบนี้แหละว่าใครสนใจ ลงชื่อด้านหลังห้องได้เลย คุ้นๆว่าเคยอ่านเจอประมาณว่าควรแบบทันทำทีไม่งั้นเราจะเสีย user ไปถ้าทำช้าเกินไป อะไรงี้

Part 3 : สิ่งที่เรียนรู้ระหว่างทางหล่ะ

- กิจกรรมการรวมกลุ่ม 3 กลุ่มนับเลข 1-100 นั้น และแบ่งอีก 4 กลุ่มย่อย มีการแนะนำตัว เพื่อให้ผู้ร่วมอบรมอย่างเราได้ connect กัน สร้างความสัมพันธ์กัน เมื่อเรามีเวลา 1 ชั่วโมง ควร connect กัน 5-10 นาที (แต่ในสายเดฟใครจะมานั่ง connect ใน session หล่ะ ขนาด workshop ถ้าไม่ใช่สาย UX ที่ต้องเกี่ยวกับคนจริงๆก็ไม่มีนะ ส่วนใหญ่คนมักจะ connect กันเองง่า)
- ตอน coaching ด้วย card เนี่ย เป็นการฝึกการฟังคนอื่น ดูภาษากาย ฟังแบบไม่ตีความตัดสินใดๆ ฟังเฉยๆ เงียบ และหาเรื่องพูดต่อ
- session หลังมื้ออาหารเที่ยงเป็นการปราบเซียน เพราะคนกินข้าวอิ่มจนสามารถหลับได้
- ถามความรู้สึกของคนร่วมกิจกรรม ถามเกี่ยวกับผู้ฟัง ไม่มีถูกผิด มักจะได้ผลกว่ามีใครสงสัยถามได้นะ เพราะถามเกี่ยวกับตัวผู้ฟังเอง ก็จะเห็นเพื่อนๆในคลาสยกมือขอพูดกันหลายคน
- โฟกัสที่คนเรียนเป็นสำคัญ ดังนั้นเราจะเห็นครูพี่อ๊อฟสลับบางหัวข้อตามสถานการณ์นั่นเอง แต่อันนี้เรามองว่าได้เฉพาะที่เป็นลักษณะ workshop มากกว่าอ่ะ session น่าจะสลับไม่ได้เพราะบางอย่างมันก็ถูก set ไปแล้ว
- การใช้นํ้าเสียง สามารถฝึกได้ด้วยสูตร 4 * 4 =16 4 วินาทีแรกหายใจเข้าพุงป่อง 4 วินาทีต่อมากลั้นหายใจไว้ และ 16 วินาทีสุดท้ายนั้นค่อยๆเป่าลมออกมาช้าๆ ทั้งหมดนี้นับเป็น 1 set ทำตอนเช้าและก่อนนอน ครั้งละ 20 sets แบ่งเป็นหายใจพุงป่อง 10 sets และหายใจให้หน้าอกผายขึ้นอีก 10 sets ให้ลมออกมาทางคอ เขม่วท้องเพื่อเปล่งเสียงให้ดังขึ้น
- การพูดให้ชัดถ้อยชัดคำ อ้าปากให้กว้างที่สุดแล้วพูดสิ่งนี้ ปลาวาฬตัวที่หนึ่ง ปลาวาฬตัวที่สอง ... ปลาวาฬตัวที่ n
- การถือไมค์ ให้ถือในข้างที่ไม่ถนัด ห่างจากปากและตํ่ากว่าปาก ถ้าเราเห็นช่างภาพให้ยก 45 องศา เพื่อให้ถ่ายภาพออกมาสวย
- ค่าตัววิทยากรราคาแบบตํ่าๆวันละ 500 - 2,000 บาท บางที่ให้เป็นรายวันเยอะมากๆตามองค์กรต่างๆ ให้สูงถึงแสนสองเลยทีเดียว

Part 4 : แล้ว developer อย่างเราๆหล่ะ

โอเค ยอมรับว่าแอบมีความคาดหวังประมาณนึงว่าเรียนเสร็จเราสามารถเอาไป sharing ให้กับทีมและ developer commulity เพื่อให้หลายๆคนลองเอาไปใช้ดู ด้วยความที่เราเคยเรียนมาบ้างแล้ว คิดว่ายังไม่เติมเต็มความต้องการในใจของเราได้มากขนาดนั้นอ่ะ แล้วตอนเข้าห้องมารู้สึกว่าเป็นการ lead อารมณ์คนจนแบ่บบบ เอ่อออออ แล้วตกใจเพราะของเดือนที่แล้วคนมาครึ่งร้อย วันนี้เป็นร้อยอ่ะ อึดอัดเลย 555 คือไม่ทราบมาก่อน เราคงพลาดเอง

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

ยอมรับว่าสายงานเราส่วนนึงมันไม่สามารถทำตามได้ทั้งหมด เช่น ไม่ใส่ตัวหนังสือลงไม่ได้ เพราะเรายกตัวอย่างโค้ดให้คนฟังได้ดูถูกไหมหล่ะ เราคงไม่สามารถใช้หลัก turn ได้ทุกตัวในการทำ session ของเราได้ทั้งหมด ถึงเรามีสถิติหรืออะไรที่เป็นตัวเลข official ก็ตามก็ไม่ได้จำเป็นทั้งหมด และไม่สามารถให้คนมามีส่วนร่วมอะไรขนาดนั้นใน session ของเรา (ส่วน workshop มันก็น่าจะมีได้บ้าง) เนื่องจากเรากำหนดกับผู้จัดงานได้แล้วว่าพูดได้กี่นาที มี Q&A ไหม มีเท่าไหร่ แต่สิ่งนึงที่เห็นชัดเจนคือ เราขาดเวทีที่ให้ชาว developer อย่างเราๆได้ฝึกพูดหล่ะสิ แล้วยังขาดโค้ชที่ช่วยเขาอีกนอกจะฝึกกันเอง

เทคนิคที่เราเรียนนั้นสามารถมาปรับใช้ได้ และอ่านบล็อกพวกนี้ร่วมด้วย


สุดท้าย ทางเรากำลังร่างคอร์สฟรีออนไลน์ และนำไปสู่ออฟไลน์ในอนาคต อย่างน้อยทางแบบนี้สิ่งที่เรียนมาวันนี้ได้ใช้แน่นอนแหละเนอะ ถึงแม้กับการขึ้นเวที speaker เราก็รู้แหละว่าต้องหยิบเรื่องที่เราทำและคนฟังอยากรู้ จะได้เอากลับไปใช้ ยิ่งภาษาอังกฤษคือยากจริงๆ แต่ปีหน้าน่าจะดีขึ้นแหละ จริงๆเรายังขาดเทคนิคการจำทุกอย่างในสไลด์แหละ 55555 แต่แค่วันนี้ไม่มีหลักการมา fullfill นั่นแหละ แต่ก็หายคาใจไปแล้วว่าไปแล้วเป็นอย่างไร บวกกับเรื่องโค้ชก็น่าสนใจ แต่แค่ขี้เกียจไปคุยเฉยๆ 555 เพราะต้องรีบกลับบ้านอ่ะเนอะ วันถัดมาวันจันทร์ตื่นมาทำงานแต่เช้า

ถ้าสนใจ ทาง nexup ยังมีคอร์สอื่นๆนอกจากคอร์สนี้ สามารถเข้าไปดูได้ที่
เว็บไซต์ https://nexup.space/

บทส่งท้าย

เพราะเราร่างไว้นานแล้ว ไม่รู้จะเล่าตอนไหนดี

มีสมาคมฝึกการพูดด้วยหรอเนี่ย?

มีสิ ตอนนั้นเราเรียนหลักสูตรการจัดการนวัตกรรมของ NIA และมีพี่คนนึง มาแลกเปลี่ยนความรู้โดยการจัด session เกี่ยวกับการพรีเซนต์ให้เราฟัง เรามีไลน์ท่านอาจารย์ผู้นั้นด้วย ในไลน์ไทม์ไลน์ที่เขาลงมีเกี่ยวกับสมาคมฝึกพูดแห่งประเทศไทย รวมถึงคอร์สอบรมพวกนี้ เรียนฟรี และเราก็ห่างหายจากกลุ่มศิษย์เก่าและศิษย์ปัจจุบันของหลักสูตรนี้

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

สมาคมฝึกการพูดแห่งประเทศไทย https://www.facebook.com/speechthailand/
สถาบันฝึกการพูด https://nexup.space/

ป้ายกำกับ:

วันศุกร์ที่ 20 กันยายน พ.ศ. 2562

จดบันทึก FB Live - Slide ผิด ชีวิตเปลี่ยน ทำ slide ยังไงให้คนเข้าใจง่าย โดย Learn Squad


เมื่อวันพุธที่ 11 กันยายน ที่ผ่านมา เพจ Learn Squad มีไลฟ์สด "Slide ผิด ชีวิตเปลี่ยน ทำ slide ยังไงให้คนเข้าใจง่าย" เมื่อประมาณทุ่มครึ่ง เลยนำมาสรุปให้ฟังจ้า ซึ่งจริงๆรูปด้านบนก็สรุปไว้หมดแล้วนั่นแหละ ฮ่าาาๆๆๆ



เทคนิคการทำสไลด์
1) Audience ทำให้ใคร
- ทำให้คนทำงาน : ลง datail เยอะๆ
- ผู้ใหญ่ และคนที่ไม่มีเวลามากนัก : เข้าใจง่าย
- Conference : text น้อย เน้นภาพ
2) Key Message : สื่อสารอะไรบ้าง ข้อมูลสำคัญ
3) วิธีการทำ Sequence : เรียบเรียงวิธีการเล่าเรื่อง
บอกหัวข้อที่จะพูดทั้งหมดและเจาะไปในแต่ละเรื่อง
4) Design tips ในไลฟ์นี้จะมีบอกทริคและเทคนิคที่ใช้
5) Recap & Next step : ใจความสำคัญ หรือให้ใครทำอะไรต่อ

ระหว่างตอนที่ไลฟ์นั้น มีคนบอกว่าระบบฉาย presentation ไม่ support เครื่อง macbook โชคดีที่อยู่คิวหลังๆ ดังนั้นเราควรไปก่อนเวลาเพื่อเตรีนมอุปกรณ์การ present ให้พร้อมก่อน และอาจจะรวมถึงเซฟสไลด์ของเราเป็น pdf เผื่อไว้ด้วย

เราควรสนใจเรื่อง sequence ของสไลด์ การจัดเรียงละดับการเล่าเรื่อง ก่อนจัดความสวยงาม
ซึ่งสไลด์ตัวอย่างอยู่ที่นี่จ้า
https://docs.google.com/presentation/d/15W-XkNY7pR-7CC0E-qFdLm51zkOx3UGOu4_x3Rwu39Y/edit

Sequence ของสไลด์
Openning scene เปิดเรื่องว่าเราจะพูดถึงอะไร เช่นในที่นี้คือ How to make slide?
Problem บอกเล่าถึงปัญหา เช่น ปัยหาการทำไลด์คือมีตัวหนังสือที่มากเกินไป และเข้าใจยาก
Overview/outline เป็นสารบัญว่าคนฟังจะเจออะไรบ้าง
Recap & Next steps สรุปที่พูดมาทั้งหมด

Tips
#1 : 1 2 3 ให้คนฟังเห็นอะไรก่อนหลัง ดูตัวอย่างจาก Netfilx
- ลดความสำคัญโดยการลดขนาดตัวอักษร หรือทำให้จางลง
- ส่วนเพิ่มความสำคัญก็เพิ่มขนาดตัวอักษร

#2 : อ่านจากบนลงล่าง จากซ้ายไปขวา ดังนั้นการวาง sequence มองเป็นตัว Z นั่นเอง

#3 : zoom 70-80% เพื่อ recheck ว่าตรงไหนที่มองยากหรืออ่านยาก เพื่อให้คนที่นั่งหลังสุดอ่านรู้เรื่อง
(ซึ่งคนที่นั่งหลังสุดอาจจะเป็นคนที่มีอำนาจในการตัดสินใจในเรื่องนั้นๆ)

#4 : color เปิดเว็บ coolors.co เว็บนี้ใช้งานไม่ยาก อ่านจะเลือกชุดสีจากในเว็บนี้ พยายามเลือกชุดสีที่มีสีตัดกันหน่อย หรืออัพรูปโลโก้ของบริษัทที่เราทำงาน เพื่อให้ generate สีได้นะเออ

https://coolors.co/browser/latest/1 บังเอิญว่าตัดกันหมดเลยแหะ
#5 : เลือกสีดำให้อ่อนลงมาหน่อย ผลพลอยได้คือดูแพงขึ้น จริงๆช่วยให้แสบตาน้อยลง
ดังนั้นเราอย่าเลือกสีให้แสบตาจนเกินไป

#6 : ใช้ภาพประกอบจาก unsplash ซึ่งใช้ฟรี แถมภาพในนั้นสวยมากด้วย
ส่วนตัวเราเองก็นำมาใช้กับบล็อกใน medium และเอาไปทำสไลด์งาน Android Bangkok จ้า

และจริงๆรูปเปิดสไลด์ก็สำคัญนะเออ แถม Google Slide ก็ช่วยเราได้หลายอย่างเลยหล่ะ

ซึ่งเวลาชั่วโมงกว่าๆในการไลฟ์นั้นเราเองก็ได้นำมาคิด และสามารถนำไปปรับใช้ได้ในการทำ presentation ต่างๆด้วย ต้องขอบคุณทาง Learn Squad ที่มาแบ่งปันให้พวกเราค่ะ

ป้ายกำกับ:

วันจันทร์ที่ 28 สิงหาคม พ.ศ. 2560

มาเรียนรู้ Kotlin ที่งาน Kotlin Workshop กันเถอะ


สวัสดีทุกท่าน เราก็เป็น Android Developer มาพักนึงแล้ว และได้ตามข่าว Google I/O 2017 ซึ่งภาษา Kotlin จะเป็นภาษา Official อีกภาษานึง ที่ไว้เขียน Android Application เราได้ตามข่าวใน
Thailand Kotlin Developer Group และเขาก็กำลังจะจัดงาน Kotlin Meetup ครั้งที่ 3 แล้วสำหรับงาน Kotlin Workshop พอได้เวลากดบัตร ก็รีบกดกัน ที่ออฟฟิคกดบัตรสามคน ...................... เราได้คนเดียวจ้าาา โอ้ยยยย แปปเดียว บัตรหมดไวไปนะเออ (และงานที่แจกบัตรผ่าน eventpop ทุกงาน มันหมดไวมาก แบบวินาทีเดียวก็หมดแล้ว หัวร้อนกันไปหมด ดีที่บางงานมีเพจกูโค้ดไปไลฟ์นะ)

การเตรียมตัว
- นำคอมพิวเตอร์ที่ใช้ทำงาน ลง plug-in kotlin ตามในลิ้งที่เขาให้มา
เรามาสรุปสั้นๆกันดีกว่า อันนี้สำหรับคนใช้ mac แล้วกันเนอะ (ทอดทิ้งคนใช้ windows แปปนึง)

กด Android Studio ตรงด้านบน เลือก Preference หรือกดคีย์ลัด command+,
เลือกแท็บ Plugins พิมพ์ Kotlin และ install ลงไป


จากนั้นเราก็จะพบคุณ Kotlin ที่เราดาวน์โหลดเสร็จแล้ว แบบนี้ จากนั้น restart android studio ซะ


เวลาเราจะสร้างไฟล์ใหม่ในโปรเจกเรา เราก็จะเห็น Kotlin File/Class ถือว่าเรา install plug-in เสร็จบริบูรณ์


- งานนี้จัดขึ้นที่ Pronto Marketing ลง BTS สะพานควาย แล้วนั่งวินหรือเดินเอา แบบนี้ เดินไปเรื่อยๆ เปิด google map แล้วเดินตามเอา อยู่ที่ซอยประดิพัทธ์ 19 ในซอยมี ...... ช่างมันเถอะ เลยไปนิดนึงเป็นตึก อยู่ในตึกนั้นแหละ ชั้น 3


........

Agenda โดยรวมของงาน งานจัดขึ้นวันเสาร์ที่ 19 สิงหาคม 2560 จ้าาา
13:00 Register
13:30 Introduction to Kotlin
14:00 Workshop: Kotlin for Android
15:00 Break
15:20 Workshop: Miracle of stdLib
16:20 Non-JVM Kotlin
17:00 Prepare to go home

มาดูกันดีกว่า ว่าการ workshop นี้ จะสนุกสนานขนาดไหนกันน

ก่อนอื่นเตรียมตัวลง plug-in กันก่อน ซึ่งวันที่ workshop kotlin 1.1.4 ออกมาได้แค่อาทิตย์เดียวเอง และใช้ร่วมกับ Android Studio 3 ซึ่งเอาจริงๆเราใช้เวอร์ชั่น 2.3.3 ก็ใช้ได้เหมือนกันนะเออ ดังนั้นก็ update gradle ด้วยนะเออ

และสไลด์ทั้งหมด อยู่ที่ https://drive.google.com/drive/folders/0B2348tIBJgafR2EtdHlhdDZmYVU

คำนิยามโดยย่อของแต่ละ session สนุกกันไปคนละแบบ

1) Introduction to Kotlin : ทำความรู้จักกับ kotlin 

2) Workshop: Kotlin for Android : แปลง JAVA ให้เป็น Kotlin ใน Android Studio 

3) Workshop: Miracle of stdLib : มาทำความรู้จักการใช้ algorithm ใน kotlin เพิ่มเติม 

4) Non-JVM Kotlin : kotlin ไม่ได้ทำได้แค่ Android app อย่างเดียวนะ ทำอย่างอื่นได้มากกว่าที่เราคิด 

มาเริ่มกันดีกว่าเนาะ

Introduction to Kotlin
โดยคุณแอร์ จาก Agoda


ใน session แรกจะเป็นการเรียกนํ้าย่อยก่อนลงสู่สนาม Kotlin จริง แนะนำให้รู้จักกับน้อง Kotlin กันก่อน Kotlin พัฒนาโดย Jetbrain รันบน JVM รองรับ static type ที่สำคัญ สามารถทำงานร่วมกันกับ JAVA ได้

โดยปกติเราเป็น Android Developer จะเขียนแอปด้วยภาษา JAVA ดังนั้นจะเปรียบเทียบภาษา JAVA กับ Kotlin ให้ดูกันเห็นๆเลย โดยสรุปก็คือเจ้า Kotlin จะเขียนโค้ดได้สวยกว่า ง่ายกว่า ดังนี้

1. มีตัวแปรสองประเภทใหญ่ๆ คือ 
Mutable : เปลี่ยนแปลงค่าได้
var name: String = “Kotlin” 


Immutable : เปลี่ยนแปลงค่าไม่ได้
val name: String = “Kotlin” 


จุดสังเกต
- Mutable ก็เหมือนตัวแปรที่เราประกาศตามปกติ สามารถยัดค่าอื่นเข้าไปแทนค่าเดิมได้ การประกาศตัวแปรจะใช้ var
-Immutable ก็เหมือนเราประกาศ final ไว้หน้าตัวแปร เพื่อประกาศค่า constant ที่ใช้ซึ่งไม่สามารถเปลี่ยนค่าได้ การประกาศตัวแปรใช้ val
-การประกาศ class ใน kotlin ไม่ต้องใช้ new เพื่อสร้าง object class ให้กับตัวแปรนั้นๆ

2. การประกาศ class ของ kotlin แค่ใส่ variable ที่เราจจะใช้ ไม่ต้องใส่ set กับ get เนื่องจากตัว kotlin เขามีตัวจัดการเรื่องพวกนี้อยู่แล้ว การใช้ set กับ get ใน kotlin ก็ไม่ต้องใส่อะไรมากมายเลย ใช้เหมือนกันทั้ง get และ set เลย แค่เรียกใช้ตัวแปรใน class ก็เพียงพอแล้ว


3. ถ้าในกรณีที่เราไม่ได้ get หรือ set ตรงๆ เช่น เอาค่ามาทำการคำนวณ การเปลี่ยนแปลงสตริง ใน JAVA ก็ทำใน get กับ set เลย แล้วใน kotlin หล่ะ ทำใน get และ set เหมือน JAVA นั่นแหละ แต่จะใช้ get() และ set(value) แบบสั้นๆ และอีกอย่าง การใส่ค่าสตริง เราใส่ “blah blah” + value ใช่ม๊าา ใน kotlin ทำง่ายๆ แค่ใส่ $ หน้าชื่อตัวแปร


4 ใน kotlin ไม่สามารถประกาศตัวแปรโดยไม่ assign ค่าให้มันไม่ได้


แต่ถ้าอยากจะ assign ค่าทีหลังจริงๆ ใช้ late init ช่วย โดยใส่ lateinit ไว้ว่าตัวแปรที่เราต้องการ จากนั้นเราจึงจะ assign ค่าทีหลังได้


แต่ๆๆๆๆๆ เรานำตัวแปรที่ยังไม่ได้ assign ค่าไปใช้ไม่ได้นะเออ ซึ่งมันก็ make sense นะ


5. lazy คือการ save memory แล้วเรียกใช้หน่วยความจำเมื่อมีการเรียกใช้ตัวแปรนั้นๆ โดยใส่ by lazy ไว้หลังตัวแปรที่เราต้องการ เช่น เราสร้าง database ไว้ตัวนึง แล้วเราให้ save ชื่อไว้ใน database วึ่งจะทำงานตอนที่เรา save ค่านั่นแหละ


6. Nullable type ใน kotlin นางจะคืนค่าที่ไม่เป็น null ออกมา ดังนั้นถ้าเราจะให้ตัวแปรสามารถคืนค่า null ออกมาได้ ดังนั้นเราต้องใส่ ? ไว้หลังประเภทตัวแปร เช่น String? สามารถคืนค่า String และ null ได้


ดังนั้นการที่เราจะ check ว่าค่าที่เข้ามาเป็น null หรือเปล่า ใน JAVA ต้อง check if object != null ใช่ป่ะ แต่ใน kotlin สามารถทำเสร็จได้ในบรรทัดเดียว โดยไม่ใช้ if อาจจะเถียงได้ว่า JAVA มันก็ใช้ if แบบย่อได้นะยูววว มาดูกันดีกว่าค่ะ ให้คนอ่านตัดสิน (เพราะทั้งงานนั้น บอกว่าเลิกเขียน JAVA ให้มาเขียน kotlin แทน)


JAVA:
Return name != null ? Name.toUpperCase(); : null

Kotlin:
Return name?.toUpperCase()

ถ้า return ค่าอื่นแทน null ในกรณี else ก็ทำได้เช่นกัน โดยใช้ elvis operator ผู้ที่คล้ายทรงผมของเอลวิส ได้เช่นกัน โดยใส่ต่อหลัง แล้วตามด้วยค่าอื่นที่เราต้องการ ส่วน assertion ยังงงๆอยู่...

7. การทำ constructor ไม่ต้องทำอะไรยุ่งยาก ตัว constructor block ไว้บนสุดเลย และเราประกาศ initialize ภายใต้ init


8. การประกาศ function เราใช้ fun นำหน้าชื่อ function นะ ใน Kotlin เราจะไม่ประกาศ permission public protected และ private ไว้หน้าตัวแปร และสามารถย่อให้เหลือสั้นๆเพียง 1 บรรทัดเท่านั้น


การเรียกใช้ function ค่อนข้าง flexible สุดๆ สามารถใส่ชื่อตัวแปรเท่ากับค่าได้เลย อีกทั้งไม่ต้องเรียงตามลำดับ order ให้วุ่นวาย ใส่ให้ครบตามลำดับเหมือนทุกๆภาษา ตัว function สามารถ set ค่า parameter เป็นค่า default ได้ด้วยนะ

9. lambda คือการที่เราเขียนแบบย่อๆ โดยใส่ type และสิ่งที่เราต้องการจะทำ การใช้ก็ใส่ค่า parameter ตามที่เราต้องการได้เลย ซึ่งรายละเอียดแบบเข้าใจง่ายจะอยู่ใน session ที่สองนะ


10. higher order function เรียกภาษาชาวบ้าน คือ function ซ้อน function นั่นเอง

ซึ่งสามารถทำ map คือการ transform แต่ละอันรวมเป็น data ก้อนเดียวกัน ซึ่งใน kotlin จะใช้ listOf แล้วตามด้วย object ที่เราจะ transfer เดินไปด้วยกัน ไม่ต้องสร้าง List หรือ ArrayList ใหม่ เพื่อเก็บแต่ละอย่างใน list ใหม่ที่เราสร้างขึ้น แล้วเข้า map


ความพิเศษ คือ ถ้าเราอยาก check ว่า object แต่ละตัว มีค่าเท่ากันไหมมมม เราอาจจะต้องวน loop เพื่อ check ค่าภายใน ใน kotlin สามารถเอามา check ได้ทันที ไม่ต้องวน loop (ซึ่งไม่มีตัวอย่างไม่มีสไลด์)

11. Data class ไม่ต้อง Override function อื่นๆมาให้เสียเวลา เอ้ออ ไม่ต้องใส่ get กับ set ใส่แค่ตัวแปรใน class พอ


Workshop: Kotlin for Android
โดยคุณดิว จาก Yesmom ซึ่งเราก็มี blog ใน medium ชื่อว่า blacklens ในนั้นมีเทพ Kotlin หลายท่านเลย


ต่อมากับ session ที่สอง มาเปลี่ยน JAVA เป็น Kotlin

ก่อนที่จะเริ่ม clone โปรเจกก่อนนะเออ https://github.com/ThaiKotlinDev/task-universe branch master นะยูวว อันที่เสร็จแล้วจะอยู่ที่ completed นะ ไว้ตรวจคำตอบ

ที่เราจะทำคือแอปประมาณนี้ หน้าแรกทำด้วย RecyclerView สามารถกดไปหน้าอื่นได้ แบบง่ายๆ โดยแปลงโค้ดในโปรเจกนี้เป็น Kotlin

รูปออฟฟิคเดิมของ shopspot ตอนนี้เป็นของฟังใจไปแล้ว ;P

ตรวจสอบ plug-in ก่อนว่าเป็น version ล่าสุด โดยไปที่ Tools -> Kotlin -> Configure Kotlin in Project
คลิกที่ All modules containing Kotlin files และเวอร์ชั้นตอนนี้ คือ 1.1.4-2 นะเออ



มีเป็น video ด้วยนิดนึง


ในขั้นแรก จะเริ่มแปลง JAVA เป็น Kotlin โดยเริ่มจาก model class สร้างไฟล์ Kotlin โดยกด command + n ชื่อเดียวกับ model class จากนั้นก็อปของข้างในมา ครอบทั้งหมดตั้งแต่ประกาศ class มาเลย paste ใน kotlin ไฟล์ เขาถามว่าจะให้แปลงเป็น kotlin เลยไหม กด OK เลยจ้า


และผลที่ได้ โอโห้ class model สั้นลงไปมาก


เนื่องจากมันเป็น model class เนอะ ค่าที่เข้ามามันจะไม่เปลี่ยนค่า ดังนั้นเปลี่ยน var -> val
และค่าที่เข้ามามันไม่เป็น null ดังนั้นเอา ? ออกไป


แล้วก็ลบ JAVA เดิมด้วยนะ กัน compiler สับสน

ถ้างงว่าครอบตรงไหน เชิญวิดีโอจ้าา


ตัวโปรเจกจะมีการ uncomment ที่ gradle เพื่อเราสามารถเขียนได้เมามันส์ขึ้น แต่ก็ไม่แนะนำทุกกรณีนะ


เรามีวิธีใช้กระดาษทดแบบง่ายๆ คือการทดลองการเขียนโค้ดด้วย Kotlin ว่าท่านี้เขียนถูกไหม
โดยไปที่ Tools -> Kotlin -> Kotlin REPL


มันจะอยู่ข้างล่างนะเน้ออ
ใน comment มันคืออะไร มันคือ การประกาศ object แล้วใส่ค่าลงไปง่ายๆนี่แหละ


เริ่มที่การลองใส่ค่าใน mutable list และใส่ค่าเพิ่มลงไป


คราวนี้มาลองการใช้ lambda กันดีกว่า
เราสร้าง function myFunc เพื่อรับตัวเลขเข้ามา และคืนค่าตัวเลขออกมา


ลองอีกอัน เราใส่ตัวเลขไปสองตัว นำมาเปรียบเทียบกัน ผลจะออกมาเป็นอะไร
ผลออกเป็น falsetrue เพราะอะไรหล่ะ เพราะคืนค่าทุกอันที่เปรียบเทียบใน list นั้น


ทดลองแลมด้ากันพอหอมปากหอมพิซซ่า เอ้ยยย หอมคอไปแล้ว มาถึงช่วงแปลงเป็น Kotlin ต่อ

ที่ต่อไปที่เราจะเปลี่ยน TaskRepositorImpl โดยสร้าง kotlin ไฟล์ขึ้นมาใหม่ ชื่อว่า KotlinTaskRepositorImpl จากนั้นก็อปของจาก TaskRepositoryImpl มา ระหว่างนี้มันจะ build ไม่ผ่าน เราต้อง import library kotlin file ที่เราสร้างมาก่อน 


อันนี้อาจจะงงๆว่าควรจะก็อปใส่ยังไงดี ดูวิดีโอเลยจ้าา


ลอง run ดู จะขึ้นมาเป็น RecyclerView ที่เป็น list ยาวๆ


บางคนอาจจะรันขึ้นไม่ได้ ให้ uncomment ที่ Presentation > di > Injector แล้ว import library ให้เรียบโร้ยยยยยย


ไปที่ TaskListActivity เพื่อ uncomment ตรง intent เพื่อให้ไปอีกหน้านึงตอนคลิกได้


ต่อมาไปอีกสองหน้าอีกนิดๆหน่อย ดังรูป


ไปที่ Presentation > taskdetails > TaskDatailsActivity
มี TODO 4 จุดที่ต้องทำ เนื่องจากเวลามีน้อยเลยเหลือแค่ 3 อัน

TODO #1 : เป็นการรับ bundle มาจาก activity ที่แล้ว
TODO #2 : เป็นการใส่ title description และรูปภาพ การใช้ library glide ท่าจะคล้ายๆใน JAVA เลย
และ set adapter ซึ่งเราจะไปแก้ที่ ActionItemAdapter อีกที่นึง



TODO #3 : อันนี้ใส่รูป
TODO #4 : เป็นการ set recycler view ซึ่งเราไม่ต้องมาใส่ mRecyclerView. บลาๆๆๆ สามารถใช้ apply ครอบเพื่อระบุคุณสมบัติได้



และไปที่ Presentation > taskdetails > ActionItemAdapter เพื่อทำ adapter ซึ่งก็ตรงไปตรงมา

TODO #1 : คืนค่า size ทั้งหมดออกมา โดยค่าที่ได้ต้องไม่ใช่ null นะเออ
TODO #2 : bind view ออกมาโดยอิง position
TODO #3 : เป็นการใส่ attribute 



บางทีอาจจะมีขึ้นแดงๆ เนื่องจากเราเพิ่ม LayoutContainer แล้วยังไม่ได้ implement ไส้ในของ function ของ LayoutContainer นั่นเองงงง



ระหว่างนี้มีคั่นด้วยเบรกและพิซซ่าเบาๆ


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

Workshop: Miracle of stdLib
โดยคุณป็อปจาก shopspot และคุณจูจาก Agoda


เช่นเดิม clone code ทั้งหมดจาก https://github.com/ThaiKotlinDev/miracle-of-stdlib

มาเรื่องแรก Apply, Also, With
รู้สึกว่าจะแอบข้ามสไลด์ มาดูตัวอย่างในนี้

initTextViewBad อันนี้คือ JAVA style 
initTextViewWith อันนี้ดีขึ้นนิดนึง มาการครอบโดยใช้ with และใส่ค่าที่จะ return แต่ยังไม่ดีที่สุด
initTextViewGood ใช้ apply ครอบเหมือนด้านบนเลย 
initTextViewGood2 ใช้ also ครอบ แล้วใช้ it. ซึ่ง it ก็คือมัน หมายถึงตัวมันนะ
ซึ่งอัน Good แล้วแต่ถนัดเลย


เรื่องต่อมา Let, Run ทำให้เราไม่ต้องมานั่ง check null ให้ยุ่งยาก จบได้ใน line เดียว

อันนี้เป็นการเรียก API ซึ่งเราต้อง check ค่าที่รับมาเนาะ ว่า response ต้องไม่เป็น 404 not found และไม่เป็น null


อันนี้ก็ check ค่าที่เข้ามาว่าผลเป็น null หรือไม่
วิธีจำง่ายๆ let ใช้กับ it และ run ใช้กับ this นะ


เรียนสักแปป quiz 1 ก็มาไม่ทันตั้งตัว เหมือนเติมคำในช่องว่างตามโจทย์
ถ้าจะดูว่าโค้ดเราเขียนถูกไหม สามารถไป run unit test ในนั้นได้เลย
ขอแปะโจทย์พร้อมเฉลย ดังนี้
quiz 1 ลองเอาข้างบนมาแปลงเป็น Kotlin
quiz 1 unit test




ต่อมาก็เรื่อง lazy จะเริ่มใช้ memory ตอนทำงาน ตามข้างต้น


ตอนต้นบอกได้ว่านางมี 2 type เนอะ
เราสามารถ add remove list ได้ตามใจชอบ ซึ่งมันจะคล้ายๆ list ใน python เลยแหละ


แถมใช้ function พวกนี้แบบง่ายๆ ทั้งในเรื่อง


เรื่อง set ก็เล่นง่ายเหลือเกิน แม่งง่ายกว่า python อีกอ่ะ เรียกกันตรงๆเลย
(อ้างอิงจากที่เราทดลองและเขียนเล่น https://medium.com/@minseomikki/set-in-the-python-4f540d417540)


data model ก็ง่ายๆ เราสามารถใส่ default หรือ init อันนี้ไม่แน่ใจนะ ได้ด้วยแล้วกัน


ตัวอย่างการใช้งาน เช่น การ sort หาข้อมูลที่เราต้องการมาตัวนึง



quiz 2 ก็มาตบท้าย โจทย์คือให้เรา filter ข้อมูลตามโจทย์ที่กำหนดให้
ตรวจสอบด้วย unit test เหมือนเดิม แต่เขาเขียน test ผิดไปนิดนุงง
quiz 2 make it posh, make it blend, make it happen
ตัว Test quiz 2 ความจริงมีมากกว่านี้อีก



Non-JVM Kotlin
โดยคุณเบ็บจาก Genxas Elite ซึ่งเขาก็มี blog ใน blacklens ด้วยเช่นกัน

รูปนี้เราถ่ายเอง รูปเดียวที่แปะบล็อกนี้เลยนะ อันนี้ตอนที่เขากำลังเดโม่ตัวเว็บอยู่

หัวข้อนี้พูดถึงการเขียน kotlin ไปใช้ที่อื่นนอกจาก android 
เช่น การเอาไปเขียนหน้าเว็บ มันจะสามารถ convert kotlin ไป js ได้ โดยการไป setting ใน gradle (kotlin.js) และ pack file ทั้งหมดที่ compile เสร็จแล้ว ไป deploy ซึ่งพอเปรียบเทียบโค้ดแล้ว หน้าตาเหมือน js เลยเนอะ หน้าตาคุ้นมากตั้งแต่ session แรก แถมไม่มี ; เหมือน python อีก


พอแปลงแล้วโค้ดก็จะเป็นประมาณนี้


session นี้ไม่ได้ workshop จริงจัง แค่โชว์ให้ดูเฉยๆ
โค้ดที่ใช้ clone จาก https://github.com/ThaiKotlinDev/kotlinjs-wonderland
ลง editor IntelliJ IDEA CE ในการกระทำครั้งนี้
ไม่ต้องมี Android Studio ก็สามารถเขียนโค้ดด้วย Kotlin ได้

มีการใส่ gradle คล้ายๆใน Android Project ด้วย
เพิ่ม apply plugin: "kotlin2js" ด้วยนะ


มี library ให้เรียกใช้ พี่เขาก็ก็อปแปะรันให้เราดูว่าผลออกมาเป็นยังไง




Dynamic type สามารถไปเรียก firebase ได้ด้วยนะ


External ต้องใส่ modifer ว่าเราไปเรียกฟังก์ชั่นนี้ด้านนอกแล้วนะ


ตัวเว็บของกลุ่มก็ใช้ Kotlin เขียนขึ้นมาทั้งหมด https://thaikotlindev.github.io/


กลุ่มเป้าหมายของ Non-JVM ซึ่งเราเขียน Kotlin แล้วแปลงเป็นภาษาตาม platform นั้นๆ ได้แก่ Embedded system/IoT, iOS, Windows, Web Assembly


มีคนเอาไปใช้กับ RaspberryPi เหมือนกันนะเออ http://hadihariri.com/2017/05/28/raspberry-pi-starter-kit-and-kotlin-native/


โดยของ iOS จะแปลง kotlin ไปเป็น C++ แล้วเปลี่ยนไปเป็น Objective-C และจบที่ Swift
และมีการโชว์ให้ดูด้วย โดยมี reference ตามนี้ http://justmaku.org/2017-06-07-kotlin-on-ios

ซึ่งก็รันได้จริงๆนะเออ นึกถึง react.js เหมือนกันนะ


ซึ่งถ้าเราอยากเอา Kotlin ไปเขียนหน้าเว็บงี้ ตามไปอ่านได้ที่นี่เลย https://github.com/Kotlin/kotlin-fullstack-sample

---

สุดท้ายขอบคุณ Thailand Kotlin Developer ที่จัดงานนี้นะคะ
และรูปจากคุณ Wanchuda Sukarrom ที่ถ่ายภาพเก็บตกของงานนะคะ
ส่วนรูปด้านบนจากแอดมินกรุ๊ปค่ะ คุณ Verachad Wongsawangtham ทำท่าเป็นรูปตัว K สดๆกันเลยทีเดียว

ส่วนเว็บของกลุ่ม https://thaikotlindev.github.io/ ใช้ kotlin ทำทั้งหมดเลย

ลองเล่น kotlin แบบชิวๆที่ https://try.kotlinlang.org
และเขามี library document ด้วย เป็นของ version 1.1 เลย ที่เราเปิดค้างไว้ก็อันนี้ https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/index.html ตอน session ที่ 3 จ้าาา
และสุดท้าย official document อยู่ที่ https://kotlinlang.org/docs/kotlin-docs.pdf

ถ้าข้อมูลส่วนไหนผิดพลาดก็ขออภัยด้วยนะคะ
สามารถติติงได้เพื่อข้อมูลที่ถูกต้องค่ะ :)

ป้ายกำกับ: