รีวิวชีวิต Siriwatknp ปี 2020

siriwatknp
4 min readDec 31, 2020

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

สรุป (สำหรับคนที่อยากรู้แบบเร็วๆ)

เป้าหมายในปี 2020 ของผมคือพัฒนาให้ตัวเองเป็น Professional Programmer ดังนั้นผมจะไล่จากสิ่งที่ผมเห็นความเปลี่ยนแปลงชัดๆ จากมากไปน้อย ในวงเล็บคือระดับความรู้ที่ผมให้คะแนนตัวเอง

สกิลการทำงาน

การเขียน unit-tests

  • ก่อน (1/5): เรียกได้ว่าเขียนไม่ค่อยเป็นเลย รู้พื้นๆ เขียนเทสได้แค่ฟังก์ชันง่ายๆ พอทำ TDD ได้นิดหน่อย
  • หลัง (3/5): เขียนเทสเป็นมากขึ้น เริ่มเห็นว่าเทสที่ดีควรเขียนยังไง และสามารถอธิบายได้ในระดับนึง เริ่มเซียนการเขียนเทส React ตอนนี้เข้าใจการทำงานข้างในของ react-testing-library แล้ว สังเกตุได้จากคนในทีมมีปัญหาอะไรเกี่ยวกับการเขียนเทสต้องมาถามผมตลอด

สร้าง User Interface (React)

  • ก่อน (3/5): ทำ UI ที่ให้บนเว็บทั่วไปได้คล่องอยู่แล้ว ยกเว้น animation ที่ยังไม่เซียน ยังไม่รู้ว่า React ทำงานยังไง
  • หลัง (4/5): นอกจากจะทำ UI บนเว็บได้แล้ว ปีนี้ได้มาทำ UI บน mobile app ด้วย (ปล. react-native) และได้ทำ tech talk เกี่ยวกับเบื้องหลังการทำงานของ React

เครื่องมือและภาษาที่ใช้เป็น

  • ก่อน (1/5): รู้แค่ Javascript กับ React ใช้ TypeScript ได้แบบง่อยๆ
  • หลัง (2/5): เริ่มขยับไปฝั่ง mobile มากขึ้น ได้แตะ infrastructure บ้าง ขอบคุณเป้ที่สอน Docker 101 ทำให้เห็นภาพใหญ่ๆ อันสุดท้ายที่เห็นชัดคือได้ใช้ TypeScript อย่างจริงจัง เขียน Advanced Types ได้ระดับนึง

การสื่อสาร

  • ก่อน (2/5): ภาษาอังกฤษ ฟังพอได้แต่พูดไม่คล่อง ส่วนภาษาไทยบางครั้งก็ยังพูดไม่ค่อยรู้เรื่องเท่าไหร่
  • หลัง (3/5): รู้สึกเลยว่าเราโจ้ภาษาอังกฤษได้คล่องขึ้น เนื่องจากทำงานกับชาวต่างชาติตลอด ถึงแม้ว่าทักษะการพูดในชีวิตประจำวันยังไม่คล่อง แต่ถ้าเป็นศัพท์ที่ใช้ในการทำงาน เรียกว่าพัฒนาขึ้นชัดมาก

เกรด

  • ก่อน: Consultant
  • หลัง: ได้ขยับเป็น Senior แบบงงๆ

Community และ Side Project

  • ก่อน: mui-treasury ยังไม่มีรายได้ เข้าเนื้อตัวเอง ทำเอามันอย่างเดียว เริ่มปี 2020 น่าจะประมาณ 400 ดาว
  • หลัง: ลองเอา ads มาลง ทำให้มีรายได้มาซับพอตโปรเจค ดาวพุ่งเกิน 1k (ดีใจฝุดๆ)
Page Views https://mui-treasury.com/ ของปี 2020
Github star history of repo siriwatknp/mui-treasury

รายละเอียด

