Fanboi Channel

มิตรสหายนักพัฒนาซอฟต์แวร์ท่านหนึ่ง

Last posted

Total of 367 posts

1 Nameless Fanboi Posted ID:ZcCGcY0t+a

แตกมาจากกระทู้ มิตรสหายท่านหนึ่งในห้อง lounges
แต่อันนี้สำหรับ Software Developer

เริ่มจากอันนี้

ชอบอันนี้

มีประเด็นอยากพูดถึง คือ Pinterest เขาใช้ Kafka ซึ่งก็ถือว่าเป็นระบบที่ส่วนตัวผมคิดว่าเสถียรมากๆ แล้ว แต่สุดท้ายก็ไปเจอปัญหาว่า เวลาส่งข้อมูลจาก App ไป Kafka อาจเกิดเหตุการณ์ที่ว่า App ติดต่กับ Broker ไม่ได้ (อาจจะตายจริงหรือ Network connection หรืออะไรก็ตามแต่) ซึ่งทำให้เกิด Data loss ขึ้น

ขั้นแรกเขาก็ทำ Buffer ไว้ ถ้าสมมติติดต่อกับ Broker ไม่ได้ ก็เอาของที่เคยคิดว่าจะส่งให้ Kafka เก็บไว้ใน Memory ของ App ก่อนนะ พอมันติดต่อกับ Broker ได้เมื่อไหร่ค่อยส่งไปทีเดียว

ปัญหาที่ตามมาก็คือ Buffer เต็มเพราะ Memory มีจำกัด สุดท้ายเขาก็แก้โดยการ Write ลง Disk ซะเลย

ประเด็นที่น่าคิด

- Tools ไม่ได้แก้ปัญหาได้ทุกอย่างในโลก ใช้ Kafka ไม่ได้แปลว่าคุณได้ Relliablility & Scalability โดยอัตโนมัติแต่อย่างใด นี่ก็ต้องไปสร้าง Layer บน Kafka อีกทีเพื่อกันเรื่อง Data loss สิ่งที่น่าสนใจคือ การอ่านเขียนลงไฟล์สดกับ Kafka มัน Performant เท่ากันมั้ย อะไรจะกลายเป็น Bottleneck ในกรณีไหน (ผมใบ้ให้ว่าไม่เท่ากัน แต่มีจุดคุ้มทุนทาง Performance ต้องเข้าใจด้วยว่า Kafka มันเล่นไปจนถึงระดับระบบไฟล์ที่ทำไงให้ Seek disk ได้เร็วเลย เขียนอ่านไฟล์ธรรมดา "อาจจะ" สู้ไม่ได้ในกรณี 1-1 วัดกัน)

- เขาเลือกที่จะ Write buffer ลง Disk ซึ่งช้ากว่า Memory การอ่านกลับมาจากดิสก์ซึ่งช้ากว่า Memory ทำให้เกิด Lag time ระหว่าง Application กับ Message Queue มากขึ้น ทำให้ข้อมูลกระจายไปแต่ละส่วนในระบบช้าลง ถ้าในบริบทของ Pinterest ก็เป็นไปได้ว่าเรา Pin สิ่งนึงแต่ของคนอื่นกว่าจะขึ้นเห็นของที่เรา Pin ก็กินเวลาไปบ้าง ไม่ต้องนับเรื่องการเก็บ Stats ซึ่งช้าและไม่ Real-time เท่าเดิม นี่คือ Trade-off ที่เกิดแน่ๆ กับการเลือกทางนี้ ทำไมเขาถึงเลือก Trade-off แบบนี้ผมก็ไม่ทราบ แต่ก็เป็นเรื่องฝากให้คิดว่าทุกอย่างบนโลกมี Trade-off

- ทำไมระบบแบบนี้เกิด Data loss ไม่ได้จนต้องลงทุนขนาดนี้? นี่คือลงทุนให้ Data propagate ช้าลงซึ่งอาจจะกระทบ User experience ได้ด้วยซ้ำ เขาทำที่ Layer ไหนของระบบที่ Data เสียไม่ได้แล้ว

- ข้อสังเกต: ทำไม Buffer ไว้ใน Memory ถึงมีปัญหา Buffer เต็มได้ นั่นสะท้อนว่า Data loss "เคย" เกิดขึ้นเยอะมากระดับนึง มีปัญหาติดต่อ Broker ไม่ได้เยอะประมาณนึง พอคิดได้แบบนี้แล้วสิ่งที่ต้องถามต่อมาคือ อัตราการ Failed ของ Broker มันเยอะขนาดไหนกันนะ มันปกติหรือผิดปกติ แล้วจริงๆ สิ่งที่ Pinterest ทำมันเมคเซนส์มั้ย นี่คือ Workaround ที่ถูก หรือควรจะไปสืบหาต้นตอว่าทำไม Broker failed บ่อยขนาดนั้น? ผมตอบไม่ได้นะ บางทีมันอาจจะเป็นปกติอยู่แล้ว แต่อันนี้ให้ดูไว้ว่าเวลาดูงานพวกนี้ด้วย Critical thinking มันไม่ควรจะเชื่อถือไปเลยเพียงเพราะเขาเป็น Pinterest หรือบริษัทใหญ่

ประเด็นที่อยากสื่อทีสุดคืออันแรกนั่นแหละ อย่าโดนขายของด้วย Tool จนขาดความสามารถในการเข้าใจ System at Scale เพราะสุดท้ายคุณอาจจะต้องทำแบบ Pinterest ก็ได้นะที่ต้องทำอะไรบางอย่างเพื่อสู้กับ Trade-off ของตัว Tool เอง

2 Nameless Fanboi Posted ID:5xftt4MgqF

คำถามยอดฮิต จะเป็น Data Scientist จะเรียน Operations Research (แบบแป้ง) หรือจะเรียน Computer Science (แบบน้องเปรียว Senior Data Scientist ของ Coraline) ดีนะ

ตอบแบบนี้นะคะ

บอกก่อนว่า ทั้งสองศาสตร์ สามารถเป็น Data Scientist ได้เหมือนกัน แต่ทำงานได้ไม่เหมือนกันค่ะ

OR จะเป็นการ Applied Math เพื่อให้เข้ากับ Process ของปัญหา และกลั่นกรองออกมาเป็นสมการ หรือ Model เพื่อนำไปวิเคราะห์ด้วยคอมพิวเตอร์ต่อไป

Com Sci เป็นศาสตร์ที่เรียนเพื่อเข้าใจกระบวนการของ Computer โดยมีโจทย์ให้ แล้วประยุกต์ใช้ Computer ในโจทย์นั้นๆ

((ความเป็นจริงแล้ว ใน OR เอง และ Com Sci เอง ก็มีแขนงแยกออกมาอีกมากมาย เอาไว้แป้งจะเล่าให้ฟังในครั้งต่อไป))

คราวนี้ กลับมาตอบว่า จะเรียน OR หรือ Com Sci ต้องถามตัวเองค่ะ

1. คุณชอบที่จะออกไปเจอปัญหา แล้วจิตนาการถึงแนวทางในการแก้ปัญหา ร่างโจทย์ในกระดาษ ไม่ได้รู้สึกเสียเวลากับการออกไปคุยหน้างาน หรืออ่านเปเปอร์ที่ไม่เกี่ยวกับคอมพิวเตอร์ ก่อนที่จะเขียนโปรแกรมขึ้นมาแก้ปัญหาหรือไม่ ถ้าใช่ คุณเหมาะกับ OR

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

สำหรับแป้ง ใน Coraline แป้งจะบอกทีมงานเสมอว่า ทุกคน "เท่าเทียมกัน" ไม่มีใครโดดเด่นกว่าใคร ทุกคนต่าง "โดดเด่น" เหมือนๆ กัน

ในการทำงานจริง OR จะเป็นคนระบุปัญหาที่ดี ในขณะที่ Coder จะเป็นคนพัฒนาระบบที่ดี อยู่ที่งานแต่ละประเภท แต่ละที่ ว่าต้องการความเชี่ยวชาญด้านไหนเป็นพิเศษ

แต่ ด้วยความที่ ส่วนตัวแป้งมองว่า อาชีพ Data Scientist เป็นอาชีพที่เสี่ยงตกงาน ในวันที่ AI เข้ามาครองโลก

ดังนั้น แป้งวาง Career Path ของแต่ละคนไว้ต่างกัน

OR จะเหมาะกับสาย Business ด้วย นอกจากต้องเรียนรู้การสร้าง Model ก็ควรจะเรียนรู้งานด้าน Business เพื่อสามารถตีโจทย์ให้ออก

Coder หรือ Com Sci ควรแบ่งร่างส่วนหนึ่ง เรียนรู้ส่วนงานอื่นที่เกี่ยวข้อง เช่น Com Engineer, Software Developer, UX/UI หรือ Application ต่างๆ

อย่างไรก็ตาม การที่คุณจะมี Degree ที่ 2 ได้ จงทำ Degree แรกของคุณให้เข้มแข็ง เพราะใน 1 วัน มีเพียง 24 ชั่วโมง ทั้งหมดทั้งปวง อยู่ที่การ "บริหารเวลา" ที่ดี

สุดท้ายนี้ จะเป็น OR หรือ Com Sci ก็แล้วแต่ความถนัดของแต่ละคน

ที่สำคัญที่สุด "ทุกคน.... เท่าเทียมกัน"

3 Nameless Fanboi Posted ID:R0vni+UmZe

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

4 Nameless Fanboi Posted ID:B507mX.k7y

ทำไมนักพัฒนาซอฟต์แวร์ต้องคุยกับคนอื่นไม่ค่อยรู้เรื่องครับ ยกตัวอย่างกระทู้นี้ เปิดกระทู้ได้สมกับเป็นนักพัฒนาซอฟต์แวร์ดี

5 Nameless Fanboi Posted ID:w8KZTt1Zzy

ลองติดตามคนนี้ดูครับ เห็นว่าเป็นเจ้าของเว็บที่มีชื่อเสียงแห่งหนึ่ง
https://mobile.twitter.com/gridth1

6 Nameless Fanboi Posted ID:q.Gd.MC0Bn

>>4 โปรแกรมเมอร์ไม่ได้คุยกับคนอื่นไม่รู้เรื่อง คนอื่นต่างหากที่คุยกับโปรแกรมเมอร์ไม่รู้เรื่อง

7 Nameless Fanboi Posted ID:6JEHn+xPZv

สวัสดีครับ วันนี้มาแชร์ประสบการณ์ตัดขาดกับลูกค้ารายแรกครับ

[tl;dr]
ลูกค้ารายแรก
อยากได้แอพเซต wallpaper ติดโฆษณา
ทำให้ทุกอย่าง
คิด 2500
ส่งมอบครบจบ
มีคำถาม ผมตอบ
ถามอีกเรื่อย ๆ ผมตอบบ้าง
เริ่มไม่ใช่คำถามเกี่ยวกับงาน ผมตอบบ้าง(แต่ไม่อยากตอบแล้ว!)
ลูกค้าไม่เข้าใจ ทำแล้ว error เขียนโค้ดไม่เป็นแต่อยากทำเอง
ผม....(ปัจจุบัน).... จึงตอบกลับไปว่า:
{
เอ่อคือ ก่อนอื่น ต้องขอโทษก่อนเลยนะครับ

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

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

ถ้าจะทำแอพลงสโตร์เพื่อเอาค่าโฆษณาในแอพแล้วไม่คิดจะทำต่อไม่อัพเดทอีกเลย รอกินตังค์อย่างเดียว ... นั่นไม่ใช่วิถีนักพัฒนาครับ อย่างน้อยก็ไม่ใช่ที่ครูสอนผมมา

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

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

สรุป
หยุดถาม "อะไรที่เกินขอบเขตงานผม" หรือ "อะไรที่มันหาวิธีแก้เองได้" ได้แล้วครับ
กรุณามีความเกรงใจในการถามด้วย
ผม ไม่ รับ สอน เขียน โปรแกรม ครับ

ขอบคุณครับ
}

ขอบคุณที่อุตส่าห์อ่านจนจบครับ
สุดท้ายนี้ คิดว่าถ้าเป็นทุกท่าน จะทำอย่างไรครับ? 😶

8 Nameless Fanboi Posted ID:mYgwFGAlSh

>>7 ให้เบอร์ติดต่อ คาสโต๊ด

9 Nameless Fanboi Posted ID:m+hQ2LUtM.

>>8 เป็นการแก้แค้นที่ดีครับ น่าสนใจมาก 👍👍👍

10 Nameless Fanboi Posted ID:n502njM+Nk

หลายคนสงสัยว่าจะเขียนโค้ดได้ต้องเก่งคณิตศาสตร์ด้วยหรือเปล่า ก็แล้วแต่เป้าหมายของเราครับ ถ้าต้องการหางานทำในบริษัทชั้นนำของไทย มีความรู้คณิตศาสตร์ในชีวิตประจำวันก็เพียงพอแล้วครับ เช่น ซื้อของ 250 บาท ลด 30% เหลือกี่บาท หรือ ฝากเงิน 10,000 บาทในธนาคารได้ดอกเบี้ยคงที่ 1.65% ผ่านไป 3 ปีจะมีเงินกี่บาท ถ้าสามารถแก้ปัญหาพวกนี้ได้ก็หางานประจำทำได้ในบริษัทชั้นนำแล้วครับ

แต่ถ้าอยากเขียนโค้ดเก่งระดับโลก อยากทำงาน Google, Facebook หรือ CERN, UN ต้องมีพื้นฐานที่แข็งแกร่งนั่นคือ Discrete Mathematics ครับ หนังสือเล่มนี้ Professor จาก Cornell แจกฟรีครับ

https://www.cs.cornell.edu/~rafael/discmath.pdf

11 Nameless Fanboi Posted ID:zq7l+Uk8mM

>>10 ขอบคุณครับ โม่ง โค้ดสตา

12 Nameless Fanboi Posted ID:wuxoIlAZeO

>>11 ด.. เดี๋ยวนะ
รู้ได้ยังไงว่าโพสต์ใน >>10 มาจาก โค้ดตา

13 Nameless Fanboi Posted ID:gyKi2NYqHq

ช่วงนี้กำลังเมามันกับ approximation algorithms มาก เพื่อน ๆ อาจสงสัยว่ามันคืออะไร

ยังงี้ครับ สมมติว่าในโรงงาน เราต้องการที่จะหาค่าใช้จ่ายที่ตำ่ที่สุด แต่หาไม่ได้ “ง่าย” ๆ เราจะทำอย่างไรนะครับ approximation algorithms เป็นวิธีที่ให้คำตอบที่การันตีได้ว่าไม่เกินเท่าไร (เช่น ไม่เกิน 2 เท่า) ของค่าใช้จ่ายที่ตำ่ที่สุดได้นะครับ

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

วิธีอื่น ๆ ที่ใช้แก้ปัญหาประเภทนี้ (optimization problems) ไม่สามารถให้การันตีได้นะครับ

วิชานี้ไม่มีสอนในเมืองไทย (เท่าที่ทราบ) แต่สามารถเรียนได้จาก MIT OCW ครับ

หากใครชอบอะไรแบบนี้ ผมแนะนำให้เรียน online algorithms กับ competitive analysis ด้วยครับ อันคือ approximation algorithms ที่ไม่รู้ข้อมูลเข้าทั้งหมดล่วงหน้าครับ ยังไม่มีสอนในเมืองไทยเช่นกัน แต่มีสอนที่ MIT OCW ครับผม

14 Nameless Fanboi Posted ID:o.ilz+WDyC

>>12 กุอ่านแค่บรรทัดแรกก็รู้ละ สัส แม่งโครตแพทเทิน

15 Nameless Fanboi Posted ID:m5g1epnkA7

>>14 กูนึกว่ามึงเล่นมุก 555

16 Nameless Fanboi Posted ID:mgwUZWNEzZ

>>13 นี่ก็โค้ดดาวป่ะ เห็นแปะแม่งซะเกือบครบทุกห้องเลย

17 Nameless Fanboi Posted ID:9Zal2CDsdp

>>16 มันเอาทวิตของ sirn มาฟลัดกวนตีนพนอื่น

18 Nameless Fanboi Posted ID:NQoefvtUi2

เขียนโค้ดเป็นอาจจะพาเราไปได้เงินเดือน 3 หมื่น 4 หมื่นก็เยอะแล้วครับ ถ้าอยากได้เงินเดือนเยอะกว่านี้ 7 หมื่น 8 หมื่นขึ้นไป ต้องพูดภาษาอังกฤษได้ดีครับ บริษัทระดับโลกเงินเดือนหลักแสน ไม่ได้ถามคำถามยากเย็นอะไรเลย ไม่มีถามหรอกครับ AI, Machine Learning, Block Chain, Big Data ยกเว้นว่าคุณจะจบปริญญาเอกเฉพาะทาง

บริษัทระดับโลกถามแค่ Data Structures พื้นฐานอย่าง Array กับ Linked List ต่างกันยังไง Tree กับ Hash Table เป็นยังไง แต่ถามเป็นภาษาอังกฤษซึ่งต้องตอบให้ได้ ตอนผมยังเรียนไม่จบ ส่งใบสมัครงานไปที่ Microsoft ตอนนั้นเป็นบริษัทที่ใหญ่ที่สุดในโลก สัมภาษณ์ทางโทรศัพท์ไม่ผ่าน แต่ก็ได้รับคำแนะนำมาให้ฝึกภาษาอังกฤษให้ดีขึ้น และได้รู้ว่าคำถามสัมภาษณ์งานระดับโลกจริงๆแล้วไม่ยากเลย จากนั้นมาก็ฝึกพูดภาษาอังกฤษอย่างจริงจัง มาได้งานในการสมัครครั้งที่สองครับ

น้องคนนึงทำงานอยู่บริษัทท่องเที่ยวขนาดใหญ่ที่ The Office At Central World วุฒิมัธยม อายุ 27 เงินเดือน 80,000 บาท ส่งใบสมัครไปที่ Amazon สัมภาษณ์ทางโทรศัพท์ เริ่มต้นด้วย Binary Search ก่อน ถ้าไม่ได้เรื่องนี้ เรื่องอื่นคงไม่ต้องถามต่อแล้วครับ ซึ่งก็แน่นอน สัมภาษณ์เป็นภาษาอังกฤษ บริษัทระดับโลกไม่มีใครสนใจวุฒิการศึกษาครับ เว้นแต่ว่าคุณจะจบ MIT, Harvard, Stanford ค่อยว่ากัน ลองส่งใบสมัครเข้าไปจะได้รู้ความจริงครับ Fortune favors the brave

ภาษาอังกฤษเป็นบันไดที่จะพาเราไปอีกระดับนึงครับ เขียนโค้ดพื้นฐานได้ก็ OK แล้วครับ เขียนภาษา C เขียน Java หรือ Python ดีทั้งนั้นครับ ฝึกพูดภาษาอังกฤษแล้วสมัครงานบริษัทระดับโลกได้เลย ทุกวันนี้มีสื่อออนไลน์ดีๆ ให้เราฝึกภาษาอังกฤษได้หลายช่องทางครับ ลองไปดูกันว่ามีที่ไหนน่าสนใจบ้าง

The English Coach สำเนียง California ขนานแท้ ซึ่งเป็นภาษาอังกฤษที่นิยมใช้ในธุรกิจ Digital ครับ
https://www.youtube.com/channel/UC-g0gSStENkYPXFRsKrlvyA

English with Lucy เป็นสำเนียงอังกฤษยุคใหม่
https://www.youtube.com/channel/UCz4tgANd4yy8Oe0iXCdSWfA

A.J. Hoge เป็นครูสอนภาษาอังกฤษที่เดินทางไปทั่วโลก ไปจีน ไปอเมริกาใต้ ไปยุโรป รวมทั้งเมืองไทย เพื่อศึกษาว่าคนแต่ละประเทศมีปัญหาอะไรในการพูดภาษาอังกฤษ
https://www.youtube.com/user/ajhoge

Josh MacPherson สอน TOEFL โดยเฉพาะ สำเนียง New York ใครทำงานการเงินต้องฟังบ่อยๆ จะได้คุ้นเคย
https://www.youtube.com/channel/UCdYirpVQgUHUMNRvF532GoA

แถมอีกนิดนึงครับ ไม่ช้าก็เร็วเราต้องได้ทำงานกับคนอินเดีย การฟังสำเนียงอินเดียบ่อยๆ จะช่วยให้เราทำงานได้ราบรื่นขึ้น ไม่รู้จะฟังที่ไหน ลองฟังของ Turorials Point ได้เลยครับ
https://www.youtube.com/watch?v=GzZTjaoRaOk&list=PLWPirh4EWFpG49yASGCmvOwXwVvgnm6Jt

19 Nameless Fanboi Posted ID:Z8iLYArsNQ

มันคงจะดีถ้าตอนเรียนมีคนมาบอกเราว่า อ่านหนังสือเล่มนี้เล่มเดียว แล้วไปหางานประจำเงินเดือน 30,000 บาทขึ้นไปได้แน่นอน หนังสือแบบนี้มีอยู่จริงครับ และมีอยู่หลายเล่มด้วย เดี๋ยวมาดูกันครับว่ามีหนังสืออะไรบ้างที่อ่านจบแล้วหางานได้เลย

ไม่จำเป็นต้องมาเรียนที่ CODEST ครับ หากมีความรู้ความสามารถ ที่ไหนก็รับเข้าทำงาน ศึกษาจริงจัง หางานทำได้ทุกคนครับ ไม่จำเป็นต้องจบตรงสาย ไม่จำเป็นต้องเรียนจบอะไรเลยด้วยซ้ำ

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

น้องคนนึงไปสัมภาษณ์งาน โปรแกรมเมอร์ โปรแกรมมั่วอะไรนี่แหละ มีแบบทดสอบ 5 ข้อ ทำได้ข้อสุดท้ายข้อเดียว คือเขียนตอบว่า SELECT * FROM CUSTOMER แค่นี้ได้งานแล้วครับ น้องคนนี้ตอนนี้เก่งแล้ว ผมถามทุกวันว่าจะย้ายงานมั้ย บริษัทมหาชน เงินเดือน 50,000 รอรับอยู่

เห็นน้องหลายคนไปศึกษา Big Data, Machine Learning, AI คุยไปคุยมาเรื่อง Array ก็ยังไม่รู้เรื่อง มันก็เหมือนกับการศึกษา Calculus โดยยังไม่รู้ว่า Polynomial เป็นยังไง สำนักข่าว Bloomberg มาสัมภาษณ์รัฐมนตรีด้านการศึกษาพูดว่า "คุณฝันไปหรือเปล่า รถมอเตอร์ไซค์เรายังประดิษฐ์ไม่ได้เลย"

กลับมาที่หนังสือครับ สำหรับคนที่เรียนไม่จบอะไรเลย มีวุฒิ มัธยม 6 หรือ มัธยม 3 ลองศึกษา JavaScript หรือ Swift ครับ Search ดูใน Google เองได้เลยครับ

- หนังสือชื่อ Eloquent JavaScript เล่มนี้ได้เงินค่าเขียนจากการบริจาคของบริษัทใหญ่ๆ นำโดย Mozilla

- Swift Language Guide เล่มนี้จาก Apple โดยตรง สังเกตดูว่าไม่ค่อยมีหนังสือ Swift ในท้องตลาด เพราะของ Apple แจกฟรีดีที่สุด

สำหรับคนที่เรียนจบปริญญาตรี สาขาอะไรก็ได้ ลองศึกษา Java ครับ เพราะมีงานรองรับมากที่สุด ลองอ่านหนังสือพวกนี้

- Java Structures Bailey เคยตีพิมพ์เมื่อ 15 ปีที่แล้ว
- Think Java เล่มนี้ก็อ่านเข้าใจง่าย
- Think Data Structures เป็นเล่มต่อของ Think Java
- Algorithm Clifford อ่านแล้วรวยแน่นอน

สำหรับคนที่สนใจสมัครงานในบริษัทชั้นนำของโลก แค่ศึกษา 3 เล่มสุดท้ายก็ไปได้ไกลแล้วครับ ชี้เอาได้เลยจะเอาบริษัทไหน Google, Facebook, Microsoft, Amazon, Apple

#ยิ่งอ่านยิ่งรวย #ยิ่งเก่งยิ่งรวย
#ยิ่งเก่งยิ่งดีต่อชาติ

20 Nameless Fanboi Posted ID:Z8iLYArsNQ

Harvard introducing new course, BMI 704: Data Science for Medical Decision Making. If you're interested in data science and machine learning applied to medicine.
Checkout data and readings:
https://github.com/manrai/BMI704_Spring2019

#BigData #VisualAnalytics #Medical #DataScience #Applied #Machine #Learning #DataLiteracy #DataScientists

Share & Like #youngDataScientists

21 Nameless Fanboi Posted ID:NnmsZz3kWp

สิบปีที่แล้ว telecom operator แข่งกันทำระบบให้ไม่ล่มช่วงเทศกาล หลายปีผ่านไปช่วงนี้เราน่าจะได้เห็น บางธุรกิจแข่งกันทำระบบให้ไม่ล่มตอนสิ้นเดือน .... stability เป็นฟีเจอร์ ที่ควรแข่งกันทำนะ focus ที่ Core Domain การไม่ออกฟีเจอร์ใหม่เลยแต่ระบบเสถียรขึ้น 10 เท่าคือการออกฟีเจอร์ใหม่เช่นกัน... Domain Driven Design กล่าว

22 Nameless Fanboi Posted ID:kzgICnFMnl

ประเทศไทย ไม่ได้ตามหา Data Scientist อยู่หรอกค่ะ เพราะแป้งยืนอยู่ ณ จุดนี้ แป้งพบว่า มีโครงการที่พร้อมให้สร้าง Model จริงๆ น้อยมากเหลือเกิน

เพราะเราไม่เคยเก็ยข้อมูลให้มีคุณภาพมากพอ และเรายังไม่ได้ทำ Data Lake หรือ Data กลาง ที่สะดวกต่อการใช้งาน

บางโครงการออกข่าวไปแล้วด้วย พอแป้งได้เข้าไปลองคุยกับผู้ใหญ่ ก็พบว่า "ไม่พร้อม" ดำเนินการใดๆ ทั้งนั้น

แป้งคิดว่า เราต้องการ "Data Engineer" ที่รู้ว่า Data Scientist ทำงานอย่างไรมากกว่า

แต่ที่สำคัญที่สุด เราต้องการ "ผู้บริหาร" ที่มีวิสัยทัศน์ในการดำเนินงานจริงๆ มากกว่าผู้บริหารที่ยอมให้ข่าว ทั้งๆ ที่ยังไม่ทราบถึงขั้นตอนการดำเนินงานจริงๆ ค่ะ

ปล. แอบสงสารเยาวชนที่แห่กันไปเรียน Data science มากๆ ความเป็นจริงโลกนี้ช่างโหดร้าย

23 Nameless Fanboi Posted ID:rf6+p+sgO2

>>22 อันนี้เห็นด้วย กูทำคล้ายๆสายนี้ จะขอข้อมูลอะไรมาเทรนนี่ยากเย็นแสนเข็ญ เดต้าก็ไม่ได้ งานก็จะเอา คนนั่งลาเบลให้ก็ไม่มี ต้องมานั่งเตรียมเองเหนื่อยมากๆ แต่เงินเดือนเยอะเลยยอมทำต่อ 555

24 Nameless Fanboi Posted ID:Fg28vCcUyJ

ประเทศไทยต้องการ programmer ที่ทำงานได้ทุกระบบทุก platform ตั้งแต่ภาษาโบราณแบบ AS400 ยัน Go ที่พูดภาษาอังกฤษคล่อง และทำงานครอบคลุมในส่วนของ AE และ data engineer ที่รู้ว่า data scientist ทำงานอย่างไร รวมทั้งรู้งานบัญชี hr โครงสร้างระบบโรงงาน และตั้งค่า server คล่องทำ scaling และติดตั้งระบบรักษาความปลอดภัย server ได้ และทั้งทำงานจับฉ่าย อย่าง ซ่อมคอม เปลี่ยนหลอดไฟ ซ่อมท่อน้ำ รวมถึงดูแลกล้องวงจรปิดได้ โดยจ่ายเงินเดือนถูกๆ ต่างหากล่ะ

25 Nameless Fanboi Posted ID:w07XdvMO0Q

อาชีพต่างๆในอุตสาหกรรมเกมเป็นอย่างไรบ้างวะ

26 Nameless Fanboi Posted ID:XYM1XDu+JJ

อยากเก่ง AI อ่านเล่มนี้ไว้ก่อนเลยครับ แจกฟรีจาก Stanford

https://web.stanford.edu/~boyd/vmls/

27 Nameless Fanboi Posted ID:F6Qs6.ciBY

>>26 กากไอสัส หนังสือเหี้ยไรทำมาจากสถาบันชื่อดังซะเปล่าแต่เนื้อหาเฉลยนี่อยู่กับคนแต่งวะ เอาไปสอนทั้งStandfordกับUCLAนี่คงต้องดูละว่าคนด่ายังไงมั่ง

28 Nameless Fanboi Posted ID:YXGrLfrIp.

>>22 มันเป็นเทรนอ่ะนะ ผู้บริหารมาบอกเห้ย เห็น big data กำลังมา ลองไปทำดูเดะ ไอ้คนรับคำสั่งก็คร้าบๆ จัดเทคคอสสอน 8 ชม เอามาทำไป สุดท้ายแล้วรีพอตก็ไปอยู่ที่ไหนสักมุม โดนที่ไม่รุ้เอาไปใช้ทำอะไร

29 Nameless Fanboi Posted ID:NYSI8glD2q

ถามลูกศิษย์หน่อยครับ ผมสงสัยมาก

ทำไมเราถึงไม่ใช้ genetic algorithms, tabu search, neural nets, bee algorithms, football algorithms, simulated annealing, particle-swarm, ant-colony, etc. ในการแก้ปัญหา เช่น หาเส้นทางที่สั้นที่สุดครับ

30 Nameless Fanboi Posted ID:dEhxicamKy

>>29 https://www.youtube.com/watch?v=Z5AgnKrNXYk
lol

31 Nameless Fanboi Posted ID:hB8a/IE3v6

ที่ คาสะโต๊ด จะเน้นฝึกฝนทักษะที่ใช้ในการทำงานจริงครับ ตอนเปิดสอนใหม่ๆ คนจะบ่นว่าให้เรียน Unix Command Line ไปทำไม โชคดีที่ทุกวันนี้ไม่มีคนบ่นแบบนั้นอีกแล้ว เพราะทุกคนเข้าใจแล้วว่ามันเป็นสิ่งสำคัญที่ต้องใช้จริง เมื่อฝึกฝนจนทำเป็นแล้วจะทำได้ตลอดไป ไม่มีการลืมครับ เหมือนกับการขับรถ หรือเล่นดนตรี ทำเป็นแล้วทำได้ตลอดไป

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

อยากเรียนแล้วทำงานได้อีก 10 ปีขึ้นไป ไม่ต้องวิ่งตามเทคโนโลยีให้เหนื่อย มาเรียนที่ คาสะโต๊ด ได้ครับ ดูคอร์สเรียนและค่าสมัครได้ที่นี่ https://คาสะโต๊ด.work/register

https://scontent.fbkk8-3.fna.fbcdn.net/v/t1.0-9/51493030_986333841569898_6751995851272355840_n.jpg?_nc_cat=111&_nc_ht=scontent.fbkk8-3.fna&oh=9da84d38cccd95c24653c9176ff0b7d1&oe=5CE0F36D

32 Nameless Fanboi Posted ID:7fuTjqTf2z

>>31 พิมไวแต่คิดไม่ออกก็เท่านั้นนะ อส

33 Nameless Fanboi Posted ID:RV+sLcsTuD

ปีนี้มีสองเหตุการณืที่ทำให้ผมเปลี่ยนแนวความคิดเรื่องการทำงานเป็นทีมไปโดยสิ้นเชิง
.
1. เหตุการณ์แรก วันที่ได้เข้าไปช่วยพี่รูฟและพี่จั๊วะพี่เจนสอน Design Thinking ที่ dtac
.
2. เหตุการ์ที่สอง วันศุกร์ที่ผ่านมา เป็นวันแรกที่ได้เข้า Retrospective กับทีมที่ dtac ทำงานกับทีมนี้ครบปีแล้วเพิ่งได้ร่วม Retro

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

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

คือ วิธีการ Good Bad Try เราต้องเชื่อก่อนว่า ไม่มีใครอยากเอาเปรียบคนอื่น มันน่าจะมีปัญหาอะไรสักอย่าง

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

34 Nameless Fanboi Posted ID:sbGGx/8nWn

ที่จริงผมห่างจากการทำ Web Application มาระยะหนึ่งละ ตามห่างๆ เรื่องนี้อาจไม่ใช่เรื่องใหม่้สำหรับคนสาย Web ก็ได้ แต่ที่ผมสนใจคือ CindyJs ช่วยจัดการ operation ทางคณิตศาสตร์ได้ดีมากจนสามารถทำให้คอมพิวเตอร์อย่าง Raspberry Pi ซึ่งติดต้ง WebGL ไม่ได้ก็สามารถใช้งานกับ web animation ได้ ถ้าเป็น PC ก็ไม่ต้องพูดละ สบายๆ (https://cindyjs.org)

https://www.facebook.com/somchai.somphadung/videos/10211800685766520/

35 Nameless Fanboi Posted ID:RYiBQfjcP2

เวลาทำ presentation slide ..... หลายคนมักจะ "เอา (text) ทุกอย่างใส่ bullet points โดยไม่คิดอะไรมาก"

อยากให้หาวิธี "visualize" กันมากกว่านี้ครับ มันมี pattern ในการนำเสนอหลายอย่างมาก เช่น ตาราง, ระนาบ 2 มิติ, และอะไรหลายต่อหลายอย่าง ที่มันใช้ทำให้คนเห็นประเด็นดีกว่ามาก

ใช้ bullet point เฉพาะส่วนของการสรุปครับ ......

36 Nameless Fanboi Posted ID:NeXSNfRr+r

ช่วงนี้ผมกำลังเรียน approximation algorithms โดยใช้หนังสือเล่มซ้ายมือ จริง ๆ คือ lecture notes Volume I ใช้สอนที่ Stanford เมื่อปี 1991 อ่านแล้วสนุกดีครับ เสียดายไม่มี Volume II เพราะคนแต่งเสียชีวิตไปก่อน

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

Approximation algorithms มี applications เยอะไปหมดครับ ไม่ว่าจะเป็นปัญหา optimizations ทาง Internet หรือ Human Genome แต่ก็มีหลายส่วนที่เกี่ยวกับ ideas ล้วน ๆ

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

ผมตั้งใจจะเปิดวิชานี้นะ แต่วันก่อนคุยกับหัวหน้าภาค หัวหน้าภาคบอกว่าจะต้องสอนในวิชา selected topic ซึ่งผมไม่ชอบ เพราะใน transcript ไม่ได้บอกว่าเรียนอะไร ผมอยากจะให้มีชื่อวิชา approximation algorithms ไปเลย ต้องรอดู

ถ้าใครชอบอะไรแบบนี้ ผมสนใจรับนักศึกษาปริญญาเอกอยู่นะครับ มีทุนให้ด้วย ติดต่อมาได้

37 Nameless Fanboi Posted ID:KH3kpEN+t.

เห็นบริษัท Software house และ Startup หลายเจ้า พยายามโชว์ Culture บริษัท พยายามสร้างภาพลักษณ์ให้ดูเก๋ Cool มีโต๊ะปิงปอง โต๊ะ Pool งานสบายรายได้ดี Flaxi-hour บลาๆ

แล้วก็เริ่มมาบ่นว่า น้องๆ รักสบาย ไม่มีความรับผิดชอบ งานไม่ได้ตามเป้า สุดท้ายงานก็ไม่ได้สบายจริง Flaxi-hour ไม่จริง.. ลาไม่จำกัดที่ไม่มีจริง เพราะสร้างเงื่อนไขมากมาย ต้องแจ้งล่วงหน้า 2 วัน ต้องอย่างนั้นอย่างนี้

เอ้า.. ก็สร้างภาพว่างานสบายรายได้ดี เน้นเรื่องเล่น คนก็คาดหวังว่า จะเข้าไปเล่นไง :-) สุดท้ายก็มาด่าเด็กว่า ไม่โอเค ก็โปรโมทซะนึกว่าทำสวนสนุก ไม่ใช่ทำบริษัทเนอะ 🤫

