บันทึกการเริ่มงานแรกสายโปรแกรมเมอร์


สวัสดีครับ ในบทความนี้ผมเขียนประสบการณ์ที่ผมเจอมาหลังจากเริ่มงานได้ประมาณ 5 เดือนในบริษัทที่ทำเกี่ยวกับ software ซะส่วนใหญ่ ส่วนของ hardware ก็มีงานให้ทำ แต่ไม่ใช่ลักษณะที่ผลิดอะไรแบบนั้น งานส่วน hardware จะเป็นประมาณว่าเขียนโปรแกรมเพื่อใช้งานเครื่องซะมากกว่า
เนื้อหา
- เนื้อหา
- ภาพของบริษัทแบบคล่าวๆ
- ข้อดีของการแบ่งเป็น task งานเล็กๆ
- ช่วงแรกเมื่อเข้าสู่ออฟฟิศ
- Tech Stack อะไรบ้าง
- เริ่มงาน task แรก
- ได้รู้อะไรใหม่บ้าง
- ก่อนเริ่มงาน vs เริ่มงาน
ภาพของบริษัทแบบคล่าวๆ
ในบริษัทจะมีงานหลักๆแบ่งได้ 2 ประเภท มีพนักงานยังไม่มากเท่าที่เห็นไม่เกิน 100 คน มีอยู่ 3 สาขาที่กรุงเทพและเชียงใหม่ ในบริษัทก็แบ่งเป็นทีมๆไป เช่น HR, Sale, Programmer, Operator, Call Center, Messenger พอเห็นภาพไหม
งานของบริษัทหลักๆแล้วจะแบ่งได้ 2 แบบ
Product
คืองานที่เป็นของบริษัททำขึ้นมาเองProject
คืองานที่บริษัทรับมาจากลูกค้าอีกทีนึง เหมือนเป็นผู้รับจ้าง
ส่วนผมได้ทำ Product ของบริษัทเป็นงานที่อยากจะทำตั้งแต่สัมภาษณ์ละ
ในตอนที่เราเรียนมหาลัยเราก็มักจะเขียนโปรแกรมให้จบเพียงคนเดียว แต่พอมาทำงาน เราไม่ได้เขียนแค่คนเดียว เนื้องานมันสามารถแบ่งย่อยได้ สมมุติว่าเว็บเรามี 5 เมนูก็แบ่งไปเลยคนละ 1 เมนู หรือจะแบ่งตาม feature ก็ได้ แต่ที่ผมเจอมาจะแบ่งตาม task มันคือการแตกเป็นหน่วยย่อยที่สุดมากจาก feature อีกทีนึง
ข้อดีของการแบ่งเป็น task งานเล็กๆ
คือมันเป็นการเขียนให้จบไปทีละส่วน แล้วนำมาต่อกัน สามารถทำให้งานจบได้เร็ว เช่น เมื่อโปรแกรมเมอร์ทำงานของตัวเองเสร็จแล้ว สามารถหยิบงานใหม่ ที่ถูกแบ่งไว้แล้วไปทำต่อได้เลย เพราะว่าการเขียนโปรแกรมแต่ละงานมันก็ใช้เวลาไม่เท่ากัน ถ้าใช้วิธีนี้ก็จะสามารถประเมินเวลา แล้วแบ่งเฉลี่ยให้โปรแกรมเมอร์แต่ละคนทำงานอย่างเหมาะสมได้ งานก็จะจบได้เร็ว
ช่วงแรกเมื่อเข้าสู่ออฟฟิศ
ประมาณช่วงสิ้นปี เดือนธันวาคม 1 - 2 เดือนแรกที่เข้ามาจะเป็นช่วงที่บริษัทจบงานของปีนั้นๆ วันแรกที่จำได้คือได้ macbook มาใช้นี้แหละ ใช้ไม่เป็นเลยเพราะไม่เคยใช้ apple ด้วยซ้ำ สิ่งแรกที่ผมได้ทำก็คือการเรียน course ต่างๆที่จะต้องใช้ทำงานเช่น
- Database Design
- Node with React
- Next.js & React
- Full Stack Development with React
เมื่อเรียนจบ course จะต้องทำ demo ตามโจทย์ที่ได้รับและ มีเวลากำหนด เช่น
ออกแบบระบบ e-commerce เล็กๆโดยเขียนเป็น Web และ App ด้วย Next
, React Native
Web
ให้ร้านใช้ feature สร้างร้านค้า, เพิ่มพนักงานดูแลร้าน, เพิ่มสินค้า, แก้ไขสินค้า, ดูรายงานการสั่งซื้อApp
ให้ลูกค้าซื้อของ ล็อกอินก่อนใช้ทุกครั้ง, ค้นหาสินค้า, เลือกสินค้าใส่รถเข็น, สั่งซื้อได้, ดูสถานะการสั่งซื้อได้, ดูประวัติการสั่งซื้อได้ ส่งเมล์เมื่อสั่งซื้อสำเร็จ
Tech Stack อะไรบ้าง
reactjs
คือ Javascript library ใช้ทำ user interface แสดงผลหน้า Webnextjs
คือ JavaScript webapps framework เป็นอีกขั้นของ React รองรับ SEOreact native
คือ Javascript Framework สำหรับพัฒนา Mobile Application แบบ Cross-platform เขียนคำสั่งชุดเดียวรันได้ทั้ง iOS, Androidnodejs
คือ มาจาก JavaScript สามารถเขียนเพื่อเชื่อมต่อกับฝั่ง Server ได้sequelize
คือ Object Relational Mapping (ORM) ใช้ติดต่อกับ Database ไม่ต้องเขียน sql เอง ทำหน้าที่คล้ายแปลง sql กับ database หลายๆตัวที่มี syntax ต่างกันให้เขียนแบบเดียวกันได้
จะเห็นว่าเป็นเรื่องที่หาความรู้ได้ทั่วไปเลย ไม่ยากมาก สามารถเรียนรู้ใหม่ได้ง่ายตามยูทูปมีเยอะเลย แต่ course ที่ได้เรียนคืออยู่ใน udemy จะเป็นแบบสากลหน่อยๆ คุณภาพสื่อดีกว่าในยูทูปเพราะเขาตั้งใจสอนตั้งแต่ beginner ถึง advanced เลย
เริ่มงาน task แรก
ต้องบอกก่อนว่าเราก็ยังไม่ได้เก่งอะไร ทีมก็คงไม่มอบงานที่เราทำไม่มาให้ แล้วทีมจะประเมินจากอะไรว่าเราทำได้หรือไม่ได้ สิ่งที่ผมพอจะเดาได้ก็คือจาก demo ที่ให้ทำนั่นแหละ และก็งานที่ไม่ยากมากเพื่อมาดูว่าเราทำได้ไหม แล้วจึงเพิ่มความยากขึ้นไปเรื่อยๆ ตามความไว้ใจของทีม เพราะแต่ละงานก็ต้องใช้ความรู้เรื่อง business ในระดับนึง
ได้รู้อะไรใหม่บ้าง
หลังจากทำได้ประมาณ 5 เดือนเราจะได้ตวามรู้เพิ่มหลายๆอย่าง เช่น
- การใช้งาน git version control มีหลาย branch มากเช่น master, develop, feature, release แต่ละงานต้องสร้าง branch ใหม่จาก branch ไม่เหมือนกัน
- นำเว็บไซต์ขึ้นไปใช้งานจริง ต้องผ่านการทดสอบบนสภาพแวดล้อมต่างๆทั้ง local, sit, uat ทดสอบแก้บัคให้ผ่านถึงจะขึ้น prod ได้
ก่อนเริ่มงาน vs เริ่มงาน
ก่อนเริ่มงาน
ก่อนมาทำงานเรารู้ไม่กี่อย่างเองในการเขียนโปรแกรมผมก็เหมือนนักศึกษาในมหาลัยทั่วไป ไม่ได้เขียนโปรแกรมมาตั้งแต่เด็ก ไม่ได้เรียนในมหาลัยดัง เริ่มเขียนจริงๆก็ตอนเรียนอยู่มหาลัยปี 3 เริ่มจาก html css bootstrap (v3.3.7) เก่าป้ะ? javscript นิดหน่อย และก็ sql รู้แค่ก็พอทำเว็บเป็นโปรเจคจบให้เราจบจากมหาลัยได้ละ พอจบมาก็ต้องหาความรู้เพิ่มเรื่อง react, react native, nodejs ลองใช้ firebase ด้วยเหตุผลที่ต้องศีกษาก็ตือ รับงานเขียน app มานี้แหละใช้ react native + firebase ใช้เวลาทำอยู่หลายเดือนกว่าจะจบงานได้
เริ่มงาน
พอมาทำงานเราจะรู้แค่เรื่องการเขียนโปรแกรมไม่ได้ละ เราควรจะรู้เรื่องธุรกิจด้วย เพื่อให้เราเข้าใจสิ่งที่เรากำลังจะเขียน แต่เรื่องเทคนิคก็ยังต้องหาความรู้เพิ่มอยู่เรื่อยๆ สิ่งที่ได้ยินบ่อยๆก็คือ serverless, ec2, lambda, nginx, pm2, docker