ขอเล่าแบบเรื่องราวตั้งแต่ต้นปียันท้ายปี เริ่มตั้งแต่มกรา ตอนนั้นเข้า ThoughtWorks ได้ประมาณ 3 เดือน ยังอยู่ในช่วงปรับตัวให้เข้ากับ culture ของบริษัท ได้อยู่โปรเจคที่ใช้ React กับ Static Page ง่ายๆ แต่สิ่งที่ได้เรียนรู้เพิ่มคือการทำ software ที่มีคุณภาพ ตั้งแต่วิธีการทำงานในทีม, pair programming, การเขียนเทส, จนไปถึง CI/CD โชคดีมากที่เพื่อนร่วมทีมแต่ละคนมีความสามารถไม่เหมือนกัน ทำให้เราได้เรียนรู้อย่างอื่นนอกจาก Frontend และอีกอย่างคือ Tech analysis และ Decision making เป็นอะไรที่สำคัญมากๆๆ นอกจากนี้ในช่วง quater แรก ผมก็ทำ open source ไปด้วย (เพราะผมขาด UI ไม่ได้ 555+)

ตอนประมาณเมษา ต้องย้ายโปรเจคเพราะโควิด เลยเลือกเข้าโปรเจคที่ยังเป็น React แต่ขยับไป React-native เพราะคิดว่า ความรู้ React ของเราน่าจะช่วยทีมได้ แล้วเราจะได้มีเวลาเรียนรู้อย่างอื่นควบคู่ไปด้วย ปรากฏว่าเวิคมากเพราะว่าเราได้โฟกัสกับการเขียนเทส (React Testing Library) กับ TypeScript อย่างจริงจัง เพราะ React เราเซียนอยู่แล้ว สไตล์การทำงานของผมคือ ในช่วงเวลาทำงาน ถ้าเวลาบีบเราจะทำ Feature ให้ได้ working software ก่อน เทสอาจจะไม่ได้คลุมทุกเคส (ไม่ได้ coverage 100%) แล้วหลังเวลางาน (ส่วนใหญ่ก็ตอนกลางคืน ไม่ก็เสาร์-อาทิตย์) ผมจะมาหาทางปรับปรุงและ refactor โค้ดให้มันออกมาดีที่สุดในเวลาที่จำกัด สาเหตุที่ทำแบบนี้เพราะผมถือคติว่า คนที่ต้องดูแลโค้ดต่อจากผมจะต้องไม่พูดคำว่า “เขียนเ_ี่ยไรเนี่ย” หรือ “WTF” เพราะฉะนั้นผมจะให้ความสำคัญเกี่ยวกับ Code Quality มาก สิ่งที่เรียนรู้จากสไตล์การทำงานแบบนี้คือ เหนื่อยแต่คุ้ม…

ย้อนกลับไปนิดนึง ก่อนเข้าโปรเจคใหม่ รู้อยู่แล้วว่าต้องใช้ TypeScript กับ ReactNative แต่เรายังไม่คล่อง เลยเอา mui-treasury/layout มาเขียนใหม่จาก v3 ให้เป็น v4 ด้วย TypeScript (รายละเอียดอยู่ในลิ้งค์) ส่วน ReactNative เราลองสร้างแอพโปเกมอนตาม https://github.com/merciyah/Pokemon ผลลัพธ์คือดีมาก พอเข้าโปรเจคแล้วเราเริ่มทำงานได้เลย

ช่วงกลางปีก็ทำงานควบคู่กับ open source แล้วมีความคิดผุดขึ้นมาว่า เราน่าจะเริ่มแชร์สิ่งที่เรารู้จากการใช้ React มาซักพัก ให้ community ในไทย ก็เลยทำเพจ React ไปวันๆ ขึ้นมา สิ่งที่ได้เรียนรู้จากการทำเพจเลยคือ การทำคอนเท้นต์ที่ดีมันไม่ง่ายเลยจ้า แถมต้องใช้เวลาเตรียมตัวด้วย กว่าจะทำคลิปได้แต่ละอัน ต้องหาข้อมูล ทำสไลด์ ตัดวิดีโอ เรียนรู้การ stream ทำ Artwork นู่นนี่นั่น ตอนแรกกะจะวัดผลด้วยยอดไลค์ที่ 5000 แต่สิ้นปีได้แค่ 1700+ ยังอีกยาวไกล 🔥 ส่วน mui-treasury (open source เกี่ยสกับ UI ที่ผมทำ) ก็ได้ผลตอบรับที่ดี มีคนเอาไปเขียนรีวิวด้วย https://dev.to/kyleh919/6-six-reasons-to-use-material-ui-for-react-1anh