38 Nameless Fanboi Posted ID:b1SdyaVPzN

Why programmers like cooking: You peel the carrot, you chop the carrot, you put the carrot in the stew. You don’t suddenly find out that your peeler is several versions behind and they dropped support for carrots in 4.3

#มิตรสหายท่านหนึ่ง

39 Nameless Fanboi Posted ID:jDAvtd47UY

เห็น Twin Panichsombat
Post คำว่า “เอาอยู่” บ่อยๆช่วงนี้ ผมเลยอยากเล่าให้ฟังในสายเทคเราบ้าง ว่า Stack หรือ เทคโนโลยีที่เราเลือกใช้ เราไม่มีทางเชี่ยวชาญได้หมดทุกตัว เพราะเวลาทุกคนมีแค่ 24 ชม เท่ากัน

ดังนั้นคงต้องเลือกให้ลึกมากกว่ารู้หลายตัวแล้วไม่ลึกสักตัว(แต่ถ้าชอบส่วนตัวก็ไม่ผิดอะไรนะ อยากบอกสำหรับน้องๆที่กำลังหัด) ถ้าเขียนโปรแกรม อย่างน้อยก็ต้องลึก 1 ภาษา 1 ดาต้าเบส ไม่ต้องเปลี่ยนตามเพื่อนตามแฟชั่น เปลี่ยนเพราะมีคนสอนเชิงลึกหรือแนะนำเราทำแอพดีๆได้ หาข้อมูลได้ง่ายจะดีกว่า ถามว่าต้องรู้ลึกแค่ไหน ก็ต้องลึกจนมั่นใจว่า “เอาอยู่”
* Requirement ลูกค้าเปลี่ยนไปเปลี่ยนมา ปรับได้ง่ายมั้ย ไม่พันเป็น spaghetti ใช่มั้ย เขาให้แก้ไรมาก็รู้ว่าทำยังงัย หรือไปหามาได้ รับความเสี่ยงได้
* เจอบักหาได้เร็วใช่มั้ย
* แก้หนึ่งไม่กระทบสองกับสามใช่มั้ย
* ทดสอบง่ายมั้ย
* อ่านง่ายมั้ย
* ถ้ามี requirement ว่าต้องรับโหลดได้เยอะ มี security ทำได้ใช่มั้ย
คนที่ยังยืนหยัดในวงการนี้มีน้อยลง เพราะเหลือแต่คนที่ “เอาอยู่” อยากให้มีคน เอาอยู่เยอะๆ ส่วน นเรศ เก็จรัมย์ กับ โดม เจริญยศ อาจหมายถึงอย่างอื่น

40 Nameless Fanboi Posted ID:jDAvtd47UY

ผมทำ seo มาได้สักพักแล้ว
พอจะสรุปได้เลยว่า เวลาทำให้คำนึงถึง 5. องค์ประกอบหลัก

1. Website -> Speed,Mobile,UI , Structure
2. Content -> Keyword, Relevant Key and Topic, Wordcount , Image, Video, Readablity , Update frequency
3. User -> CTR, Time On Page, Bounce rate , Exit rate, Returning Visitor, UX
4. Social ->Engagement , Paid & Organic Traffic
5 Backlink -> Authority Backlink and Relevant

เวลาทำก็คำนึงถึง 5 กลุ่มนี้
ไม่ใช้เล็งแค่กลุ่มเดียวเน้อ
........
ถ้าทำครบทุกกลุ่มจะดูเป็น qulity อยู่ยาวบอกตรง

41 Nameless Fanboi Posted ID:wFe1dL8I3d

https://link.medium.com/idIyQxmjKU

42 Nameless Fanboi Posted ID:xgFwLD0e8l

>>40 keyword goolge เค้าประกาศเลิกใช้แล้วโยม update ด้วย

43 Nameless Fanboi Posted ID:q+fE.IVmcD

“ไม่มี Learning ไม่ใช่ A.I. ?”

ผมอ่านอะไรแบบนี้ผ่านตาแวบๆ ..... หลังจากโพสท์ก่อนที่ผมเขียนเรื่อง A.I. ....

ถ้าคิดแบบนี้ระบบ A.I. แทบทั้งโลก รวมถึงงานวิจัยหลายต่อหลายอย่าง หลายแขนงหลายสาขา ทาง computer science เลย (เช่นพวก machine translation, พวก automated reasoning, ฯลฯ) นี่จะไม่เรียกว่า A.I. ทันทีเลยนะ

เอาจริงๆ จะกลายเป็นว่าเรา disregard/look down การพัฒนาและการศึกษาพวกนี้แทบทั้งหมดด้วยซ้ำ (ระดับเดียวกับ “that’s racist”)

เอาจริงๆ นะ ..... งานหลายอย่างนี่ machine learning ยังสู้ well-designed algorithm (ที่มาจากการศึกษาและวิเคราะห์ปัญหาแบบละเอียด) ไม่ได้เลย ..... และต้องใช้เสริมกันทั้งนั้นแหละ ..... งานหลายอย่างก็ไม่จำเป็น .... เช่นพวกงานที่มันตายตัว และมี computation space ที่เล็กพอ คิดตรงๆ ง่ายกว่า .... พูดง่ายๆ ว่าคงไม่มีใครทำ machine learning ไปเล่นเกม tic-tac-toe (เกม o-x น่ะแหละ) หรอก ไม่จำเป็นเลย overkill มากๆ

และจริงๆ แล้ว A.I. ไม่ได้เกี่ยวไม่ได้จำกัดอะไรเลยกับ Machine Learning ..... มันแค่ “เหมือนคน” (ultimate goal คือ “blind test แล้วแยกไม่ออกว่าใครตัดสินใจ คนหรือ A.I.” — ลองดู Turing Test) .... ต่อให้มันทำงานตามกฏตายตัวตลอด (if-else เลยน่ะแหละ) ก็ได้ ไม่เป็นไร

ซึ่งแน่นอนว่าถ้ามันเรียนรู้ได้ พัฒนาตัวเองได้ มันก็จะ “เหมือนคนที่เก่งที่สุดสามารถเป็นได้ (as it could be)” (ถ้าเราเชื่อใน potential ของคน และเราตัดตัวแปรข้อจำกัดทางธรรมชาติของคน เช่นความเหนื่อยล้า ความจำ อายุขัย ทิ้งไป —— คือ human as it could be ไม่ใช่ as it is) .... ก็ได้

อย่าเอาความคิดตัวเองมากำหนดนิยามบ้าๆ เองโดยลำพัง จะดีมากเลย .... ดูด้วยว่าจริงๆ มันเป็นไง ... วิชาการเค้าก็มี ตำราเค้าก็มี ฯลฯ

44 Nameless Fanboi Posted ID:jLjGiJ8aT0

ทำยังไงถึงจะ X {เขียนบทความ, ถ่ายรูป, ออกแบบ UI, เขียนโค้ด, ใช้ภาษาในการเล่าเรื่อง/พูด, .....} เก่ง?

คำตอบโดยทั่วไป: "หัดทำเยอะๆ"

แต่จริงๆ แล้วผมมีคำตอบหนึ่งที่สำคัญไม่แพ้กัน (อาจจะมากกว่าด้วยซ้ำ) ก็คือ

"ศึกษา X ที่คนอื่นทำไว้ดีๆ ให้เยอะๆ"

นั่นคือ อ่านให้เยอะ ดูรูปสวยๆ ให้เยอะๆ ดู UI ที่ออกแบบมาดีๆ ให้เยอะๆ อ่านโค้ดที่เขียนดีๆ ให้เยอะๆ ดูหนังที่เขียนบทดีๆ เยอะๆ

ถ้าเราไม่ "โหลด pattern ของสิ่งที่มันดี" เข้าไว้ในหัวบ้างเลย เราฝึกทำเยอะไปก็แทบจะเท่านั้น .....

ถ้าเรานึกไม่ออกว่าอะไรควรเป็นแบบไหน (เรื่องนี้ควรเขียนยังไง ลำดับยังไง จะมองวิวมองสิ่งของจัดองค์ประกอบถ่ายรูปยังไง UI สำหรับการทำแบบนี้ควรเป็นแบบไหน โค้ดแบบนี้ควรเขียนยังไง เรื่องแบบนี้ควรพูดยังไง ฯลฯ) .....

ก็เพราะ "เราดูพวกนี้แบบวิเคราะห์ ดูแล้วคิด ดูแล้วมา reason กับมัน" น้อยเกินไป ...

และเราก็ต้องมานึก มาจินตนาการสิ่งที่เรานึกไม่ออก ขนาดตั้งใจทำก็ออกมาห่วย (เขียนห่วย โค้ดห่วย UI ออกมาแบบผิดธรรมชาติที่ควรเป็น ฯลฯ) .... ก็เพราะว่า "เราดันพยายามคิด solution" โดยที่ "มีรูปแบบของ solution ต่างๆ น้อยเกินไป" มันก็รู้จะไป match pattern กับอะไรในหัวเรา

สมองมันก็ทำงานแบบนี้แหละ .......

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

45 Nameless Fanboi Posted ID:OpqFYujfia

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

ไม่ใช่ครับ จริงๆ Lesson Learned คือควรจะวางโค้ดให้ Decoupling ถอดเปลี่ยน Stack ง่ายกว่านี้ครับ เชื่อผมนะ เลือก Stack ที่ถูกต้องที่สุดในวันนี้ สามปีข้างหน้าก็ผิดฮะ

46 Nameless Fanboi Posted ID:LOPuAdk2M.

ถ้าคุณทำ Agile แล้วทุกอย่างราบลื่นไม่มีปัญหาเลย ผมว่าคุณมาผิดทางแล้วนะ เพราะถ้าไม่มีปัญหาอะไรแสดงว่าคุณทำแบบเดิม

#มิตรสหายนักพัฒนาซอฟต์แวร์ท่านหนึ่ง

47 Nameless Fanboi Posted ID:vYt4M4DlnT

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

แป้งได้เขียนชี้แจงว่า ถ้าอยากเรียนพื้นฐาน แนะนำให้เรียนป.ตรี และใน comment แป้งชี้แจงเพิ่มเติมว่า ถ้าไม่สะดวกจริงๆ คอร์สออนไลน์มีเยอะ แต่ถ่าหลอกตัวเองโดยการไปเรียนโท ทั้งๆ ที่พื้นฐานยังไม่แน่น

คุณทอยได้ใช้ประโยคที่ทำให้อ่านแล้วมองว่าแป้งกีดกัน และดูถูกคน อีกทั้งยังใช้ภาษาที่อ่านแล้วไม่น่ารักอีกด้วย

แป้งมองว่า คนในวงการเดียวกัน น่าจะมีมารยาทให้กัน ตัวแป้งเองก็ไม่เคยเปิดเผยชื่อร้านหนังสือที่ปฏิเสธแป้ง หรือมหาวิทยาลัยที่แป้งเคยกล่าวถึง แม้จะมีคน inbox มาถาม

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

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

แป้งได้มีการส่ง inbox ไปเตือน แต่คุณทอยมิได้ขอโทษหรือชี้แจงใดๆ ค่ะ

อย่างที่ชี้แจงแล้วว่า ต่อไปนี้ แป้งจะ "หยุด" เคลื่อนไหว ด้านการให้คำแนะนำ ด้านการศึกษา และคิดว่า เพจหลายๆ เพจ เช่น เพจของคุณทอยน่าจะตอบโจทย์มากกว่า

ต้องขออภัยด้วยที่ต้องโพสข้อความนี้ เพื่อปกป้องตัวเอง และจะลบ ภายใน 10 นาทีค่ะ

48 Nameless Fanboi Posted ID:vYt4M4DlnT

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

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

ซึ่งแป้งจะจำไว้เป็นบทเรียน และจะจำไว้ด้วยว่า แอดมินเพจนั้นคือใคร คุณยังไม่ได้ขอโทษแป้งเลยนะ วงการเดียวกันแท้ๆ ถ้าแป้ง Comment Class ของคุณบ้าง คุณจะหนาว

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

เพื่อนสนิท Partner ต่างเป็นห่วง จนกระทั่ง สามีเดินขึ้นมาหา และบอกว่า ....

สามี: "เธอ เรารู้ว่าเธอตั้งใจดี และมันคือความจริง"

แป้ง: "เธอลองคิดดูนะ คนสอบไม่ผ่านเป็นสถาปัตย์ ไม่ได้เป็นสถาปนิก ทุกคนเข้าใจ สอบไม่ติดแพทย์ ไม่ได้เป็นหมอ ทุกคนเข้าใจ แล้วทำไมไม่ได้เรียน Pure Math เป็น data SCIENTIST ไม่ได้ ... ทำไมไม่เข้าใจ ก็บอกอยู่ว่า ไม่ต้องจบปริญญา เรียนยังไงก็ได้ แต่ต้องพิสูจน์ให้เห็นสิ ว่าเป็น Scientist ได้ ไม่ใช่แค่ใช้โปรแกรมเป็น"

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

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

ในใจแป้งคิด .... อ๋อ แบบนี้เองสินะ ที่นักการเมืองดีๆ หรือคนที่เรียกร้องเพื่อสังคม เขาโดนกัน แม้สิ่งที่แป้งเจอจะเล็กน้อยมาก แต่ก็บอกเลยว่า กระทบกับความรู้สึกของคนรอบข้างของแป้งมากๆ

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

แป้งนั่งพิจารณาอยู่สักพักว่าจะทำอย่างไรดี

ในจังหวะนั้น มีน้องคนนึง inbox มาส่วนตัว บอกให้แป้งรอวันพิสูจน์ตัวเอง โดยการสร้างอาณาจักร

ใช่เลย แป้งสร้าง Coraline เพื่อเป็น "สถาบัน" และแป้งกำลัง Expand สถาบัน Coraline วันข้างหน้า ถ้ามันสำเร็จ ไม่ว่าจะเป็นด้วยผลงานใด แป้งจะกลับย้อนถึงความตั้งใจเดิมของแป้ง

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

มีคนนึง Comment Post ของแป้งว่า ทัศนคติ เป็นเรื่องของส่วนบุคคล แต่ Math คือ Science และ Data Scientist ต้องเรียนวิชา Pure Math มาก่อนเป็น สัจนิรันดร์

แม้ความจริงจะทำร้าย แต่ถ้าคุณไม่ยอมรับความจริง คุณจะก้าวผ่านการเปลี่ยนแปลงนี้ไปไม่ได้

ต่อไป วงการการศึกษาด้านเทคโนโลยีจะเป็นเช่นไร แป้งจะไม่ขอออกความเห็น และจะไม่แนะนำการศึกษา หรือาชีพให้ใครค่ะ แป้งขอความเห็นใจด้วยนะคะ

49 Nameless Fanboi Posted ID:vYt4M4DlnT

เรื่องเล่า จาก Inbox เรื่องสมัครงานวันนี้

มีน้องคนนึง ส่ง Inbox มาว่า อยากสมัครงาน แต่ไม่แน่ใจว่าจะลงตำแหน่ง Python Dev หรือ Data Scientist อยากทราบว่ามันแตกต่างกันอย่างไร

แป้งได้ชี้แจงไปว่า DS มีหน้าที่ระบุปัจจัยที่เกี่ยวข้องกับโครงการ เลือกตัวแปร สร้าง Model และหาคำตอบเพื่อแก้ปัญหา โดยใช้หลักคณิตศาสตร์ อาจมีการสร้าง Machine Learning หรือ เขียนโปรแกรมเป็น Python Script เพื่อส่งมอบงาน

แต่ Python Dev คือ คนที่ใช้ Python เป็นเครื่องมือในการมาหากิน อาจจะเป็น เขียน script เพื่อ ETL หรือ เขียนโปรแกรม Software หรือ แม้แต่เขียน Website ในบางกรณีก็อาจจะต้องช่วย DS เขียน Code เพื่อสร้าง Model แต่อาจจะไม่ใช่คนที่เลือกปัจจัย

เขาถามต่อว่า ใน Coraline รับตำแหน่งไหนมากกว่ากัน ก็ต้องตอบว่า Python Dev ส่วน DS นั้น คิดเป็นสัดส่วนที่ น้อยกว่า 10% เท่านั้น

ซึ่งปัจจุบัน Coraline มีโครงการที่เริ่ม และกำลังจะเริ่มอีก นับ 10 กว่าโครงการ และบางโครงการเป็นโครงการขนาดใหญ่มากกกกกก

ทั้งนี้ ใน Coraline เราจะเน้นให้ทุกคนมี 2 Tier หมายถึงว่า เมื่อใดที่คุณเก่งใน Tier 1 คุณสามารถมีทำงานใน Tier 2 ได้

ที่แป้งสร้าง Tier ขึ้นมา เพื่อต้องการให้แต่ละคนในองค์กร มีหน้าที่เป็น Hybrid เมื่อใดก็ตามที่เทคโนโลยีเปลี่ยน เขาจะยังมีทางเลือกในสายอาชีพของเขา

น้องคนนี้ตัดสินใจสมัครตำแหน่ง Python Dev (ซึ่งเป็นการ ตสจ. ที่ถูกแล้วค่ะ เพราะ DS เราอาจจะรับเพิ่มอีกแค่ 1 คน แต่เรามองหา Dev อีก เป็น 10 เลยค่ะ 555)

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

นอกจากนี้ ถามว่า ตำแหน่งไหนที่เก๋าสุด ก็ต้องยกให้ System Engineer และ Data Engineer ที่ต้องสามารถออกแบบทั้งระบบได้

ทั้งนี้ คุณรู้หรือไม่ว่า จากโพสประกาศรับสมัครงานของ Coraline มีคนสมัครงานในตำแหน่ง DS มาทั้งสิ้น 70% ในขณะที่ตำแหน่งอื่นๆ ไม่มีคนสมัครเลยก็มี อีกทั้ง พบว่า ใน 70% นี้ มีหลายคนที่ไม่สามารถตอบได้ว่า Data Scientist ต้องทำงานอย่างไร

#เขียนแชร์ประสบการณ์เฉยๆ
#ไม่เห็นด้วยไม่เป็นไร
#ไม่แนะนำการศึกษา
#ไม่แนะนำอาชีพ
#ไม่รับตอบส่วนตัว
#เพราะเคยโดนดราม่ามาแล้ว

50 Nameless Fanboi Posted ID:+/cx+lvcbk

(โพสต์นี้จะทำลายตัวเองในเที่ยงคืนนี้)
วันนี้ Dtac Accelerate จัดงาน Viking Pitch Clinic
โดยมีเป้าหมายคือช่วยดู Pitch Deck และให้คำแนะนำ ทีมละ 10 นาที
มีทีมนึงที่อยากพูดถึง

เป็นน้องคนนึงนั่งเงียบๆ ประหม่าเล็กน้อย

(คำพูดอาจจะไม่ตรง 100% นะครับ)

* สวัสดีครับ เราชื่อบีมครับ เล่าให้ฟังหน่อยว่าทำอะไร จะพูดให้ฟังดี หรือเอาสไลด์ขึ้นก็ได้
>>>>> ไม่มี มันอยู่ในหัว ผมเขียนไปแล้ว
* อ่ะ โอเคงั้น งั้นพูดให้ฟังก็ได้
>>>>> ตอนนี้ Apple ทำเกม Google ทำเกม ผมไม่ใช่ Startup ผมอยากคุยกับผู้บริหาร Dtac ผมมาหา Partner
>>>>> ดีแทคมีทีมทำเกมไหม
* ตอบไม่ได้เพราะว่า Dtac Acceleate เป็นบริษัทลูกดีแทค ถ้าอยากรู้คงต้องไปคุยกับ M.D. เอง แต่เท่าที่เห็นไม่มีนะ โอเค งั้นเราทำอะไรนะ
>>>>> ตอนนี้ตลาดเกมเป็น Red Ocean ผมจะทำ MMORPG ที่เปลี่ยนจาก Red Ocean เป็น Blue Ocean และเป็น White Ocean ภายในพลิกมือเดียว
>>>>> มันเป็นเรื่องที่จริงจัง
* แล้วคิดว่านี่เราไม่จริงจังอยู่หรอ? เราจะให้พี่ไปติดต่อผู้บริหารทั้งๆที่ไม่บอกอะไรเรา ทำไมเราต้องช่วยเราด้วยนะ
>>>>> มันเป็นเรื่องจริงจัง จะต้องเซ็นเอกสาร N...
* NDA (เป็นเอกสารสัญญาว่าจะไม่ปิดเผยความลับ) เออรู้ว่ามันคืออะไร แต่นี่ยังไม่มีอะไรแล้วจะให้มาเซ็น NDA น้องกำลังขอความช่วยเหลืออยู่นะ ทำไมเราต้องช่วยด้วยนะ นี่ไม่บอกอะไรแล้วจะสั่งให้เราไปทำนู่นทำนี่อีก พี่ไม่เซ็นก็ได้ ไม่อยากรู้ก็ได้
>>>>> พี่ชื่ออะไร?
* จะเอาชื่อพี่ไปทำอะไร
>>>>> ผมจะได้ช่วยพี่ตอนที่ผมสำเร็จแล้วไง
* พี่ไม่ได้ต้องการความช่วยเหลือ มาที่นี่มาช่วยไม่ได้ต้องการอะไร ไม่ต้องตอบแทน สรุปว่าทำไมพี่ถึงจะต้องช่วยเรานะ
>>>>> ผมทำให้มีรายได้ตั้งแต่เดือนแรก 2 พันล้านเหรียญ (6 หมื่นล้านบาท)
>>>>> ขอเงิน ห้าล้านเหรียญ (150 ล้านบาท) แบ่งหุ้นให้ 70%
* เราเรียนอะไร เป็นวิศวคอม?
>>>>> เปล่า ผมเรียนบริหาร
* จะเอาเงินไปทำอะไรบ้าง ทีมเรามีกี่คน นี่เราทำงานอะไรนะ
>>>>> ผมจะเอาไปจ้างคนมาทำงาน ผมออกแบบตัวละคร
* จริงๆ ไม่มี 70/30 หรอก เขามีแต่ 30/70 เพราะเขาเป็นนักลงทุน แล้วขอ 150 ล้านบาทเยอะไปมาก ลองนึกดูอยู่ดีๆมีคนมาขอเงินเป็นร้อยล้าน แต่ไม่บอกว่าใช้เงินทำอะไรที่ไหนอย่างไร ทำอะไรบ้าง ทีมก็ไม่มี
* แล้วตกลงที่เปลี่ยนจาก Red Ocean เป็น Blue Ocean และเป็น White Ocean ภายในพลิกมือเดียว นี่ทำยังไง
>>>>> มันมีรายละเอียด
* เรารู้จัก Garena ไหม แสดงว่าเราบอกว่าเราทำได้ดีกว่า Garena? เกมของเรามันดีกว่ายังไง
>>>>> ด้วยระบบ Game Design
* เราเคยทำเกมไหม
>>>>> ไม่เคย ครับๆ ผมมันเป็นเข้าสังคมไม่ได้ ตอนอยู่มหาวิทยาลัย มีแต่คนก็บอกว่าผมหน้ากวนตีน หมั่นไส้ผม
* ตกลงจะฟังไหม ถ้าไม่ฟังเดี๋ยวพี่ชี้ให้ดูว่าใครเป็น MD ของ Dtac Accelerate เดี๋ยวพี่เขามาก็ไปคุยเองละกัน
>>>>> ฟัง
* เราเคยไปที่อื่นมาก่อนไหม เคยประกวดไหม
>>>>> ไม่เคย
* งั้นดีแล้ว จะได้ Feedback

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

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

51 Nameless Fanboi Posted ID:+/cx+lvcbk

* เราเคยทำธุรกิจให้ได้เงินร้อยนึงไหม?
>>>>> ไม่เคย
* เราเคยทำธุรกิจให้ได้เงินพันนึงไหม?
>>>>> ไม่เคย
* เราเคยทำธุรกิจให้ได้เงินหมื่นนึงไหม?
>>>>> ไม่เคย
* เราเคยทำธุรกิจให้ได้เงินแสนนึงไหม?
>>>>> ไม่เคย
* เราเคยทำธุรกิจให้ได้เงินล้านนึงไหม?
>>>>> ไม่เคย
* นั่นคือประเด็น คือ เวลาจะขอเงินลงทุน เราต้องมีความน่าเชื่อถือ ถ้าเคยทำได้มาก่อนแล้ว คนที่ให้เงินก็จะเชื่อ แต่ถ้าไม่เคยทำแล้วมาบอกว่าจะทำเงินได้หกหมื่นล้านใน**เดือนแรก** ทั้งๆที่ไม่เคยทำธุรกิจให้ได้ร้อยบาทเลย ใครเขาจะเชื่อ นี่คือประเด็น
* ผมมั่นใจว่าผมทำได้
* อ่ะๆ งั้นสมมุติว่า เราทำได้ก็ได้ เราจะทำเงินยังไง?
>>>>> Free To Play (เล่นฟรี) มี In-App Purchase มี ระบบ Loot Box (กล่องเสี่ยงโชค) ที่ทำให้เป็น White Ocean
* อ่ะๆ แสดงว่าเป็น In-App Purchase เรื่องระบบนั้น เราคิดว่าคนซื้อของจากเรายังไง User ซื้อเดือนละ 1 ครั้ง แล้วครั้งนึงซื้อเท่าไหร่?
>>>>> จริงๆแล้วบลาๆๆๆ
* ไม่ต้อง Intro เราคิดว่า ต่อคนที่ซื้อของเราจะจ่ายเงินเท่าไหร่ จินตนาการมาก็ได้ เอาที่คิดว่า
>>>>> 10 เหรียญ มันเท่าไหร่นะ
* ประมาณ 350 บาท เพื่อให้ได้ สองพันล้านเหรียญที่เราบอก ต้องมีคนมาซื้อต่อเดือนกี่คน?
>>>>> ...
* 2,000 ล้าน/10 = 200 ล้านคน เราจะหาคนมาจากไหน 200 ล้านคน
>>>>> ผมไม่ต้องทำอะไรเลย ใช้ Influencer เดี๋ยวเขาก็มาเล่นเอง
* เราจะเริ่มที่ไหนก่อน
>>>>> ไม่ได้ยาก พี่ Google ได้เลย
* ทำไมพี่ต้อง Google ด้วยนะ เราก็บอกมาเลยสิ? ทำไมเราต้อง Google ด้วยนะ เราถามก็ตอบ เราไม่ได้สนใจการตอบ เรากำลังแสดงกระบวนการคิดให้ดู
>>>>> ไม่ได้ยาก พี่ Google ได้เลย มันเป็น Common Sense
* พี่ไม่มี Common Sense ด้านเกม เรารู้มากกว่าพี่ ก็บอกมาดิ
>>>>> จีน
>>>>> อินโด
>>>>> ญี่ปุ่น
* แล้วจะเริ่มที่ไหน ตอนนี้ไม่ได้สนใจว่า จะไปได้ตลาดไหนบ้าง เพราะน้องเชื่อว่าไอเดียเราเจ๋งมาก ไป Global ได้อยู่แล้ว ถามว่าเราจะ**เริ่มที่ไหน**
>>>>> ...
* งั้นสมมุติละกัน จะไปจีน พันล้านคนใช่ไหม? เราต้องหาคนมาเล่น 200 ล้านคนตั้งแต่เดือนแรก เราจะทำยังไง เรารู้จัก Influencer จีนหรอ?
>>>>> ผมไม่ต้องทำอะไร แค่ขึ้นไปเดี๋ยวก็โหลดไปเล่นเอง
* เขาจะโหลดจากไหน App Store/ Play Store/ Steam
>>>>> เป็น Mobile App
* งั้นก็ App Store / Play Store
>>>>> มันมีคนหาเกมแนว MMORPG เล่นตลอด
>>>>> เรารู้ไหมจะทำ App ขึ้น App Store ให้คนมาโหลดเราต้องทำอะไรบ้าง
>>>>> ผมก็แค่ Search Game มั่วๆ แล้วก็เล่น
* ...
>>>>> จริงๆแล้วอีกตลาดที่น่าสนใจก็คือ อินเดีย
>>>>> อินเดียมีกี่คน? พันล้านป่ะ ลองคิดแบบนี้
>>>>> เราบอกว่า Free To Play ดังนั้นทุกคนไม่มาจ่ายตังของเราหรอก สมมุติว่าคนเล่น 100 คน คนจ่ายตัง 1 คนละกัน ดังนั้นเราต้องหาคนมาเล่นกี่คน 1,000 ล้านคน (จริงๆ ต้อง 2,000 ล้าน ตอนนั้นไม่มีเครื่องคิดเลข 555+)
>>>>> จะต้องให้คนมาเล่น 1,000 ล้านคน คนทั้งประเทศอินเดียเลยนะ ถ้าสมมุติว่าอินเดียมี 1000 ล้านคน ฟังดูก็เป็นไปไม่ได้แล้ว
>>>>> ตอนนั้นใครจะคิดว่าพี่น้องตระกูลไรท์จะสร้างเครื่องบิน
>>>>> มันไม่ใช่แบบนั้น -__-
>>>>> อ่ะงั้นทำได้ เราจะทำ Marketing ยังไง
>>>>> พี่จะแซะอะไรผมอีก ผมมันเด็กในกะลาอายุ 25
>>>>> กู 28 ไม่ได้จะแซะ จะคิดให้ ดูว่าเขาคิดกันยังไง จะฟังไหม
>>>>> ฟัง ผมมันเพิ่งออกมาจากกะลา
>>>>> กูเป็นห่วงจริงๆ กูมีทางเลือก จบที่สิบนาทีนั้น แล้วปล่อยไปก็ได้
>>>>> แค่บอกว่ามึงอยู่ในโลกส่วนตัว ต้องฟังคนอื่นบ้าง กูไม่บอกนะว่ามึงเป็นคนอยู่กะลา
>>>>> มึงพูดกับตัวเองทั้งนั้น
>>>>> พี่ว่าอากาศมันหนาวๆ ไหม
>>>>> ไม่นะ
>>>>> พี่ว่าอากาศมันหนาวๆ ไหม

และผมก็เดินออกมา

52 Nameless Fanboi Posted ID:64FTul.0v4

>>50-51 เอามาจากเฟสใครวะ? ใบ้ๆหน่อยได้ป่ะ?

53 Nameless Fanboi Posted ID:+/cx+lvcbk

>>52 เอามาจากเฟสของคนชื่อบีม

54 Nameless Fanboi Posted ID:Je4WefDEgR

>>53 โพสต์หายไปยังวะ? คือหาไม่เจอจริงๆ แต่แบบโคตรพีคมาเจอไรแบบนี้

55 Nameless Fanboi Posted ID:uA1h806zs3

>>54 ลองเข้า Facebook Group โปรแกรมเมอร์ใสๆ ไม่กินมาม่า

56 Nameless Fanboi Posted ID:vqfJhYhqFS

>>55 เข้าไปแล้วรู้สึก toxic ชอบกลว่ะ มีแต่แขวะคนคนอื่นทั้งที่ตัวเองก็มั่วเยอะ

57 Nameless Fanboi Posted ID:+i/Rr.yGHa

>>56 เออ อันนี้จริง แม่งเหมือนกลุ่มเผือกโปรแกรมเมอร์คนอื่นอ่ะ ละกูก็สงสัยด้วยนะคือ ไอที่มันบอกว่ากลุ่มนี้สนทนากันด้วยวาจาสุภาพนี่คือแบบมันประชดหรือคนในกลุ่มมันย้อนแย้งวะ?

58 Nameless Fanboi Posted ID:FCI1IDHtpb

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

เอาคร่าวๆ คือราวๆนี้

เส้นทางรับจ้าง
Programmer -> Project Leader -> Project Manager -> General Manager

เส้นทางเจ้าของธุรกิจ
COO, CTO - Software House
CEO, CTO - บริษัท Startup

4 Concept ที่อยากให้ทุกๆคนได้เรียนรู้ ถ้าอยากจะเจริญรอยมาเป็นเจ้าของบริษัทนะครับ คือ

1. Design thinking
2. Lean Startup
3. Agile
4. Growth Hacking

โดยควรจะเริ่มรู้ตั้งแต่ 3-> 2-> 1-> 4 ตามลำดับ ไม่ก็ 3-> 1-> 2 -> 4

อยากพูดคุยเล่นๆ ก่อนงานที่ผมสอนจะเริ่ม อยากแนะนำแบบตัวตัว หรือกลุ่มเล็กๆ หน่ะครับ

วันที่ 23 เมษายน นี้ เวลา 17.00-18.00 ที่งานนี้ https://aevent.in/archives/event/scrum-workshop

วันที่ 4 พฤษภาคม นี้ เวลา 17.00-18.00 ที่งานนี้ https://aevent.in/archives/event/lean-startup-101

สบใครสนใจในทุกๆเรื่อง สามารถมาพูดคุยแลกเปลี่ยนประสอบการได้ ในช่วงที่ระบุนะครับ

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

59 Nameless Fanboi Posted ID:N7ePXFFTG7

ตอนนี้เป็นยอดมนุษย์ Ultra man อยู่

