Photo by Jan Tinneberg on Unsplash

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

และแน่นอน ไม่ใช่ผมคนเดียวที่คิดแบบนี้ Developers หลายๆคนที่ผมติดตาม หรือคลายๆคนที่ผมรู้จัก ก็เลือกย้ายออกจาก Medium มันทำให้เริ่มมี Content ในสาย Tech / Programming ที่ผมติดตามอยู่ น้อยลง เข้ามาอ่าน 2–3วันครั้ง อาทิตย์ละครั้ง จนมาเรื่อยๆ ก็เริ่มแทบไม่ได้อ่านเลย จริงๆก็อ่านบ้าง จากเว็บด้านล่าง (ทำไว้อ่านบทความไทยจาก Medium Publication — version ลวกๆครับ ถ้ามีเวลาจะทำให้ดี)


Photo by Max Duzij on Unsplash

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

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

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

1. ตั้งเป้าหมายในชีวิต


Photo by Glenn Carstens-Peters on Unsplash

Hi 😎, Last year on early May, I decided to start blogging in English after 5 years of blogging in Thai 🇹🇭 language only on my personal website called Devahoy.

First time, I fear and I don’t have confident about my skills both programming and English. but If I don’t try, I will never know my limitation. then I started to wrote my first english article on Medium platform, just write what’s in your mind, no need to setup anything.

I started written by create publication under Medium Platform called Today I Learned — The purpose of this publication is…


สวัสดีครับ ห่างหายไปนาน ทั้งบล็อคส่วนตัว ทั้ง Devahoy หรือ Medium ก็ยุ่งๆนิดๆ วันนี้เลยจะมาเขียนบล็อคนี้เป็นบล็อคสั้นๆละกันนะครับ คือผมกำลังเปลี่ยนเว็บบล็อคเดิม https://devahoy.com ที่ใช้ Middleman เป็นตัว Static Site Generator

มาใช้ Gatsby ครับ

ซึ่งเหตุผลหลักๆเลยคือ

  • อยากลองใช้ Gatsby เปลี่ยนจาก Ruby stack เป็น JavaScript stack
  • เป็น React based
  • ดู Performance, Plugin และ Ecosystem แล้ว Gatsby ทำมาดีเลย

ขั้นตอนการเปลี่ยน

ก่อนการเปลี่ยน ผมมาคิดไว้แล้วว่า จะแค่เปลี่ยน Stack หลังบ้าน ซึ่งสุดท้ายแล้ว ทั้งสองตัวผลลัพธ์มันคือ Static Web ธรรมดานั่นแหละ ตัว End User ไม่น่าจะเห็นการเปลี่ยนแปลง (อาจจะมีบ้างที่หน้าเว็บโหลดไวขึ้น มี PWA ที่ตอนแรกไม่ได้ทำรองรับ)

แต่ก็ไหนๆ จะเปลี่ยนแล้ว ผมก็เลยกะว่าจะ Redesign มันซักนิดนึง เน้นเรียบง่ายละกัน ก็คงไม่มีอะไรมาก มีแค่หน้า Index หน้า Blog Post และก็พวกหน้า About แค่นั้นเอง (ไม่ต้องคิดเยอะ ฮ่าๆ)