มีเหตุการณ์สำคัญเกิดขึ้นช่วงนี้คือ เราได้ Promote เป็น Senior โดยที่เราไม่ได้คิดว่าจะเร็วขนาดนี้ ตอนแรกคิดว่าว่า 2 ปี ค่อยว่ากัน เพราะจุดประสงค์หลักที่เข้า ThoughtWorks คือ พัฒนา Core Skill ในการเป็น Professional Programmer ตอนที่รู้เรื่องนี้เรียกว่ากดดันพอสมควร เพราะเรารู้สึกว่ายังไม่พร้อม ความรู้ที่เรามีลึกแค่ Frontend (specific ไปที่ React ด้วยซ้ำ) แต่พอคุยกับหลายๆคน ก็เลยคิดว่าไหนๆเรามีโอกาสแล้ว และเชื่อว่าบริษัทคงไม่ Promote คนมั่วๆหรอก เลยคิดว่านี่เป็น Challenge ของเราในปีนี้และปีหน้า เราต้องทำให้ทุกคนรวมทั้งตัวเราเองเชื่อได้ว่า เราเหมาะสมกับคำว่า Senior แล้ว

ประมาณ Quarter ที่ 3 เริ่มอยากสร้าง Personal Branding ให้ทุกคนมองเห็นว่าเราเป็น React Professional ก็เลยตั้งคำถามตัวเองว่า มีอะไรที่เรายังไม่รู้เกี่ยวกับ React บ้าง สรุปคือได้คำตอบว่าเราต้องรู้ว่าเบื้องลึก React ทำงานยังไง ก็เลยติดต่อไปที่ Marketing ว่าเราอยากจัด Tech Talk เรื่องนี้ ต้องทำยังไงบ้าง… ใช้เวลาเตรียมตัวอยู่สองเดือน อ่านทุกอย่างที่หาได้ในเน็ต ดูทุกวิดีโอที่เกี่ยวกับหัวข้อนี้ เจอศาสดาทุกวัน (Dan Abramov) ทุกวัน เรียกได้ว่าเป็นอีกโลกของ React เลยก็ว่าได้ ใช้เวลาหลายอาทิตย์นั่งแงะโค้ดใน React ลอง render ui กดปุ่ม update state แล้วไล่ดูแต่ละ function ว่ามันทำงานยังไง สิ่งที่ได้จากช่วงนี้เลยคือ

  1. สร้างความเคยชินให้เราเข้าไปอ่าน raw code ใน repo คนอื่น
  2. React มีการดีไซน์ API ที่ดีมาก สามารถซ่อน complexity ไว้ข้างหลัง แต่ยังให้ Developer Experience ที่ดีได้
  3. การอ่านโค้ดคือวิธีการทำความเข้าใจที่ดีที่สุด (สำหรับผม)
  4. Always dry run ให้คนอื่นฟังก่อน

ผลตอบรับจาก Tech Talk ถือว่าโอเค มีคนลงทะเบียนประมาณ 300 คน (ตอนแรกตั้งเป้าไว้ที่ 1000 คน) เป็นอีกหนึ่ง Achievement ของปีนี้ที่ภูมิใจมากที่ได้ทำ

สืบเนื่องจาก Tech Talk ผมก็ได้โอกาสไปเป็น speaker ในงาน Hacktober Fest ส่วนประมาณปลาย พย. ก็โชคดีมากที่ได้จัดงาน TypeScript Meetup เป็นประสบการณ์ที่ดีจริงๆ แถมได้ connection มากมาย แต่ Q4 เป็นช่วงที่หยุดทำ open source ไปพักนึงเลยจน ฝรั่งใน twitter ทวีตว่า “เฮ้ยู เลิกทำแล้วหรอ”

สาเหตุที่หยุดทำไปพักนึง เนื่องจากเอาเวลามาทำ React ไปวันๆ จนไม่มีเวลาเหลือ แถมมีงาน freelance เข้ามาติดต่อเยอะ จนต้องหยุด open source ไปก่อน เพื่อโฟกัสให้แต่ละงานจบ