BU อื่นเค้ามี BA ช่วย มี App sup ช่วย แต่ BU ที่ทำนี่ I am alone เลยตอนนี้ ทำเองทุกอย่าง ตั้งแต่ PM ยัน App sup อีกนิดก็จะเขียนโค้ดด้วยละ
การ์ด ก็ต้องเขียน ประชุมก็ต้องมี ไปประชุมจนจะเป็นพนักงานของบริษัทอื่นไปแล้ว คนที่ประชุมด้วยบอก นี่เราคุยกันมากกว่าที่เค้าคุยกับสามีอีกนะ 555
activity ก็ไม่ได้ขาด refinement , planning , review มีหมด
recruit , ทำตารางนัด, สัมภาษณ์เองอีก อาทิตย์ละ 6-7 คน
ประสานงานกับทีมอื่นๆอีกมากมายหลายอย่าง หลายเรื่อง

ถึง Office ตั้งแต่ 7.30 น. คิดดู บางคนยังไม่ตื่นเลย
มาถึงไม่ใช่ว่ามานั่งกินข้าวนะ (บางคนถึง 10 โมง ยังมานั่งกินข้าวอีก) คือมาถึงก็ทำสิ่งอันเป็นการเป็นงานเลย มื้อแรกคือ หลังเที่ยง (ทำ IF 16/8 อยู่)
นี่ไม่นับงานส่วนตัว ที่ก็ยังทำต่อเนื่องนอกเวลางานอีกนะ
และก็ยังต้องมีเวลาให้ครอบครัวอีกด้วย
เรื่องสุขภาพไม่ต้องห่วง จัดสรรเวลาไปออกกำลังกายอยู่เรื่อยๆ (แต่บางช่วงหนักจริงก็ผ่อนเรื่องออกกำลังกายเหมือนกัน)

เรียกได้ว่า ใช้ทุกนาทีให้คุ้มค่า ดันให้เกิด productivity สูงสุด

60 Nameless Fanboi Posted ID:5rxn/zkmiu

มีคน เสพติด Deadline Driven Development นะ และมักจะมองว่าคนที่ไม่เชื่อเหมือนเขา ไม่เข้าใจ ไม่อดทน ไม่ปรับตัว ... คำถาม จริงๆแล้วเขาก็ลืมไปหรือป่าวนะว่า เขาก็ไม่เคยเปลี่ยนเลย

#มิตรสหายท่านหนึ่ง

61 Nameless Fanboi Posted ID:9HdytddRrA

Go นี่ขึ้น Mainstream แล้ว ตัวชี้วัดที่ศูนย์มีของบน Production จริงมากมาย
ตัวชี้วัดแรกคือมีคนออกมาด่า
ตัวชี้วัดที่สองคือมีคนบินไปงาน Conference จำนวนมหาศาลจากหลายภาคส่วน
ตัวชี้วัดที่สามมี meetup ต่อเนื่อง
ตัวชี้วัดที่สี่มีคนเขียน blog ต่อเนื่องจากหลายภาคส่วน...
เลิกกังวลได้แล้วครับว่าจะหาคนเขียน Go ไม่ได้ ที่น่ากังวลกว่าคือพี่จะไม่เรียนรู้อะไรใหม่เลยหรอครับ :)

#มิตรสหายท่านหนึ่ง

62 Nameless Fanboi Posted ID:8aHt40gOVm

ก่อนพรุ่งนี้ในวันทำงาน เราควรมีเรื่องภูมิใจเล็กๆไม่สิเรื่องมาเล่าสู่กันฟัง ในสายงาน C Level ของผม

- เราไม่ได้รับงานโปรเจคต่อ เค้าต้องเอาคน 50-80 คนมาทำต่อเราเพื่อให้ productive เท่าเดิม แต่เราใช้แค่ 8-10 คน

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

- เราเสนอราคาและโซลูชั่นไป คิดว่าราคาสมเหตุสมผล เค้าหายไป 3 เดือนกลับมาหาเราคุยต่อ แต่เราคิวงานเต็มซ่ะแล้ว

- ปฏิเสธงานโปรเจคไปเกือบๆ 10 ล้านบาทแล้วใน Q1 นับเฉพาะที่บิตงานได้แล้ว เพราะว่าไม่บาล้านระหว่าง 3 อยู่ ทีมงาน(ทำได้สบายใจ) ลูกค้า(ได้ของดี,ให้ความสำคัญกับโปรเจค) และราคา(สมเหตุสมผล)

ผมนึกคำของบิลเกตได้ “ถ้าคิดราคาเขียนโค๊ดแบบนับจำนวนคนคูณชั่วโมง มันก็ไม่ต่างกับการคิดราคาการสร้างตึกด้วยการชั้งน้ำหนักของตึก”

อีกอันของผมคิดเอง
“ถ้า software ไม่ใช่จุดแข็ง ก็เป็นจุดอ่อน”

สุดท้าย
“บริษัทที่ยอมเสียเวลา เพื่อได้พัฒนา Software ราคาถูกเพียงอย่างเดียว บริษัทจะเสียทั้งสองอย่าง”

63 Nameless Fanboi Posted ID:qfI9HiwXHb

ความสุขนำพา ทำงาน 7 วันต่อสัปดาห์ก็ยังรู้สึกดี
.
นิยามความสุขของแต่ละคนคงต่างกันไป บางคนคือการไปเที่ยว บางคนคือการเดินทาง บางคนคือการมีใครสักคน แต่สำหรับเรา ความสุขเกิดจาก "การได้พัฒนาตัวเองให้เก่งขึ้น" และได้สร้าง "ผลงาน" ที่สร้างอิมแพคต่อวงกว้างออกมา
.
มาอยู่นี่โชคดีมากที่ได้ทำสิ่งที่ว่ามานี้หมดเลย
.
ช่วงสองเดือนที่ผ่านมางานหนักมาก แต่ไม่ได้หนักในทางไม่ดี ตรงกันข้าม มันท้าทายและสนุกมาก ต้องทำอะไรที่แข่งกับเวลา ศาสตร์ที่ต้องทำก็เป็นงานด้าน Software Engineer ที่ครบเลย ไม่ว่าจะอัลกอเอย Math เอย Optimization เอย Hacking ก็มี ได้เรียนรู้อะไรใหม่ ๆ ตลอดทางเยอะมาก
.
ได้ทำของสนุก ๆ ก็มีความสุขแล้ว แต่โชคดีชั้นสองคืองานที่ทำมีคนเอาไปใช้งานเยอะมาก ๆ อีกด้วย
.
ช่วงที่ผ่านมาเลยทำงานทุกวันตลอดเวลาจริง ๆ ไม่ใช่เพราะ Deadline อะไรทั้งสิ้น บริษัทก็ให้ทำแค่ 5 วัน แต่นี่อยากทำเอง ตื่นมาก็ทำ ๆ ๆ ๆ ๆ เพราะรู้สึกตื่นเต้นกับความรู้ที่ได้รับเพิ่ม แล้วก็ตื่นเต้นกับผลลัพธ์ที่ได้
.
อย่างวันก่อนนั่งใช้เวลาค่อนวันปรับอัลกอโค้ดจาก O(n^2) ให้เหลือ O(log n) จน Optimize โค้ดให้รันเร็วขึ้น 10 เท่าได้ (แปลว่า Cost ของ Server ก็ลดลง 10 เท่าด้วยเช่นกัน) เหมือนเป็นเรื่องเล็ก ๆ แต่ผลลัพธ์ที่ได้ทำให้รู้สึกว่าเราใช้เวลาไปอย่างมีค่า อยากทำอีก อยากทำเรื่อย ๆ บอกไม่ถูกว่าสุขขนาดไหน เอาเป็นว่าแฮปปี้มากละกัน 555
.
หรือสัปดาห์ก่อนตอน Facebook ประกาศว่าเปิดให้คนโพสต์ 3D Photo ผ่านคอมพ์ได้แล้วนะ นี่ก็ใช้เวลาคืนนั้นเขียน MVP แล้วเปิดให้คนใช้เช้าวันถัดไปเลย ตอนนี้คนเข้ามาใช้เยอะมาก ๆ รู้สึกแฮปปี้กับ Impact ที่สร้างสุด ๆ
.
ผลงานที่สร้างให้ลูกค้าใช้ก็รู้สึกอยากทำให้มันดีขึ้นตลอดเวลา อยากให้ลูกค้าเห็นการปรับปรุง เห็นประสิทธิภาพที่ดีขึ้นและแฮปปี้กับมันยิ่ง ๆ ขึ้นไป แค่นึกถึงหน้าลูกค้าตอนได้เจอของดีที่ดีขึ้นแล้วทำให้ไม่อยากหยุดทำงานเลย
.
ความสำเร็จไม่มีวันหยุดราชการ อย่าปล่อยให้เวลาผ่านไปอย่างไร้ค่ากันเลย หากยังเกลียดวันจันทร์อยู่อาจต้องหาสาเหตุกันละนะว่าทำไม หาคำตอบให้ตัวเองให้ได้ว่าความสุขคืออะไร ปรับตัวเข้าหามันให้ได้ ชีวิตคนเราสั้นเกินกว่าจะนั่งทำสิ่งที่ตัวเองไม่ชอบไปวัน ๆ
.
อย่างที่คนเค้าว่ากันแหละ ถ้าได้ทำงานที่รัก ... คุณจะไม่ได้หยุดพักอีกเลย
.
เค้าว่ากันงี้เปล่านะ จำไม่ค่อยได้

64 Nameless Fanboi Posted ID:qfI9HiwXHb

ช่วงบ่น

Object oriented เริ่มมาจาก Alan Kay

"OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. It can be done in Smalltalk and in LISP. There are possibly other systems in which this is possible, but I'm not aware of them."

คือประเด็นของเขา เขาอยากซ่อน State processing

คือระบบสมัยนั้นมันมี Spaghetti code เยอะ State มันพันกัน ก็เลยบอกว่า เราแยกเป็นส่วนๆ Subsystem แล้วคุยกันผ่าน Message ได้มั้ย มันจะได้การันตีได้ว่า State ตรงนี้ไม่โดนใครกระทบ (นอกจาก Interface ของส่วนนั้น)

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

อันนี้คือ Essence คือ Priority อันแรก และมีผลทาง Practical ด้วย คือแก้โค้ดตรงนี้เราบอกได้ว่ามันกระทบแค่ไหน ไม่ใช่นั่งพารานอยด์ว่าจะโดนนั่นมั้ยโดนนี่มั้ย มันจำกัดจุดระวังได้ ไม่ใช่พันกันจนแค่จะแก้ Bug เล็กๆ ต้องมานั่ง QA ระบบทั้งเดือน อะไรเงี้ย

ทีนี้คือบางทีเคยไปเห็นโค้ดที่มี 2 Object ที่ Share state กันบน Global singleton โดยบอกว่าต้องแยกเป็น Object เล็กๆ ตาม Single responsibility principle แล้วแบบ แถมคุยกันแบบใช้ Design pattern อย่างหรู เราก็ได้แต่เอิ่ม.......

คือสุดท้ายคุณสร้าง Object ใหญ่กว่านี้หน่อยแต่ไม่ต้องประกาศ Global singleton แล้วมันลิมิตว่าแก้โค้ดแล้วจะกระทบแค่นี้จะดีกว่าเยอะเลยนะ ดันไปเชื่อว่าออบเจ๊กต์ต้องเล็กแล้วเอามันมามี Priority อยู่เหนือกว่า Practical implication โค้ดก็พันกันแก้ยากอ่ะครับ

คือผมว่า บางที OOP Industry มันมาไกลจนลืมแก่นบางอย่างและลืมไปว่าเราใช้มันแต่แรกเพราะอะไร

ปัญหาที่ทำให้คนคิด Coding pattern กับ Programming paradigm มีแค่นี้

"โค้ดพันกัน เพื่อนหาไม่เจอว่าโค้ดอยู่ไหน มี Bug ดูแถวไหนดี แล้วพอผ่านไปซักพักผมไม่รู้ว่าแก้ตรงนี้จะกระทบโดนเท่าที่มันควรกระทบมั้ย ทำไงดี"

ทั้งหมดมันมาตอบคำถามนี้แหละ ซึ่งใครตอบคำถามนี้ได้อย่างหมดจด ทีมคุณจะ Productive มากๆ จนมี Unfair advantage เลยแหละ

65 Nameless Fanboi Posted ID:XyRw/B5NAD

นับว่าเป็นเรื่องปฏิวัติวงการ hacker และวิธีการป้องกันการถูกแฮกเลยทีเดียว เมื่อกองทัพอิสราเอล ตรวจพบว่าอาคารแห่งนึงในฉนวนกาซา เป็นฐานทัพนักรบไซเบอร์ ของกลุ่มฮะมาส (ฝั่งตรงข้าม) จึงสั่งการเอาเครื่องบินกองทัพอากาศ บินทิ้งระเบิดใส่แฮกเกอร์ซะเลย เพื่อป้องกันการถูกแฮก! 😂😂😂 ตำรา computer security ต้องจารึกเหตุการณ์นี้จริง ๆ เป็น การจัดการความเสี่ยงด้านความปลอดภัยทางกายภาพ ไม่ต้องซื้อ Firewall กันเลยทีเดียว

ทวิตเตอร์ของกองทัพอิสราเอลทิ้งท้ายไว้ว่า "HamasCyberHQ.exe has been removed." พี่ดุไปนะ น้องเริ่มไม่ไหว 😂

ที่มา: https://twitter.com/IDF/status/1125066395010699264

66 Nameless Fanboi Posted ID:OP0+mxhv7m

ว่าด้วยการ "สเกล AI"
.
ต้องยอมรับว่า AI นี่พลิกวงการโปรแกรมมิ่งจริง ๆ อะไรที่ทำไม่เคยได้ตอนนี้ทำได้สบาย ๆ เลย
.
แต่ในแง่ของ Architecture เบื้องหลังที่เป็น Neural Network การจะทำให้รันได้เร็วก็ต้องใช้ GPU คราวนี้ถ้าเกิดทำงานบน Server Side ก็ต้องเปิด Instance ที่มี GPU เอาไว้ ซึ่ง ... แพงสาสสสส (ถูกสุด $225 ต่อเดิอน)
.
ช่วงที่ผ่านมามี Deploy AI ขึ้นโปรดักส์ชันอยู่สามตัว ใช้ GPU หมด บิลแต่ละเดือนมานี่น้ำตานอง ไม่บอกว่าเท่าไหร่ แต่นองคือนองจริง ๆ
.
ปัญหาเรื่องแพงก็เรื่องนึง แต่ที่แย่สุดคือ "สเกลไม่ได้" เพราะถ้าจะสเกลก็ต้องจ่ายเพิ่มอีก Concurrent ละ $225 คือมันไม่ Practical สุด ๆ ถ้าคนเข้ามาเยอะขึ้น 10 เท่านี่ไม่หมดตัวกันเลยหรอ
.
หลังจากรันมาหลายเดือน Demand เริ่มเยอะขึ้น แต่การสเกลมันมีข้อจำกัด เมื่อคืนเลยทนไม่ไหว ยอมเอาส่วนการคำนวณที่ต้องใช้ GPU ออกหมดและเลือกรันด้วย CPU ล้วน ๆ เอาแทน ตอนจะสเกลก็สเกล CPU เอา (ราคา Concurrent ละ $24 เท่านั้น)

ซึ่งผลจากการเปลี่ยน GPU เป็น CPU คือมันช้าลงแต่แค่ 0.5-3 เท่าตัวเท่านั้น ยอมรับได้กับราคาที่เซฟไป ตอนนี้จะขยายขึ้น 10 เท่าก็ไม่หวั่นละ พร้อม !
.
สุดท้าย AI คืออนาคตจริงแต่ต้องหาวิถี Optimize Cost ให้ได้ ไม่งั้นก็ทำธุรกิจยากอยู่ดี ที่ทำมาก็
.
- โยกไป CPU
.
- เอาไปรันด้วย ML Engine (ซึ่งก็แพงถ้าเทียบกับพวก CPU Based อย่าง App Engine หรือ Cloud Run)
.
- ทำ Model ให้เล็กจนรันบน Client Side ได้
.
ก็เป็น Key Takeaway นึงเผื่อใครจะทำ AI Based ก็คำนึงถึงค่า Server กันด้วยนะ !

67 Nameless Fanboi Posted ID:U.OOM/4Wi.

เป็นคำถามที่ดี ที่คิดได้
และคำตอบ นั่นล่ะคือชีวิตจริง

เคยเล่าไปแล้วว่าเด็กรุ่นใหม่มักกระหาย new tech และพยายามจะใช้ของใหม่ที่สุด ซึ่งสุดท้ายมันนำไปสู่สิ่งที่คิดกันไม่ถึง ไม่ว่าจะเป็น

- knowledge มีน้อย
- ไม่มี support ที่ดีพอ
- เพื่อนร่วมทางน้อย ถามใครก็ยาก
- หาคนคุยด้วยได้ยาก ต่อยอดเองก็ไม่ได้
- เปลี่ยนมือแล้วต้องรื้อระบบ เพราะคนส่วนใหญ่ไม่ใช่สิ่งนี้กันหาคนมาต่อช่วงไม่ได้
- user ได้รับ impact เพราะพฤติกรรมบางอย่างในการใช้งานมันเปลี่ยนไป (มากน้อยเป็นอีกเรื่อง)
- งานอาจจะใช้เวลาเยอะกว่าปกติ เพราะต้อง reseach และงมปัญหามากกว่าปกติ
- business ต่อยอดไปไม่ได้ เพราะวนไปที่เรื่อง technical limitation
- เสี่ยงต่อการถูกทิ้งกลางทาง เพราะ technology นั้นไม่ต่อยอดหรือมีตัวอื่นที่ดีกว่าออกมาแทนที่ และ incompatibility กัน(อันนี้เจ็บกันเยอะ)​

สุดท้าย developer คิดว่าตัวเอง cool เพราะได้ใช้ของเจ๋ง แต่ business ยัน user ไม่มีใครคิดอย่างนั้นเลย

แต่ไม่ได้หมายความว่าต้องไปใช้เทคโนโลยีเก่าๆ ที่กำลังจะตาย ไม่ใช่เลย ความ cool ของตัว developer มันอยู่ที่คุณได้เลือกสิ่งที่ดีที่สุด เหมาะสมที่สุด และคิดถึงภาพรวม การต่อยอด ระยะสั้นระยะยาว ตามความเหมาะสมของ project ต่างหาก นั่นแหล่ะคือคุณได้ก้าวข้ามความเป็น programmer developer ไปสู่ความเป็น engineer แล้ว

เรื่องนี้เคยเจ็บปวด และโดนด่ามาตั้งแต่ประมาณ 10ปีที่แล้วได้ ตอนนั้นจำได้เลย เขียน marketing campaign ยุคแรกๆของ jQuery ต่อมา prototype หรือ backbone นี่แหล่ะออกมา ก็เลยเปลี่ยนไปใช้ แล้วปรากฏว่ามันพังบน internet explorer 6 ซึ่งแก้ไม่ได้เพราะมันติดตั้งแต่ระดับ lib เลย แล้วไม่มีเวลาแก้แล้ว เพราะงาน marketing campaign พวกนี้ประมาณว่าสั่งวันนี้ แต่จะเอางานตั้งแต่เมื่อวานนะได้มั้ย อะไรแบบนี้ เลยโดนด่า เพราะปกติไม่เคย deliver งานพังๆออกมา และต้องขอเลื่อนอีกสองวันเพื่อรื้อกลับไปใช้ jQuery เหมือนเดิม เลยได้เรียนรู้ตั้งแต่นั้นเป็นต้นมา

ของใหม่ แต่ทำแล้วใช้ไม่ได้ ก็ไม่ได้มีค่าอะไรเลย

68 Nameless Fanboi Posted ID:U.OOM/4Wi.

เพราะระบบ ATM มีมาตั้งแต่ก่อนพวก embedded แบบ Pi จะเกิด

ส่วนที่ถามว่า Windows 7 หมด support แล้วจะเปลี่ยนได้ไหม ?
ทางทฤษฎีก็เปลี่ยนได้ แต่ทางปฏิบัติมันไม่คุ้มที่จะเปลี่ยน เพราะ impact เยอะมาก
เพราะถ้าจะใช้ Pi ก็ต้องเขียนใหม่ --> test ใหม่ทั้งหมด ทั้งด้าน functional และ non-functional
แถมไม่มีอะไรการันตีอีกว่า test เข้มข้นแล้วจะยังมีเคสไหนหลุดไปอีก

ในขณะนี่ทางเลือก Windows upgrade แค่ทำ compatibility check แล้วก็แก้บัคเล็กน้อยเท่านั้นพอ

ความเสี่ยงมันต่างกันเยอะครับ
ไหนจะความเชี่ยวชาญของ Resources ในธนาคาร
การ Support จากเจ้าของ OS (MS vs. Open source)
ที่ MS มีให้คือความแน่นอนและการันตีเวลาทำงาน มี SLA กำหนดตามระดับของ support ที่ซื้อ
ต่างจาก Pi ที่ต้องคุ้ยหาคำตอบตาม forum/community เอาเอง แถมไม่รู้ว่าจะหาคำตอบได้ไหมอีก

ในโลก IT ชีวิตจริง หลายๆครั้งเทคโนโลยีใหม่ที่สุด/ว้าวที่สุด ก็ไม่ใช่ตัวเลือกที่เหมาะสมครับ
เทคโนโลยีเก่าที่ผ่านการพิสูจน์มาแล้วและการันตีความแน่นอนได้ต่างหากที่ถูกเลือก

69 Nameless Fanboi Posted ID:x5+xgIq1dp

>>67 ปัญหาที่ว่านั่นกูโดนมาหมดแล้ว แต่เกิดจากใช้เทคโนโลยีเก่าล้วนๆเลย 555

70 Nameless Fanboi Posted ID:Gyel1m2w6m

เจอผู้บริหารจบนอก
สายโปรเแกรมมิ่งเหมือนกันคุยกันเทคนิค เทคโนโลยี vuejs, react, angular, nodejs, golang, .net core, mssql, postgres ยาวมาก

เล่าให้ฟังว่า ทำงานได้รับยอมรับจากบริษัทระดับโลก หน่วยงานภายนอกให้การยอมรับ เก่งระดับหาบักโปรดักระดับโลกได้จนเขาต้องจ่ายเงินให้
กลับมาดูแลกิจการโรงงานระดับพันล้านของครอบครัว

บ่นกับผมแบบออกรสออกชาติกูมึงได้อารมณ์มาก ว่าโรงงานตัวเองไม่มีใครยอมรับ รู้สึกไร้ค่ามาก ไม่มีการพัฒนามาหลายสิบปี พยามพัฒนาคน กระบวนการต่างๆมากมาย แต่ระดับความรู้ความเข้าใจต่างกันเยอะ

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

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

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

คนจะฐานะยากดีมีจนยังงัยก็เจอปัญหาและความทุกข์คนละแบบแหะ
ฟังแล้วก็ปลง ทำอะไรง่ายๆ ระบบง่ายๆ โง่ๆก็พอละเรา

71 Nameless Fanboi Posted ID:.DPs84KvzA

ถ้าเขียน program ว่ายากแล้ว เชื่อเถอะ ว่าการเขียน API technical document ให้ถูกต้อง 100% นั้นยาก และเสียเวลา ยิ่งกว่าเขียน program มาก ที่สำคัญ มันผิดง่ายมากๆด้วย

เพราะเขียน program เราเขียนให้มันทำงานตาม logic ที่กำหนด

เขียน api document เราต้องเขียนให้คนอื่นอ่าน เราต้องทำตัวเหมือนเข้าไปนั่งในความคิดเค้า ว่า ถ้าเค้าอ่านบรรทัดนี้เค้าจะคิดว่าอย่างไร ความเป็นไปได้ของแต่ละตัวแปรมันจะเป็นอะไรได้บ้าง อะไรพวกนี้

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

72 Nameless Fanboi Posted ID:haJF8PNd2z

ทำไมต้องเก็บข้อมูลแบบ Granularity แบบ Hit Level?

การเก็บข้อมูลบน Google Analytics Standard Version (Free) จะได้ข้อมูลที่เรียกว่า Aggregated Data หรือการที่ทาง Google ประมวลผลและรวมข้อมูลให้เราแล้ว ซึ่งเราจะเห็นแค่ว่า User ทำ Interact อะไรไปแบบรวมข้อมูลแล้วไม่สามารถเห็นเป็น Individual Event ได้ ซึ่งจะทำให้เราเสียโอกาสที่จะทำวิเคราะห์ User Behavior ในเชิงลึกที่จะสามารถทำ Prediction หรือต่อยอดในการทำ Machine Learning ได้

หากเราใช้ Google Analytics 360 เราจะได้ข้อมูลที่เป็น Hit Level ที่เชื่อมต่อกับ Google BigQuery ที่เราสามารถไปต่อยอดในการทำ Machine Learning ต่อไปได้ ยกตัวอย่าง Use Cases เช่นทำ Recommendation, ทำ K-Means Clustering เพื่อทำ Segmentation

หากใครอยากเรียนรู้การใช้ Google Analytics 360 และ BigQuery ลอง Apply มาเป็น Data Analyst ที่ Predictive ได้เลยครับ ช่วงนี้ขยายทีม Analytics เพื่อรองรับความต้องการของตลาด ลูกค้าของเรามีทั้งในไทยและต่างประเทศ จะได้ทำลูกค้าที่เป็นระดับ Enterprise หลากหลายอุตสาหกรรมตั้งแต่ Financial Services, Telco, Retail, Media, Automobile, Travel & Hospitality, Real Estate

สนใจส่ง CV ได้ที่ info@predictive.co.th ขอบคุณครับ

73 Nameless Fanboi Posted ID:xpuUu7c0lU

Understanding your target audience (domain). A mediocre “Programmer” who can understand exactly what the customer/user wants and how it impacts them will outproduce a wiz programmer who concentrates on making the algorithms “perfect”.

If what the audience wants is a way to made 3=2 then writing an algorithm that shows that 3<>2 in under 2 seconds is going to be worse than an algorithm that makes 3=2 even if it takes 20 years.

Many times programmers forget the reason they program. I always look at it this way.
1. We write programs for end users. The end game is to make a program that the end user will use. It doesn’t matter to them usually if a function call takes .0003 sec or .0002 sec. Knowing what the end user wants and being able to put it out is 10X more important (and profitable) than knowing how to code quickly.
2. We write Code for other programmers (and ourselves). The code we write has to be able to be available to other programmers or ourselves months or years later. That means that no matter how efficient a control table with a 256byte ascii translation key is, knowing what the heck it is doing by looking at the code 6 months from now is likely to be a problem, so unless it’s necessary to get #1 above done (maybe it’s happening in a loop and you need the performance) it’s an inefficient choice.

75 Nameless Fanboi Posted ID:2RvbwO7VDR

ผมว่าเดฟใช้ ReactNative นี่เห็นแก่..นิดๆ เพราะว่าสร้าง app โง่ๆเริ่มที่ 1 หน้า Build เสร็จขนาดเริ่มต้น 60MB ในขณะที่ Native จะมีขนาดประมาณ 1-2 MB

76 Nameless Fanboi Posted ID:3ASTSb8gvA

เร็วช้าหนักเบา Cr: พี่ต่อ
อันนี้ฟังมาแล้วเข้าใจประมาณนี้

#Agile เร็วและเบา(คล่องตัว) ให้ใช้กับ
งานที่ไม่เคยทำ งานใหม่ ลองผิด ลองถูก ไม่มีประสบการณ์
ทีมต้องตัดสินใจเองได้ ไม่ขึ้นอยู่กับ Policy กฎระเบียบที่ยุ่งยากซับซ้อน เพราะจะไม่ได้ความคล่องตัว บริการนั้นก็จะไม่ออกมาให้ใช้ได้สักที ช้าเกินไปก็อาจจะออกมาในเวลาที่ไม่เหมาะสม
งานที่ใช้ Agile เมื่อพบว่าไปผิดทาง ไม่ได้ผล ก็ยกเลิกได้ ไม่มีผลกระทบมากมายในธุรกิจ ถ้าได้ผลดีก็ค่อยๆเริ่มปรับให้มีมาตรฐานเพื่อกลายเป็น Norm และควบคุมได้ ไม่ผิดกฎ มีคุณภาพและค่อยๆ transform ออกไปเป็น waterfall

#Waterfall ช้าและหนัก ให้ใช้กับ
งานที่เคยทำ มีความรู้ มีประสบการณ์ มี Standard เป็น Routine ได้ มี Normal Sense ของทีมอยู่แล้ว เช่น ขั้นตอนในการ Take off , landing ของเครื่องบิน ต้องทำอะไรบ้างในทุก Flight แผนการบิน เช็คความพร้อมเครื่องบิน ความพร้อมเส้นทาง ฯลฯ
งานฝากถอนเงินต้องมีขั้นตอนอะไรบ้าง ต้องมีความปลอดภัยแค่ไหน มีอะไรที่ต้องคอนโทรลบ้าง ไม่ใช่เรื่องใหม่ที่คนต้องคิดออกนอกกรอบ ถ้าต้องคิดใหม่นอกกรอบ ให้ย้อนกลับไปลองด้วย Agile

77 Nameless Fanboi Posted ID:cp5l.Emb7M

อีช่อ ล้มเจ้า !! อีช่อ ล้มเจ้า !! อีช่อ ล้มเจ้า !! อีช่อ ล้มเจ้า !! อีช่อ ล้มเจ้า !!

พรรคอนาคตใหม่ ล้มเจ้า !! พรรคอนาคตใหม่ ล้มเจ้า !! พรรคอนาคตใหม่ ล้มเจ้า !!

คนเลือกพรรคอนาคตใหม่ คือพวกล้มเจ้า !! คนเลือกพรรคอนาคตใหม่ คือพวกล้มเจ้า !!

78 Nameless Fanboi Posted ID:rux7VDTWVY

>>75 เพราะกุเขียน native ไม่เป็น อส

79 Nameless Fanboi Posted ID:MEhBCfmZoa

>>77 อีควายอีโง่อีเวรอีเหี้ยอีสัสอีอักบัรผัดเผ็ดเย็ดอัลเลาะห์

80 Nameless Fanboi Posted ID:2WkhgF4r0w

>>79 อัลเลาะห์​ไม่เยสครับเพราะอัลเลาะห์​ชอบเด็กๆ

81 Nameless Fanboi Posted ID:X09ul2xe7M

ถ้ามองดีๆ การจัดการงานชิ้นนึงในองค์กรก็เป็น distributed system แบบหนึ่ง เพราะคุณต้องสื่อสารข้อมูล และมี agent ที่คอย deliver solution based on information หลายโหนดที่ต้อง sync ข้อมูลปัญหาของลูกค้าซึ่งกันและกัน ดังนั้น trade-off ชิ้นแรกที่สามารถพูดได้ทันทีเวลาแบ่ง role ย่อยๆ ในองค์กร คือ apply CAP theorem คุณเลือก c,a,p มากกว่ากันตอนแบ่ง role

และถ้าทำ information sharding ดีๆ ทีมจำนวนมากก็จะทำงานได้แบบ async โดยไม่ติดขัดเหมือน distribution system นั่น และเช่นกัน ถ้าไม่ดีคุณก็ต้องเสียสละ consistency, availability รวมถึง processing power และ network cost มหาศาล

และ มันมี trade-off เสมอ!!!! ไม่มี best practice

82 Nameless Fanboi Posted ID:QFiE9r59bZ

เรื่องที่พูดวันนี้ meaning มันลึกมากกว่าที่จะอธิบายได้หมดทุกหัวข้อเลย หวังว่าจะสื่อได้ซักครึ่งนึงของภูเขาน้ำแข็งนะ

Culture ดึงคนที่ใช่กับผลักคนที่ไม่ใช่ อะไรคือใช่ เราก็กำหนดเอง เรากำหนดไม่ดี ก็รับผลเอง

เพราะทางเลือกที่ว่าถ้าไม่กำหนด ก็คือ culture happen by random ขนาดกำหนดเขียนยังเอาไม่ค่อยอยู่เลย ไม่เขียนนี่ random แน่นอน

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

เพราะทางเลือกอื่นมีอะไรบ้าง?

ไม่กำหนดและให้มันเป็น random ก็แย่กว่าแน่ๆ

กำหนดสิ่งที่เราไม่เชื่อจากใจ แต่เอาตาม best practice ถ้ามันไม่ดีขึ้นมาก็ “โห รู้งี้ไม่น่าเลย” แล้วเราก็ไม่ได้โตขึ้น ดีไม่ดีเรากลายเป็นตัวปัญหาในทีมเองอีก เพราะเลือกสิ่งที่เราอยู่ไม่ได้

“กำหนด culture ที่เชื่อจากใจ” นี่ก่อนจะมาบอกว่ามันง่ายแค่นี้ ผมผ่านการลองทางเลือกอื่นมาหลายทาง จนพบว่าสุดท้ายนี่แหละมัน simple but true ก่อนจะสรุปว่าทุก other complicated way มัน bullshit หมด คือลองมาแล้ว

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

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

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

ปล. เห็นมั้ยว่าผมยึด prioritization over completeness เป็นสรณะจริงๆ

83 Nameless Fanboi Posted ID:gXx56gzJo5

ซักวัน หวังว่าโปรแกรมเมอร์ไทยจะเชื่อและเห็นเหมือนเรา เข้าใจและเชื่อจากเบื้องลึกจริงๆ ว่า “เขียนเทสทำให้เขียนโปรแกรมเร็วขึ้น”

ซึ่งผมไม่ได้ล้อเล่นนะ ผมเชื่อแล้วเห็นมันแล้วจริงๆ

จะเปลี่ยนความคิดจาก “เทสเสียเวลา แต่ก็ต้องทำเพื่อคุณภาพ” เป็น “เทสช่วยให้งานง่าย เขียนโปรแกรมเร็วและสนุก” ซักวัน

84 Nameless Fanboi Posted ID:87bX2qgLXf

พอแวะมา Techsauce Global Summit 2019 แล้วคิดว่าตัวเองคิดถูกที่เป็น Developer มากๆ

ในขณะที่คนสายอื่นๆ คุยกันผ่านข่าวลือ ผ่านผู้เชี่ยวชาญ ผ่านเพรส เรากลับคุยกันด้วย source code ด้วย packet capture ด้วยการ decompile ออกมาดู เป็นหลักฐานเชิงประจักษ์ ไม่ใช่จากแหล่งข่าว

ในขณะที่คนอื่นบอกว่าอันนี้กำลังมาแรง ถกเถียงกันว่าจะดีไหม เรา clone repo มาอ่านโค้ด มาลองแก้แล้วคุยกันบนพื้นฐานของระบบจริงๆ ไม่ชอบอะไรก็ส่ง PR ไปแก้เลย