เริ่มจาก ผมใช้ตัว​ Starter Template ชื่อว่า Gatsby-starter-blog (ตัวเดียวกับบล็อคของ Dan…


Photo by Carl Heyerdahl on Unsplash

สวัสดีครับ 2018 Year In Review จริงๆแล้วทีแรกตั้งใจไว้ว่าจะเขียนทุกๆวันให้ครบ 30วัน เพื่อสรุปในสิ่งที่เรียนรู้ในปี 2018 ที่ผ่านมา แต่จากที่ลองเขียนแล้ว มันเลยคำว่าสิ่งที่เรียนรู้ครับ มันกลายเป็นว่าผมเขียนในสิ่งที่ได้เรียนรู้ + Research เพิ่มเติมในขณะที่เขียนบล็อค ทำให้ผมพบว่า มันผิดจุดประสงค์และผลลัพธ์มันผิดไปครับ สิ่งที่ผมต้องการคือ สิ่งที่เรียนรู้จริงๆในปีที่ผ่านมา จะได้รู้ว่าเรามีความรู้แค่ไหน ส่วนการ Research ผมมองว่าควรจะเป็นคนละ Topic ไปดีกว่า

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

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

  • Modern JavaScript (ES2015/2016/2017+) : ก็คือเรียนรู้พวก Concept ต่างๆ Feature ใหม่ๆ ที่มี ทั้งที่ Browser รองรับ และยังต้องพึ่ง Babel (โดยเน้นพวก topic ที่รู้แบบ basic ให้เข้าใจแบบลึกมากขึ้น)
  • React : เป็นสิ่งที่ใช้เขียนในทุกๆวัน ได้เรียนรู้ตลอด เมื่อไหร่ก็ตามที่ผมคิดว่าตัวเองรู้แล้ว และคิดว่าเขียนดีแล้ว ทุกๆครั้งที่ขึ้นโปรเจ็ค หรือมี feature ใหม่ ก็มีอะไรที่ผมไม่รู้ให้ได้เรียนรู้ตลอด หรือแม้แต่กลับไปดูโค๊ดเก่าของตัวเอง ก็เจอโค๊ดห่วยๆของตัวเองบ่อยมาก 😃…


Photo by Markus Spiske on Unsplash

สวัสดีครับ 2018 Year In Review วันนี้ขอนำเสนอ Functional Programming ซึ่งจริงๆมันเป็น Programming Paradigm โดยใช้ภาษาไหนก็ได้ ทำให้ปีที่ผ่านมาได้เรียนรู้ Function Programming มากขึ้น (ตอนเรียนรู้จักแต่ Object Oriented Programming) โดยไม่จำเป็นต้องยึดติดกับตัวภาษา โดยผมฝึกทั้ง JavaScript แบบ Functional และก็หัดเรียน Elixir ที่มันเป็นภาษา Functional เลย ก็ทำให้ได้รู้วิธีการเขียนอีกแบบ รวมถึงสไตล์แบบ Declarative และ Imperative ด้วย

Day 4: Functional Programming

จริงๆแล้วถ้าพูดถึง Function Programming (ขอเรียกย่อๆว่า FP ละกัน) มันคือรูปแบบหรือสไตล์ในการเขียนโปรแกรมแบบหนึ่ง โดยที่ข้อมูลจะถูกเปลี่ยนผ่านทาง function ซึ่งจริงๆแล้วภาษาที่เป็น Functional Programming เลยอย่างเช่น Scala, Haskell, Closure อะไรพวกนี้มีมานานแล้ว (ส่วนตัวผมไม่เคยเขียน และไม่อิน FP มาก่อนด้วย)

ซึ่งอย่างที่บอกพอช่วงหลังๆ เริ่มมีหลายๆภาษา หรือ Library/Framework ได้นำแนวคิด FP มาใช้ เช่น

  • ภาษา Swift ก็มี FP พวก flatMap, Higher Order Function มั้ง (ผมอ่านโค๊ดผ่านๆ เขียนเองไม่ได้ ได้แต่คอมเม้นติคนเขียน ฮ่าๆ 😎)
  • ภาษา Kotlin ก็สามารถเขียนสไตล์ FP เช่น Lambda
  • Ruby ก็เช่นกัน สไตล์ FP ก้ได้เช่น Lamba, Procs…


Photo by Adi Goldstein on Unsplash

สวัสดีครับ 2018 Year In Review วันนี้ขอนำเสนอ Recompose ซึ่งเป็น React Utility Function ครับ เอาไว้ใช้ร่วมกับ React จริงๆผมจำไม่ได้ว่าเริ่มใช้ Recompose ตั้งแต่ตอนไหน แต่แน่ๆ ปีที่ผ่านมาน่าจะเป็นช่วงที่ใช้/เรียนรู้ Recompose เยอะสุด ก็เลยนำมาเป็น Year In Review ที่ได้เรียนรู้ในปี 2018 ที่ผ่านมานั่นเอง

Day 3: Recompose

ก่อนที่ผมจะรู้จัก Recompose ก่อนหน้านั้น React ผมก็เขียน Component เป็น Class ปกติครับ มี State มี Props

class MyComponent extends React.Component {
constructor(props) {
super(props)
this.state = {}
}
componentDidMount() {
}
render() {
return (...)
}
}

และพบว่าบาง Component มันไม่ต้องมี State ไม่ต้องมา extend Component และไม่ได้ใช้ Lifecycle ของ React เลย ถ้า Component ที่มันมีหน้าที่แค่ render ทำไมเราไม่ทำเป็น Functional Comopnent ไปเลยละ แบบนี้

const MyComponent = () => <p>Hello</p>

แต่ พอสร้าง Component ที่มีหน้าที่แค่ Render แต่พอนานๆไป พบว่า Feature นี้มันต้องมี State คอยเก็บค่าด้วยแฮะ…

Chai Phonbopit

Crypto & DeFi Newbie, Blogger at https://devahoy.com 🤖(Web Development) and https://indyrover.com 🚀 (Lifestyle)

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store