จดบันทึกงาน ThoughtWorks Talks Tech Webinar เรื่อง Democratizing Programming
จากงานรอบก่อนที่เข้าไปฟังน้องเกี๊ยงเกี่ยวกับเรื่อง tech และ art แล้วไม่ได้ทำบล็อกไปนั้น ได้เข้าไปในกลุ่ม ThoughtWorks Talks Tech และพบว่าเห็นว่าหัวข้อน่าสนใจดีเลยเข้ามาฟังจ้า
งาน ThoughtWorks Talks Tech Webinar ในรอบนี้ก็เป็นงานแรกของปี 2021 นี้เลย กับหัวข้อ ความเท่าเทียมกันทางการเขียนโปรแกรม หรือ Democratizing Programming โดย คุณทอย คอนเทนต์ ครีเอเตอร์ของเพจ DataRockie และคุณเบลล่า Developer Consultant ของ ThoughtWorks งานจัดขึ้นในวันที่ 20 มกราคม เวลา 19:00-20:00 ซึ่งต้องลงทะเบียนทางเว็บไซต์ และมี url Zoom เพื่อเข้าไปฟังสัมมนาจ้า
ส่วนย้อนหลังสามารกดได้ที่ลิ้งด้านล่างเลยจ้า
ทางเราพยายามสรุปเท่าที่ได้เท่าที่ไหวเนอะ บางทีก็จดไม่ทันนิดนุง
What's Democratizing Programming?
ว่าแต่ Democratizing Programming คืออะไรกันนะ?
Software is eating the world. – Marc Andreessen
อย่างเว็บไซต์ amazon ก็คือ software ที่เป็น e-commerce website อะเนอะ ก็คือเว็บไซต์ที่ทำหน้าที่ขายของออนไลน์เว็บไซต์นึงสัฐชาติอเมริกัน ถ้าเราหาหนังสือเราจะพบว่าในข้อมูลของหนังสือแต่ละเล่มนั้น จะมีการแสดงตัวเลข จำนวน รวมไปถึง rating สิ่งเหล่านี้ก็คือ data นั่นเอง
จำนวนโปรแกรมเมอร์ในโลกนั้น เมื่อเทียบกับจำนวนประชากรโลกนั้น พบว่ามีจำนวนน้อยมากๆ
ดังนั้นอยากให้ทุกคนเข้าใจเรื่อง coding มากขึ้น ซึ่งจริงๆแล้วการเขียนโปรแกรมก็ขึ้นอยู่กับความสนใจของแต่ละคน ถ้าให้เจ้าของบล็อกยกตัวอย่างง่ายๆ เช่น ตัวเอง ก็คือนอกจาก Android Development ก็สนใจเรื่อง chatbot และพวก Web Development ด้วย คนอื่นอาจจะมีความสนใจตรงนี้ต่างกันไป
ในตัว Technology Radar Volume 23 นั้น 1 ใน 4 ประเด็นหลักในฉบับนี้มีเรื่อง ความเท่าเทียมกันในการเขียนโปรแกรม ด้วยนะ
Tech Radar หรือ คู่มือนำทางสู่ปลายขอบเทคโนโลยี คือ รายงานเทรนด์เทคโนโลยีที่ ThoughtWorks เผยแพร่ ทุกครึ่งปี
Tech Radar แต่ละฉบับนั้นจะมาพร้อมกับธีมที่ ชี้ให้เห็นถึงทิศทางของ เทคโนโลยีต่างๆ ในช่วงเวลานั้น โดยคุณสามารถดาวน์โหลด Tech Radar ฉบับที่ 23 ซึ่งถูกแปลภาษาไทยได้ที่ https://www.thoughtworks.com/radar
สรุป Democratizing Programming คือ การลดความเหลื่อมลํ้าในการเขียนโปรแกรม โดยมี tool ต่างๆช่วยตรงนี้ เพราะไม่ใช่ทุกคนที่เขียนโปรแกรมเป็น ทำให้เข้าถึงเทคโนโลยีได้ง่ายขึ้น และใช้ความรู้ด้านโปรแกรมมิ่งมากขึ้น เนื่องจากก็มีพวก Excel ที่เราสามารถเขียนสูตรต่างๆในนั้นได้ มี smart tv ที่ทำงานได้หลากหลาย download application ต่างๆได้เหมือน smart phone และ smart phone ทุกๆคนก็สามารถเข้าถึงได้
แน่นอนว่า session นี้จะไม่ได้พูดถึงการ coding แบบจริงจัง แบบที่เราทำในงานประจำเนอะ อย่าเพิ่งง่วง อย่าเพิ่งหลับกันน้าาา
Does the world need democratizing programming?
- less dependency on programmers : สมมุติน้องคนนึงต้องรอให้ dev สรุปข้อมูล user มาให้ก่อน จึงจะทำงานตัวเองต่อไป ทำให้มันติด process มารอเป็นทอดๆ เมื่อมีบางอย่างที่น้องคนนั้นพอทำได้เอง โดยการเรียนรู้จากพี่ๆ dev ทำให้ลดการพึ่งพาหรือรองานจากคนอื่น ทำให้ทีมทำงานได้เร็วขึ้น
- greater flexibility for non-programmer : สามารถทำอะไรต่างๆได้เลย โดยไม่ต้องรอเป็นคอขวด
Available Tools
- spreadsheet ซึ่งเป็น low-code platform ตัวแรก ทำให้คนสามารถทำการ calculate หรือ visualize data ได้มากขึ้น
- wordpress.com เหมาะสำหรับเก็บผลงานของตัวเอง หรือเขียนบล็อก โดยที่เราไม่ต้องทำเว็บไซต์เอง (CMS อื่นๆก็เช่นกัน เช่น Ghost ที่เราใช้อยู่เนอะ)
- amazon Honeycode เป็นการทำแอพพลิเคชั่นมือถือบนเว็บไชต์ โดยเขียนโค้ดน้อยมาก ใน demo ใช้ของ Glide ที่ชื่อคล้ายๆ library load image บน Android อ่ะ หรืออีกอันนึงที่เรานึกออกคือ app inventor คนตั้งกระทู้ผ่านในกลุ่ม Android พอสมควร โดยเฉพาะประเด็นเอาขึ้น Play Store งี้
- Azure Machine Learning Studio อันนี้ทำ Machine Learning โดยที่เราไม่ต้องเป็น data science ก็สามารถทำได้ โดยต้องมีพื้นฐานนิดหน่อยก่อนถึงจะลากวางอย่างเข้าใจเนอะ
เรื่องหลักๆที่ดูยากอย่างการ config ต่างๆ ซึ่งบางทีสำหรับโปรแกรมเมอร์ก็ไม่ง่าย แล้วคนทั่วๆไปหล่ะ มัน config ยากหรือเปล่า?
เช่น การติดตั้ง software ในบางบริษัท ที่ต้องส่งเอกสาร ให้หัวหน้าเซ็นต์ แล้วเอาไปให้ IT Support โดยผ่านกระบวนการต่างๆ เช่น ISO 27001 งี้ในเรื่อง security กว่าทาง IT Support จะลงโปรแกรมให้เรา บางทีเขาก็ให้ บางทีก็ไม่ให้ แล้วทำไมเจ้าของบล็อกดูเล่าละเอียดจัง อ๋อ สมัยก่อนที่ยังไม่ได้ทำงาน Android Developer ที่บริษัท start-up อะจ้าาา คือมันก็ยุ่งยากจริงๆนั่นแหละ ใน tool ที่ยกมานั้นสามารถรันผ่านหน้า browser ได้เลย แต่ก็ต้องแจ้งทาง IT Support นิดนึงในกรณีที่ทางบริษัทบล็อก port บล็อก IP บางบริษัทเข้า Google ไม่ได้ก็มี เพื่อให้เขานั้นไม่บล็อกเว็บนี้ ทำให้เราทำงานต่อไปได้เนอะ
(เนี่ย ทำงานบริษัท start-up อ่ะสบาย ลงโปรแกรมต่างๆที่เกี่ยวกับงาน และการพัฒนาตัวเองได้เลยไม่ต้องขอใคร ซึ่งทาง Ookbee ยังรับเรื่อยๆนะจ๊ะ แค่กๆๆๆๆ)
How software work?
ในรูปอาจจะ over simplify นิดนึง หลักๆก็คือ มี input ก็คือ data รวมกับการ process ด้วย code ที่ทำงานกับ data และนำ data ไป present ให้ user ดู ออกมาเป็น output ที่เป็น software นั่นเอง
อ่ะถ้าเรายกตัวอย่างใกล้ตัวเลย ในงานของเราเนอะ เราก็จะดึง API ที่ทางหลังบ้านทำไว้มาแสดงในแอพพลิเคชั่นของเรา และพอทำเสร็จ ก็ทำการ build ออกมาเป็นตัวแอพพลิเคชั่นเพื่อลง store เนอะ และถ้าเป็นหน้าเว็บธรรมดา ก็เชื่อมต่อกับ API เช่นกัน แล้ว deploy ออกมาเป็นเว็บไซต์
ตัวอย่างเช่น เรามี data เป็นตัวแปรต่างๆที่กำหนดค่าไว้ จากนั้นนำ data เอาไปแสดงให้ user ดู แต่ดูแล้ว user อาจจะนำไปใช้งานยากนิดนึง เลยทำเป็น function ก็คือเป็น program นั่นแหละ เพื่อให้ user ใช้งานได้ง่ายๆ
Low Code Platform
คือการทำแอพพลิเคชั่น เว็บไซต์ หรืออะไรก็ตามโดยไม่ต้องเขียนโค้ด หรือถ้ามีเขียนโค้ด จะเขียนน้อยมากๆนั่นเอง
ตัวอย่างเช่น การเอา data ที่เป็นข้อมูลพนักงาน มาแสดงในแอพ โดยดึงข้อมูลที่เราทำไว้ใน spreadsheet มาใส่ใน template ตัวนั้น โดยใช้เวลาไม่นาน
ในตัวอย่างนี้ที่เราคิด ถ้าเป็น Native เนี่ย อ่ะก็ต้องคิดหล่ะ ใช้ iOS Developer และ Android Developer กี่คน หรือ cross platform จะใช้เป็น Kotlin Multiplatform หรือจะไปทาง Flutter เวลาที่ใช้ก็ประมาณ 1-2 เดือน ไหนหลังบ้านก็ต้องทำ API ขึ้นมาด้วยงี้ ค่าใช้จ่ายในการทำ อาจจะหลายบาทอยู่เนอะ ทางเราไม่ทราบราคาเท่าไหร่ด้วย แหะๆ ไหนจะเรื่อง maintanance ต่ออีกเนอะ
สิ่งที่เราต้อง trade off ก็คือเรื่องค่าใช้จ่าย เมื่อเราต้องการ function ของตัว platform ที่มากขึ้น ก็ต้องใช้เงินเพื่อซื้อความสะดวกสบายมากขึ้น และอีกข้อเสียนึงคือไม่สามารถ support การอัพเกรด feature ต่างๆในแอพของเราได้
How can we develop and encourage this democratization?
Education คือคำตอบ มุมมองสำหรับคนที่ไม่ได้จบสายตรงทางโปรแกรมเมอร์ มองว่าการเขียนโค้ดเป็นเรื่องยาก ดังนั้นการแก้ปัญหาเรื่องการศึกษาคือ เราไม่จำเป็นต้องเรียนรู้ผ่านการเรียนมหาวิทยาลัย (หรือไม่ได้เรียนรู้ผ่านมหาวิทยาลัยเพียงทางเดียว) เราจะต้องศึกษาเรียนรู้ด้วยตัวเอง ซึ่งเดี๋ยวนี้มีให้ศึกษาเยอะมาก ลองค้นหาสิ่งที่ตัวเองชอบให้เจอด้วย
และองค์กรนั้นอาจจะสนับสนุน low code มากขึ้น เช่น การเอาคนฝั่ง business มานั่งทำงานกับ developer หรือเคสตัวอย่างคือการเอา Business Analysis มานั่งทำงานกับ developer ทำให้ BA นั้นสามารถอ่านโค้ดของ developer ได้เข้าใจมากขึ้น
หรือ Safe environment to experiment (and play) ให้ทดลองทำอะไรใหม่ๆ เช่นบางองค์กรมีการขัด hackathon กันภายใน ช่วยทำให้องค์กรเติบโตได้เร็ว (แล้วอาจจะได้ product ใหม่ๆออกมาก็เป็นได้)
Demo
ช่วงเวลาที่รอคอย เพราะไม่ต้องจดเยอะ ได้มาถึงแล้ว 555 ใน session นี้มี 2 demo คือ การทำแอพผ่าน Glide application และการทำ machine learning ผ่าน Azure Machine Learning Studio
การทำแอพพลิเคชั่นผ่าน Glide Application
ก่อนอื่นเปิดเว็บนี้ก่อนเนอะ แล้วทำการ sign-up ต่างๆให้เรียบร้อย
หลักการของมันคือ เอา data จากใน spreadsheet ให้เป็นแอพพลิเคชั่นภายใน 5 นาที
เข้ามาจะเป็นหน้ารวมของของเรา เลือกสร้างใหม่ โดยมี template ให้เลือก พอเลือกเป็นตัวนี้เสร็จปุ๊ปจะแสดงตัวอย่างให้เราดูผ่านหน้านี้เลย
สามารถเข้าไปดูหรือปรับแก้ข้อมูลใน spreadsheet ก็ได้นะ
เอ้อออ แล้วสามารถกดเล่นแอพนี้ผ่านหน้าจอนี้ได้เลย อย่างอันนี้จะแสดงที่ตั้งของบริษัทเนอะ ใช้ของ mapbox มาแสดงแผนที่ แล้ว speaker เขาก็ทักว่าเอ้อออในเมืองเดียวกันมีออฟฟิศ 3 ที่เลยหรอ ในใจนี่แบ่บบ มาดูที่ Ookbee ไหมค่ะ ที่พัฒนาการนั้น 3 ตึกนั้นใกล้กันมากเลยน้า ใกล้กว่าในรูปอีกบอกเลย
สามารถปรับสี ปรับหน้าตาได้นิดหน่อย และรองรับเรื่อง dark mode ได้นิดหน่อย เพราะมีให้เลือกตาม device theme เลย และเรื่อง UI ก็ไม่ต้อง concern เพราะทำทีเดียวรันได้ทั้ง iOS และ Android เลยทีเดียว
เมื่อทำเสร็จกด publish เราจะได้ url เอาไปแชร์
และลองทำการสแกน QR Code เพื่อเข้าไปส่องดู พบว่ามันเป็น web application ตัวนึง ไม่แน่ใจว่าเป็น PWA หรือเปล่านะ เพราะมีการให้กด install app จากหน้าเว็บด้วย
(หรือมันอาจจะจบจากที่ทำแอพต่างๆมาเป็นแค่ PWA ก็เป็นได้ ...)
การทำ machine learning ผ่าน Azure Machine Learning Studio
อันนี้สนุกกกกกกก ส่วนตัวคือไม่ค่อยเก็ทด้านนี้เท่าไหร่ แหะๆ พอมาเจออันนี้ก็เข้าใจมันมากขึ้นนะ
ตัว Azure Machine Learning Studio ไม่ต้องผูกกับบัตรเครดิต สามารถใช้เป็น sandbox ได้ ข้างในมี data set ต่างๆให้เราใช้จ้า ไม่ต้องไปหา data เอง
ก่อนอื่น เราต้องเข้าใจและรู้กระบวนการสร้าง model นิดหน่อยก่อนใช้งานจ้า จะเป็นดังนี้
ก่อนอื่นนำ data ที่ได้มา split data ออกก่อน ในรูปใช้ 80-20 หรือจะใช้ 70-30 ก็ได้ แล้วเอาก้อนใหญ่ไปทำการ train model และทำการทำนายกับ dataset ส่วนที่เหลือ จากนั้นเอา scoring มาเทียบกับของจริง เพื่อหาความแม่นยำของ model
เมื่อเราสร้างอันใหม่จะเห็นเป็นเปล่าๆแบบนี้ แล้วเราก็ search หาแต่ละอันมาลากวาง
ขั้นแรกเราจะเลือก dataset ที่ต้องการก่อน ตามมาด้วย column โดยไปที่ column selector เลือก column ที่เราต้องการ ตามมาด้วย split data เลือกจำนวน row เป็น 0.7 ก็คือ 70% ที่เราจะแบ่งมาเพื่อ train data นั่นเอง
จากนั้นทำการ train model ไปที่ column selector แล้วเลือก class flag ว่าใครเป็นมะเร็ง เรายังเหลืออีกขานึง ใส่กล่อง logistic regression แบบ two-class เพื่อบอกว่าเป็นหรือไม่เป็น และทำการ score model ตามมาด้วย evalute model
สุดท้ายตัวกล่องทั้งหมดที่ลากวางจะเป็นดังนี้
จากนั้นทำการ Run model มันทำจากบนลงล่างเนอะ อันที่ทำเสร็จแล้วจะขึ้นสีเขียว
เมื่อรันผลเรียบร้อยแล้ว ทำการ visualize เพื่อดูผลลัพธ์ สามารถปรับเพื่อดู accuracy ได้
สรุปรูปรวมทั้งหมดของเราเองสำหรับ demo นี้
session มีไลฟ์ย้อนหลังนะ ย้อนไป url ของ event ที่แปะไว้ด้านบนได้เลยจ้า
อันนี้ที่เขาฝากร้านไว้ตอนท้าย
ตำแหน่งงานที่เปิดรับ: https://thght.works/2XQWtZm
สมัครรับจดหมายข่าว:
Meetup Group: https://www.meetup.com/thoughtworks-thailand-meetup-group/
ThoughtWorks Talks Tech Facebook Group:
เพจ DataRockie:
บล็อกจบแล้วฝากร้านตัวเองแปป
download แอพอ่านบล็อกใหม่ของเราได้ที่นี่
ติดตามข่าวสารและบทความใหม่ๆได้ที่
และช่องทางใหม่ใน Twiter จ้า