หลายๆ อย่างถูก abstract away ให้คนที่ไม่ใช่สาย dev ฟัง คนส่วนใหญ่ก็จะบอกว่าต้องการ dev เพิ่มเยอะๆ หรือบางคนก็บอกว่าพวก dev พูดไม่รู้เรื่อง ทำไงให้พวกมันพูดรู้เรื่อง คุยยังไงกับมันดี

ในขณะที่กลุ่ม Developer กำลังจะจัด First Meetup มาลงโค้ดสำหรับเทคโนโลยีที่เพิ่งมาได้วันเดียวแล้ว กำลังจะลองสร้างสิ่งต่างๆ กันดูแล้ว

การเป็น Developer เป็นอะไรที่ได้เปรียบเยอะมากๆ เราไปนั่งฟังคนสายอื่นๆ พูด จะเป็น business หรือ designer เราเข้าใจได้ไม่ยากเลย แต่พอคนที่ไม่ใช่ dev เขาจะไม่อินกับสายเราเลย มองว่ามันลึกเกิน

หลายๆ คนมอง Developer ว่าเป็นทรัพยากร เป็น resource แบบหนี่ง หน้าที่คือเป็นคนทำให้มันเกิดอย่างเดียว เค้าก็เลย offload งานจริงๆ ให้เราทำ

เราก็เลยคิดนะว่า เออ ในเมื่อเราก็ทำได้ ทำไมไม่ทำกันเอง ทำไมต้องรอให้มีใครมาสั่ง ทำไม dev หลายๆ คนทำตัวเป็นกรรมกรห้องแอร์กัน

ทั้งๆ ที่เราเข้าใจได้ทั้ง technical และ business perspective อยู่แล้ว dev ส่วนใหญ่ก็คิดไอเดียกันเก่งด้วย แต่ไม่ค่อยกล้ากัน หลายๆ คนโดน stereotype ของสังคม ทำให้เราคิดว่าเราต้องก้มหน้าก้มตาโค้ดอย่างเดียว

คนจากสายอื่นๆ ที่บ่นว่าอยากได้ dev น้อยคนที่ไปคุยกับ developer community leader หรือ researcher เองด้วยซ้ำอ่ะ หลายๆ คนยังไม่เข้าใจบริบทของเทคโนโลยีเลยว่าจริงๆ มันคืออะไร

เจ้าของโปรดักต์หลายๆ คน ก็โตมาจากสาย Engineer เพราะเขาเห็นภาพที่มันเป็น เห็นความเป็นไปได้จากหลักฐานเชิงประจักษ์ ตรรกะและเหตุผล

หลายๆ คนที่บอกว่าต่อไป dev จะตกงาน คนจะไม่ต้องเขียนโค้ดอีกต่อไป หรือ AI จะมาแทนที่ dev ทั้งหมด หลายๆ คนยังไม่เข้าใจด้วยซ้ำว่าการเขียนโปรแกรมจริงๆ คืออะไร ภาพมันถูก abstract away ไปเยอะมากๆ

While everyone else were dreaming the possibilities, we are already building the goddamn thing.

It's a great time to be a developer.

#TSGS19

85 Nameless Fanboi Posted ID:87bX2qgLXf

โลกของการพัฒนาแอพกำลังจะเปลี่ยนเพราะ Huawei

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

Android App ใช้ JVM มาตั้งแต่แรก เพราะ business model ต้องการความหลากหลายของเครื่อง ทั้ง cpu, memory, features สารพัดจะแตกต่าง android รับได้หมด

ข้อเสียคือมันช้า โคดช้า จนถึงช้าที่สุด เมื่อเทียบกับ iOS ที่คอมไพล์ native ตรงๆ ไม่มี VM ซึ่ง Google ก็ปรับปรุงเรื่อยมา เช่น มี JIT (Just in time) compiler เร็วขึ้นแต่ยังต้องรันหลายๆรอบถึงจะเร็วขึ้น และต่อมาก็มี ART ซึ่งคอมไพล์ตอนติดตั้ง แลกเอาติดตั้งช้าหน่อย แต่วิ่งเร็วขึ้น เครื่อง Android มีปัญหาอีกอย่างคือ Java มี Garbage Collector ที่คอยทำงานไม่เป็นเวล่ำเวลา ทำให้เครื่อกระตุกตลอด

Apple ได้เปรียบ เพราะเป็น OS สำหรับ เครื่องจากบริษัทเดียว คุมได้ตลอด เปลี่ยน OS ที คนเปลี่ยนเหยียบ 80-90% ในเวลาไม่กี่เดือน ในขณะที่ Android คนเปลี่ยนช้ากว่ามาก เครื่องร้อยพ่อพันแม่ ทำให้ต้องใช้หลักการบนพื้นฐาน JVM ที่ compile ตามเครื่องที่รัน (Dynamic Compiler) ตามที่บอกข้างต้น

ทีนี้เมื่อโลกบีบหัวเหว่ย ทำให้หัวเหว่ยต้องออก OS ออกมา และจะขายออก ก็ต้องมีอะไรๆที่ดีกว่าแอนดรอยด์ หนึ่งในนั้นก็คือ ความเร็วของแอพ พี่แกก็เลยออก ARK Compiler ออกมา ประกาศว่าเป็น Open source ด้วย เป็น static compiler คอมไพล์ code ส่วนใหญ่เป็น native ไปเลย ไหนๆก็ไหนๆ ไม่มีอะไรต้องแคร์ เพราะรันบนเครื่องกรูเครื่องเดียว กับ CPU Kirin ซึ่งยังถือใบอนุญาตจาก ARM แบบตลอดชีวิตอยู่

ไม่ต้องมานั่งกังวลแบบ Google ที่ต้องทำ compiler ให้ซัพพอร์ตเครื่องหลากหลายรุ่นแบบมหาศาล

ตอนนี้รอดูว่ารูปแบบ apk จะออกมายังไง การ launch โปรแกรมต้องเปลี่ยนแน่ เพราะน่าจะไม่มี ART แล้ว (Android Run-Time) หรือจะมียังไง รูปแบบไหน

Developer ได้แต่ทำตาปริบๆ แค่ต้อง คอมไพล์ iOS, Android บวก Windows, Mac, Linux ก็แย่แล้ว ท่าทางจะมีเพิ่มอีก...

86 Nameless Fanboi Posted ID:87bX2qgLXf

วิธีในการทำงานของผม
1. หลีกเลี่ยงเครื่องมือ และ ไลบรารี่ภายนอก อันนี้เป็นจุดใหญ่ใจความเลย ถ้าอันไหนผมเขียนได้ ผมจะเขียนเองทั้งหมด ข้อดีของมันคือเราคุมได้ ว่าเราต้องการผลลัพท์แบบไหน การดัดแปลงก็ง่าย เพราะเรารู้ทุกบรรทัดที่เราเขียน ข้อเสียคือ เสียเวลา แต่การเสียเวลาผมว่าคุ้ม เพราะเราเสียเวลาแค่ครั้งแรกเท่านั้น เพราะเราจะได้ทั้งความรู้ และการต่อยอดในภายหลัง ซึ่งอาจใช้เวลาน้อยกว่า การศึกษาคู่มือของคนอื่น และ ความพยายามในการดัดแปลงซะอีก
2. ใช้เทคโนโลยีพื้นฐานให้มากที่สุด จริงๆ เทคโนโลยีมันถูกพัฒนาตลอดเวลาแหละ และของใหม่มักจะดีกว่าของเก่า ไม่ทางใดก็ทางหนึ่ง แต่ข้อเสียของ ของใหม่ที่สำคัญคือ มันมักจะถูกจำกัดให้ใช้กับคนที่มีความสามารถพอ เช่น docker ซึ่งหลายๆอย่าง มันเป็นของใหม่ และคนส่วนใหญ่ ยังไม่ได้ใช้มัน การทำงานกับคนส่วนใหญ่ จึงไม่จำเป็นต้องใช้ แต่ถ้าคุณทำงานในกลุ่มแคบๆ เช่นในองค์กร คุณจะใช้เครืองมืออะไร ก็สามารถเลือกได้ตามสบาย เพราะคุณสามารถควบคุมเทคโนโลยีที่จำเป็นของตัวเองได้
3. ทำมาเพื่อใช้ โค้ดทุกบรรทัด ต้องใช้ได้จริง งานทุกชิ้นต้องใช้ได้ จริงๆ ถ้าเราทำงานมาแล้วไม่มีคนใช้ มันเจ็บใจกว่าไม่ได้ทำมันขึ้นมาซะอีก จริงๆ ข้อนี้เป็นความลำบากอย่างหนึ่งในวิธีการทำงานของผม เพราะการออกแบบให้คนจำนวนมากสามารถใช้งานได้ มันยากกว่าทำให้ตัวเองใช้ หรือ ใช้ในกลุ่มแคบๆ การมีเจ้าภาพในการทำงาน มันมีข้อดีที่ requirement มันจะเป็นของเจ้าภาพ เราจะมีสโคป ชัดเจน งานจะง่าย ในขณะที่การทำงานกับคนในวงกว้าง requirement จะต้องสามารถทำงานได้กับคนที่มีความแตกต่างกันสูงๆด้วย (แต่ละคนอาจมี requirement ที่ไม่ตรงกัน)
4. เริ่มใหม่ได้เสมอ เปลี่ยนวิธีคิดได้ตลอดเวลา ้ถ้าเจออะไรใหม่ๆ หรือถึงทางตัน ผมไม่ซีเรียสนะ ถ้าผมต้องกลับไปเริ่มต้นจาก 0 ใหม่ พร้อมกับเปลี่ยนวิธีคิด อันนี้ผมว่าเป็นข้อดีของผมเลยทีเดียว หลายๆครั้งเวลาเราเจอปัญหา เรามักจะแก้ไขมันไม่ได้ เพราะ สมองเรามันมักจะคิดว่า เรามาถูกทางแล้ว แต่คงทำอะไรผิดซักอย่าง เป็นลูปซ้ำๆเดิม ซึ่งจริงๆ ถ้ามันผิดตั้งแตวิธีคิด แต่เรายังคงวนในลูปเดิมๆ แน่นอนว่า เราไม่มีทางประสบความสำเร็จภายใต้ลูปนั้นๆ ทางออกคือ เราต้องออกจากลูป แล้วเริ่มต้นใหม่ ซึ่งผมมักจะทำได้ง่ายมาก
จริงๆ คนอายุขนาดผม มันต้องมีวิธีคิดเป็นของตัวเองได้แล้วแหละ ไม่จำเป็นต้องคิดตามคนอื่น หรือ คิดแบบองค์กร เพราะ ประสบการณ์ที่ผ่านมา มันน่าจะสอนอะไรเรามาได้พอสมควร ทำให้ผมสามารถเลือกทางที่เหมาะสมกับตัวเองได้ แต่ไม่ได้หมายความว่าผมแนะนำให้ต่อต้านเทคโนโลยี หรืออะไรนะครับ มันยังคงจำเป็น สำหรับการเรียนรู้ โดยเฉพาะคนรุ่นใหม่ ยังจำเป็นต้องเรียนรู้และแสวงหาอยู่ เพราะเทคโนโลยีใหม่ในวันนี้ จะเป็นเทคโนโลยีเก่าในวันข้างหน้า เทคโนโลยีใหม่กว่าจะถูกนำมาแทนที่ และ เทคโนโลยีใหม่ในวันนี้ อาจเป็นมาตรฐานในอนาคตก็ได้ ใครจะไปรู้

87 Nameless Fanboi Posted ID:8PbR5Zo8i8

>>86 >หลีกเลี่ยงเครื่องมือ และ ไลบรารี่ภายนอก
ดีหรอวะ...

88 Nameless Fanboi Posted ID:cYthLejNDU

>>87 ครับ เพราะงั้นเลิกใช้ reactjs ซะนะครับ ถถถ

89 Nameless Fanboi Posted ID:hUku7/xmt6

วันนั้นในสมาคมโปรแกรมเมอร์ มีคนถามไว้ว่า ใน mvc เอา business logic ไว้ที่ไหนดี หลายคนตอบ model หลายคนตอบ controller
.
.
ส่วนผมไปตอบไว้สั้นๆว่า mvc มันไม่แคร์ว่า business logic มาจากไหน เพราะมันอยู่นอก scope ของปัญหาที่มันพยายามแก้
.
.
.
มีคนไปตีความว่า เอาไว้ตรงไหนก็ได้ ซึ่งก็ยิ่งออกประเด็นไปไกลใหญ่

สิ่งที่พยายามสื่อแต่ล้มเหลว คือ ถ้าโลกของคุณมีแค่ฆ้อนคุณจะเห็นทุกอย่างเป็นตะปูไปหมด เช่นเดียวกัน ถ้าโลกของคุณมีแค่ mvc คุณก็จะเห็นทุกอย่างเป็น mvc ไปหมดจนปิดกั้นจินตนาการอื่นๆ
.
.
pattern มันขอ scope ตัวเองเฉพาะเรื่องการแสดงผล คุณจะไปเอา data มาจากไหนก็ได้​ โยนให้ model มัน ที่เหลือมันจัดการให้

เราจะเอา logic ไปขียนไว้ใน hexagonal architecture ที่ pure มาก หรือจะเขียน logic ไว้ใน controller แบบไม่ต้องมี abstraction ใดๆ เลยก็ได้ หรือจะสร้าง rich domain model แล้วบอกว่า rich model นั่นแหละคือ presentation model เดียวกันใน mvc ก็แล้วแต่เลย
.
.
จะวาง architecture ยังไง มันขึ้นกับว่าคุณอยากสร้าง abstraction มากน้อยแค่ไหนเพื่อมาจัดการความซับซ้อนของ domain problem ของคุณเอง
.
.
.

อย่าเอา mvc เป็นตัวตั้ง แล้วหมุนตามมัน แต่ให้มันหมุนตามเรา ให้เราใช้มันเพราะเข้าใจ ไม่ใช่ให้มันมาใช้เราโดยเราไม่เข้าใจ

90 Nameless Fanboi Posted ID:6W0rNdk6+J

>>86 ตอแหลตั้งแต่ข้อ 1

91 Nameless Fanboi Posted ID:UsxMEB8/uV

>>86 ข้ออื่นขอไม่คอมเม้นต์ ขอแค่ข้อแรกถ้าเป็นทีมกู ใครกระแดะเป็นแบบนี้กูด่าเลยนะ กูเห็นหลายคนเลยที่มันพยายามเขียนเอง มีข้ออ้างแบบนี้เลย เพราะมันใช้ไลบรารีทั่วๆไปไม่เป็น ใช้ไม่คล่อง ขี้เกียจอ่าน doc เลยต้องเขียนเอง สุดท้ายก็มีปัญหา compatible แถมใช้ไปซักพักก็ obsolete นี่ยังไม่รวม bug ต่างๆตอนขึ้น production อีกให้ทำ doc ก็ไม่ค่อยอยากทำ ทำมาลวกๆลำบากคนอื่นที่จะเอาไปใช้ เพราะถ้าติดอะไรมันไม่มีคอมมูที่คอยช่วย ต้องโทรถามมันคนเดียว

92 Nameless Fanboi Posted ID:IjjebZaxps

เรื่อง Business Logic ใน Model และ MVC

"ทำไมถึงมีคนบอกว่าเก็บ Business Logic ใน Model? ทั้งๆ ที่ MVC มัน concern กับ UI?"

ผมสรุปสั้นๆ แบบนี้ละกัน ว่า "Model" สำหรับบริบทนี้ มันไม่ได้เป็น Model ตัวเดียวกับ Model ใน MVC​ ซะทีเดียว

แต่เป็น "Model" ในลักษณะเดียวกับคำว่า Model ใน Mathematical Model, Business Model, Computation Model หรือว่า "ธรรมศาสตร์โมเดล" ตอนน้ำท่วม 54 อะไรแบบนี้

ขยายความยาวๆ ก็:

มันเป็นสิ่งที่ encapsulate สิ่งที่เราคิด หรือพูดอีกอย่างก็คือ model ของความคิดเราเองว่าคืออะไร ทำงานยังไง เปลี่ยนแปลงยังไง ฯลฯ

ในขณะที่ MVC ของ ​MVC Architecture Pattern มันไม่ได้สนใจตรงนั้น (คือ มันไม่ได้บอกว่า "ต้อง" อยู่ที่ไหน มันไม่มี concern เรื่องนี้เลย)

ซึ่ง Pattern แบบนี้ใช้เยอะในพวก Enterprise เพราะว่ามันมักจะมีระบบ ERP/Backend ที่ทำงานกับพวก Business Logic อะไรพวกนี้อยู่แล้ว แต่หน้าที่คนคือทำ UI ให้ทำงานกับข้อมูลนี้ในหน้าจอต่างๆ กัน

ทีนี้ มันมีประเด็นที่ทำให้คนสับสนอยู่ตรงนี้แหละ

คือ Framework หลายตัวในปัจจุบัน ที่ไม่ได้โตขึ้นมาจากทางฝั่ง Enterprise เค้าค่อนข้าง encourage ให้ใช้ "Model" (in general) สำหรับการทำ "Model" ใน MVC ไปเลย ยกตัวอย่างเช่น Ruby on Rails เป็นต้น

ซึ่งมันก็ make sense สำหรับงานที่ scale ยังไม่ใหญ่เท่าไหร่

ทีนี้เวลาที่งานมันเริ่มโตขึ้นมา เราเริ่มต้องการ "Representation ของ Data จาก Model เดียวกันในหลายแบบมากขึ้น" (เช่น JSON คนละแบบ) เราก็ควรจะ "งอก Layer ขึ้นมาใหม่ มาจัดการ concern ตรงนั้น"

ซึ่งตรงนี้จะเรียกอะไรก็เรียกไป หลายคนก็เรียกว่า VM (ViewModel) หลายคนก็เรียกว่า Presenter ... (สำหรับคนที่ใช้ Model in general ใน MVC) ... หลายคนก็เรียกว่า Model (สำหรับคนที่ Model คือ Model ใน MVC ตั้งแต่ต้น)

แต่ในขณะที่ Framework หลายตัว encourage แบบนี้ .... Framework อีกหลายตัว โดยเฉพาะที่โตมาจากฝั่ง Enterprise นี่คิดตรงข้ามเลย คือให้ Model เป็น Model จ๋าๆ ใน Presentation Tier ของ 3-tier อะไรแบบนี้ .... เอาไปใช้ใน UI Domain อย่างเดียวเลย

มันก็เลยสับสนกันง่าย

สำหรับหลายคน (หลาย community/culture/framework) แล้ว MVC มันคือ 3-Tier ตรงๆ เลย แต่สำหรับอีกหลายๆ คน (หลาย community/culture/framework) แล้วมัน concern อยู่แค่ใน Presentation tier

ผมเป็นคนหนึ่งที่บอกว่า Business Logic ควรอยู่ใน Model .... แต่ Model ของผมมันไม่ได้หมายถึง Model ใน MVC .... แค่ในบางกรณีมันเอาไปใช้ได้ตรงๆ

แต่นั่นมันหมายถึงว่า Business Logic ผมจะไม่กระจัดกระจายอยู่ใน Controller บ้าง Model บ้าง DB บ้าง View บ้าง ... มันจะไปกองที่เดียวคือ Model Layer

และ Model Layer ของผม มันไม่ได้มีแต่ "Data Model" แต่มันมีอะไรเยอะแยะอยู่ (คือมันมี Sublayer อยู่เยอะแหละ ก็งอกมาตามบริบาท เช่น ผมอาจจะมี BookPersist, BookEntity, BookUseCase, BookDataRule เฉพาะของ "Book" ก็ได้ ....)

พูดง่ายๆ แต่ว่าละไฟล์มันก็ไม่ได้เกิน 300 บรรทัดหรอก และเราก็แยก concern ในแต่ละเรื่องใน Model Layer อีกทีอยู่แล้ว :P

TLDR:

ถ้าถามว่า "Business Logic *ต้อง* อยู่ไหนใน MVC" คำตอบคือ "มันไม่มี concern เรื่องนี้ ไปคิดเอาเองว่าจะเอาไว้ไหน"

แต่ถ้าถามว่า "คนที่บอกว่า 'เก็บใน Model' นี่คิดอะไรอยู่" คำตอบก็จะเป็นประมาณนี้ ว่า Model ใน conceptual ของเขา มันคือ Object Model ที่มันใหญ่กว่า Model ใน MVC และมันรวม Model ใน MVC ไว้แล้ว น่ะแหละ ....

ซึ่งบังเอิญพอคิดแบบนี้แล้ว มันก็เลยกลายเป็นว่า "ไหนๆ ก็ต้องคิดเองเรื่อง Business Logic อยู่ไหนใน MVC แล้ว .... ก็ใน Model ไง มันก็ควรอยู่ตรงนั้นอยู่แล้ว"

และ "Model" ตรงนี้ หมายถึง Group ของ Objects/Classes ใน Model Layer ซึ่งอาจจะเต็มไปด้วย Design Pattern และ Architecture Pattern ... ไม่ได้หมายถึง Single Class ที่ยัดทุกอย่างไปรวมกันหมด

TLDR of TLDR:

Business Logic เก็บไว้ใน Model ครับ แต่มันคือ Model in General

ส่วนคุณจะใช้ Model ตัวนี้ใน MVC แบบไหน/ขนาดไหน ... มันเรื่องของคุณ ... เพราะตัว M ใน MVC มันไม่แคร์เรื่องนี้

อีกรอบ: สำหรับหลายคน (หลาย community/culture/framework) แล้ว MVC มันคือ 3-Tier ตรงๆ เลย แต่สำหรับอีกหลายๆ คน (หลาย community/culture/framework) แล้วมัน concern อยู่แค่ใน Presentation tier

93 Nameless Fanboi Posted ID:JXwk6QyFRg

>>86 ข้อ 1 นี่ถ้าจะคิดแบบนั้นมึงไม่เขียนภาษาใหม่ สร้าง hardware ใหม่ ใช้เองไปเลยล่ะจะได้รู้ทุกอย่าง แหม่
การเขียนโปรแกรมทุกวันนี้มันสร้างบนฐานของของเก่าที่มึงไม่มีทางรู้หมดทุกอย่างทั้งนั้นแหละ

94 Nameless Fanboi Posted ID:4HDNoqXWxG

เสร็จแล้วหว่ะ
#DeepNude version minimal รันด้วย python ได้เลย ไม่มี qt ui หรือ exe ไฟล์
```
python main.py test.jpg
```
แล้วจะปล่อยยังไงดี แอบหวั่น 555
ปล. ไม่ได้ทำเองนะครับ ผมเอาของเขามาแก้
https://github.com/open-deepnude/open-deepnude

https://imgur.com/a/DyI8hzx

95 Nameless Fanboi Posted ID:FqRfX4./wD

>>94 ไม่มีแสกนละควย ไม่ผ่านค่ะ

96 Nameless Fanboi Posted ID:yXV+iHDFeK

>>95 ยังไง

97 Nameless Fanboi Posted ID:rQo.uqZrWM

>>94 ลง PyQt5 แล้วทำไมมันหา QtImagecropper ไม่เจออ่ะ
end user เฉยๆ ของ่ายๆ โง่ๆ ด้วย

98 Nameless Fanboi Posted ID:mIegSqGUjM

ไอ้ เควนทิน เบ็ค (Mystertio) ที่ทำตัวเป็นคนดีตอนแรกๆ แม่งจริงๆแล้วเป็นตัวโกง อดีตลูกน้องโทนี่

ตอนมันตาย แม่งยังเฉลยออกทีวี อีกว่า สไปเดอร์แมน คือ Peter Parker โคตรเหี้ย

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

เพื่อนๆโม่งต้องไปดู Spiderman Far From Home ให้ได้นะครับ

99 Nameless Fanboi Posted ID:dUKBYmc+9r

https://github.com/open-deepnude/deepnude_official แบบ Official

100 Nameless Fanboi Posted ID:4eLKcrpoAe

>>96 ควาย อีโง่ ก็แค่มันใช้กับ ผช.ไม่ได้ไงไองั่งปัญญาอ่อน

101 Nameless Fanboi Posted ID:dzR5msFIQm

ผมใช้ไมไ่ด้อะครับ มันขาด module QtImageCropper

102 Nameless Fanboi Posted ID:4Q4IOnswrC

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

เช่นกัน การแบ่งเลเยอร์ การเลือกใช้ชื่อในแต่ละบริบท การแบ่งไฟล์ หรือแม้แต่การเคาะ enter ก็มีผลที่แตกต่าง

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

โปรแกรมมิ่งก็เช่นกัน รู้ design pattern น่ะดี แต่งานเขียนจริงจะแค่เขียนตาม pattern แล้วบอกว่าสวยแล้วก็คงไม่ใช่

Programming มันมีส่วนที่เป็นศิลป์เยอะทีเดียวล่ะ

นักเขียนทำไง เขาเขียน อ่านเอง ให้คนอ่าน เก็บ feedback มาปรับปรุง แค่นั้นแหละ

103 Nameless Fanboi Posted ID:4Q4IOnswrC

>>101 QtImageCropper ใช้แค่รีวิวภาพ ไม่มีผลกับการประมวลผลหลัก คอมเมนท์โค้ดทิ้งได้เลย

104 Nameless Fanboi Posted ID:P0IDNoGSn2

ปัญหาด้านเทคโนโลยีใหญ่และสะสมมานมนานในองค์กร หาคนมาทำงานว่ายากแล้ว สิ่งที่ยากกว่าและส่วนใหญ่ไม่ให้ความสำคัญมากพอก็คือกระบวนการจัดการองค์ความรู้ ความรู้ส่วนใหญ่เก็บไว้ที่ตัวบุคคล เมื่อคนเก่งเหล่านั้นออกไป คนใหม่มาก็ใช่ว่ามาถึงแล้วจะทำงานได้เลย ไม่มีคนสอนงานเก่า งมเองกว่าจะได้เท่าคนเดิมส่วนใหญ่ก็เจ็บและเจอปัญหาจนออกไปก่อน ทำให้การทำงานและธุรกิจสะดุด ไม่เกิดการพัฒนาอย่างต่อเนื่อง ต้องทำใหม่ตลอด
แนวทางที่องค์กรที่บริหารจัดการเรื่องนี้สำเร็จก็มี
1. หาพาร์ทเนอร์มาดูแลแทน ก็มาความเสี่ยง ช่วงแรกก็ต้องเรียนรู้ ว่าเวิร์คหรือไม่ ระยะยาวความรู้จะไปอยู่กับพาร์ตเนอร์หมด
2. ต่างประเทศ เอกชน จะลงทุนสนับสนุนมหาวิทยาลัย สถาบันวิจัย เป็นคนเก็บและพัฒนาองค์ความรู้ เอกชนจะเก็บแค่ส่วนต่างเฉพาะที่เป็นความลับไม่ต้องการเผยแพร่
3. เปิด opensource ให้ชุมชน ช่วยดูแล
4. เปิดหน่วยงานสถาบันเพื่อดูแลเรื่องนี้เอง

105 Nameless Fanboi Posted ID:eAF1.y2tQe

วันนี้แปลกๆ มานั่งคิดย้อนเวลาไปว่าชีวิตเรามาอยู่ตรงจุดนี้ได้ยังไง ก็เลยมานั่งเขียนลงโน้ตเอาไว้ เขียนไปเขียนมา ขอเอามาแปะเลยละกันเพราะคิดว่าน่าจะมีประโยชน์สำหรับเพื่อนๆเช่นกัน
.
.
.
ผมเชื่ออย่างยิ่งว่าชีวิตเราทุกคน(และผม)ได้ดีเพราะมีคนสนับสนุนเสมอ
.
ตั้งแต่ช่วงเติบโตจนก่อนถึงวัยทำงาน พ่อแม่และพี่ชายพี่สาวผมทุกคนมอบทรัพยากรให้ผมศึกษาและลองเล่นในเรื่องต่างๆมาโดยตลอด ไม่ว่าจะเป็นเครื่องเกม คอมพิวเตอร์ อุปกรณ์อิเล็คทรอนิคส์ต่างๆ เรียกว่าอยากได้อะไรมาลอง 90% ผมจะได้โดยที่ตัวเองไม่ต้องเสียเงินเองเลย ผมถือว่าเป็นช่วงเวลาที่สำคัญมากๆเพราะมันทำให้ผมพร้อมในด้านทักษะกว่าคนอื่นในช่วงอายุที่ใกล้ๆกัน
.
พอเข้ามหาลัย ตอนเรียนรามฯ ผมก็ได้เพื่อนในซุ้มรามฯช่วยสนับสนุนโดยการพาไปให้รู้จักกับ “พี่ป้อม” เจ้าของร้านสติ๊กเกอร์ที่ใหญ่ที่สุดในซีคอนสแควร์สมัยนั้น ร้านใหญ่ มีคอมให้เล่นหลายเครื่อง มีกล้อง Digital Camera ของ Sony อย่าง Mavica ให้เล่น สมัยโน้นต้องบอกเลยว่าเท่ห์มากๆ
.
หลังจากได้รู้จักกับพี่ป้อม แกก็สนับสนุนผมด้วยการจ้างให้ทำงานที่ร้าน ไม่ว่าจะถ่ายรูป รีทัชภาพลูกค้าก่อนพิมพ์ออกมา เรียกว่าซองเงินเดือนซองแรกผมได้มาจากที่นี่ล่ะ ยังคงจำความรู้สึกแรกได้เลย โคตรดีใจที่เราสามารถทำงานแลกเงินได้แล้ว แถมพี่ป้อมยังได้หางานเขียนโปรแกรมบริหารสมาชิกโบสถ์คริสต์มาให้อีกงาน รวมไปถึงจ้างไปติดตั้งระบบร้านเน็ทให้หลายๆร้าน คือได้เล่นอะไรเยอะมากๆ
.
หลังจากนั้นก็มี “พี่ไก่” สนับสนุนผมต่อ เราเจอกันทาง Pantip และพี่ไก่ก็ได้มอบโอกาสให้ผมแบบยิ่งใหญ่มากโดยนัดผม นศ.รามฯกระจอกๆคนนึงให้ไปทานข้าวด้วยกันกับพี่ธานี (เจ้าของบริษัท PE&E) และทำการแนะนำผมให้กับพี่ธานีจนพี่ธานีว่างจ้างให้ผมไปทำงานด้วยเงินเดือนที่ดีมากๆสำหรับนศ.ที่ยังเรียนอยู่อย่างผม (เรียนแบบไม่เรียน 5555)
.
พอทำงาน PE&E ไปสักพัก ผมก็ได้ไปเรียนเขียนโปรแกรมที่ CTT แล้วก็ได้รับการสนับสนุนจาก “พี่โช” โชคชัย จันทร์เชย และ “คุณมิ้งก์” ต่อ โดยให้ไปลองฝึกเป็นเทรนเนอร์สอนเขียนโปรแกรมดู แถมยังได้รับการชวนให้ไปเปิดบริษัท Software House ด้วยกันต่ออีกทอด ต้องบอกเลยว่าช่วงนี้เป็นช่วงที่เปลี่ยนชีวิตผมไปมากที่สุดอีกช่วง ได้เรียนรู้อะไรเยอะมากๆในการทำธุรกิจ
.
ในระหว่างที่ทำ Software House ผมก็ยังคงได้รับการสนับสนุนจากผู้ใหญ่ทางฝั่งลูกค้าเสมอ ไม่ว่าจะเป็น ผอ.จากภาครัฐต่างๆ นายตำรวจนายทหารต่างๆ หรือแม้แต่ผู้บริหารระดับสูงในบริษัทเอกชนใหญ่ๆ ผมยังคงจำชื่อคนที่สนับสนุนผมได้อย่างดีจนวันนี้ ไม่ว่าจะเป็น “พี่เมฆ” “ดร.อธิป” “เอ” จากทรูที่เวลามีงานมีปัญหาก็ไม่เคยทิ้งกัน ฯลฯ
.
พอจบเส้นทาง Software House ผมก็ยังไม่วายได้รับการสนับสนุนต่อจากเมนทอร์ทางด้าน IM ของผมอย่าง “Patric Chan”...
.
อยากจะขอขอบคุณทุกคนอย่างสุดซึ้ง ผมคงไม่มีวันนี้ถ้าไม่มีทุกคนคอยสนับสนุน ผมจะทำชีวิตต่อไปให้ดีที่สุดไม่ให้ผิดหวังที่ได้รับการสนับสนุน และผมก็จะสนับสนุนหลายๆชีวิตให้ดีขึ้นด้วยเช่นกันครับ
.
ด้วยรักและเคารพเสมอ
ก๊วง
.
ปล. ความเชื่อเดียวที่ผมคิดว่าอาจจะเป็นกุญแจสำคัญที่ทำให้มีคนสนับสนุนผมอย่างต่อเนื่องคือ: “ความจริงใจ” ที่ผมมีให้เค้า
.
ถ้าวันนี้เราน้อยใจว่าไม่มีคนสนับสนุน ลองมอบความจริงใจให้กับคนที่เราติดต่อด้วยดูครับ ผมเชื่อว่าคนเราสัมผัสเรื่องพวกนี้ได้ :)

107 Nameless Fanboi Posted ID:xc+QiaN7dT

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

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

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

ปล.ที่คุยกันเมื่อวาน มีการพูดถึง NP-Complete กับ Non-Deterministic ด้วยนะ

108 Nameless Fanboi Posted ID:xPFg1+6tlM

วันพฤหัสคุยกับ Passapong Champillon Thaithatgoon กับ Keattiwut Joe Kosittaruk อยู่ว่า Functional programming อาจจะไม่เหมาะกับทุกงาน วันนี้จับ Physics engine นี่น่าจะอันนึงที่อาจจะทำ FP แล้วไม่ธรรมชาติ

เขียน Object ให้เป็น Ball.addKineticEnergy(right, 100) แล้วซ่อน State x,y ปัจจุบันไว้ใน Object เป็นโมเดลที่เหมาะกับเกมมากกว่าพยายามเปิดเผย x,y นะ

ถ้าเป็น FP จริงๆ มัน Equivalent อยู่แล้ว จะทำเป็น nextContext = context |> addKineticEnergy(ball, right, 100) |> nextFrame() เพื่อเก็บ context ก็ได้ แต่ก็ไม่รู้ว่า Natural ขนาดไหน ลองอ่านคู่มือ Physics engine ใช้ Object-oriented Model หมดเลย ขนาดใน Javascript นะ

แต่ที่มั่นใจคือเขียนเกมกับใช้ Physics engine การให้เข้าถึง X,Y ที่เป็น State ได้ง่ายๆ มันไม่ใช่ มันควรจะเข้าถึงผ่าน Mutation ที่เป็นธรรมชาติในโลกจริง อย่าง Gravity, Force, KineticEnergy พอมัน Emphasize state mutation มากกว่าตัว State แล้วผมว่าโมเดลด้วย Object + Message parsing มันจะเน้นย้ำในสิ่งที่ควรเน้นย้ำให้เห็นชัดเจน และทำให้ส่วนที่ไม่ควรจะถูกเน้นย้ำเข้าถึงยากขึ้น