แต่เดือนธันว่าได้กลับมาทำ open source อีกครั้ง คราวนี้เป็น react-native library ชื่อว่า react-native-video-extension สืบเนื่องจากงานในโปรเจคต้องใช้ video แต่ดันไม่มีใครทำออกมาได้ตรงกับสิ่งที่เราต้องการเลย ก็เลยทำเองซะเลย คิดว่าคงปล่อยได้ประมาณ มกรา

จบการรีวิวปี 2020 อยากเขียนให้ละเอียดกว่านี้ แต่พยายามนึกเท่าที่ทำได้ 555 รู้สึกดีที่ได้มองย้อนกลับไปว่ามีอะไรเกิดขึ้นกับเราบ้าง.

สิ่งที่ได้เรียนรู้ในปีนี้

  • ถ้าคิดจะทำอะไร ให้รีบลงมือทำเลย วางแผนเท่าที่ทำได้ และที่สำคัญอย่ากลัวที่จะถามคนอื่น อย่างเช่น ผมมีไอเดียอยากจัด TypeScript Meetup ตอนไปงาน React Meetup ที่ SevenPeaks ผมก็เดินไปถามพี่แม็กเลยว่าไอเดียผมเป็นงี้ๆๆ พี่แม็กก็บอกว่าถ้าหาคนพูดได้ก็จัดได้เลย ผมก็ไล่ถามคนที่รู้จักเลยครับ ทำ ArtWork เอง Marketing เอง โชคดีที่ได้พี่แม็กกับทาง SevenPeaks ดูเรื่องสถานที่และอาหาร แล้วก็ออกมาเป็นงานอย่างที่เห็น คนลงทะเบียน 110 คน มางาน 90+ (คือโคตรเยอะ) คนจองตั๋วอย่างกะมาดู black pink ไม่ถึงนาทีตั๋วหมด
  • “We cannot work smart before working hard” ผมค่อนข้างเห็นด้วยกับคำพูดของ Elon Musk ที่เชื่อในเรื่องการทำงานหนัก เพราะว่าถ้าเป้าหมายของเรามันต้องใช้เวลาสิบปีเต็มๆในการทำ (สมมติว่านี่คือทางที่ดีที่สุดในการทำ) ถ้าเราทำวันละแค่ 8 ชม. ยังไงมันก็ช้ากว่า ทำวันละ 10–12 ชม. อยู่แล้วป้ะ? ยิ่งถ้าเป็นงานที่เราชอบ ทำไมจะไม่ทำล่ะ? ส่วน work smart ผมก็ได้บทเรียนมาจากการเขียนโปรแกรมนั่นแหละ เวลาเขียน feature อะไรครั้งแรก เราอาจจะไม่จำเป็นต้องคิดเยอะ แค่ทำให้มันเวิคก่อน แต่พอทำครั้งที่สอง นี่คือจุดที่เราต้อง work smart ละ มันจะต้องมีครั้งที่สามตามมาแน่นอน แต่เราจะ work smart ไม่ได้เลยถ้าเราไม่เคยทำครั้งแรกและครั้งที่สองมาก่อน (work hard)
  • “If you cannot choose one, why not do both” ผมเคยมีคำถามว่าเราจะทำงาน full-time หรือ freelance ดี เราจะทำ Project-based หรือ Product-based ดี เพราะแต่ละแบบมันก็มี trade-off ของมันอยู่ จนวันนึงคิดได้ว่า “ทำไมต้องเลือกด้วยวะ ก็แค่ทำทั้งสองอย่างนั่นแหละ” ณ ตอนนี้ก็เลยทำงานทั้ง fulltime/part time. Project-based/Product-based.
  • “ทำอะไรครั้งแรก ยากเสมอ อดทนไว้แล้วมันจะดีขึ้นเอง (นานเท่าไหร่ไม่รู้)”

Look forward to experience great things in 2021, thanks.

--

--

siriwatknp

Passionate in Design, Theming, React & Firebase. Focus on component reusability.