ซึ่งนั่นแหละคือการ "ออกแบบโค้ด"

110 Nameless Fanboi Posted ID:B/E.iltyNe

ครั้งสุดท้ายที่ผมจะโพสท์เกี่ยวกับดราม่า "Coding" นะครับ

ผมไม่ขอพูดอะไรมาก นอกจากแปะหนังสือ "Coding as a Playground" ที่เขียนโดย Professor ด้าน Child Study & Human Development และยังเป็น Adjunct Professor ทาง Computer Science จาก Tufts University (มหาวิทยาลัยระดับโลก ถาม Sanpawat Kantabutra ได้)

ผมตัดมาบางหน้า ที่บอกว่า Coding มันเป็นการเรียนและฝึกอะไร และมันไม่ใช่ว่าเรียนไปเพื่อไปประกอบอาชีพเขียนโปรแกรมคอมพิวเตอร์แต่อย่างใด ..... มันเป็นการเรียน Way of Thinking มากกว่าเรียนรู้ Tools และการใช้ Tools (การเขียนโปรแกรมคอมพิวเตอร์เพื่อสั่งงานคอมพิวเตอร์ ด้วยภาษาโปรแกรม เป็นการเรียนรู้ Tools และใช้ Tools)

แม้ว่าปลายทางสุดแล้ว เด็กที่เรียน Coding จะสามารถเขียนโปรแกรมสั่งงานคอมพิวเตอร์ได้ก็ตาม นั่นไม่ใช่แก่นของการเรียน Coding .... (คือสุดท้าย ทุกคนคือ Computer Programmer แบบเดียวกับที่ทุกคนคือ Writer .... เราเขียนอะไรกันเยอะ สื่อสารด้วยการเขียนเยอะแยะ แต่ไม่ใช่เราทุกคนทำอาชีพนักเขียน)

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

Coding with Objects หรือใน Everyday Life ก็ทำได้ (ถึงตัวอย่างในหนังสือจะใช้ Robot แต่จริงๆ ก็ไม่จำเป็น ให้เด็กเล่นด้วยกันก็ได้ .... จริงๆ ผมเห็นว่าวิชา Coding น่าจะเป็นการเล่นเกมแบบ Rule-based ให้เหมาะกับวัยด้วยซ้ำ จากโดมิโน บันไดงู ไปหาพวก Board Game)

ดังนั้น คำว่า Coding มันไม่ได้มีความหมายแคบเฉพาะกับ Computer Programming ที่เราต้องเขียน (Programming Language) Code ... แต่มันมีความหมายกว้างกว่านั้นมาก

แน่นอนว่าเมื่อโตๆ ไป (ระดับมัธยม) ก็จะมีการนำ Digital Tools หรือแม้แต่ Computer Programming เพิ่มเข้ามาเอง .... เพราะนั่นเป็นการประยุกต์ใช้ Coding ไปกับคอมพิวเตอร์

ผมจะไม่พูดเรื่องนี้ล่ะครับ ใครจะเชื่ออะไรก็เชื่อไป คิดอะไรก็คิดไป

แต่ขอร้อง อย่าคิดด้วยอคติที่ว่ารัฐบาลโง่ คิดอะไรปัญญาอ่อน ฯลฯ แต่เพียงอย่างเดียว ..... รัฐบาลทำอะไรโง่ๆ เยอะ ทำอะไรที่เราไม่เห็นด้วยเยอะ แต่มันไม่ได้แปลว่าทุกเรื่องที่ทำมันโง่นะครับ ....

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

พูดอีกอย่างคือ ไม่ว่าใครจะเป็นรัฐบาลช่วงนี้ เรื่องนี้ก็จะถูกยัดใส่มือให้พูดช่วงๆ นี้ (+/- ไม่กี่ปี) อยู่ดีแหละครับ

111 Nameless Fanboi Posted ID:lPpfvs.p8d

Make sure you don’t hire engineers with “shiny object syndrome”.

What is that?

It’s when an engineer gets easily distracted by every cool new technology, framework, or library that comes out and wants to include that into what their working on just because it’s the “cool new thing” everyone is using.

A lot of Silicon Valley engineers have this problem.

It’s ok to play around with new tech, but you need to make sure it doesn’t distract you from business objectives.

Engineers should be using technology that is widespread, proven in production environments and has mature documentation. This will increase speed of development while reducing bugs and maintenance work.

It has happened over and over again in which a cool new library is introduced and then after a few months, it’s abandoned by the authors because it was just a “side project” and they don’t have time to “maintain it”. This screws you over and creates massive tech debt.

If your product is full of new and unproven tech, you are setting your business up for failure.

Either because you’re going to waste more time rewriting everything and/or when you hire more people, they have no experience with the new tech and will get frustrated.

112 Nameless Fanboi Posted ID:AhbCzfjIm1

coding ไม่ใช้คอม (อีกครั้ง และครั้งสุดท้าย)

โพสที่แล้วผมพูดเรื่อง coding ไม่ใช้คอม คนแชร์ไปเยอะ จนเริ่มรู้สึกชีวิตไม่สงบแล้ว จะเปลี่ยนเป็น Friend only ก็เกรงใจหลายท่านที่แชร์ไปแล้ว

ผมไม่ชอบดราม่า ผมไม่สนใจว่าใคร หรือพรรคไหนเป็นคนพูดประเด็นนี้ มันไม่ใช่สาระ ผมสนใจแค่ context ที่ debate กันอยู่ในสังคมเท่านั้น

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

ผมเคยตั้งใจว่าจะไม่โพสการเมืองอีก แต่ประเด็นนี้ผมเลี่ยงไม่โพสไม่ได้ เพราะเรากำลังทะเลาะกันถึงวิธีการเรียนรู้ของลูกหลานของเรา ซึ่งเป็นอนาคตของประเทศนี้ ผมยอมปล่อยวางให้ผ่านไปเฉยๆ ไม่ได้จริงๆ

โพสที่ผ่านมา แปลกดี

โปรแกรมเมอร์อาชีพส่วนใหญ่เห็นด้วยกับผม (p->q)
คนที่ด่าส่วนใหญ่ไม่ใช่โปรแกรมเมอร์อาชีพ (!q->!p)

(อันนี้ตรรกศาสตร์พื้นฐาน Transposition rule นะครับ ย้ำว่าผมใช้คำว่าส่วนใหญ่ ผมไม่ได้ stereotype มีโปรแกรมเมอร์อาชีพบางคนไม่เห็นด้วยกับผม และก็มีคนที่ไม่ใช่โปรแกรมเมอร์เห็นด้วยกับผมจำนวนมาก (!p->q) เขียนกันไว้ก่อนโดนด่าอีก เพราะผมไม่ชอบดราม่านะ)

สรุปประเด็นคำถามหลายๆ คนที่เห็นแย้งกับโพสของผม

**************************************
Q: บางคนบอกว่า coding ไม่เขียนโปรแกรมจะเรียก coding ได้ไง..?

A: coding ไม่ได้ตีความว่าต้องเขียนโปรแกรมเป็นบรรทัดๆ ด้วยภาษาคอมพิวเตอร์ อย่างเดียว Lego Mindstorm ก็ coding ด้วย drap and drop, Scratch ของ MIT เป็นแพลตฟอร์มสอนเด็กให้เข้าใจ coding ด้วย GUI (ลองเข้าไปดูที่ https://scratch.mit.edu) ทั้งหมดคือการสอน coding โดยไม่ใช้ภาษาโปรแกรมทั้งนั้น และทั้งหมดนั้นสามารถทำอะไรที่คล้ายๆ กันได้โดยไม่ต้องใช้คอมพิวเตอร์ คอมพิวเตอร์เป็นเพียง "tool" ในการอำนวยความสะดวกเท่านั้น ซึ่งมันก็จะตามมาด้วย "ข้อเสีย" แบบที่ผมเคยได้พูดไปแล้ว)
ภาษาโปรแกรมเป็นแค่ 1 วิธีในการสร้างกระบวนการแก้ไขปัญหาอย่างเป็นระบบเท่านั้น

**************************************
Q:บางคนบอกว่า ถ้าอยากฝึกวิธีคิด วิธีแก้ปัญหา มีวิชา math และ logic แล้วนี่ จะเรียนซ้ำซ้อนทำไม..?

A: ถ้าจะพูดแบบนี้ทุกวิชาในโลกนี้เรียนเพื่อฝึกคิดและแก้ปัญหาทั้งนั้น ไม่ใช่เฉพาะ math หรือ logic
แต่เราไม่ได้เรียน coding เพื่อแก้ปัญหาแบบตรงๆ แต่เราเรียน coding เพื่ออธิบายปัญหาและวิธีแก้ "อย่างเป็นระบบ" (อันนี้เอามาจากคำตอบของคนในทีมผมเอง ขออนุญาตไม่ระบุนาม) ซึ่งวิชา math และ logic ไม่ได้เน้นเรื่องนี้

**************************************
Q: เรียน coding ด้วยกระดาษ โปรแกรมบั้กก็แก้ไม่ได้ รันโปรแกรมก็ไม่ได้ จะไปมีประโยชน์อะไร

A: สมัยพวกผมเรียน พวกผมคอมไพล์ด้วยตา เช็คบั้กด้วยสมองคิด ซึ่งสิ่งเหล่านั้นบ่มเพาะให้พวกผมเป็นโปรแกรมเมอร์ที่ดีขึ้น รอบคอบขึ้น ละคิดละเอียดขึ้น

**************************************
Q: ถ้างั้นก็อย่าใช้คำว่าวิชา coding ให้คนเข้าใจผิด จะใช้คำว่าวิชา computational thinking หรืออะไรก็ใช้ไป

A: ผมก็ยังยืนยันว่า ตำราฝรั่งทั้งจาก MIT, google จากมหาวิทยาลัยดังๆ หนังสือเด็กของฝรั่ง ส่วนใหญ่ก็ใช้คำว่า coding อย่าตีความ coding เป็นการเขียนภาษาคอมพิวเตอร์เพียงอย่างเดียว
และถ้าคุณเลือกใช้คำอื่น ต่อให้มันจะเป็นคำที่ตรงเป๊ะๆ อย่าง computational thinking หรืออะไรก็ตามแต่ ก็จะยิ่งยากที่จะทำให้สังคมเข้าใจมากยิ่งขึ้นไปอีก "ลองจินตนาการรมต พูดว่า เราต้องให้เด็กเรียนวิชา computational thinking" ในสภาดูสิครับ

**************************************
Q: เป้าหมายของการเรียน coding คืออะไร
A: สำหรับผม ผมไม่ได้คิดว่าเด็กที่เรียน coding จะต้องเขียนโปรแกรมคอมพิวเตอร์เป็น รันโปรแกรม python หรือ java ได้ ไม่จำเป็นเลย
ที่ผ่านมาเราให้เด็กเรียนวิชาอ่าน เขียน ไม่ได้เพื่อเรียนจบไปเป็นนักอ่านข่าวอาชีพ หรือนักเขียนอาชีพใช่ไหมครับ แต่เราให้เค้าเรียนเพื่อให้มี skill พื้นฐานในการสื่อสารปฏิสัมพันธ์
เช่นเดียวกันเราให้เด็กเรียน coding ไม่ได้เพื่อไปเป็นโปรแกรมเมอร์อาชีพ แต่เราให้เค้าเรียนเพื่อมี skill พื้นฐานในการคิดแก้ปัญหาอย่างเป็นระบบ

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

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

ผมสรุปปิดท้ายตรงนี้ และจะเลิกพูดเรื่องนี้แล้ว ถ้าจะโพสประเด็นนี้หลังจากนี้ผมจะไม่เปิด public และจะเขียนเฉพาะให้เพื่อนๆ ใน Facebook อ่านเท่านั้นเพื่อหลีกเลี่ยงดราม่า

ขอบคุณครับ

113 Nameless Fanboi Posted ID:AhbCzfjIm1

ประชาพิจารณ์ หลักสูตร ict ของ สสวท

บอกตรงๆเลยนะ ไม่คิดว่าจะผ่าน เนื้อหาไม่ค่อยได้เปลี่ยน แต่จะเปลี่ยนวิธีคิด และการดำเนินการกับคนจำนวนมากมันเป็นเรื่องยาก

ก่อนอื่น ต้องบอกว่า มีทีมงานร่างหลายหลาก ยืน ภู่วรวรรณ เป็นประธาน และมีอาจารย์มหาลัยหลากหลายแห่ง และ ครูผู้สอนจากทั่วประเทศ มาช่วยกันปล้ำจนเป็นรูปร่างได้

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

ทีนี้ปรับน้อยคือยังไง เราพยายามเปลี่ยนวิธีคิดว่า เราจะไม่เรียนคอมพิวเตอร์ แต่เราจะสอน "วิธีคิด"

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

ดังนั้น แค่นี้แหละครับ ถ้าอยากจะบอกว่า ประถมต้น เรียน ict แล้วได้อะไร ก็ได้วิธีคิดและอธิบายทุกอย่างเป็นขั้นตอนในชีวิตประจำวัน

ผมขอให้ keyword ของประถมต้นว่า "Unplugged" ซึ่งก็คือเรียน ict กับชีวิตจริงเป็นหลัก (แน่นอนว่า ถ้ามีเครื่องจะเสียบปลั๊กก็ไม่ได้ว่าอะไร)

ประถมปลายนี่ เด็กเริ่มใช้เน็ตเป็น เล่นไลน์ ค้นเน็ต ลอกการบ้านจาก วิกิ ส่งครูได้ การเข้าใจเครื่องมือที่มีไม่ว่า จะ I(nternet) หรือ C(omputer) หรือ T(elecomm) ก็จะเริ่มแถวๆนี้แหละ แต่เราจะให้เด็กคิดว่าอะไรควรหรือไม่ควร เนื้อหาบางอย่างได้สอดแทรกเข้าไปเช่น logical fallacy เพื่อให้เด็กสามารถมีตรรกะที่จะต่อต้านข่าวปลอม หรือ พฤติกรรมไม่เข้าท่าในเน็ต เด็กเราจะได้ไม่โดนแชร์ลูกโซ่ หรือ โดนหลอกบริจาคทั้งที่บ้านไม่จนได้

ผมให้ keyword ของประถมปลายว่า "Daily" ซึ่งหมายถึงการใช้ ict กับชีวิตประจำวัน ไม่ว่าในการเรียนวิชาต่างๆ การเขียนบล๊อกหรือส่งเมล์ควรเรียนในภาษาไทย การคำนวณด้วยคอมพิวเตอร์ควรอยู่ในคณิตศาสตร์วิทยาศาสตร์ การทำภาพกราฟิกควรอยู่ในวิชาศิลปะ

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

การเรียนใน ม.ต้น จึงเน้นระเบียบและเทคโนโลยีการเก็บข้อมูล ตั้งแต่แบบสอบถาม แบบสำรวจ จนกระทั่ง Internet of Things (IoT) แล้วแต่ว่าโรงเรียนไหนจะไหว ย้ำอีกที เราสอนวิธีคิดนะ ไม่ได้สอนการใช้เทคโนโลยี

ผมให้ keyword ของ ม.ต้นว่า "primary data"

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

ซึ่งผมให้ keyword ของ ม.ปลายว่า "secondary data"

แม้ว่าอาจจะต้องปรับปรุงตำรา แต่ก็คิดว่าหนังสือที่ใช้ก็คิดว่าเรียนเล่มเดิมเป็นหลัก ย้ำว่าเราเปลี่ยนแค่วิธีคิด แต่ เนื้อหาสาระ คงไม่ต่างจากเดิม เด็กคิดได้ เดี๋ยวก็ไปเรียนกันเองแหละ

แต่อุปสรรคที่สำคัญอย่างหนึ่งคือ การเปลี่ยน mind set จาก "ทำอะไรได้ แปลว่า คิดได้" มาเป็น "คิดได้ เดี๋ยวก็ทำได้เอง" ยังเป็นความท้าทายอย่างยิ่งครับ

114 Nameless Fanboi Posted ID:AhbCzfjIm1

ว่าจะไม่พูดเรื่อง Coding แล้วเชียว ... ขออีกสักโพสท์ละกัน

ผมว่าปัญหาหนึ่ง ก็คือเรามองมันใน Context แคบๆ แค่ Computer Programming น่ะครับ (อันนี้เป็นปัญหา โดยเฉพาะคนในวงการไอที -- พอเห็นอะไรที่เกี่ยวกับเรื่องนี้ก็ตีความไปทางที่ตัวเองทำ -- Coding with Computers, Coding Computer Programs, etc)

ลองคิดแบบนี้ครับ .....

ถ้ามันจะเป็นการศึกษาพื้นฐาน อันนี้ต้องลองคิดในมุมที่กว้างกว่า "เรียนไปเขียนโปรแกรมคอมพิวเตอร์" หรือ "เรียนไปเป็นโปรแกรมเมอร์" ครับ มันไม่ได้มาตอบสนองตลาดแรงงานของอาชีพนี้แต่อย่างใด

ต้องลองคิดว่า

คนที่จะเป็น Designer, พยาบาล, พ่อครัว, คนอยากเรียนอักษรฯ, คนอยากเรียนเกษตรฯ, คนอยากเรียนอะไร ก็ควรเรียน Coding

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

มันอาจจะเกิดมาจากการเขียนโปรแกรมคอมพิวเตอร์ครับ แต่ทำไมเราจะคิดให้มันอยู่ในบริบทที่ใหญ่กว่านั้นไม่ได้ ....

ถ้ามันหมายถึง "วิธีการสื่อสาร" "ภาษาของการสื่อสาร" ที่ชัดเจน เป็นเหตุเป็นผล เป็นลำดับขั้นตอน ไม่ใช่การสื่อสารที่กำกวม ตีความยังไงก็ได้ ขึ้นกับบุคคล

ยกตัวอย่างเช่น เล่นเกมหาทางออกกับเด็ก .... แทนที่จะบอกว่า "ก็หาไปเรื่อยๆ จนกว่าจะเจอทางออก" หรือ "ลองแล้วไม่ได้ ก็ลองใหม่" ... เป็น "เลือกทางซ้ายก่อนเสมอ แล้วไปเรื่อยๆ ถ้าเจอทางตัน ให้ย้อนกลับมาจุดสุดท้ายที่มีทางเลือก แล้วเลือกทางถัดมา" .... อะไรแบบนี้เป็นต้น

ถ้ารอบๆ ตัว ทั่วๆ ไป .... การบอกทางให้มีประสิทธิภาพ (เวลาถามว่าอะไรไปยังไง) ก็ต้องอาศัย Coding ..... การแก้ปัญหาต่างๆ ก็ต้องใช้ Coding .... อะไรทำนองนี้

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

แน่นอนว่า Computer Programming เป็น Context หนึ่งของ Coding แต่ไม่ใช่ทั้งหมด

ถ้าเด็กๆ ได้เรียน Coding ใน General Context หรือ Daily Lives มาแล้ว การนำมาประยุกต์ใช้กับการเขียนโปรแกรมคอมพิวเตอร์ก็เป็นเรื่องที่ง่ายขึ้นมาก (Note: ปัญหาของเด็กเรียน CS/IT/CE บ้านเราเลยครับ ... รู้แต่ Syntax แต่ "Coding ไม่เป็น")

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

ผมขอแปะ link ไป product ตัวหนึ่งใน Amazon ละกันครับ ....

"Littlecodr - Kids Coding Game"

https://www.amazon.com/Littlecodr-46618-Kids-…/…/B0199Q3PEI/

อันนี้เป็น Card Game สำหรับเด็กอายุ 4 ขวบขึ้นไป เป็น Card คำสั่ง ที่เอามาต่อกันเป็น Instruction เล่นกับเพื่อนได้ (สมมติว่าเพื่อนเป็น Robot ก็ได้)

ประเด็นคือ .... ถ้าฝรั่งไม่ใช้คำนี้ กับการสอนอะไรแบบนี้ แล้วทำไม Product ตัวนี้มันชื่อนี้?

คนสาย IT ก็ลด​ Ego ตัวเองลงนิดๆ นะครับ ลองมองในภาพที่มันกว้างขึ้นบ้าง .... อย่าคิดว่ามันเป็นของพวกเราเท่านั้น ต้องทำแบบเราเท่านั้น หรือทุกอย่างปลายทางอยู่ที่เป็นแบบพวกเราเลยครับ

ป.ล. สำหรับคนที่อยากแชร์ มันน่าจะได้แค่ amazon link นะครับ เพราะว่าที่ผมเขียนนี่ ผมทำไว้แค่ friends only ครับ

115 Nameless Fanboi Posted ID:6dDocMKiFd

ปัจจัยหนึ่งที่ทำให้ปัญหา Developer หนักขึ้นคือหลายคนเข้าใจแต่การ Scale quantity ของทีมงานเพื่อแก้ปัญหางานเยอะ

Whatsapp - ทีม 30 คน ดูแล 900M Users
Gojek - ทีม 12 คน ดูแล 1 ล้านคนขับ (ไม่ใช่ Users ด้วยนะ ตัว Users เยอะกว่านั้นอีกแน่ๆ)

แล้วผมก็เห็นข่าวทีมงาน 100+ คนทำแอพพลิเคชั่นที่ผมคิดว่า 2-3 คนทำน่าจะได้ คนพัฒนาก็ตีซะใหญ่โตว่าแบบลงทุนเยอะเจ๋งมาก

ผมก็นั่งคิดในใจว่า โครงการนี้ คงใช้เวลา น่าจะใช้เวลา 7-9 เดือน นั่งวางโครงสร้างและ Process ให้ 100+ คนทำงานร่วมกันได้โดยไม่ตีกัน ตอนเขียนจริงอาจจะ 2 สัปดาห์

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

ธรรมชาติงานพัฒนาซอฟต์แวร์ พอคนมันเยอะเกินจุดที่มันเหมาะสม ยิ่งมีคนเยอะก็ยิ่งช้าลง

ปัญหาใหญ่สุดๆ เลย คือ จะมีซักกี่คนที่เก๋าและมั่นใจพอที่จะตอบคำถามว่า "เห้ย งานมันเลทแล้วเนี่ย เร็วๆ หน่อยเนี่ย จะไม่ทันแล้ว เอาคนเพิ่มมั้ย"​ แล้วมั่นใจตอบว่า "ไม่ต้องเพิ่ม เพิ่มคนไม่ช่วยครับ"

(ส่วนตัวผมเคยบอกเจ้านายหลายครั้งใน Career เลยนะว่า Allocate คนมาเพิ่มไม่ช่วย เอามาก็เหยียบเท้ากันตีกันเปล่าๆ โครงสร้างมันไมไ่ด้รองรับให้คน x คนทำงานด้วยกัน รื้อโครงสร้างให้รองรับก็ยิ่งเลทกว่าเดิม)

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

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

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

เราต้องการจำนวนโปรแกรมเมอร์เยอะขึ้นหรือเปล่านะในตลาด ต่อให้เยอะขึ้น ต้องการเยอะขึ้นเท่าไหร่กันแน่

116 Nameless Fanboi Posted ID:4Pc/Emg+vD

>>115 เข้าใจอะไรผิดปะวะ support ไม่ใช่ dev แล้ว gojek ก็มี dev มากกว่า 12 คนแน่ๆ มึงเอาเรื่องมาปนกันอะ

117 Nameless Fanboi Posted ID:6dDocMKiFd

คุยกับผู้บริหาร Top ของไทย ล้วนแล้วแต่พูดเสียงเดียวกันว่า ฝั่งธุรกิจต้องปรับตัวเรียนรู้เทคโนโลยีมากขึ้น ส่วนฝั่งเทคโนโลยีเองก็ตัองปรับตัวเรียนรู้กลไกของธุรกิจเช่นกัน มันต้องพึ่งพากัน

ทั้งสองฝั่งยังไม่รู้ในโดเมนอีกฝั่งมากมาย วันนี้เขาไปฟังธุรกิจหนึ่งก็มีเรื่องกลไก Price war ที่มีหลายรูปแบบที่มันไม่มีสอนในตำราชนิดที่ทำให้เจ้าใหญ่รายใหม่ก็ไม่มีพื้นที่เล่นได้ แม้แต่คนในธุรกิจนั่นเองยังไม่รู้ คนสายเทคโนโลยีจะไม่รู้ก็ไม่แปลก ส่วนคนสายธุรกิจก็ยังไม่รู้จัดเทคโนโลยีอีกมากมาย

ดังนั้นการอยู่รอดในอนาคตต้องพึ่งพากันทั้งสองฝั่ง
คนทั้งสองฝั่งเลยเอางานมาพักไว้ที่เราเยอะเพราะอย่างนี้นี่เอง เพราะเขาคุยกันไม่รู้เรื่อง

เปิดคอร์ส
- Programming for Non Tech
- Business for Tech
ดีมะ #ขายของ

118 Nameless Fanboi Posted ID:tAwwkuhc4G

อยากเย็ด แมรี่ สยามดรีม จังเลยครับ

https://imgur.com/Oa4i2CR
https://imgur.com/9q1xksb
https://imgur.com/zbiNqv1
https://imgur.com/3hJrTUj

119 Nameless Fanboi Posted ID:Ek/L2Q92Ro

วันนี้ได้ฟังเรื่องราวหลายๆ อย่างเหลือเกิน

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

พอคิดดีๆ ลูปมันก็ครบ ดีมานด์ซัพพลายก็สมดุล บริษัทไทยเองก็ได้ของดีขึ้น นักพัฒนาไทยเองก็มีความเป็นอยู่ที่ดีขึ้น มันก็ไม่วิกฤติอะไรหรอก สุดท้ายเงินก็หมุนกลับมานักพัฒนาไทยนี่แหละ และของที่ได้ก็กลับมาที่ไทยเหมือนกัน ทุกคนก็วินๆ กันหมด แค่มีเศษเงินหลือๆ กระฉอกออกไปที่เมืองนอกหน่อยบ้างก็คิดซะว่าเป็นค่าน้ำชงน้ำชาไป

เราจะไปเห็นเป็นปัญหาทำไมกันนะ

(สถานะนี้อาจทำลายตัวเองได้)

120 Nameless Fanboi Posted ID:i8pffGD7jH

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

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

แหม่ ..... ผมนี่แทบจะหลุดว่า

"You don't tell a computer scientist who is a mathematician that solving a problem takes time. Time complexity for solving any problem depends on 'how' you solve it.

Don't tell me you need time. Tell me your understanding of the problem and tell me your "solution" ("algorithm" - how would you solve it).

Time isn't a solution. Time is needed for executing a solution."

แหม่ .... จริงๆ เล้ย

ส่วนหนึ่งคือพื้นฐานของบ้านเราน่ะแหละครับ เชื่อไหมว่าเราสนใจแต่เรื่อง "การแก้ปัญหา" จนเราไม่สามารถแก้ปัญหาอะไรได้เลย เพราะเราสนใจเรื่องนี้มากเกินไปจนเรียนแต่ "เครื่องมือ" หรือ "สูตรสำเร็จของการแก้ปัญหา" ... มันก็จะแก้ปัญหาได้เฉพาะปัญหาที่เคยแก้ไปแล้วทั้งนั้น ....

แม้แต่เรื่องที่ต้องการความเข้าใจมากๆ อย่างคณิตศาสตร์และ Computer Science เรายังเรียนมาเป็นการใช้เครื่องมือแบบจ๋าๆ ได้เลย (สูตร คือ เครื่องมือ, Library คือเครื่องมือ, Programming Languages คือเครื่องมือ ฯลฯ)

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

When all you know is a hammer, everything suddenly looks like a nail.

หลายครั้งเรื่องการใช้เวลา นี่เราไม่ได้ใช้เพื่อแก้ปัญหาครับ เราใช้ทนกับปัญหาจนกระทั่งชินกับมัน

หลายคนบอกว่าต้องใช้เวลา แล้วหวังว่าวันหนึ่งปัญหามันจะหายไป ...... หรือปัญหามันจะแก้ตัวมันเอง .....

แต่ส่วนมาก วิธีการแก้ปัญหาของบ้านเรา คือ "บังคับให้คนอยู่กับปัญหาจนชินไปเอง" ..... นั่นคือ Hammer ของเราครับ ... ตอกให้คนจมลงไปอยู่กับปัญหา

122 Nameless Fanboi Posted ID:eDHofW5cRm

เคยเห็นกระทู้ถามว่า "ทดสอบรับคนเข้างานด้วย Algorithm เวิร์คมั้ย" ในบอร์ดเมืองนอก

- มีคนแชร์ว่าเคยรับคนที่ไม่ได้อัลกอริธึมแล้วเวิร์ค รับคนที่ไม่ได้แล้วไม่เวิร์คขาดตรงไหน
- มีคนแชร์ว่าเคยรับคนที่ได้อัลกอริธึมแล้วไม่เวิร์ค แชร์ว่ามันทดสอบอะไรได้และที่มันทดสอบไม่ได้คืออะไร
- DHH คนสร้าง Rails ก็ออกมาบอกว่าเขาไม่ใช้แล้วใช้อะไรแทน
- มีคนจาก Top tech (F,M,A,G) ออกมาบอกว่าทำไมเขายังทำอยู่
- มีแม้แต่คนที่ทำ Opensource ระดับโลกที่เคยตกโจทย์อัลกอริธึมตอนไปสมัครงาน ออกมาบอกว่าเขาติดอะไร

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

ดีนะที่ไม่เคยตั้งคำถามนี้ออกไปให้ใครฟังนอกบริษัท เราคุยกันเรานั่งตั้งคำถามกันแล้วเราก็ปรับปรุงวิธีสัมภาษณ์กันเนียนๆ

สังคมข้างนอกเนี่ยมี Prejudge สูงมาก

123 Nameless Fanboi Posted ID:eDHofW5cRm

ว่าด้วยเรื่องการสอบสัมภาษณ์ด้วย Algorithms

- ปกติแล้วจะใช้ในกรณีบริษัทขนาดกลางหรือใหญ่ขึ้นไป บริษัทข้ามชาติหรือบริษัท Startup ที่ต้องการโปรแกรมเมอร์ที่ต้องแก้โจทย์ยาก ๆ หรือต้องทำ Optimization เยอะ ซึ่งมีผลต่อผลกำไรของบริษัทโดยตรง
- โจทย์มักจะคล้าย ๆ กับคอมพิวเตอร์โอลิมปิคหรือ ICM-ICPC ในระดับง่ายถึงปานกลาง ใช้เวลา 30 นาที - 3 ชั่วโมง
- อัตราส่วนในการแก้โจทย์ได้ประมาณ 10%-20% ซึ่งถ้าบริษัทมีคนมาสัมภาษณ์เยอะ ๆ ก็ค่อนข้างคุ้มที่จะได้คนเก่ง ๆ ไปสัมภาษณ์ทัศนคติต่อ
- ปกติแล้วจะมีเพียง 1-2 โจทย์ ง่ายกับปานกลาง หรือปานกลางอย่างเดียว
- บางครั้งโจทย์เหมือนจะเป็นโจทย์ Algorithm แต่จริง ๆ แล้วคุณต้องแก้ด้วยเซนส์ทางคณิตศาสตร์
- บางครั้งแกล้งใส่ Bug ไว้ในคำถามเพื่ออยากรู้ว่าจะแก้ปัญหายังไง บางคนหนีกลับบ้านก็มี บางคนก็เดินมาถาม บางคนก็ทำไปเลย
- เมื่อแก้โจทย์ได้แล้วจะมีการรีวิวโค้ดและสัมภาษณ์วิธีการแก้ปัญหา ดูสไตล์การเขียน ดูวิธีการตอบคำถาม ประสบการณ์และทัศนคติอื่น ๆ ซึ่งมักจะสำคัญกว่าวิธีในการแก้โจทย์
- การมีโจทย์จะทำให้วัดความรอบคอมของคนสอบ และสไตล์การทำงานได้คร่าว ๆ เช่น บางคนมั่นใจมาก ทำแปปเดียวเสร็จแล้วคิดว่าถูกก็ส่งเลย บางคนก็ใช้เวลาจนหมดเพื่อพิจารณาโดยละเอียด บางคนนั่งเขียนเทสให้ด้วย
- โจทย์แบบนี้มักจะใช้ในงานที่เงินเดือนค่อนข้างสูง
- ถามว่ามีประโยชน์ไหม ส่วนตัวคิดว่ามีประโยชน์มากสำหรับงานที่ต้องการคนแบบนี้จริง ๆ หรือใช้ในการคัดกรอง Outlier เก่ง ๆ ในกรณีที่มีคนสัมภาษณ์เยอะ แต่ในบางงานก็ไม่จำเป็น เช่น งาน Client Side (Front End) ก็ทดสอบด้วยการเขียนอย่างอื่นแทน แต่ก็อาจจะมีบางบริษัทที่ต้องการ Optimize ฝั่ง Front End
- การสอบสัมภาษณ์ไม่ใช่ทุกอย่าง บางครั้งบริษัทอาจเลือกจากสิ่งที่คุณเป็น เช่นบริษัทก็อาจจะมีโควต้าจำกัด ถ้าเลือกรับได้แค่ไม่กี่คน แต่มีตัวเลือกที่เก่งเท่ากันและทัศนคติเท่ากันหลาย ๆ คน บริษัทอาจรับคนที่บ้านใกล้กว่า กินเบียร์เก่งกว่า แต่งงานแล้ว(ปัญหาน้อยกว่า) โสด(เวลาว่างเยอะกว่า) เล่นดนตรีเก่ง อะไรแบบนี้ก็มีเหมือนกัน

126 Nameless Fanboi Posted ID:NgHSXg0rmj

คนที่ทำหน้าที่สัมภาษณ์งานและตั้งคำถามคนอื่น ถ้าทำจริงจังก็กดดันไม่แพ้คนที่เข้ามาสัมภาษณ์หรอก มันก็ผ่านการรับคนถูกรับคนผิดได้บ้างไม่ได้บ้างทั้งนั้น ใครเคยยืนตรงนั้นก็รู้ มันนั่งเถียงกันนั่งลังเลนั่งคิดมากนั่งเครียดไม่แพ้ตัว Candidate หรอก

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

ปล. Facebook, Google, Microsoft, Apple เวลาพูดถึงเรื่องนี้เขาก็ยอมรับนะว่าระบบให้ความสำคัญกับการที่ไม่พลาดท่ารับคนที่ไม่ถึงมาตรฐานมาก ทำให้หลายครั้งก็จะไปพลาดไม่ได้รับคนที่เกินมาตรฐานแต่ไม่เหมาะกับแบบทดสอบไปเสียได้ และก็ยอมรับว่าตอนนี้เป็นแบบนี้เพราะยังหาวิธีดีกว่านี้ไม่เจอ ก็แค่นั้น

127 Nameless Fanboi Posted ID:vqdWOUzumi

>>126 อ่านแล้วเก็ตอยู่นะ สมมติ ไปเอาคนกากๆทำงานไม่ได้มา นี่ก็อายอยู่นะ

128 Nameless Fanboi Posted ID:ArYYlu8/h0

ปกติ id ในโม่งมันมีวิธีอ่านเป็น ip address ไหม

129 Nameless Fanboi Posted ID:PT.PriE3.A

ส่วนตัว ผมไม่ mind เรื่องไม่เชี่ยวชาญ stack ปัจจุบันนะ ไม่ได้อยากได้คนที่ exact match จ๋าๆ ด้วย ผมมองว่าสายงานเราความรู้ตามกันทันแค่อ่าน แต่ความสามารถในการอ่านแล้วซึมซับได้

ผมแชร์อีกมุมละกันว่า ผมไม่เสียดายมากนักกับความเชี่ยวชาญใน stack ปัจจุบันที่ใช้อยู่

130 Nameless Fanboi Posted ID:fwekwgHuoR

bb github รู้สึกว่าแพงไป บางทีต้อง add คนอื่นที่ไม่ได้อยู่ในทีมเข้ามาด้วย แล้วซื้อเป็นรายปีมันต้อง add seat ทั้งปี
จริง ๆ ถ้า github มีระบบ guest แบบไม่เสียตังจะดีกว่านี้

ตอนนี้มีใช้หลาย service ที่ pay per user มันแพงมาก ๆ เลย รับงานมาแทบจะไม่กำไรเพราะไอพวกนี้แหละ

131 Nameless Fanboi Posted ID:/VJqDqGGDF

สำหรับท่านใดที่กำลังให้ความสนใจ Serverless แล้วเกิดข้อสงสัยว่าทำยังไงเราถึงจะสามารถ ย้ายระบบ Web ของเราไปเป็น Serverless ได้บ้าง
.
มีบทความแนะนำจาก freeCodeCamp ครับ แต่จะเป็นการ Migrate ไปที่ Serverless ของ AWS น่ะครับ
.
The Ultimate Guide to Migrating to Serverless
https://www.freecodecamp.org/news/migrating-your-app-to-the-cloud-using-serveless/
.
ขั้นตอน
1. ย้าย API เล็กๆที่ไม่ได้ต่อ DB ก่อน เช่น API การจัดการรูปภาพ, การส่งเมล์ ออกมาที่ AWS Lambda and API Gateway
2. ย้าย DB มาที่ Amazon DynamoDB หรือ Amazon RDS
3. ย้าย API ที่ต่อ DB ที่เหลือมาที่ AWS Lambda and API Gateway
4. ย้ายการเก็บ File มาที่ AWS - Amazon S3
5. ย้าย Static Web ไปวางที่ AWS - Amazon S3 และจัดการ Domain Name ผ่านทาง Amazon Route 53
.
สุดท้ายก็มีแนะนำ Course Free ให้ลองเรียนเพิ่มเติมครับ
https://courses.completecoding.io/p/build-a-serverless-api/
.
ปล. ถ้ายังไม่หนำใจ จัด Course Free นี้ต่อได้เลยครับ
https://serverless-stack.com/
เป็น Course สอนพัฒนา Full-Stack Apps ด้วย AWS Serverless และ React
มาทุกขั้นตอนเลยตั้งแต่สมัครใช้งาน AWS, จัดการ users, เขียน Web API, Web UI, Automation
.
Happy Coding
.
🔥🔥🔥

132 Nameless Fanboi Posted ID:jlQkcUfYCx

There are a lot of articles say "Every engineer must start thinking of x as a primary concern, not as an afterthought".

Honestly, I think this is not a healthy way to approach software engineering because

1. More than 80% of software engineers work with legacy code in daily-basis. So the lesson about how to make it right from the start will be valuable for only a few portions of software engineers and applicable to very few systems. We should talk more about migrating and change.

2. If I gather all these articles, there will be too many x that no one can even start a project. We should also consider the context of the system and prioritize all the x-es accordingly.

I believe that great software engineer should be proficient in managing change and evolving the system.

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

หลายๆ บทความ Tech โดยเฉพาะเวลาโปรโมต Practice ใหม่ๆ "เราต้องคิดถึง X ตั้งแต่เริ่มโปรเจ๊กต์ ไม่ใช่คิดทีหลัง ต้องออกแบบมาให้รองรับแต่แรก"

ผมคิดว่ามันเป็นคำแนะนำที่ใช้จริงไม่ค่อยได้ด้วยสองเหตุผล

1. Developer เกิน 80% ทำงานกับ Legacy code ดังนั้นบทความที่เขียนว่าทำยังไงให้ถูกต้องตั้งแต่เริ่มวางระบบ มีประโยชน์และใช้ได้จริงกับคนแค่ไม่กี่คนและระบบไม่กี่ระบบเท่านั้น เราควรจะพูดถึงวิธี Evolve กับ Migrate ระบบให้รองรับ X ได้บ้าง ไม่ใช่บอกว่าคุณต้องคิดมาให้ดีแต่แรกครับอย่างเดียว

2. ถ้าเอาทุกบทความพวกนี้มารวมกัน X จะมีเยอะมากจนไม่น่าจะมีใครเริ่มงานได้เลย น่าจะใส่ใจกับบริบทแล้ว Prioritize X ต่างๆ ตามบริบท ไม่ใช่โยนโครมแล้วทุบดินว่าต้องทำอย่างเดียวโดยไม่สนใจบริบท

ผมเชื่อว่า Software engineer ที่เก่ง ต้องมีความสามารถในการจัดการบริหารความเปลี่ยนแปลงและปรับปรุงระบบที่มีอยู่แล้ว ซึ่งเรื่องนี้ยากกว่าการออกแบบระบบใหม่เยอะ

133 Nameless Fanboi Posted ID:JNJ0LoIyZW

IMHO,

นิสัยพื้นฐานที่ดีอย่างหนึ่งของโปรแกรมเมอร์ ก็คือ "การหาของเล่น/ของสะสม" และ "การเป็น geek เกี่ยวกับของเล่นนั้นๆ" ไม่ว่าจะเป็นอะไรก็ตาม

การหาของเล่นใหม่ๆ มาลองเล่น ลองผิดลองถูก ลองให้รู้ การรู้จักสังเกต subtleties เล็กๆ น้อยๆ ที่สร้างความแตกต่างให้ของเล่นนั้นๆ ความรู้เชิงลึกที่ประกอบลงไปกับความแตกต่างเล็กๆ น้อยๆ เหล่านั้น ว่ามัน make differences อย่างไร และ tradeoff มันคืออะไร .... การมีความเห็น มี opinion ของตัวเองเกี่ยวกับของเล่นนั้นๆ รวมถึงการไปอ่านความเห็นคนอื่นใน forum ที่เกี่ยวข้อง (ขอ forum ที่ civilized หน่อยละกัน ที่เต็มไปด้วยพวก geek เพียงพอ และ respect ซึ่งกันและกันเพียงพอ)

ย้ำ: "ของเล่น และเล่นสนุกกับมันนะ" ไม่ใช่ "จำเป็นต้องใช้ด้วยความจำเป็น"

ถ้าเราจะเอาแค่รู้จักพวกนี้ "เพราะว่าต้องใช้ในงาน" เราจะรู้จักอะไรน้อยไปเสมอ และพัฒนาตัวเองยากเสมอ (ซึ่งจะทำให้ทีมและงานพัฒนาไม่ได้ไปด้วย)

ของเล่นผมก็รองเท้า หูฟัง กล้อง ... ส่วน forum ที่ผมอ่านประจำ เข้าไปคุยบ่อยๆ ก็ head-fi (หูฟัง) styleforum (รองเท้า) เป็นต้น (วันก่อนเพิ่งจะเปิดโลก ด้วยการนั่งตามอ่าน thread เกี่ยวกับรองเท้า Antonio Meccariello ..... ว่าโลกของ High-End จริงๆ นี่เค้าเล่นอะไรกัน ..... โหดมาก ละเอียดมาก ..... เพิ่งจะรู้ว่ามันสังเกตแบบนั้นได้ด้วย มันมีรายละเอียดแบบนี้ด้วย)

ไม่ใช่มีรองเท้าไว้ใส่ ยังไงก็ได้ หูฟังไว้ฟังเพลง ยังไงก็ได้ เอาแค่กระแสว่าดี คนอื่นใช้กัน ฯลฯ

ของเล่นในเชิงการเขียนโปรแกรมก็เช่นกัน

เราต้องหาของเล่นเหล่านี้ตลอดเวลา ไม่ว่าจะเป็น library, framework, programming languages, รวมถึง computation models ต่างๆ .....

คนเก่งๆ ที่ผมรู้จักแทบทุกคน จะหาพวกนี้เล่น ลอง ตลอดเวลา และรู้สึก wow กับอะไรที่มันเพิ่ม expression power ให้กับพวกเขา ....

การมีของเล่นแบบนี้ มันสะท้อนชัดเจนหลายอย่างเลยนะ

134 Nameless Fanboi Posted ID:wrQ7.ECC9d

ความเห็นและความหงุดหงิดส่วนตัว

เห็นคนวิเคราะห์ WeWork กันตอนล่มด้วยคำอธิบายง่ายๆ ว่า ขาดทุน เท่ากับ หลอกลวง ก็จะบอกว่า Startup ที่ Valuation สูง ไม่มีกำไรแล้วพอ IPO ก็พบว่าของจริงแกร่งจริงก็มีเยอะนะ

จะบอกว่าที่เราต้องไม่ลืมในวงการนี้คือ
- Startup 90% Failure rate นะ แต่ถ้าติดแล้วกำไรมักจะเกิน 10-100 เท่า ก่อนลงทุนก็รู้ข้อนี้ไว้ก่อนนะ จะได้ทั้งไม่โดนหลอกให้ลงทุน และไม่ตัดสินว่า Startup ล้มเหลวเท่ากับกาก
- ผมมองว่า Unit economics สำคัญมาก ตราบใดที่ต้นทุนในการหาลูกค้าและดูแลลูกค้ามันชัดเจนแล้วสเกลได้

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

กลยุทธ์หนึ่งที่ทำได้คือลงเงินกับตรงนั้นจนกว่าจะไม่ได้ลูกค้าเพิ่มจนกว่าจะ Stagnate ลงไม่ได้ ซึ่งจังหวะนี้ยังไงก็ต้องระดมทุนมาลง

ซึ่ง ถ้า Unit economics คือต้นทุนในการดึงลูกค้าต่อหน่วยเทียบกับเงินที่ได้จากการได้ลูกค้าเป็นบวก เบิร์นเงินจนขาดทุนเพื่อตีของร้อนเนี่ย ไม่ใช่ประเด็นปัญหาเท่าไหร่นะ (แต่แน่นอนคือคุณก็ต้องดูดีๆ ว่าต้นทุนกับเงินที่ได้ มันแต่งเลขมามั้ย ที่มาที่ไปเป็นยังไง)

แต่ถ้า Unit economics เจ๊ง คือต้นทุนในการหาลูกค้ากับค่าใช้จ่ายในการดูแลลูกค้า รวมกันไม่ถึงเงินที่ได้ อันนี้เนี่ย ไม่ใช่แล้วววววววว ต่อให้บอกว่าลงเงินเพิ่มเยอะแล้วได้ลูกค้ามากขึ้นจริง ได้รายได้มากขึ้น แต่สุดท้ายมันก็พังอ่ะเพราะ กำไรส่วนต่างยิ่งน้อยลง...​ ซึ่ง ถ้าดูกำไรสุทธิมันเกิดขึ้นได้นะในช่วงเบิร์น สุดท้ายคุณต้องมาดูระดับกำไรระดับ Unit ระดับรายละเอียดแหละว่าเป็นยังไง

ซึ่งก็บอกได้เลยว่าแน่นอน จะลงทุนแล้วไม่ดูรายละเอียดเนี่ย ไม่ได้หรอกนายเอ๋ย เราก็แค่เซ็งๆ อยู่บ้างที่คนเก่งหลังเกมบอกว่า "เนี่ย ดูก็รู้แล้ว ง่ายๆ เลย ขาดทุนทุกปี ไปไม่มีทางรอดหรอก ดูง่ายๆ ก็รู้แล้ว" แล้วแบบออกตัวว่าเก่งกันใหญ่เป็นฉันฉันไม่โดนหลอกหรอกดูแค่นี้ก็รู้แล้ว แหม่ มันง่ายขนาดเลยเหรออออออออ มาซาโยชิ ซัน เจ้าของ Softbank นักลงทุนมือทอง นี่โดนหลอกง่ายมากขนาดนั้นเชียวนะเนี่ย

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

135 Nameless Fanboi Posted ID:LxYk920oAz

Agile is not a way to go fast. It is a way to know where you are going.

Agile is does not increase productivity. Agile increases manageability.

Agile does not guarantee you’ll get there on time. Agile destroys the hope that you might, when you won’t.

136 Nameless Fanboi Posted ID:dPEazNs4Pz

โค้ดสตาร์

137 Nameless Fanboi Posted ID:dPEazNs4Pz

เย็ดโค้ดสตาร์

138 Nameless Fanboi Posted ID:dPEazNs4Pz

อมควยโค้ดสตาร์

139 Nameless Fanboi Posted ID:dPEazNs4Pz

ระเบิดอัลเลาะห์กับโค้ดสตาร์

140 Nameless Fanboi Posted ID:/h95nb2ahk

เว็บที่ให้เราเขียนโค้ดออนไลน์แต่ละที่มีข้อดีข้อเสียแตกต่างกันครับ ก่อนหน้านี้ผมชอบเขียนบน LeetCode เพราะเขียนโจทย์ได้ดีกว่าที่อื่น อ่านเข้าใจง่าย แต่ช่วงนี้หันมาเล่น Clash Of Code แทนครับ เพราะเน้นให้เราคิดเร็ว พิมพ์เร็ว ไม่ยอมแพ้อะไรง่ายๆ

ช่วงนี้ Clash Of Code มีคนจากเมืองไทยติดอันดับ Top 10 ด้วยครับ ตามมาเชียร์และมาฝึกเขียนโค้ดกันได้ที่นี่ครับ

https://www.codingame.com/multiplayer/clashofcode

141 Nameless Fanboi Posted ID:g963aIIwH9

แคลชพ่อมึงตายแห่งควยโค้ดสตาร์

142 Nameless Fanboi Posted ID:g963aIIwH9

เน็ตเหี้ยและล่มจมเพราะโค้ดสตาร์

143 Nameless Fanboi Posted ID:g963aIIwH9

ศาสนาแรกของโลกก็คือศาสนาโค้ดสตาร์

144 Nameless Fanboi Posted ID:K5IFc0yFCJ

เห็นคนแชร์เรื่องสัมภาษณ์งานในสมาคมอะไรซักอย่าง ทำให้อยากเขียนสิ่งนี้ขึ้นมาเลย

ชีวิตนี้ ผมสัมภาษณ์งานไม่ผ่านเยอะมากเลยนะ น่าจะเยอะกว่าที่หลายคนคิดไว้

แต่สุดท้าย เวลามันใช่ มันใช่ของมันเอง

ตอนที่ผมเข้า Taskworld ใหม่ๆ ใช้ Git เป็นงูๆ ปลาๆ มาก Javascript build รวมกันยังไงก็ไม่รู้ คนอื่นเขา Grunt เขา Webpack ของเราที่ทำมาตลอดยังแค่ใช้ script มารวมๆ กันอยู่เลย เขียน React ก็ไม่เคย ตอนนั้นได้งานทำ SPA มาคือเขียน Framework SPA เล็กๆ เอง เพราะไม่รู้จัก React

ที่อื่นจะไม่รับก็ไม่แปลก จะบอกว่าไม่เชี่ยวชาญพอก็เถียงไม่ได้แหละ

แล้วสุดท้าย ก็น่าประหลาดใจที่มันเป็นที่ๆ เหมาะกับตัวเองในช่วงชีวิตตอนนั้นมากๆ มันมีเคมีที่เข้ากัน และทั้งผมทั้งบริษัทก็ได้เติบโตจากกันและกันมากมายมหาศาล

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

ถ้าเรามองจากมุมของคนที่ออกแบบสัมภาษณ์ ไม่แปลกเลยที่จะหาวิธีการพัฒนาให้มันแฟร์ขึ้น แม่นยำขึ้น ดีขึ้น

แต่ถ้าเราเป็นคนสัมภาษณ์ ก็อยากจะให้มองมันอย่างเข้าใจ

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

บางทีมันไม่มีใครผิดใครถูกหรอก หรือเปล่าประโยชน์ที่จะไปหา

มันก็แค่ไม่ใช่เวลาไม่ใช่โอกาส ก็แค่นั้น

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

ผมเชื่ออย่างหนึ่งว่า กฎแรงดึงดูดมีจริงนะ

ผมเป็นคนที่ออกความเห็นเยอะ เขียนอะไรเยอะ

คนชอบก็มี คนไม่ชอบก็มี พูดมากขนาดนี้ คนหมั่นไส้ก็คงมีเยอะแน่ๆ

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

แต่ชีวิตมันกินทุกโอกาสไม่ได้

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

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

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

มันเป็นธรรมดาของโลกนี้ ไม่ได้มีใครผิดใครถูก มันแค่เข้ากันไม่ได้

สัมภาษณ์งานก็เหมือนกัน ถ้ามันไม่เหมาะ เวลามันไม่ใช่ โอกาสไม่ใช่ มันก็ไม่ได้ ก็แค่นั้นแหละ

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

อยากให้กำลังใจน้องๆ หรือเพื่อนๆ พี่ๆ ที่อาจจะกำลังย้ายงาน

วันนี้เราสัมภาษณ์ไม่ผ่าน เราอาจจะคิดว่า มันต้องมีใครผิด ไม่ฉันผิด ก็อีกคนผิด ไม่ฉันแย่ ก็บริษัทแย่ พยายามอธิบายด้วยแนวคิดผิดถูก

ความผิดหวังเป็นเรื่องธรรมดา ผมผ่านมาเยอะนะ

แต่จริงๆ โลกมันซับซ้อนกว่านั้น เป็นสีเทามากกว่านั้น

อยากให้เชื่อมั่นว่าสุดท้ายโลกจะหาสิ่งที่ใช่เข้ามาหาเรา ผลักสิ่งที่ไม่ใช่ออกไปจากเรา

กฎแรงดึงดูดมีจริงเสมอ ผมเชื่อ และก็ผ่านมาแล้ว

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

แต่กฎแรงดึงดูดจะทำงานได้ดี เราต้องมั่นคง ต้องมี Integrity คอยพัฒนาตัวเองในแนวทางที่ตัวเองเป็นอยู่สม่ำเสมอ จนความเป็นตัวตนชัดเจนขึ้น

ถ้าเราไม่มี Integrity ไม่มีความชัดเจน หลอกลวงไปเรื่อย ทำตัวเฉไฉไปมาต่อโลกนี้ โลกจะเลือกให้เราไม่ถูก กฎแรงดึงดูดก็จะงง ไม่รู้ว่าจะดึงอะไรเข้ามา โลกก็จะดึงดูดสิ่งต่างๆ เข้ามาในชีวิต อย่างมั่วซั่วสะเปะสะปะไปหมด ให้เราเสียเวลาปวดหัว

ความไม่ชัดเจนนั้นอาจจะเกิดจากความไม่มั่นใจในตัวเอง หรืออาจจะเกิดจากเจตนาที่หลอกลวง ผมมิอาจตัดสินว่ามาจากเจตนาใด

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

ชีวิตช่วงไหนที่ผมสับสนกับตัวเองมากๆ โอกาสต่างๆ ที่เข้ามาก็จะสับสนมาก พอๆ กับความสับสนภายในจิตใจ

ผมถึงเชื่อในกฎแรงดึงดูด

และก็อยากเตือนด้วย

ถึงแม้จะเชียร์ว่า ให้เป็นตัวตนของตัวเอง แต่ก็อย่าให้ความเป็นตัวเรามันไม่ได้ไปบดบังคนอื่น Abuse คนอื่น

ว่าการทำให้ตัวเองเด่นโดยกดคนอื่นให้ด้อย โยนความผิดให้สิ่งรอบข้าง โดยอ้างว่านี่คือความเป็นตัวตน ฉันไม่แคร์ วางตัวเหนือกว่า มันไม่น่ารักนะ

มันผลักโอกาสต่างๆ ออกไปนะ มันจะดึงดูดคนที่คิดว่า "การกดคนอื่นเพื่อให้ตัวเองเด่นเป็นธรรมดาโลก" เข้ามาในชีวิตนะ

แสดงความเป็นตัวตนในกาลเทศะและเวลาที่เหมาะสม ไม่กดคนอื่นลงเพียงเพื่ออยากขับเน้นตัวเองให้เด่นขึ้น

ทั้งให้กำลังใจและก็เตือนสตินะ

145 Nameless Fanboi Posted ID:hVKt8ve17r

ก็หีแม่มึงมันสวิงกิ้งแบบโค้ดสตาร์

146 Nameless Fanboi Posted ID:hVKt8ve17r

การที่เว็บบอร์ดนี้มันร้างเพราะSIRNมันโดนลักพาตัวโดยโค้ดสตาร์

147 Nameless Fanboi Posted ID:hVKt8ve17r

โค้ดสตาร์แม่งแย่งข้าวกูแดก

148 Nameless Fanboi Posted ID:hVKt8ve17r

โค้ดสตาร์มันชาติเหี้ยทำให้กูปวดหัว

149 Nameless Fanboi Posted ID:hVKt8ve17r

ฝุ่นPM 2.5 เกิดขึ้นมาได้ก็เพราะว่าโค้ดสตาร์

150 Nameless Fanboi Posted ID:l7gjDlZ9Af

โค้ดสตาร์ทำให้กูต้องมานอนตอนนี้

151 Nameless Fanboi Posted ID:.BrhVtl6PZ

>>150 มึงรอเล่นมุกนี้มานานมั้ยเนี่ย

152 Nameless Fanboi Posted ID:dgPoGmed5u

>>151 ไม่นานเพราะไอเหี้ยโค้ดสตาร์นี่แหละ

153 Nameless Fanboi Posted ID:l4YnjwzBB5

รถติดก็เพราะโค้ดสตาร์มอมเมาคนมาเรียน

154 Nameless Fanboi Posted ID:l4YnjwzBB5

รู้ไหมว่าขนาดพระเยซูยังนับถือศาสนาโค้ดสตาร์เลย

155 Nameless Fanboi Posted ID:l4YnjwzBB5

พระแม่อุมาหน้าหีไปเรียนกับโค้ดสตาร์แล้วมาปิดถนนสีลม

156 Nameless Fanboi Posted ID:Dd8heMKoaN

โค้ดสตาร์ทำให้ประชาชนคนไทยยากจน

157 Nameless Fanboi Posted ID:HtSfFE/JRk

ทำไมมีการปิดถนนที่อนุเสาวรีย์ตอนเช้า กับสีลมตอนเย็น ๆ เมื่อวันก่อน พอรู้บ้างไหม

158 Nameless Fanboi Posted ID:/DjWmyGu27

เรื่องขำๆของเซเลปท่านนึง

เท่าที่จำได้
โตนเตะรอบแรกเพราะสั่งลบกลุ่ม แต่เฟสบุ๊ค รออนุมัติ 14 วัน ก็เลยยังมีกลุ่มนี้อยู่ทุกวันนี้
แล้วก็สถาปนาตัวเองเป็นสตีฟจ๊อปเมืองไทย

รอบสอง บอกว่าจะไม่ยุ่งกะกลุ่ม level 1 แต่เข้ามายังไงไม่รู้ ก็มีดราม่าตามคาด แล้วรอบนี้ ออกเอง แอตมิน แคบไว้ แต่บอกชาวโลกว่า แอตมินเตะออก

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

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

มีน้องที่ทำงานด้วยบอกเคยไปเรียน PHP yii ด้วย แล้วเหมือนติด config ก็เลยไปช่วยดู กลับโดนตวาดใส่ “เก่งแล้ว มาเรียนทำไม” อีหยังวะ ยังงี้ก็ได้เหรอ

แยกย้ายทำงานๆ

159 Nameless Fanboi Posted ID:fLJEn7Z5Db

>>157 เพราะอีพระอุมาหน้าหีมาเรียนโค้ดสตาร์เลยต้องปิดถนน

160 Nameless Fanboi Posted ID:I2P6cl4lEI

วันนี้นั่งอ่านว่าผิดหวังจาก Blazor แล้วจะไปลองเล่นอะไรดีสำหรับโฮมเพจเกม (คงไม่ interactive มาก แต่อย่างน้อยอยากทำเว็บที่ประกอบจาก component) ตอนแรกว่าจะลองศึกษา React Hooks แต่ใน documentation ก็ได้รู้จักกับ Svelte https://svelte.dev/

อันนี้มันเท่ตรงที่ UI Framework ปกติจะให้เราเป็นคนเขียนโปรแกรมตามกติกาแล้วเราจะพอดูออกว่า จังหวะนี้นั้นนี่เองที่ framework รู้ว่าเราอยากจะอัพเดทชิ้นส่วนไหน แต่ก็ไม่ได้รู้หมดเด๊ะๆขนาดนั้น ก็เลยต้องควบคู่กับการ diff DOM + อาจจะมีตัวช่วยอย่าง ID ประจำ element นิดหน่อยจะได้เปลี่ยน DOM ถูกที่ เช่นถ้า React ก็จะมีจังหวะตอน set state

แต่ Svelte ก้าวข้ามไปอีกขั้นคือเป็น compiler ซะเลย คือเว็บสุดท้ายที่ออกมาไม่มี framework ให้โหลดมาคู่กันด้วยซ้ำ เพราะโค้ดที่เราเขียนนั่นแหละกลายเป็น DOM manipulation ด้วยตัวเองไปแล้ว! (ประมาณว่าออกมาเหมือนเหมือนเราทนเขียน web app แล้วมาแก้ DOM ด้วยมือแบบไม่มีเครื่องมืออะไรเลย)

เขาก็เลยสร้าง syntax ภาษาใหม่ .svelte ขึ้นมาที่หลุดจากบ่วง JS ได้เลยไหนๆก็เป็น compiler แล้ว ทีนี้ก็ไม่ต้องมีพิธีที่รู้สึกได้ว่ากำลังครอบอยู่บน JS อีกต่อไป assignment เปล่าๆอย่าง foo = 50 อะไรงี้ compile กลายเป็น DOM change ซะงั้นได้ครับ ที่สำคัญไม่มีการ diff เกิดขึ้นด้วยซ้ำเพราะโค้ดสุดท้ายมันกำลังแก้หน้าเว็บสดๆจริงๆ เขาวิจารณ์ไว้ว่า Virtual DOM is pure overhead (https://svelte.dev/blog/virtual-dom-is-pure-overhead)

ตอนนี้ยังไม่ถึงไหนเท่าไหร่ แต่ syntax เขียนค่อนข้างสนุกดี ดูเหมือนโล่งๆไม่มีอะไรแต่ component ก็พร้อมใช้งานแล้ว ยากแค่ต้องมาทำความเข้าใจ bundler อย่าง Rollup / Webpack อีกหน่อยครับถ้าจะ extend (แต่อีกมุม มันก็คือความโปร่งใสดีว่าเว็บเราออกมาเป็นก้อนๆนี้ ไม่เหมือน Blazor ที่เป็น .dll วุ่นวายไปหมด)

*Angular ก็เป็น compiler เหมือนกัน ที่เขียนขึ้นมาสดๆยังใช้จริงไม่ได้ https://angular.io/guide/aot-compiler ไม่เหมือน React ที่เป็นสั่ง JS lib จริงๆ (แต่ก็ต้อง compile จาก JSX ก่อนอยู่ดี) แต่ทั้งคู่ไม่ได้ฉีกห่างออกจาก JS เว่อร์เหมือน Svelte

*แปลว่า ผอมเพรียว

161 Nameless Fanboi Posted ID:WZqtoxmmK9

ตระหนักไว้เสมอว่ามีคำว่า "Engineer" ในชื่อตำแหน่งของ "Software Engineer"
.
เป็นสิ่งนึงที่เรียนรู้มาจากอาจารย์ที่เคารพมากตอนป.ตรี อาจารย์ท่านถามว่า
.
"... รู้มั้ยทำไมงานพวกเราถึงถูกเรียกว่า Software Engineer ? ..."
.
"... ก็เพราะสิ่งที่เราต้องทำมันเป็นงาน *วิศวกรรม* ยังไงหละ ..."
.
สีหน้าสงสัยปนสนใจของเราทำให้ยังไม่ทันที่จะเอ่ยปากถาม อาจารย์ก็เดาออกทันทีว่าเราจะถามอะไร อาจารย์เลยตอบคำถามที่เรายังไม่ทันถามได้ทันที
.
"... วิศวกรซอฟต์แวร์หนะ เราไม่ได้แค่เขียนโปรแกรมให้ใช้งานได้นะ แต่หน้าที่ของเราคือต้องแก้ปัญหาทางคอมพิวเตอร์โดยคำนึงถึง *ความคุ้มค่าที่สุด* ให้ได้ด้วย ..."
.
ตั้งแต่นั้นเป็นต้นมา คำว่า "คุ้มค่าที่สุด" ก็ถูกฝังไว้ในหัวและกลายเป็นแกนกลางของการแก้ปัญหาใด ๆ ในทุกงานของเรา ความเข้าใจเพียงเบาบาง ณ ตอนนั้นก็ค่อย ๆ ถูกประสบการณ์หล่อหลอมให้เข้าใจมากขึ้นจนรู้แล้วว่ามันไม่ใช่แค่เรื่องของการพัฒนาซอฟต์แวร์ แต่กับทุกเรื่องในชีวิตเลย
.
อาจจะสงสัยว่าความคุ้มค่าที่สุดที่ว่าคืออะไร ? คำตอบคือ "เราต้องรู้ว่าจุดประสงค์ของงานนั้น ๆ คืออะไร สิ่งที่ได้กลับมามีมูลค่ามากน้อยแค่ไหน และเราต้องลงทุนลงแรงไปมากน้อยเพียงใดถึงจะคุ้มกับสิ่งที่ได้มา"
.
งานที่ทำแล้วใช้ครั้งเดียวทิ้ง ทำ Big-O แย่ ๆ โดยใช้เวลา 30 นาทีในการเขียนแล้วปล่อยให้มันรัน 1 ชั่วโมงเต็มก็ยังคุ้มค่ากว่าเขียนโปรแกรม 3 วันเต็มด้วย Big-O เทพ ๆ แต่รัน 1 นาทีเสร็จ ... แล้วก็โยนทิ้งไป
.
งานที่รันตลอดเวลา ลงทุนเขียนโปรแกรมเป็นเดือนให้ทำงานได้ ≤ O(log n) นี่แหละคือความเหมาะสมและคุ้มค่ากับสิ่งที่ได้มา
.
แต่ถ้างานมีเวลากระชั้น การนั่งทำ Big-O เทพ ๆ แล้วส่งงานไม่ทันก็อาจจะส่งผลเสียต่อธุรกิจ ก็ต้องสามารถบาลานซ์ได้ว่าจะต้องทำด้วย Big-O เท่าไหร่เพื่อให้ประสิทธิภาพยอมรับได้และส่งงานทัน แล้วค่อยมา Optimize ให้ดีขึ้นทีหลัง
.
Code Quality เทพเนียนกิ๊กแต่ Deliver งานตามกำหนดไม่ได้ รันโปรดักชั่นไม่สำเร็จ สเกลไม่รอด ธุรกิจพังไม่เป็นท่า บริษัทเจ๊ง ถ้าเทียบกับ Code Quality พอดี ๆ เขียนเทสต์ในส่วนที่จำเป็น ส่งงานทัน บริษัทกำไรเพิ่มแล้วค่อยมาปรับ Code Quality ให้สมบูรณ์ทีหลัง
.
งาน Software Engineer กับธุรกิจจึงเป็นเรื่องเกี่ยวข้องกัน หน้าที่นึงของ Software Engineer คือจะต้องสามารถนิยามคำว่า "ความคุ้มค่า" ของงานที่ตัวเองทำให้ได้
.
และการจะทำสิ่งนี้ได้นั้น เราจะต้อง "ประเมินมูลค่าของสิ่งที่ทำและสิ่งที่ตัดสินใจไม่ทำให้ได้"
.

162 Nameless Fanboi Posted ID:WZqtoxmmK9

การเขียนโปรแกรมดีเลิศ Code Quality ดี โค้ดดูแลง่าย - มีมูลค่าบวก
.
การเขียนโปรแกรมดีเกินไปจนสิ่งที่รับกลับมามีค่าน้อยกว่าแรงที่ลงลงไป (Overengineer) - มีมูลค่าลบ
.
การเขียนโปรแกรมแย่ แก้ทุกอย่างแบบ Quick & Dirty จนโค้ดดูแลไม่ได้ในระยะยาว (Technical Debt) - มีมูลค่าลบ
.
การเขียนโปรแกรมด้วยภาษาที่หาคนร่วมทีมได้ง่าย - มีมูลค่าบวก
.
การเขียนโปรแกรมด้วยภาษาที่ต้องควานหาคนทั้งปฐพีถึงจะเจอคนทำเป็นสักคน - มีมูลค่าลบ
.
การส่งงานทัน - มีมูลค่าบวก
.
การส่งงานไม่ทัน - มีมูลค่าลบ
.
การจะทำงานสักงานนึงก็ต้องเอาค่าด้านบนพวกนี้มาบวกกัน ดิฟนิดหน่อย อินทิเกรดนิดนึง (เพราะมันมีเรื่องเวลามาเกี่ยวข้อง ความคุ้มค่าระยะสั้น ความคุ้มค่าระยะยาว ล้วนมีผลต่อการตัดสินใจ) แล้วถึงตัดสินใจกันว่าจะเดินไปทางไหน
.
จะเห็นว่างานของ Software Engineer ไม่ใช่แค่เขียนโปรแกรมให้จบ ๆ ไป ไม่ใช่การเขียนให้ Code Quality ดีเลิศที่สุดในปฐพี ไม่ใช่การเขียนโค้ดที่ประสิทธิภาพล้ำจนเอาคนไปแข่ง ACM ได้ แต่เป็นการ "หาจุดคุ้มค่าที่สุดแล้วทำอย่างเหมาะสม" ต่างหาก
.
บ่อยครั้งมากที่มีคนถกเถียงกันเรื่อง Code Quality เอย เรื่องประสิทธิภาพการทำงานของโค้ดเอย เรื่องการเขียน Test เอย แล้วผลก็คือเสียงแตก จะบอกว่าไม่มีทางหรอกที่แต่ละคนจะให้คำตอบเหมือนกัน เพราะเรายังไม่ได้นิยามคำว่า "คุ้มค่า" ร่วมกันเลยนี่
.
เมื่อความคุ้มค่าไม่เหมือนกัน แล้วจะคาดหวังให้การตัดสินใจของแต่ละคนเหมือนกันได้ยังไงอ่ะ ?
.
ไม่ต้องไปถึงขั้นคนไม่รู้จักกันมาคุยกันใน Facebook Group หรอก แค่ในบริษัทตัวเอง ฝ่าย Business กับฝ่ายเขียนโปรแกรมก็ไม่สามารถคุยกันรู้เรื่องได้แล้วถ้าไม่สามารถคุยด้วยจุดมุ่งหมายเดียวกันได้
.
แล้วอะไรคือจุดมุ่งหมายร่วมกันของบริษัทหละ ?
.
"ธุรกิจก็คือธุรกิจ" ไม่ว่าจะทำอะไร ยังไงก็ต้อง Business-Driven อยู่แล้ว ถ้าไม่มีกำไรบริษัทแล้วจะไปต่อยังไง ถ้าสิ่งที่ทำกลับทำให้บริษัทขาดทุนแล้วจะเปิดบริษัทต่อไปทำไม หน้าที่ของ Software Engineer คือต้องประเมินมูลค่าออกมาเป็นตัวเลขและความคุ้มค่าให้ได้ เพื่อเอาสิ่งเหล่านี้ไปคุยกับฝ่าย Business หาจุดคุ้มค่าร่วมกันแล้วมุ่งหน้าสู่ทางนั้นเต็มอัตรา
.
ถ้ายังทำไม่ได้ นั่นแปลว่าคุณยังทำให้คนอื่นมองเห็นมูลค่าของงานที่คุณทำไม่ได้นั่นเอง
.
เป็นสกิลนึงที่อยากให้คนสาย Software Engineer ฝึกไว้ อย่าเอาแต่เขียนโปรแกรมไปวัน ๆ แต่เมื่อได้โจทย์อะไรมา เราจะต้องสามารถวิเคราะห์สถานการณ์ วางแผนไว้หลาย ๆ แบบ ประเมินมูลค่าของแต่ละแบบแล้วเลือกแผนที่ "คุ้มค่า" ที่สุด
.
เพราะมันไม่มีหรอกคำตอบที่ดีที่สุดสำหรับทุกสถานการณ์ มันมีแค่ "ทางที่เหมาะสมที่สุด" เท่านั้นแหละ
.
เหมือนที่เธอกับเราเหมาะสมกันไง 😳😳😳

163 Nameless Fanboi Posted ID:WZqtoxmmK9

พี่โดมพูดเรื่องนึงได้น่าคิด

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

Line ก็มาหลัง MSN หลัง Pirch หลัง ICQ
Gmail มาหลัง Hotmail
Booking Agoda พวกนี้ก็มีมานานแล้ว
Kapook มาหลัง Yahoo

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

164 Nameless Fanboi Posted ID:Xwx2VBLIQm

At my (now former) company, we use a metric called SHOT to track the performance within a portfolio. It's some in-house calculation no one else uses, but it's been around for like 20 years even though no one remembers what the acronym is supposed to mean. My task was to average it over a time period, with various user-defined smoothing parameters... to accumulate it, in essence.

So, I don't like long variable names like "accumulated_shot_metric" or "sum_of_SHOT_so_far" for what is ultimately just the cumulated SHOT value. So I gave it the short name, "cumShot", not thinking twice about it, and checked it into the code. Seeing that it passed all tests, I went home and forgot about it.

Two months later, today, my boss called me into a meeting with HR. I had no idea what was going on, but apparently, the "cumShot" variable had become a running joke behind my back. Someone had given a printout to the CEO, who became angry over my "unprofessional humor" and fired me. I didn't even know what anyone was talking about until I saw the printout. I use abbreviated variable names all the time, and I'm not a native speaker of English so I don't always know what slang is offensive.

I live in California. Do I have any legal recourse? Also, how should I explain this in future job interviews?

165 Nameless Fanboi Posted ID:.ioNbtqt3s

อันนี้ผมเคยบอกแล้วว่า เงินเดือน ไม่เกี่ยวกับ skill เลยซะทีเดียว มันมีปัจจัยหลายอย่าง
หลักๆคือ มันคือความพอใจของคนจ่าย ที่เค้าได้ผลประโยชน์ตามที่เค้าต้องการครับ
คนเก่งมากๆ เขียนได้วันนึงหลายอย่าง แต่อาจจะได้เงินเดือนน้อย ไม่ใช่เพราะเค้าไม่เก่ง แต่เค้าอาจจะอยู่ในจุดที่บริษัทไม่ได้ให้ความสำคัญ
กลับกันคนที่เขียนโปรแกรมเก่งระดับหนึ่ง อาจจะได้เงินเดือนมากกว่าคนแรกสองเท่า เพราะเค้าทำงานในจุดที่ spotlight สาดแสง เลยทำให้มีความสำคัญ
คนที่สาม อาจจะเขียนโปรแกรมได้น้อยกว่าสองคนแรก แต่เค้าทำงานในบริษัทที่รายได้มากกว่าสองบริษัทแรก 50 เท่า เลยได้เงินเดือนมากกว่าคนแรก 10 เท่า
ทั้งหมดจึงขึ้นอยู่กับปัจจัยต่างๆ ซึ่งส่วนตัวผมเรียงลำดับความสำคัญดังนี้
- สถานะทางเศรษฐกิจของบริษัท
- ความสามารถในการแก้ปัญหาทางธุรกิจ(ไม่ใช่แค่แก้ปัญหาในการเขียนโปรแกรม)
- ความจำเป็นของงานต่อธุรกิจ
- มาตรฐานทางเงินเดือนของประเทศ
- ความเก่งในการ code ของคนคนนั้น
จะเห็นว่าในมุมมองส่วนตัวผม สิ่งที่สำคัญคือ คุณทำงานให้ใคร และคุณมีคุณค่าทางธุรกิจให้เขาไหม มากกว่าความสามารถในการเขียนโปรแกรมเพียวๆ
อย่าลืมว่าทุกบริษัทต้องการผลกำไร ไม่ใช่ product ที่โคตรเจ๋ง 100% code coverage แต่ไม่มีผลกำไรเลย

166 Nameless Fanboi Posted ID:9d3UIqdxmc

ถามเหตุการณ์สมมติกับเพื่อนโม่งหน่อยครับ

สมมติมี Startup ด้านการเงินสัญชาติยุโรปมาตั้งบริษัทในไทยแห่งหนึ่งเพื่อ develop software ให้บริษัทแม่แล้วไม่จ่ายเงินเดือนพนักงานมา 2 เดือน รวมถึงค้างค่าใช้จ่ายต่าง ๆ เช่น ประกันสังคม (ไม่ได้ส่งมาหลายเดือน), AWS, Jira, Bitbucket, ค่าเช่าออฟฟิศ ฯลฯ เพราะอ้างว่าเงินทุนก้อนใหญ่มากกำลังจะเข้ามา (ซึ่งไม่น่าจะจริง) แต่ติดปัญหาเรื่องการเดินเอกสาร และให้พนักงานทำงานฟรีมา 2 เดือนจนขึ้นเดือนนี้ถึงให้หยุดอยู่บ้านไปก่อน และในระหว่างนี้พนักงานหลายคนก็เดือดร้อนเรื่องเงินเพราะมีภาระต้องผ่อนหนี้ค่าบ้าน/คอนโด/รถ หรือส่งลูกเรียนแบบนี้

เพื่อนโม่งจะตัดสินใจยังไงครับ ลาออกและเงินเดือนที่ค้างอยู่จะเป็นไงก็ช่างมัน? เชื่อมั่นในบริษัทและทนรอเงิน? จะฟ้องกรมแรงงานมั้ย? หรือจะทำอะไรบ้างครับ?

ย้ำว่านี่เป็นเหตุการณ์สมมตินะครับ

167 Nameless Fanboi Posted ID:uq2L9xGw2Y

ไปอ่านบล็อกนึงใน Reddit ที่ Github บอกว่าเขาไม่ใช้ Foreign key constraint เพราะอะไร

มีคนอ่านบอกว่า ปัญหานี้มันเฉพาะตัวของ Github ไม่ใช่ปัญหาที่คนทั่วไปเจอ

ผมตอบว่า No one tasked to solve generic problem, ever. แล้วผมก็แชร์บล็อกนี้เลยใน Tech Articles Group

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

ผมอยากชวนคิดว่า เราอยากจะหา Generic solution หรือมักจะเรียกอีกชื่อหนึ่งว่า "Best practice" ที่ใช้ได้ในกรณีทั่วไปเพื่ออะไร

ถ้าระบบหรือที่ไหนเจอ Generic problem เขาก็ไปอ่าน Generic solution แล้วก็ทำตามนั้นก็จบ จะจ้างเรามาทำงานทำไม คนเขียนวิธีอย่างละเอียดในการแก้ไข Generic problem มีเยอะแยะไปหมด

ทุกคนทุกระบบ เจอ Specific problem ที่จำเป็นต้องใช้ Specific solution ในการแก้ไขทั้งนั้น ดังนั้น ในแง่นี้ การที่เรารู้จัก Generic solution หรือ AKA. Best practices ไม่ได้การันตีเลยว่ามันจะแก้ไขปัญหาของเราได้ ต้องบอกว่าส่วนมากจะไม่ได้ด้วยซ้ำไป

อ้าว แล้วถ้างั้นเราควรจะทิ้ง Best practice ไปมั้ย ไม่สนใจเลยเหรอ? เราจะเรียน Best practices ไปทำไม

เพราะเวลาพัฒนาระบบเนี่ย มันไม่มีใครรู้ว่า Solution คืออะไรไงล่ะ ถ้ามีคนรู้จริงๆ แล้วเนี่ย งานมันไม่มาถึงเราหรอก

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

ทีนี้ประโยชน์ของ Best practices มันก็คือตรงนี้ คือคุณลอง Apply best practices ไปในตอนที่ยังหา Solution ที่เป๊ะๆ ไม่เจอ โอกาสที่มันจะใกล้เคียงกับ Solution มีเยอะกว่า Apply อะไรก็ไม่รู้มั่วซั่วเยอะ ดังนั้น เวลาไม่รู้อะไร ผมก็แนะนำ Best practices ก่อนเสมอ เป็น Bet ที่ดีกว่าลองมั่วซั่วแน่ๆ คุณควรจะรู้แล้วใช้มันเป็นฐานตั้งต้นเสมอ

แต่คุณจะไปสรุปว่ามันเป็นคำตอบถาวรของระบบไม่ได้ คุณยังต้องสังเกตและ Iterate ต่อจากตรงนั้นไปด้วย แล้วถ้าจะปรับเปลี่ยน ก็ต้องเปรียบเทียบว่าทางออกที่ไม่ได้ตรงกับ Best practice นั้นในบริบทของเรามันดีกว่าหรือแย่กว่า ก็ต้องค้นหากันต่อไปเรื่อยๆ ตราบที่ระบบยัง Evolve อยู่ยังต้องดูแลกันอยู่

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

จุดที่ยากที่สุดคืออะไร คือเราต้องเผชิญหน้ากับความจริงว่า ไม่มีใครรู้คำตอบของระบบเราทั้งนั้น ถ้ามีคนรู้ ทุกวันนี้มันจะมีปัญหาเหรอ?

จะไปคาดหวังว่าคนเขียนหนังสือ Best practices เขาจะมีคำตอบที่ถูกต้องเป๊ะๆ ใช้ได้เลย คนเขียนก็คงหนักใจ ผมเองสารภาพว่าตัวเองบางครั้งเขียนหรือพูดเรื่องพวกนี้จะออกตัวมากๆ ว่าอย่าเชื่อไปเลยแล้วโยนความรับผิดชอบมาให้

ทุกวันนี้ ทุกคนอยากให้มีคนรู้คำตอบ แต่ไม่มีใครอยากผ่านขั้นตอนในการ "ค้นหาคำตอบ" ตัว Business อยากให้มีคนรู้คำตอบ Investor คาดหวังว่าจะมีคนรู้คำตอบ Junior คาดหวังว่าจะมีคนรู้คำตอบ Senior คาดหวังว่าคนอื่นจะรู้คำตอบ แต่ไม่มีใครอยากผ่านขั้นตอนการค้นหาคำตอบ

พอมีคนมาบอกทุกคนว่า "ผมรู้คำตอบ ตาม Best practice ที่ผมเขียนหรือให้คำปรึกษาสิ จบเลย" แค่นี้ทุกคนก็พร้อมจะจ่ายเงินให้แล้วไม่คิดอะไรต่อแล้วอ่ะ ดี ไม่ต้องผ่านขั้นตอนค้นหา เป็นโมเดลธุรกิจที่ดีมากเลย

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

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

168 Nameless Fanboi Posted ID:uq2L9xGw2Y

>>166 ฟ้องกรมแรงงานก่อนได้เปรียบ

169 Nameless Fanboi Posted ID:3jb8hqnwz8

ผมเห็นด้วยที่ว่า Agile ไม่ได้แปลว่า เร็ว (ใน Absolute Term/Sense) ... ทุกอย่างมันขึ้นกับ Frame of Reference ว่าเราเอาอะไรไปเทียบกับมัน และมันเหมาะสมหรือไม่ มัน Overkill เกินไปหรือเปล่า ในทุกเรื่อง

ผมเห็นว่าทุกกระบวนการ มันมี Scale ที่เหมาะกับมันเอง สิ่งที่จะทำให้มันยากลำบากและช้าลง ไม่ใช่ที่ตัวกระบวนการ แต่เป็นการไม่เหมาะสมกันระหว่าง Process และ Scale ต่างหาก

นี่ยังไม่รวมถึงลักษณะงาน และเป้าหมายนะ ... เช่น ถ้าเป็นงานแบบ "ใช้แล้วทิ้ง" ใน Scale ที่เล็กพอที่จะ Cowboy-Developer ได้ตรงๆ แบบดุ่มๆ ไปเลย เดี๋ยวก็เสร็จ และการันตีได้ว่าไม่ต้องดูแลต่อ (ไม่ว่าจะโดยใครก็ตาม) การทำ Agile ก็ Overkill ไม่ต่างอะไรกับการใช้ Process อื่น ...

แต่กับอีกหลายงานมันก็ไม่ใช่แบบนั้น

จริงๆ ก็ไม่ต่างจากเรื่องบริหารบริษัทหรอก บริหาร Enterprise แบบ SME ก็ตาย บริหาร SME แบบ Enterprise ก็ตาย ... บริหาร SME แบบงานส่วนตัว ข้ามาคนเดียว ก็ตาย บริหารงานที่ทำคนเดียวแบบ SME ก็ตาย ... ทั้งนั้นแหละ

ประเด็นมันไม่ใช่ Agile เร็วหรือไม่เร็ว เพราะตัวมันเองไม่ใช่ความเร็ว เพียงแต่ว่าเมื่อนำมันไปใช้กับ "งานบาง Scale" แล้วมัน "เร็วกว่า Waterfall-based ในระยะสั้นและระยะกลาง" และ "เร็วกว่า Cowboy-Develop ในระยะกลางและระยะยาว"

ซึ่งพอเรา "เคยชิน​" กับ Frame of Reference บางอย่าง (พูดอีกอย่าง คือเรามี Implicit Frame of Reference) เราอาจจะรู้สึกว่ามัน "เร็วขึ้น"​ เสมอ แต่ถ้าเราเคยชินกับอีก Frame หนึ่ง เราอาจจะรู้สึกว่ามัน "ช้าลง" เสมอ เช่นกัน

การนำ Process ไปใช้ ถ้าเรารู้สึกว่ามันเร็วขึ้น แปลว่า Scale ของงานที่เราทำ และ Process มันมี matching ที่ดีกว่า แต่ในขณะเดียวกันถ้ามันช้าลง แปลว่า matching มันไม่ดี

ประเด็นสำคัญคือ ... ทีมงานหลายทีม ใช้ Process ผิด Scale .... ส่วนหนึ่งก็เพราะว่าตอนเรียน เรียน Process for Enterprise มา .. แต่ตอนทำโปรเจ็คจบ หรืองาน Freelance แรกๆ ดันทำแบบ Cowboy ....

ต้องยอมรับกันนะ ว่างานบ้านเราที่ต้องใช้ Scale ระดับ Enterprise มันไม่ได้มีเยอะขนาดนั้น แต่งานส่วนมากมันเกิด Scale ของ Cowboy Coding ไปเยอะอยู่

Agile จึงเป็นทางออกที่ดี และผมเห็นว่ามันเป็น Bootstrapping Platform ที่ดี สำหรับการ Rescale Enterprise ให้เป็น Smaller Units ในการทำงานต่างๆ

แต่ที่แน่ๆ คือ เราต้องแยกแยะให้ออกระหว่างตัวปรัชญา (Philosophy) ของแต่ละอย่าง กับ "Implementation" ของมันทั้งหลาย ไม่ว่าจะเป็นการ Implement แบบไหนก็ตาม

หลายอย่าง Philosophy ดีมาก เช่นพวก CMMi แต่ตัวปรัชญามันเอาไปทำอะไรไม่ได้ มันก็ต้องมี Implementation ... ซึ่งแน่นอนว่า Implementation ทุกตัวมันจะเหมาะกับบางรูปแบบ (เช่น บางตัวเน้นการใช้เอกสาร) ... แต่ถ้าเราถอดเปลือกของ Implementation กลับไปมองที่ประเด็นของปรัชญาของมัน เราอาจจะสร้าง Process ใหม่ๆ ได้โดยไม่อิงกับ Implementation บางแบบที่ไม่เหมาะสม ได้ทั้งนั้น

ก็เช่นเดียวกันกับ Agile .... ณ วันที่ผมลงชื่อใน Manifesto เมื่อประมาณ 15 ปีก่อน ....​ ณ วันนั้นมันยังไม่มี Agile Methodology หรือ Agile Process มากมายดังเช่นทุกวันนี้ ยังไม่มี Scrum ไม่มี Kanban ไม่มีอะไรทั้งนั้น ... พวกนี้เกิดจากการเอาปรัชญาไปใช้สร้าง Process ของตัวเอง จนมันเวิร์กขึ้นมา และทำจนเชี่ยวชาญ จนมันเร็ว

บางที กลับไปหาปรัชญามันซะบ้าง แล้วก็คิดบ้าง ว่ามันไม่มี one size fit all ... และทุกอย่างมันไม่มี absolute term

ผมจะลบโพสท์นี้ในอีก 1 ชั่วโมง

170 Nameless Fanboi Posted ID:e+6VmtQKo9

>>169 ในนี้มันลบไม่ได้ไอสัส

171 Nameless Fanboi Posted ID:STBXBlb+JA

>>166 หางานใหม่เหอะ เป็นกุเดือนเดียวก็ไม่อยู่แล้ว ดูทรง เจ้าของลอยแพ แน่นอน อยากได้ไปฟ้องเอา

172 Nameless Fanboi Posted ID:hBLAW2aEjn

Gartner ทำนายเอาไว้ในปี 2017 ว่าภายในปี 2019 จะมีแบรนด์ราว 20% ถอดใจกับ mobile app ของตัวเอง

ไม่รู้ว่าตอนนี้ตัวเลขมันไปถึงไหนแล้ว แต่ส่วนตัวคิดว่าการทำ mobile app มันจะถูกลดความนิยมในอีกไม่นาน และถูกแทนที่ด้วย web technology มาตรฐานใหม่ ๆ ที่สามารถทำงานได้ในทุก ๆ อุปกรณ์มากกว่า

มีงานวิจัยจาก Forrester ที่ให้บทสรุปออกมาแม้ว่าคนส่วนใหญ่จะใช้เวลาในแต่ละวันเกือบ 85% หมดไปกับมือถือ แต่ก็มีแค่ราว ๆ 5 apps เท่านั้นแหละที่ถูกเรียกใช้งานถี่ที่สุด

ผมมานั่งนับดูของตัวเอง.. เออ จริง ๆ ก็ใช้หลัก ๆ แค่นี้แหละ facebook, line, gmail, youtube และที่ขาดไม่ได้คือ chrome

คุณมีกี่ app ในมือถือของคุณ?
คุณใช้วันละกี่ app?
app ละกี่ครั้งต่อวัน?

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

แต่ผมก็ไม่ได้หมายความไม่ควรมีใครทำ app เลย.. ไม่ใช่นะ.. app ยังมีความจำเป็นในบางสินค้า/บริการ ทั้งนี้ทั้งนั้นต้องดูว่าแต่ละองค์กรมีแผนการใช้งาน mobile app อย่างไรมากกว่า

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

ถ้าธุรกิจของคุณกำลังสนใจอยากจะทำ mobile app ไว้ใช้สักอัน.. ลองพิจารณาดูให้ถี่ถ้วนก่อนนะครับว่า.. ไหวหรอ? 😅

ปล. ให้คำปรึกษาด้านเว็บสำหรับเจ้าของเว็บฟรี แต่ไม่รับทำนะครับ..ไม่มีเวลาทำจริง ๆ.. ทิ้งคำถามไว้หน้าไมค์หลังไมค์ตามสะดวกเลยครับ

REF:
- https://www.gartner.com/en/marketing/insights/articles/gartner-predicts-2017-marketers-expect-the-unexpected

- https://techcrunch.com/2015/06/22/consumers-spend-85-of-time-on-smartphones-in-apps-but-only-5-apps-see-heavy-use/

173 Nameless Fanboi Posted ID:WYMdlczbsy

คอมติดไวรัส .zobm ทำไงถึงกู้ไฟล์ได้คับ

174 Nameless Fanboi Posted ID:wZhk2CE1aB

หนึ่งใน "หนังสือที่ผมอยากให้โปรแกรมเมอร์ทุกคนอ่าน" ....

The Elements of Programming Style โดย Brian Kernighan และ P.J. Plauger

หนังสือตั้งแต่ปี 1974 (2nd edition ปี 1978) ที่ยังคงคลาสสิคและ "core content", "messages", "philosophy", "wisdom" มันยังคง relevant ในปัจจุบัน

จะเห็นว่าโลกมันไม่ได้หมุนไปไหนมากมายเลย ทุกวันนี้เราก็ยังคงต้องพูดอะไรกันแบบนี้อยู่ .... แค่คำที่ใช้มันเปลี่ยนไปเฉยๆ ...

ไม่ว่าจะเป็นเรื่องพวก test-driven, unit-testing, readable code, clean & clear code, SOLID, etc ..... โดยเ​ฉพาะอย่างยิ่งเรื่องอย่าบ้ากับเรื่อง performance มากนักในกรณีทั่วไป ..... (ถ้าต้องบ้าขนาดนั้น ส่วนมากต้องมาดู algorithm ของตัวเองใหม่แล้วล่ะ -- ซึ่งในเล่มนี้เขียนว่า "Don't diddle code to make it faster. Find better algorithm") .... หรือต้อง measure/profile ก่อน optimize ... อย่าเชื่อความคิดตัวเองเรื่อง performance มากกว่าตัวเลขจริง​ (และ algorithm complexity) ฯลฯ

ถึงคำที่ใช้จะแตกต่างกัน .... แต่เนื้อหาและสาระเหมือนเดิม (ผมชอบคำในเล่มนี้มากกว่า "ชื่อท่าต่างๆ" ในสมัยใหม่ด้วยล่ะ มันเรียบง่าย และหนักแน่น)

ผมยังคงต้องบอกโปรแกรมเมอร์สมัยใหม่เรื่องแบบนี้อยู่ (และหลายคนก็ยังคงดื้ออยู่ คิดว่าที่ตัวเองทำมันดีแล้ว -- พวกนี้ก็ต้องปล่อยไป)

พูดง่ายๆ คือมันเป็น Timeless Wisdom

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

175 Nameless Fanboi Posted ID:Vop6Qp206C

>>172 แอพ พวกที่รอดต้องแบบที่รวดเร็ว ไม่เหมาะกับใช้บนบราวเซอร์ ใช้บนเว็บยิ่งไม่สะดวก แป๊บๆคือเข้าใช้งานได้เลย หรือไม่ก็ต้องออกแนวที่เชื่อมต่อกับอุปกรณ์บนมือถือ , IoT ต่างๆ

176 Nameless Fanboi Posted ID:S1YqZW4nc+

หนังสืออีกเล่ม ที่อยากให้โปรแกรมทุกคนอ่าน ..... ด้วยเหตุผลเดียวกับเล่มเมื่อวาน คือ Timeless Wisdom .....

"The Art of UNIX Programming" ..... โดย Eric S. Raymond (ESR)

ชื่อหนังสืออาจจะทำให้คนคิดว่าเป็นการสอนเขียนโปรแกรมบน UNIX หรือหัดใช้ UNIX API (System Calls) อะไรพวกนี้ .... แต่จริงๆ มันคนละเรื่องเลย .... Very far from that ด้วยซ้ำ

มันคือปรัชญาและ Wisdom เบื้องหลังการสร้าง UNIX (และโปรแกรมใน UNIX Ecosystem) ที่ผมถือว่าเป็น very-well-designed และ stood the test of time มากๆ .... จนกระทั่งปัจจุบัน

ทุกอย่างในนี้ยังคง relevant ..... ทุกวันนี้เราก็ยังคงต้องสอนเรื่องแบบนี้กันอยู่

ลองอ่านตัวอย่างบางหน้าดูได้ครับ

ป.ล. ... ผมอยากจะจัดคลาส based on เล่มนี้ และ The Elements of Programming Style มากๆ เลยนะ :D

177 Nameless Fanboi Posted ID:UDieycegAL

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

1. ใช้ง่ายไหม
2. เครื่องมือที่ใช้ถนัดไหม
3. Library ที่ต้องใช้มีครบไหม
4. เขียนไปแล้วเพื่อนอ่านออกไหม (4.1 เขียนไปแล้วตัวเองกลับมาอ่านออกไหม)
5. เทสง่ายไหม -- ถ้าสนใจจะเทส
6. ดีพลอยง่ายไหม

ยกตัวอย่าง คือ ผมไม่ชอบ syntax ภาษา go เอาซะมากๆ เลย แต่ถ้าต้องเขียน command line tool ผมก็เลือกใช้ go เพราะมันเป็น binary ไฟล์เดียว คอมไพล์เสร็จโยนไปใช้ได้เลย ไม่ว่าภาษาไหนจะมีรันไทม์ลงง่ายแค่ไหนก็สู้ go 1 binary ไม่ได้ กรณีนี้ไม่ได้ขึ้นกับว่าภาษานี้เร็วแค่ไหนเลย เพราะไม่สำคัญ

ทั้งนี้ พึงระลึกถึงคำสอนปราชญ์โบราณ ท่านกล่าวไว้ว่า Only a sith deals in absolute ครับ

178 Nameless Fanboi Posted ID:gnQrcYIBbR

ลองใช้กลยุทธ์ ทรัมป์ ก็จะได้เห็น Dark Side ของคนมากขึ้น
ได้ข้อมูลมาเยอะแยะ ดีเลย จะได้เห็นว่าจริงๆแล้วเค้าคิดยังงัยกับเรา

คนที่เห็นประโยชน์เราตอนเราดีก็มีเต็มไปหมด
ตอนเราร้ายก็ด่าเราลับหลัง
ความโกหกตอแหลมันโผล่ออกมาชัดเจน

สิ่งที่อยากได้จาก Community คือความจริงใจเป็นอันดับแรก
มันเป็นวิธีการกรองคนที่ได้ผลดีอย่างที่ตั้งใจไว้

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

คนที่ทำด้านสว่างก็ทำเรื่อง Dark ๆ เยอะ ก็เห็นมาเยอะแต่ทำไรไม่ได้ พอยกเรื่อง dark ที่ตัวเองเคยทำขึ้นให้เห็น ก็แสดงตัวเป็นคนดีขึ้นมารับไม่ได้ก็แปลกดี ตัวตนจริงๆตัวเองยังยอมรับไม่ได้เลย

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

ก็ไม่อยากจะโอ้อวดว่าตัวเองทำมาไม่น้อยกว่าใคร เห็นปัญหามากมายที่มันไปต่อไม่ได้ด้วยวิธีการเดิม ก็พิสูจน์กันละกัน เอาตัวเองให้รอดก่อน

ถ้าคิดว่าสิ่งที่ทำมาในอดีตมันคือความดี มันก็เป็นอดีต ที่ไม่ได้มีใครสนใจ ป่วยมายังไม่มีใครเหลียวแหล ทุกอย่างมันก็เป็นแค่อดีต

ผมเจ็บแทนคนใน Community มาเยอะกว่าที่หลายคนรู้ ไม่แฉก็ดีแล้วครับ แต่ละคนแสบๆทั้งนั้น

ก็อยากจะ Filter ให้เหลือน้อยๆ เหลือแต่คนที่ลำบากไปด้วยกันลุยไปด้วย

Set to Zero ถ้าไม่ทิ้งบางอย่าง เราก็ยากจะก้าวผ่าน ใครจะดราม่าก็ดราม่าไปนะครับ มีไรทำเยอะ

เอาเวลาไปทำงานสร้าง Value ให้ Community ที่คุณคิดว่าดี ดีกว่าครับ

ทำไมฝั่ง business เขาชอบมาคุยกับผมมากกว่าคุยกับ Dev และ Community ก็ลองคิดเองว่ามันยังมีปัญหาอะไรอยู่ ทำไมอีกหลายๆที่เขาไม่อยากสนับสนุน

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

179 Nameless Fanboi Posted ID:gnQrcYIBbR

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

180 Nameless Fanboi Posted ID:3KN+X4F3sH

เห็นพี่ที่เคารพท่านหนึ่งพูดเรื่องเข้าใจ พื้นฐาน OOP ผิดกันเยอะ

ทั้งหมดโพสต์นี้เป็นความเห็นส่วนตัวของผมนะ แต่ก็เป็นวิธีที่ผมใช้มอง OOP แล้วยังคง Sanity ไว้ได้

- OOP ตัวตั้งต้นของ Alan Kay พูดถึงเรื่อง State encapsulation ซึ่งผมเข้าใจว่าเขาต้องการแบ่งปัญหาออกเป็นปัญหาย่อยๆ และจัดระเบียบและแบ่งสันปันส่วนว่าระบบตรงไหนเข้าถึง State ตรงไหนได้บ้าง ซึ่งเขาไม่ได้สนใจเรื่อง Code reuse เลย ไม่มี Polymorphism ด้วย ไม่ต้องพูดถึง Inheritance เลย

- ยุคหนึ่ง การทำ Dynamic link เพื่ออัพเดทโค้ดผ่านการวาง DLL หนึ่งไฟล์ หรือ Class 1 ไฟล์เป็นอะไรที่โอ้โหเจ๋งมาก ผมคิดว่ามันเกิดในยุคที่คนยังส่งมอบซอฟต์แวร์ผ่าน Floppy disk จำนวนมากอยู่ แล้วคอนยเซปต์ Dynamic link ที่สามารถสับเปลี่ยน Class ได้ตลอด ไม่ต้องส่ง Floppy disk 40 แผ่นผ่าน EMS เพื่ออัพเดทซอฟต์แวร์หนึ่งชิ้นแล้ว โคตรเจ๋งเลย!!! ในยุคนั้นสิ่งนี้เป็นเรื่องสำคัญ ส่วนสมัยนี้เหรอ ทำ Patch ทั้ง App ผ่าน Internet ง่ายกว่าเยอะ ซึ่งบนข้อจำกัดนี้ ไม่แปลกใจที่ Inheritance เป็นคอนเซปต์ที่มีพลังมาก ผมจำได้ว่าผมอ่าน Polymorph ครั้งแรกช่วงที่ยังใช้ Floppy disk กันอยู่ เดาว่าคอนเซปต์มันเกิดช่วงนี้

- ส่วน Code reuse ผมว่ามันมาเกิดในช่วงอีกช่วงหนึ่ง แต่ยังไม่แน่ใจว่าตอนไหน ผมจำได้ว่ามีช่วงหนึ่งมันป็อปมากเรื่อง Code reuse via OOP เนี่ย จนบอกว่าทำ OOP เพื่อจะได้ทำ Code reuse ได้ ซึ่งก็ตลกดีตรงที่เท่าที่ผมอ่านเจอ เจ้าตัวคนคิดคนแรก ไม่ได้สนใจอะไรตรงนี้ขนาดนั้นนะ

- เวลาเราเข้าใจ OOP ถ้าเราเข้าใจว่าเรื่อง Separation of concern, State encapsulation มันเกิดคนละยุคกับช่วงที่เขาโปรโมตเรื่อง Code reuse, Inheritance, Polymorph เราจะเก็ตว่าทำไมพอพยายามใช้งานจริง บางทีคอนเซปต์มันขัดกันเองแปลกๆ บางทีพอพยายามจะ Encapsulate แล้ว Reuse ยากจังวุ้ย แล้วตรงข้าม พอพยายามจะ Reuse ให้ได้เยอะๆ ทำไมโดเมนบางทีมันผสมกันไปหมดเลยวุ้ย พอเรารู้แบบนี้ เราไม่ต้องไปหาทาง Justify ครับ แค่เข้าใจว่ามันเกิดคนละยุค Practice ที่เกิดมันเลยอาจจะไม่เป็นเนื้อเดียวกันหมด (แต่เราเรียนบนหัวข้อเดียวกันคือ Object-oriented programming ทำให้หลายคนเข้าใจว่าทุกอย่างเป็นเนื้อเดียว Well-thought มาทั้งหมดแล้วถูกออกแบบมาดีแล้วแค่ทำตามพอ ซึ่งผมว่าไม่ใช่) ตรงนี้มันเป็นช่องว่างที่เราต้องใส่ไอเดียของตัวเองเข้าไป

ที่ผมแซวเรื่อง Original OOP เยอะเพราะอยากให้เห็นว่า Object-oriented มันมีหลายมุมที่เกิดในหลายยุคนะ

พอเรารู้ว่ามันมีหลายยุคแล้วได้ประโยชน์ยังไง? ตัวผมเองใช้แบบนี้

- ผมมองว่าจังหวะที่เราเริ่มสเกลทีมแล้วแบ่ง Cross-functional การมองไปมองที่ Original OOP ที่เน้นเรื่อง Domain encapsulation เป็นอะไรเหมาะสมกับโจทย์กว่า

- Code reuse strategy อาจจะประยุกต์เอาคอนเซปต์ของ Functional programming เข้ามาใช้ได้ครับ ซึ่งผมสนใจการผสมผสานตรงนี้ เพราะผมไม่ชอบ Inheritance by default เวลาคิดอะไรไม่ออก ส่วน Reuse by composition ผมว่า Function composition มัน Concise และมี Expressive power มากกว่า Object composition ครับ

181 Nameless Fanboi Posted ID:KUE.FNg5rK

วันนี้เพิ่งไปทำความรู้จักกับ Redis มาเลยจะมาแนะนำให้ฟัง https://redis.io/ (บทเรียนแบบสนุกลองไปหน้านี้ http://try.redis.io/ ครึ่ง ชม. ก็จบแล้วครับ)

มันคือ service ที่รันบนคอมแล้วเหมือนเรามีตัวแปร Dictionary, HashSet, ... มหัศจรรย์ให้ใช้ที่สามารถรุมใช้จากหลายๆ client ผ่านเน็ตได้อย่างสวยงาม ซึ่งถึงตัวแปรที่ว่าจะอยู่บน memory ไม่ได้เซฟแต่ก็มีฟังก์ชั่น replay คำสั่งให้ถึงเครื่องพังพอเปิดมาใหม่ก็มีตัวแปรสภาพเดิมได้แบบนั้นก็มีครับ เลยเอามาใช้เป็น database กันก็ดูไม่เลวไม่แคร์ความ RAM กันเลย

ความ in memory ไม่ต้องเซฟทำให้ความเร็วสูงพอที่จะใช้ algorithm ที่ไม่ค่อย scalable ใน DB ปกติได้ เช่นการ count หรือ sort (ไม่ใช่ indexing) อัตโนมัติทุกครั้งที่เพิ่มข้อมูลใหม่เข้าไป ใครเคยใช้ Firebase Cloud Firestore / RDB จะรู้สึกว่ามันน่าจะทำ scoreboard ลำบากไม่ก็เปลืองเงินมาก ส่วนมากปัญหาจะอยู่แถวๆที่ว่าอยากรู้ว่าเรา rank เท่าไหร่หลังจากเพิ่งอัพเดทคะแนนไป ซึ่ง count ก็เปลือง ถ้าจะเซฟเลขเก็บไว้เดี๋ยวมีคนแซงก็เลขเลื่อนกันหมดอีก ถ้า Firestore อัพเดทเสียเงินเป็นหน่วย document แล้วน่าจะเจ็บหนักครับ ต้องดีไซน์แผนดีๆเพื่อให้เสียเงินน้อยลงแล้วทีนี้ structure ก็จะดูไม่สวยงามอีก (เช่นต้องมี document เดียวที่มี bake คะแนน top 100 กองอยู่ด้วยกัน แล้วปัญหาอื่นอาจจะตามมา เช่นต้องคอย sync ข้อมูลหน้า avatar ที่ฝังอยู่ในนั้น ฯลฯ)

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

อยากศึกษาว่าทำไม leaderboard ถึงเป็นปัญหายาก https://redislabs.com/redis-enterpr…/use-cases/leaderboards/

ถ้าอยากลองเล่นสามารถลอง Tier ฟรีของ Redis Labs ที่สปอนเซอร์คนทำ Redis อยู่ได้ สามารถเปิดคอมกับ AWS/GCP/Azure ได้สามที่ เปิดมาแล้วมี RAM ให้ 30MB ซึ่งดูเหมือนน้อยแต่สมมติถ้า record นึง 32 bytes (~ GUID + float) ก็เก็บได้ตั้งประมาณ 900,000 คะแนนแน่ะ ถ้า trim ไว้ให้ rank แค่ top 10000 อะไรงี้ก็คิดว่าเหลือเฟือได้หลายบอร์ดเลยครับ

https://redislabs.com/

ของฟรีไม่มี data persistence ให้ ถ้าคอมรีสตาร์ทแล้วของใน RAM จะหายหมดไม่มี replay แล้วก็ connection ได้ถึง 30

แต่ถ้าไม่ใช้เป็น DB แล้วใช้เป็นตัวแปรจริงๆก็น่าจะพอไหวครับ เช่น ใช้ Cloud Firestore ในการเก็บคะแนนของแต่ละคนเป็นส่วนตัวอันนี้แบบกลัวหาย แล้ว export ไป Redis ที่ไม่กลัวหายเพื่อให้เป็นคอมที่เปิดไว้ ranking หรืออื่นๆที่ต้องยุ่งกับผู้เล่นอื่นแบบ active หน่อยโดยเฉพาะ

คิดๆไว้ว่าอาจจะสร้าง record ไว้ใน Redis ประมาณว่า "exported" เวลาอพยพไปแล้ว + trim เสร็จแล้ว ทีนี้ถ้าคอมพัง ฝั่ง Firebase ก็จะได้ถาม Redis เจอว่าไม่มี record นั้นแล้วดังนั้นอพยพอีกรอบ ถ้าอพยพเสร็จแล้วทีนี้ทุกครั้งที่มีคะแนนใหม่ก็แค่แถมไปใส่ฝั่ง Redis ด้วยจะได้ถาม rank กลับมาได้

เท่าที่ดูคร่าวๆนอกจาก Sorted Set แล้วมีฟีเจอร์เท่นึงที่ชอบคือสามารถสร้าง record ที่นับเวลาถอยหลังแล้วหายไปเองเมื่อถึงเวลาได้ครับ (EXPIRE) ดูน่าจะเอาไปเล่นได้หลากหลายดี (เช่น ทำ ranking ที่จัดอันดับทุก ชม. แทนเพื่อให้ไม่ต้อง connect ไป Redis ทันทีที่ใครซักคนทำคะแนนได้ ทำ timed challenge ในเกม ฯลฯ)

182 Nameless Fanboi Posted ID:m9KixmgCXW

"Don't underestimate the power of survival of the fittest. And don't ever make the mistake that you can design something better than what you get from ruthless massively parallel trial-and-error with a feedback cycle. That's giving your intelligence much too much credit."

Linus Torvalds

183 Nameless Fanboi Posted ID:tjmmFZ5Rv2

GildedRose Kata นี่เป็นแบบฝึกหัดที่ดีมากเลยนะ

คือ Engineer จำนวนมากพยายามแก้ไขปัญหา Technical Debt ด้วยการที่บอกว่า "อย่าสร้างสิ เขียนให้ดีสิ" แต่ในโลกความเป็นจริงแล้วเรามีโค้ดที่เละยังงี้เต็มไปหมด บางทีเราก็สร้างเองเพราะงานเร่ง มันเป็นอะไรที่หลีกเลี่ยงไม่ได้เลย

คำถามคือเราจะทำยังไง เวลาเจอโค้ดยังงี้

ถ้าใครบอกว่าจะ Refactor นี่ก็เป็นโจทย์ที่ดีที่จะได้ฝึก

หรือแม้แต่ถ้าใครบอกว่าเจอ Tech debt เยอะๆ ฉันจะไม่แตะแล้ว จะ Rewrite แม่งอย่างเดียว คุณก็ลอง Rewrite GildedRose ขึ้นมาดู ก็เป็นแบบฝึกหัดที่ดีอีก

คุณจะได้เข้าใจว่าการ Rewrite ในทางปฏิบัติ ที่ Requirement ส่วนมากจะไม่ครบ มันต่างกับในอุดมคติเยอะ เอาแค่ Rewrite ระบบเล็กๆ อย่าง GildedRose นี่แหละให้รอดก่อน ค่อยไปลองขอ Rewrite ระบบใหญ่ๆ

(ผมต้องเน้นเสมอว่างาน Rewrite != งาน Green field ระดับความยากมันต่างกันแบบคนละเลเวลกันเลย Engineer หลายคนคิดว่าเวลาที่ได้ใบอนุญาตให้ Rewrite ระบบที่เละๆ ใหม่จากศูนย์ มันจะให้อารมณ์สวยงามเหมือนทำ Greenfield Project ซึ่ง ขอบอกเลยว่าโคตรจะไม่ใช่)

ผมคิดว่าการจัดการกับ Legacy code เป็นสกิลที่สำคัญมาก คือผมมองว่ามันมีเส้นแบ่งที่ใหญ่มากระหว่างคนที่เขียนโค้ดสวย กับเปลี่ยนโค้ดไม่สวยเป็นโค้ดสวยได้ (ไม่ว่าจะด้วยวิธีใดๆ) คือถ้าสมมติแบ่งเป็น 10 Grade ผมว่าคนที่ทำได้กับไม่ได้ฝีมือต่างกันอย่างน้อย 2 Level แน่ๆ

และ GildedRose เป็นแบบฝึกหัดที่คุณจะได้ลองจัดการกับ Legacy Code ของจริง ไม่ว่าคุณจะเลือกจัดการมันยังไง ค่อยๆ แก้ หรือเขียนโครงใหม่จากศูนย์ก็ตาม

Repo นี้มีให้เกือบทุกภาษาให้เล่น ใครสนใจลองเล่นดูได้ครับ

184 Nameless Fanboi Posted ID:9HOuboPpuT

ใน Javascript, Typescript ผมชอบที่จะเขียน OOP ด้วย Higher-order function มากกว่า Class keyword
ผมพบว่าถ้าคุณรู้จักและใช้ Higher-order function (HOF) ตัวเดียว มันสามารถทำได้หมดเลยทั้ง Inheritance, Decorator, Annotation, Implements, Private, Public และอีกหลายๆ Keyword ที่ในหลายๆ ภาษา OOP คุณต้องเรียนทีละตัวว่าแต่ละตัวคืออะไร Inherit คืออะไร ทำงานยังไง Decorator คืออะไร ทำงานยังไง
ถ้าใช้ HOF คุณเรียนแค่ว่ามันคืออะไรตัวเดียวพอ แล้วแต่ละสิ่งข้างบน มันทำงาน Conceptually เหมือนกันหมด ส่วนในรายละเอียด อ่านโค้ดเองได้เลย ขอแค่เข้าใจ HOF
หรือแม้แต่สิ่งที่หลายๆ ภาษา OOP ไม่มีอย่าง Multiple Inheritance คุณก็ทำด้วย HOF ได้และสามารถบอกได้หมดว่าแต่ละ Conflict แก้ไขยังไง
เราเขียนโปรแกรมแบบ OOP Paradigm โดยไม่ต้องมีคำว่า "Class" ได้นะ เผื่อไม่รู้
แล้วส่วนตัว ผมคิดว่าโค้ด HOF สวยเพราะมี Language construct เดียวแต่ทำได้ทุกอย่างอย่าง Concise โค้ดก็ไม่ได้บวมด้วย และไม่ต้องจำอะไรเยอะแยะว่าไอ้นั่นคืออะไรไอ้นี่คืออะไรมากมาย ซึ่งอันนี้มักจะเป็นความเห็นที่ต่างกับหลายคนที่บอกว่าโค้ดที่ทำ HOF อ่านไม่รู้เรื่อง อ่านยาก พอมีคำว่า Class สวยกว่า
ปล. จริงๆ ผมเข้าใจได้นะว่าทำไมคำว่า Class สวยกว่าในแง่นึง และผมก็เลือกใช้กับหลายๆ ทีมที่เขา Familiar กับสิ่งนี้ไปแล้วเหมือนกัน มันก็ง่ายที่จะอ่านมากกว่ามาเรียนรู้ใหม่ล่ะ แต่ไม่อยากให้ปิดใจกับ HOF แล้วลองดูกัน

185 Nameless Fanboi Posted ID:J+X0H4d8PM

อยากตั้งคำถามให้วงการไอทีไทยอีกที นี่เป็นรอบที่เท่าไหร่ก็ไม่รู้แล้ว ทำไม Programmer ต้องโปรโมทไปเป็น SA แล้วไปเป็น PM/Mgr ทำไมเราไม่เห็น Growing Path ที่สนับสนุน Individual Contributors ในไทยนะ

ผมเห็น engineer อายุรุ่นราวคราวเดียวกัน (+/- 5 ปี) พอถึงอายุ 35 จะต้องเริ่มคิดว่าแล้วกูจะทำอะไรต่อดี เพราะอายุ 35 แล้วเนี่ยบริษัทไทยไม่ค่อยมี Path ให้ คุณต้องเลือกไป Management สักทาง ในขณะที่ใน ตปท เค้ามีโอกาสให้ Engineer โตจนเก๋าๆ อายุ 50 ปีเยอะแยะเลย
พอเราต้องแข่งกับระดับโลก เราก็ถามอยู่นั่นแหละ คนเก่งเราเยอะแยะ แล้วทำไมเราสู้เค้าไม่ได้ ก็เพราะคนเก่งเราเปลี่ยนจากเรื่องที่เค้าเก่งมาทำเรื่องที่เค้าเก่งน้อยกว่ากันหมด เพราะระบบและสังคมมันบังคับไง ด้วยความที่ไทยเราเป็นสังคมอำนาจนิยม ใครอายุ 3x ไม่ได้เป็น manager เราก็จะมองว่าเค้าไม่ประสบความสำเร็จแล้วล่ะ เราไม่ได้ให้คุณค่ากับ individual contributor มากพอ สุดท้ายถ้าเค้าไม่ยอมแพ้ให้กับระบบ เค้าก็จะพาตัวเองออกจากระบบไปเลย

อยากแข่งกับโลกต้องทำไง ดูจีนครับ เค้าให้ value กับ IC มาก มากพอๆกับ management แหละ #ช่วยตัวเองกันไปก่อนนะครับ

#มิตรสหายนักพัฒนาซอฟต์แวร์ท่านหนึ่ง

186 Nameless Fanboi Posted ID:iiWV5+IkmP

แอปเกมสนุกๆ เล่นได้ง่ายๆ ทำกำไรมากมายได้ตลอด 24 ชั่วโมงพิเศษสมัครใหม่วันนี้รับโบนัสทันที 50%
หากสนใจการทำเงินที่มีแต่ความสนุกสนานกดเลย!
https://www.ballinw.com/ดาวน์โหลด-live22/

187 Nameless Fanboi Posted ID:N8yR2iPBQ7

ขอจดอัพเดทความรู้ Technical ที่เก็บได้เด็ดๆช่วงนี้หน่อย

1. การวาง Structure Code แบบ "Functional Core, Imperative Shell"
ไปเรียน Testable Web API กับพี่คริส (Taskworld, Omise) มา สะดุดกับ Concept นี้มากๆ เพราะส่วนตัวชอบความ Resilience ของ OO ในส่วนของ IO ต่างๆ แต่พอมาเป็น Business Logic เราใช้ต่อ บางทีมันรู้สึกขัดความรู้สึก ไม่ว่าจะ Test ยากเอย เขียนเสร็จชื่อ Object ไม่ค่อย Make Sense เอย มีความขี่ช้างจับตักแตนอยู่ พอมาฟังพี่คริส Demythify เรื่องนี้ Concept มันดู Eureka จริงๆ

2. ด้วยเหตุข้อ 1 Typescript มันดูหล๊อหล่อขึ้นมาทันที ด้วยความที่มันลดความบ้านป่าเมืองเถื่อนของ Javascript ในจุดที่เราต้องการได้

3. ขึ้น Project ใหม่ ยุคนี้ หาข้ออ้างไม่ทำ CI/CD ยากละน้า นั่งลองเล่น Cloudbuild ต่อเข้า Github แล้ว Deploy ลง App/Kubenetes Engine กดๆแปปเดียวเสร็จ เข้าใจง่าย Integration Test ก็ทำไว้ใน Cloudbuild ได้หมด และ Infra as a code มันชีวิตง่ายขึ้นจริงระบุ Instance เอาขึ้น เอาลง Scale ไป Size เท่าไร ชีวิต Dev Happy

4. เช่นเดียวกันทำ Web / App ให้ Scalable ก็มาในยุคที่ Cost ถูกลงมาก (ทั้ง Cost Infra / Operation) เครื่องไม้เครื่องมือพวก Queue, Message พวกนี้ Cloud Provider มีให้ใช้ง่ายๆทุกเจ้าแล้ว

5. Concept ของพวก Distribution System อย่าง At least/Exactly Once semantic,Idempotent, Redundancy หรือกระทั่งการทำ Event Storming อันนี้น่าศึกษาไว้ Even กับ Role อย่าง Product Owner / Manager ก็ตาม

188 Nameless Fanboi Posted ID:rN.oRvueE4

ตอบในฐานะ SA นะครับ เรื่อง Set สำคัญกับการออกแบบระบบมาก เพราะปัจจุบันการเขียน Software จะให้ความสำคัญกับ Bussiness Rule มากกว่าการ Modeling ถ้าคุณอยากเขียนซอฟแวร์ในระดับลึกมันไม่ใช่การใช้ Api ชาวบ้านอีกต่อไป มันคือการสร้าง Architect ครับ
.
Set มีบทบาทยังไง การที่จะเขียนโปรแกรมให้ตอบโจทย์ Bussiness เราจะต้องมี Context กับ Operation ให้เหมาะสม ดังนั้นการเขียนโปรแกรมที่ Generic มาก ๆ ที่ชอบทำกันเนี่ย มันไม่ใช่ผลดีกับระบบ เราต้องแบ่ง Context ของระบบให้แก้ปัญหา Bussiness ให้ได้
.
แล้วอะไรจะใช้คำนวณว่าเราออกแบบ Class ได้ตรงความต้องการของระบบไหม คำตอบคือ Set ครับ
.
เช่น
A { x | ILoginService }
หมายความว่า เราสนใจ Elements ของ ILoginService
.
ทีนี้เรา Specific ได้แล้วว่าอะไรคือ Service ที่กำลังพัฒนา ต่อมาที่เราต้องเช็คคือสิ่งที่อยู่ใน Set มีความสำพันธ์กันอย่างไร
.
สมมติ A { LineLogin, FacebookLogin }
สมมติมี Service อยู่สองตัว ทีนี้เราหาความสำพันธ์ของมัน
.
ถ้ามันเป็น Isolation เคสเพราะนี้เป็น A+B ก็คือ
ต่อมาเราก็สนใจที่ตัว Elements ของ set ค่อยๆ ไล่ไปทีละตัว
.
การออกแบบ Class เราต้องนึกถึง 1. Relationship, 2. Multiplication, 3. Communication
.
ทีนี้เราสนใจลึกลงไปอีก step
เช่นผมสนใจ A { x | FacebookLogin }
.
ทีนี้ Set ของเราจะเป็น Aggregation ของ FacebookLogin
.
ดังนี้ FacebookLogin { TokenValidator, SendValidRequestEvents } ( ของจริงเยอะกว่านี้ นี่แค่ยกตัวอย่างมา 2 อัน )
.
ทีนี้ความสัมพันธ์มันเป็น AB คือ Existence Dependency ถ้าตัวไหนพังก็พังทั้ง Service
.
Event ของสองตัวนี้เป็นแบบ Sequence คือต่อกัน
คือ Validate input แล้วค่อยส่งไป Server
ทีนี้เราก็มาวิเคราะห์ว่าจะใช้ Pattern ไหนในที่นี้ใช้ Middleware Pattern เพราะ Flow input เป็นแบบ Sequence
.
เราก็ไล่ออกแบบไปเรื่อยๆ ตามนี้ ซึ่งความยากคือ Entity ของระบบมันมี Invariant ต่างกัน Aggregate ต่างกัน Concurrency ก็ต่างกันอีก
.
ในโลก Software คือความยากมันไม่ใช่แค่คณิตศาสตร์ มันคือ Concept มหาศาล หลากหลาย Principal แต่ที่ผมจะบอกคือเรื่อง Set เนี่ยมันทำให้เรามองเห็น Domain ที่กำลังจัดการอยู่ให้ชัดขึ้น ทีนี้เราจะมอง Dependency ออก มอง Communication ออก ที่เหลือก็ไปว่ากันที่ Pattern กับ Persistence
.
ถ้าคุณแยก Domain ไม่ออก อย่าพูดถึง Design Pattern เลย ปนกันมั่วแน่นอน
ไอ้สูตร Set ที่คุณเรียนกันตอนม. ปลายนี่แหล่ะ เคสที่มันได้ใช้
.
Cohesion กับ Coupling ก็ Set
ถ้าระบุ Set ไม่ได้ Object มันก็คุยมั่วไปหมด หา Boundary ไม่เจอ
.
จริงๆ ยังมีมากกว่านี้อีก ผมยกตัวอย่างแค่ Service เดียวเอง เผื่อพอเป็นไอเดียว่าคณิตศาสตร์มันไม่ใช่แค่ผูกกับการแก้สมการอย่างเดียวมันมีมุมมองอื่น ๆ ด้วย
.
Code ที่แก้สมการในระบบมันคือ Behavior ของ Class กับของ Service ที่เราสนใจแค่นั้นเอง ว่าจะแก้ยังไง ไม่ใช่แค่หน้าที่ของ Dev แต่หมายถึงการสื่อสารระหว่าง Dev กับ Domain Expert ในด้านนั้น ๆ เพื่อร่วมกันแก้ปัญหา
.
สุดท้ายกับคำถามที่ว่า “เป็นโปรแกรมเมอร์ใช้คณิตศาสตร์กี่ %”
1. Empirical Expression
2. Numerical Expression
นี่แหล่ะสองสิ่งที่คุณจะใช้

189 Nameless Fanboi Posted ID:H.2gEPSKN8

ปริญญาโทด้านคอมพิวเตอร์มันจำเป็นมากป่าววะ หรือไปหางานทำดี

190 Nameless Fanboi Posted ID:kKPvrhZOLi

>>189 ถ้าจะมาเป็น dev ทำงานจริงจำเป็นกว่า

191 Nameless Fanboi Posted ID:2IjyEbqevB

ปรึกษาหน่อยค่ะ

192 Nameless Fanboi Posted ID:On/WDCA26e

หนึ่งในเรื่องสำคัญที่หลายต่อหลายคนมองข้าม ก็คือ "พิมพ์ดีด"

ต้องฝึกให้คล่องนะ อย่างน้อยๆ นี่ 30 คำต่อนาทีขึ้นไปควรจะได้ ไม่งั้นจะ inefficient มากในการทำงาน

และแน่นอนว่าการพิมพ์ที่ดี ควรพิมพ์ได้โดยไม่ต้องมองแป้นพิมพ์เลยแม้แต่นิดเดียว

ไม่เช่นนั้นก็จะมี interruption ของกระบวนการคิดเกิดขึ้นตลอดเวลา ... สมองจะต้องทำ context switching ระหว่างคิดสิ่งที่จะต้องพิมพ์ และการมองคีย์บอร์ดตลอด ทำให้คิดอะไรซับซ้อนและต่อเนื่องลำบาก .... คิดอะไรได้ไม่เท่าไหร่ ก็ต้องเปลี่ยนโหมดมาดูแป้นพิมพ์แล้ว ...

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

โปรแกรมฝึกพิมพ์ดีดดีๆ นี่ช่วยได้เยอะมากเลย

โปรแกรมที่ผมชอบมาก ก็คือ GNU Typist (gtypist) .... ที่มีลำดับในการสอนที่ดีมาก และมีปรัชญาในการสอนที่ดีเลย ก็คือแทนที่จะเน้นไปที่พิมพ์เร็ว .... เขาจะเน้นที่จังหวะการพิมพ์ (rhythm) และความถูกต้อง .... ถ้าพิมพ์ข้อความแล้วผิดเกิน 3% นี่จะไปต่อไม่ได้ (และผิดแล้วผิดเลย แก้ไม่ได้)

พิมพ์เร็วนี่ไม่ยากหรอก ถ้าพิมพ์เป็นจังหวะที่ดีและคงที่ได้ .... พิมพ์รักษาจังหวะไว้ จากนั้นมันจะค่อยๆ เร็วขึ้นเอง

อ่อ แล้วการคิด WPM (Words-per-Minute) ของมัน จะเอาจำนวนที่เราพิมพ์ผิดมาคิดด้วย ว่าจริงๆ แล้วเราพิมพ์ได้กี่คำต่อนาทีกันแน่

จะเห็นว่าในรูปแรก ผมพิมพ์ถูกหมด WPM ก็เป็นไปตาม Raw speed (95 WPM) แต่รูปที่สองนี่มีผิดอยู่หน่อย (2%) ทำให้แม้ว่าจะพิมพ์ที่ Raw speed 83 WPM ก็ถูก adjusted เหลือ 75

ที่สำคัญที่สุด คือมันทำบทเรียนหรือแบบฝึกหัดเองง่ายมาก ..... อย่างรูปสุดท้าย นี่ผมเอาโค้ด Haskell ที่ผมเขียนไว้สอนใน Workshop หนึ่งมาเป็นแบบฝึกหัดเลย

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

193 Nameless Fanboi Posted ID:mEaJ6TxBLG

Redis ได้เงินลงทุนรอบใหม่ มูลค่ากิจการเกิน $1 billion แล้ว unicorn ของจริงช่วงนี้มีแต่สาย technical

ในไทยหาคนยังหาที่เคยใช้เยอะๆคุยด้วยได้ไม่กี่คน มันดีมากจริงๆ ยิ่ง module ที่ทำจริงจังช่วง 3-4 ปีหลังนี้ ทั้ง graph, timeseries, search คือดีทั้งหมด ถึง feature จะไม่เยอะเท่าคู่แข่งแต่ใช้ง่ายกว่ามาก เสียดายยังไม่มีโอกาสได้ลองใช้ redisAI ที่เพิ่งออกมาใหม่ไม่นาน เพราะงานตอนนี้ไม่ได้ทำเรื่อง ML, AI หรือ Data โดยตรงแล้ว

194 Nameless Fanboi Posted ID:Z0x2Ht2SpO

>>193 quote เก่าแล้วป่าววะ กูเห็นใครๆก็ใช้

195 Nameless Fanboi Posted ID:NUAlkwJ4cO

ส่วนตัวเราคิดว่าอีก 10-20 ปีข้างหน้า งานเขียนโปรแกรมจะเหมือนงานเขียนหนังสือ ที่ในปัจจุบัน ทุกคนเขียนหนังสือเป็นหมด แต่ไม่ใช่ทุกคนที่จะเป็นนักเขียนที่สามารถเขียนงานเขียนที่ดีจนทำเป็นอาชีพได้

อนาคต ทุกคนก็จะเขียนโปรแกรมเป็นหมด แต่โปรแกรมเมอร์ที่เขียนได้ดี ก็จะยังมีงานทำอยู่ดี

196 Nameless Fanboi Posted ID:RjknmBsvAI

เวลาพูดเรื่องการศึกษา หรือพูดเรื่องความรู้ความสามารถของคนที่เป็นผลผลิตจากกระบวนการศึกษาโดยเฉลี่ย .... หรือแม้แต่ผู้ใหญ่/คนแก่ มองความคิดความอ่านของเยาวชนคนรุ่นใหม่หรือเด็ก .... คำถามหนึ่งหรือคำบ่นหนึ่งที่มักจะมีเสมอก็คือ

"เดี๋ยวนี้สงสัยไม่สอนเรื่องนั้นเรื่องนี้"
"ทำไมไม่สอนเรื่องนั้นเรื่องนี้"
"ต้องให้ความสำคัญกับเนื้อหานั้นนี้มากกว่านี้"

ฯลฯ

ผมว่าผิดทางครับ ..... ปัญหาไม่ใช่เนื้อหา หรือการมองเห็นความสำคัญว่าจะต้องสอนหรอกครับ ......

ปัญหาใหญ่กว่านั้นคือ "วิธีการสอน" และ "วิธีการเรียนรู้" ครับ

ถ้าเราคิดว่าปัญหาคือ "เนื้อหาการสอน" เราก็จะไปแก้ที่เนื้อหา ต้องยัดเรื่องนั้น ต้องมีเรื่องนี้ ฯลฯ

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

ส่วนหนึ่งก็เพราะคนสอนก็จะถูกบังคับให้ต้องสอนเรื่องนั้นเรื่องนี้ให้มีเนื้อหาเรื่องนั้นเรื่องนี้อย่างเร่งด่วน ปีนี้ยัดเนื้อหา ปีหน้าต้องสอน อะไรแบบนี้เป็นต้น ....

คนสอนก็ทำอะไรไม่ได้ นอกจากสอนตามตัวอักษรและวิธีการในเนื้อหาแบบเป๊ะๆ เพราะตัวเองก็ไม่ได้เล่น ไม่ได้ตั้งคำถามอะไรเหมือนกัน ....

เข้าทำนอง ..... คนสอนก็ต้องจำไปสอน ท่องแบบนกแก้วนกขุนทอง พูดได้เป๊ะแต่ไม่รู้เรื่องรู้ราวรู้บริบทอะไร .... ในขณะที่คนเรียนก็เหมือนเครื่องถ่ายเอกสาร .... ที่อ่านเอกสารไปเขียนลงข้อสอบ แล้วก็ลืมไป (เครื่องถ่ายเอกสารไม่มี Hard disk ที่เก็บข้อมูลถาวร มันก็จะจำไว้แค่ช่วงเวลาที่มันต้องถ่ายเอกสารเท่านั้นแหละ หลังจากนั้น "มันก็คืนคนที่เอามาถ่ายไปหมด" -- คุ้นๆ ไหม ... "เรื่องนี้ผมคืนอาจารย์ไปหมดแล้ว")

ยิ่งเราบอกว่าต้องสอนเรื่องนั้นเรื่องนี้เพิ่มเข้าไปไม่มีที่สิ้นสุด ปัญหานี้ก็ยิ่งหนักขึ้นทุกวัน

ถ้าดูจากเนื้อหาและปริมาณ ผมว่าเราก็ให้ความสำคัญกับทุกเรื่องนะ ... คณิตศาสตร์ ภาษาอังกฤษ ประวัติศาสตร์ วิทยาศาสตร์ .... อีกหน่อยก็จะโค้ดดิ้ง และวิทยาการคำนวน ......

ปัญหาคือ "วิธีการสอน" และ "วิธีการเรียน" แหละครับ

มีแค่นี้จริงๆ

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

[Slide Story] น้องๆ และสหายหลายต่อหลายคน ที่มาเรียนเรื่อง Maths for Working Programmers และ Functional Programming กับผม หลายคนที่ยังใกล้ชิดมหาลัยอยู่ก็พยายามจะไปบอกให้มหาลัยสอนเรื่องพวกนี้บ้าง ...

ผมก็ต้องเตือนน้องๆ และมิตรสหายเหล่านี้เสมอว่า "สอนเรื่องนี้แบบผม เรียนเรื่องนี้แบบที่น้องเรียนกับผม น้อง/คุณก็อินแล้วก็สนุกแหละครับ" ....​ "เนื้อหาพวกนี้ มีในหลักสูตรนะ เรื่องนี้อยู่ตรงนี้ เรื่องนั้นอยู่ตรงโน้น ฯลฯ" .... เห็นไหม มีนะ ไม่ใช่ไม่มี ฯลฯ

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

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

รูป: นกแก้วบนเครื่องถ่ายเอกสาร ..... รูปที่อยู่ใน presentation slide ที่ผมเคยใช้บ่อยมาก เดี๋ยวนี้ไม่ค่อยได้พูดเรื่องนี้แล้ว

197 Nameless Fanboi Posted ID:/D5kF8KFla

ใน reddit มีคนเอามาแปะ ก็เล่าไปใน reddit แล้วเอามาเล่าให้คนไทยฟังบ้าง

ที่ Wongnai ใช้ ArgoCD อยู่มันจะเป็น step แบบนี้ครับ

1. project build & push docker ใน gitlab ci
2. step สุดท้ายของ ci เรามี tool มา clone ceylon (deploy manifest) repo, create branch, update image tag, push branch แล้วเปิด merge request (MR)
3. tool มันจะ mark MR ให้ auto merge on pipeline success เป็นอันจบ pipeline ของ project
4. pipeline ของ MR ที่เข้า ceylon มี tool validate (หวังว่าจะมีเวลา open source ให้) มันจะ run ArgoCD template ได้ JSON มาแล้วโยนเข้า kubeval
(แปลว่ามี check 2 ที่ คือ Jsonnet assert สำหรับ best practice check + kubeval เช็คว่า valid)
5. MR merge เสร็จแล้ว argocd auto sync ยกเว้น prod ต้องกด sync เอง

ฉะนั้นจากในบทความนี้เราเลยไม่ค่อยเจอปัญหาเหมือนเค้า

1. ผมเข้าใจว่าเค้า clone แล้ว push master แข่งกัน มันเลย race แต่เราเปิด MR แล้วให้ gitlab merge มันเลยไม่ต้องแย่งกันเพราะเราไม่ได้ตั้งให้ rebase ก่อน merge
จะมี race ก็คือ MR project เดียวรัน 2 อันพร้อมกัน อันนี้ช่วยไม่ได้นอกจากไปตั้ง Gitlab ว่าให้ยกเลิก pipeline เก่าเมื่อมีอันใหม่กว่า (ซึ่งเราไม่ได้เปิด)
2. เราใช้ deployment monorepo แถม branch เดียวทุก env ด้วย เลยไม่มีปัญหาว่า repo เยอะ งง
ทีมบ่นอยู่บ้างว่าอยากได้ branch เพิ่มจะได้ทดลองของได้โดยไม่กระทบ prod อันนี้ยังมองๆ อยู่ว่าจะทำยังไงไม่ให้มันระเบิดแบบเค้า
3. Visibility ยากนี่เรื่องจริง มี git log ก็จริงแต่ไม่รู้ว่ากด sync ใน ArgoCD ตอนไหนต้องไปค้น ArgoCD log
4. Validation เรามี validate tool เลยชิล

ปัญหาที่ผมเจอจริงๆ น่าจะเป็นว่า

1. Rollback ยากมาก คือต้องถอย commit ออก แต่พอ change มันเป็นแค่ปรับ image tag มนุษย์ทั่วไปเข้าใจไม่ได้ว่าถอยเท่าไรถึงจะหายบั๊ก (ถอยโค้ดยังอ่าน commit message พอได้) แล้วมันหลายขั้นตอนมาก คนเลยชอบไปกดใน ArgoCD ซึ่งมันทำให้ decouple cluster state ออกจาก git state หรืออีกทีคือถอย commit ในแอพเลยแล้วรอ build ซึ่งนานมากกกกก
2. Post deploy step ทำยากมาก เช่น deploy dev เสร็จแล้วรัน automate test ไม่รู้จะเช็คยังไงเลยว่า deploy ยังไง (MR merge แล้วแต่ก็ต้องรอ sync + pod rollout) ที่ทีมทำกันอยู่มีแต่ท่า hackๆ

Be Civil — "Be curious, not judgemental"

  • FAQs — คำถามที่ถามบ่อย (การใช้บอร์ด การแบน ฯลฯ)
  • Policy — เกณฑ์การใช้งานเว็บไซต์
  • Guidelines — ข้อแนะนำในการใช้งานเว็บไซต์
  • Deletion Request — แจ้งลบและเกณฑ์การลบข้อความ
  • Law Enforcement — แจ้งขอ IP address

All contents are responsibility of its posters.