Git101 – Getting Started

หลังจากโพสต์ที่แล้ว เราได้ทำความรู้จักกับ git กันแล้วว่าคืออะไร? ใน Introduction to git และคงจะรู้เหตุผลกันพอสมควรเลยทีเดียว.. ว่าทำไมเราถึงต้องใช้ git เพื่อทำให้ชีวิตการเขียนโค้ดดีขึ้น

วันนี้เราจะมาเจาะลึกลงอีกสักเล็กน้อย ในเมื่อเรามี motivation ที่จะใช้ git แล้ว.. เราจะต้องเริ่มยังไง ซึ่งโพสต์นี้ จะเป็นแนวทางสำหรับผู้ที่เริ่มต้นศึกษา git นะจ๊ะ😀

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

Github.com

1

ข้อดีของ github ก็คือ ฟรี!! ใครบ้างล่ะไม่ชอบของฟรี ฮ่าๆๆๆ แต่ของฟรีนั้น ก็อาจจะมีข้อจำกัดหลายๆ อย่าง ที่หลายๆ คนอาจจะซีเรียส นั่นคือ.. โค้ดของเรามันจะเป็นแบบ public ถ้าใครซีเรียสข้อนี้ ก็อาจมี choices อื่นๆ ให้เลือกกันอีกเยอะแยะเลยค่ะ

Bitbucket.org

2

ข้อดี ของ bitbucket คือ เราสามารถเก็บ project ของเราแบบ private ได้แบบฟรีๆ นั่นเอง แต่ก็มีข้อจำกัดอยู่ตรงที่ คนที่จะเข้าถึง private repository ได้นั้น จะจำกัดไปเกิน 5 คนค่ะ ถ้าเกินกว่านั้นจะต้องเสียตังค์อยู่ดี เพราะฉะนั้น ถ้าเป็นโปรเจกต์ที่ทำร่วมกันหลายๆ คน มากกว่า 5 คน ก็คงจะไม่เหมาะกับ bitbucket

GitLab.com

3

โอ้วแม่เจ้า.. ทำไมเราเข้าไปหน้าแรกถึงกับอึ้ง ขอสารภาพเลยค่ะ ไม่เคยได้ยิน gitlab มาก่อนเลย และแน่นอนว่าไม่เคยได้ใช้ด้วย .. แต่เค้าโฆษณาในหน้าแรกเลยนะ

…To get a free account with unlimited public and private repositories and unlimited collaborators…

ฮะ???? จริงป้ะเนี่ย? ดีใจเข่าทรุดค่ะ เอาไว้เดี๋ยวไปลองเล่นดู แล้วจะมาบอกต่อนะคะ ว่าเค้าดีจริงอย่างที่โม้ไว้มั้ย? ฮ่าๆๆๆๆ เอาเป็นว่า gitlab ก็เป็นอีกทางเลือกหนึ่งที่ดีทีเดียวสำหรับคนที่ต้องการให้ project เป็นแบบ private และเป็นโปรเจกต์ใหญ่ๆ ทำงานกันหลายคนค่ะ

และอื่นๆ อีกเยอะแยะมากมาย – Public Git hosting sites ลองเปรียบเทียบกัน แล้วเลือกได้ตามใจชอบเลยค่ะ

git_hosting

 

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

สำหรับใครที่ใช้ ios ก็ไม่มีอะไรมว๊ากกก เพียงแค่เปิด terminal ขึ้นมา แล้วก็พิมพ์คำสั่งเล็กๆ น้อยๆ เท่านั้น แต่สำหรับ windows ทำไมมันช่างดูซับซ้อนเหลื๊อเกินน.. เอาเป็นว่า ในโพสต์นี้ เราจะขอแนะไปสำหรับคนทีใช้ windows ละกันนะคะ  อาจจะมีความรู้เบื้องต้นเกี่ยวกับ.. คำสั่ง shell  นิดหน่อยนะคะ ซึ่งอาจจะเปรียบเทียบว่า shell ก็เหมือนกับอากาศ.. ถึงจะสัมผัสไม่ได้ แต่รู้ว่ามีอยู่จริง !  (ใจเย็นๆ นะคะ อย่าเพิ่ง close tab บน browser นะ โพสต์นี้ ถึงจะสาระน้อย แต่ก็ยังพอมีอยู่บ้าง… T-T)

สำหรับคนที่ใช้ windows ที่อาจจะรู้สึกน้อยเนื้อต่ำใจนิดนึง ทำไมทำอะไรก็ดูยากเย็นเหลือเกิน ไม่ว่าจะลงนู่นลงนี่ ก็ช้าถึงช้ามว๊ากกกกก และแล้ววันนี้เราก็ไปแสวงหามาจนได้ค่ะ.. อันที่จริงก็ไม่ได้ยากเย็นในการค้นหา tool ที่เกี่ยวกับ git เลยค่ะ มีเยอะแยะเต็มไปหมดบนโลก internet อยากได้อะไรก็หาได้ง่ายมากจริงๆ เราก็พิมพ์ไปเลยค่ะ git for windows ฟริ๊งงงงส์ !!! results เยอะเวอร์ เลือกไม่ถูก ก็เลือกอันแรกนะ ฮ่าๆๆๆ และอันที่เราเลือกมา ก็ได้มาจากลิงค์นี้ค่ะ – http://msysgit.github.io/

Untitled-1

สำหรับ git for windows หรือ Git-SCM จะมีสองแบบให้เลือกใช้ตามความถนัดของแต่ละคนเลยนะ ทั้งแบบ Bash และแบบ GUI .. แต่ แต่ แต่ แต่ แต่ .. เราจะใช้กันแบบ Bash เพื่อความสนุกสนานอ่ะนะ  ทีนี้ก็ทำแค่ดาวน์โหลดลงมา แล้วก็ติดตั้งธรรมดา หรือจะ config อะไร ก็ได้เลยค่ะ หลังจากนั้น โอ้เย้ เราก็มาเริ่มใช้งานกันได้เลย..

ทีนี้ หน้าตาของ Git Bash เป็นยังไง? ก็ธรรมดาๆ คล้ายๆ กับ command line ทั่วไป แต่ก็มีสีสันอยู่บ้าง นอกจากสีขาวและดำ ก็ยังมีสีเขียว สีเหลือง สีน้ำเงิน ฯลฯ เอาเป็นว่าเป็นสีที่พอจะบอกความแตกต่างระหว่างไฟล์ โฟลเดอร์ หรือพวก directory ต่างๆ ได้ ให้เราไม่งงจนเกินไป

Untitled-1

ทีนี้.. ในเมื่อเรามีทั้ง git repository ที่อาจจะแอบสมัครไว้นานแล้ว แต่ไม่เคยได้ใช้ หรือเพิ่งจะสมัครตอนที่อ่านโพสต์นี้ หรืออาจจะอ่านเพลิ๊นเพลิน จนลืมสมัคร ฮ่าๆๆๆ (ให้เวลาไปสมัคร git hosting ไหนก็ได้ตามความ need ของแต่ละคนเลยนะคะ แล้วกลับมาว่ากันต่อนะจ๊ะ😀 ) และอีกอย่างเราก็มี git-scm เรียบร้อยแล้ว.. ทีนี้ล่ะก็.. เราก็จะใช้งาน git เพื่อมาจัดการกับโค้ดของเราได้จริงๆ ซักทีนะ .. แต่บางทีเส้นทางการใช้ git อาจจะต้องสร้าง connection เล็กน้อย ให้เครื่องของเราได้ทำความรู้จักกับ git ซึ่งจะใช้

git init

เราจะได้ไฟล์ .git มา ซึ่งทำให้เรารู้ว่า เครื่องฉันรู้จัก git ล่ะน้าาา ..🙂  ต่อไปก็ต้องทำให้ git บนเครื่องเรารู้จักกับ git repository ที่เราได้สร้างไว้แล้ว.. วิธีการสร้าง connection พวกนี้จะมีอยู่ในส่วน help ของ git hosting ที่เราเลือกใช้ ซึ่งเราก็ทำตามวิธีได้เลย อย่างเช่น บน help.github.com

หลังจากที่เราทำตามขั้นตอนการ generate ssh key เรียบร้อยแล้ว .. ทีนี้เราก็ใช้งาน git ได้อย่างใจหวังแล้ว แต่การใช้งาน git จะต้องรู้คำสั่งของ git ซึ่งก็มี tutorial เยอะแยะเลยทีเดียว และที่จะแนะนำกันวันนี้ ก็ไม่พ้นเจ้าเดิมก็คือ github อีกแล้วค่ะ แหมๆ.. มีแต่ tools ดีๆ ให้ใช้ทั้งนั้นเลยโนะ อิอิ ~ ซึ่งจะขอแนะนำให้ใช้ tryGit by github นะ เราชอบอ่ะ มันแบบ.. step by step ดี  แถมยังมีคำอธิบายแต่ละคำสั่งด้วย แล้วเราก็รู้ว่ามันใช้งานยังไงอีกด้วย ค่อนข้างละเอียดเลยล่ะ เพราะเราได้เห็นผลลัพธ์ของแต่ละคำสั่งจริงๆ สุดยอดไปเลย !!

ขอบคุณทุกคนครั้งแล้วครั้งเล่าค่ะ ที่อุตส่าห์นั่งอ่าน นอนอ่าน ยืนอ่าน เดินอ่าน วิ่งอ่านจนจบถึงตรงนี้ และที่ขาดไม่ได้เลย ต้องขอบคุณมากๆ สำหรับ references ทุกอันที่ blogger/developer ทั้งหลาย ไม่หยุดที่จะแบ่งปันความรู้กันบนโลกออนไลน์ มันเป็นแหล่งความรู้ที่ดีที่สุดเลยล่ะ😀

 

 

References:

git101 – Introduction to git ฉบับเด็ก (อยาก) Geek

วันนี้ช่างเป็นวันที่อากาศแสนจะสดใส เมฆฝนลอยอยู่ต่ำบดบังแสงแดดยามเช้าซะเหลือเกิน .. ฮ่าๆๆๆ กะตั๊กจึงจำเป็นต้องลากสังขารตัวเองออกจากเตียง แล้วมาทำสิ่งที่ควรจะทำ ก่อนความขี้เกียจจะมีไปมากกว่านี้..

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

เอาล่ะ.. ทีนี้หลายคนคงสงสัยว่า  “git” คืออะไร? เคยได้ยินแต่ github มันอันเดียวกันหรือเปล่า? ใช้ยังไงนะ? เห็นคนนู้นคนนี้ใช้กัน แต่เราล่ะทำไม่เป็น วันนี้เราจะมาชี้แจงแถลงไขกันแบบ step by step และหวังว่าทุกคนคงเข้าใจไม่ยากจนเกินไปนะคะ🙂

logo

git คืออะไร?

git เป็น distributed revision control หรือ source code management (SCM) หรือที่รู้จักกันคือ เป็น version control นั่นเอง ถ้าแปลกันเป็นภาษาไทยแล้ว git ก็คือระบบที่ใช้ในการควบคุม จัดการ ฯลฯ การเปลี่ยนแปลง อัพเดทเวอร์ชั่นของโค้ดที่เราเขียนกันค่ะ แทนที่เราจะมานั่งเปลี่ยนชื่อไฟล์ว่าเป็นเวอร์ชั่นอะไร ถ้าเห็นบ่อยๆ คือ ใส่วันที่ลงไปกับชื่อไฟล์ เพื่อดูว่าไฟล์ไหนที่เป็นเวอร์ชั่นล่าสุดกันแน่ ทำไปทำมาเริ่มงงเอง สรุปวันนึงทำหลายเวอร์ชั่นซะงั้น.. ไม่พ้นต้องใส่เวลาลงไปด้วย ดูแล้วทำไมชีวิตที่ดูเหมือนจะ Geek ช่างยุ่งยากและยุ่งเหยิงซะเหลือเกิน.. ถึงเวลาแล้ว.. ที่เราควรจะปรับเปลี่ยนวิถีชีวิตของการเขียนโค้ดให้มันดูดีมีความ Geek มากขึ้น นั่นคือการใช้ git !!!!~

Github2

อีกอย่างหนึ่งที่เราเองเคยสงสัย และไม่เข้าใจจริงๆ ว่า git กับ github เหมือนกันหรือต่างกันอะไรยังไง? วันนี้ต้องขอบอกให้เข้าใจตรงกันว่า.. git มิใช่ github นะเคอะ.. ! อย่างที่บอกไปแล้วว่า git เป็น  version control แต่เจ้า github เนี๊ยะ.. เป็นเพียงแค่ git repository เป็นผุ้ให้บริการในการเก็บ source code เท่านั้นเองนะจ๊ะ

ทำไมต้องใช้ git?

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

น้องในทีม: “พี่เนย ผมลบโค้ดทิ้งผิดไฟล์ ตอนนี้โปรเจครันไม่ได้ ทำยังไงดีพี่ ผมขอโทษ”

เนยตอบอย่างผ่อนคลาย: “สัด” …​ เอ้ยไม่ใช่ ตอบไปว่า “ไม่เป็นไร เดี๋ยวเอาไฟล์กลับมาให้ ใช้ git อยู่แล้ว ขำๆ”

credit – Software Developer ทั้งหลาย จงใช้ git เพื่อชีวิตที่ยั่งยืน

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

เราใช้อะไรทำ version control ก่อนมารู้จัก git รู้มั้ย ?????

คำตอบคือ.. Dropbox จ่ะ และความคิดตอนนั้นคือ.. dropbox เจ๋งว่ะ แก้งานพร้อมกันได้ด้วย แม่มมม.. อัพเดทให้เพื่อนได้เลยเจ๋งฝุดๆ ขอเพียงมี internet เท่านั้น เพื่อนก็จะเห็นว่าเราอัพเดทไปขนาดไหนล้าววว.. เฟี้ยวววเงาะจุงเบย จุ๊บุๆ //เกลียดพวกศัพท์พวกนี้จุง T~T … และเรากับเพื่อนในกลุ่มก็ได้ทำงานกันอย่างเพลิดเพลินเจริญใจ ต่างคนต่างทำในไฟล์เดียวกัน.. ฮะ??? อะไรนะ?? ไฟล์เดียวกัน และแล้ว.. เหตุการณ์ที่ไม่คาดฝันจึงเกิดขึ้น.. ฟริ๊งงงงงงส์!!!~~~ เพื่อนเขียนโค้ดแล้วเซฟไฟล์ ซึ่งเป็นไฟล์เดียวกับที่เราเปิดอยู่.. และเราก็เขียนโค้ดของเราอยู่ยังไม่ได้เซฟ แล้วคือบับ.. มันขึ้นมาให้ว่ามันจะเปิดไฟล์ที่อัพเดทแล้วให้เรา.. ซึ่งแน่ๆนอนๆ ว่าไม่มีโค้ดเราอยู่.. อีเควี่ยยยยย !!! ซอรี่ในความหยาบคาย T^T แต่ถ้าอยู่ ณ จุดนั้น บางทีอาจทำตัวเหมือนรูปด้านล่าง

rsz_frustrated

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

git ทำอะไรได้บ้าง?

ความสามารถหลักๆ ของ git นั่นคือการทำ version control เพราะฉะนั้น.. ก็ต้องทำ version control นั่นเองค่ะ (แล้วจะบอกสองรอบทำไม… -_-) ทีนี้มันทำอะไรอยู่ภายในกรอบของคำว่า version control มันทำเยอะเลยทีเดียวค่ะ ซึ่งเราจะลองลิสต์มาและอธิบายให้ฟังแบบไม่ต้องลงลึกมากละกันนะคะ

  1. เป็นแหล่งเก็บ source code ขนาดใหญ่มหึมา ไม่ว่า project ของเราจะใหญ่แค่ไหน? ก็คงไม่เปลืองพื้นที่การจัดเก็บภายในคอมพิวเตอร์ของเรา
  2. สามารถ backup โค้ดเวอร์ชั่นนู่นนั่นนี่ที่เราและเพื่อนๆ ในทีมเขียน ไม่ว่าจะถูกจะผิดอะไรยังไง ก็สามารถโยกไปย้ายมาได้ ไม่เอาเวอร์ชั่นใหม่นี้ละ เขียนผิด ก็ย้อนกลับไปเวอร์ชั่นก่อนหน้านั้นได้
  3. หลักสำคัญของ git ก็คือ distributed revision control มันก็เหมือนการกระจายความเสี่ยง ถ้าเครื่อง server เครื่องแรกพัง ก็ยังคงมี server เครื่องที่ 2 ถ้า server เครื่องที่ 2 พัง ก็ยังคงมีเครืองที่ 3 ซึ่งเครื่องเราก็ถือว่าเป็น server ตัวหนึ่งด้วย ถ้าเครื่องเพื่อนพัง ก็ยังมีเครื่องเราอยู่สินะ เย้.. แน่นอนว่าโค้ดเราจะอยู่รอดปลอดภัยอย่างแน่นอน ตราบใดที่เรายังคงมี internet และไฟฟ้าใช้9IW5z
  4. เราสามารถทำงานร่วมกันกับเพื่อนๆ ได้ ภายใน repository เดียวกัน คนนู้นทำส่วนนี้ คนนี้ทำส่วนโน้น สามารถแยกกันไปทำได้ โดยการแตก branch ออกไป แล้วนำมารวมกันทีหลังได้ โดยไม่ต้องกังวลให้หัวระเบิดว่าโค้ดที่เราเขียนจะหายมั้ย? (แต่อันที่จริงใช้ git ก็เคยหายนะ แต่มันคงไม่หายกันง่ายๆ หรอก ถ้าเราไม่เอ๋อสุดๆ ฮ่าๆๆๆ) ถ้าโค้ดเรากับโค้ดเพื่อน conflict กัน มันก็ขึ้นว่า conflict หลังจากนั้นเราก็เรียกเพื่อนมาดูว่าโค้ดไหนต้องการเก็บไว้ ตรงไหนไม่ต้องเก็บ.. หูยยย ดูง๊ายง่าย
  5. สามารถดูการเปลี่ยนแปลงของโค้ดที่เราเขียนได้เรื่อยๆ เผื่อไว้ตอนมีคนมาถามว่าเราทำอะไรไปใหม่แล้วบ้าง.. แล้วเราเป็นบุคคลขี้ลืม (อันนี้ชีวิตจริง) มีประโยชน์มากจริงๆ ค่ะ ฮ่าๆๆ
  6. สามารถ track ได้ว่าใครทำโค้ดไหนได้ .. หมดปัญหาข้อแก้ตัวสำหรับการทำงานพลาด ฮ่าๆๆๆๆ อันที่จริงแล้ว มันคงไม่ใช่ประเด็นหลักของการ track หรอกนะ แต่มันเป็นผลพลอยได้ จริงๆ คือ มันคงจะต้องการสื่อว่าใครทำอันไหน จะได้ตามตัวให้ถามกันเวลา conflict ถูก
  7. อีกอย่างหนึ่ง ที่สุดยอดแห่งเทพของ git คือ การพักโค้ดของเราไว้ก่อน ในกรณีที่เรายังไม่ต้องการอัพเดทโค้ดของเราลงบน repository แต่ต้องการดึงโค้ดส่วนของเพื่อนลงมาใช้ก่อน

เอาล่ะ.. เราคงเห็นประโยชน์จากการใช้ git ในการทำ version control มาพอสมควรแล้ว ในโพสต์ต่อไป คงจะมีโอกาสในการเริ่มแนะนำการใช้ git จริงๆ จังๆ นะ 555 .. หวังว่าทุกคนคงจะได้ motivation ในการเปลี่ยนแปลงชีวิตคนอยากจะ geek ให้ดีขึ้น

ขอบคุณทุกคนค่ะ ที่มีความอดทนในการอ่านโพสต์ที่ย๊าวยาว และหวังว่าจะได้ความรู้ไม่มากก็น้อยนะคะ😀

references

Happy Time to be Part of Pronto Marketing

ใครๆ ก็ว่า.. ช่วงเวลาแห่งความสุขมักจะผ่านไปเร็วเสมอ..

เราเองก็เหมือนกัน และนี่ไม่ใช่แค่ครั้งแรกของการพิสูจน์ว่า..

เวลาแห่งความสุข มันผ่านไปเร็วจริงๆ

.

.

.

มาดูกันนะ ว่า “ช่วงเวลาแห่งความสุข” ที่บริษัท Pronto Marketing เป็นอย่างไร เราจะลองไล่ดูว่าระหว่างวันเราได้ทำอะไรบ้าง?

เราได้ Try to be Geek ด้วยแหละ โดยการทำ Kata ทุกเช้า 

สำหรับใครอยากรู้ว่า Kata มันคืออะไร? กลับไปอ่านของเราได้นะ😀

วันแรกของการฝึกงาน เราได้ทำโจทย์ FizzBuzz ถ้าใครอยากรู้รายละเอียดของโจทย์นี้ว่ามันเป็นยังไง เดี๋ยวเราจะกลับมาเขียนอีกวันหลังนะจ๊ะ อดใจรอกันนิดนึง  อิอิ

อันที่จริง.. เราก็ไม่เคยรู้มาก่อนหรอก ว่าการทำ Kata มันเป็นยังไง ก็เพิ่งได้เขียนรู้จากที่นี่ ว่ามันลับคมดาบเราได้จริงๆ และมันมีประโยชน์มากๆ ในการฝึกวิธีคิดโปรแกรมมิ่งของเรา หลายๆ แบบ .. แบบไหนดีที่สุด ก็ใช้อันนั้น ซึ่งนอกจากจะทำให้โค้ดของเราสวยงาม อ่านง่าย เข้าใจง่าย ลดเวลาในการทำงานของโปรแกรมแล้ว ยังฝึกให้เรากลายเป็นมนุษย์ที่มีความรอบคอบ ไม่ละเลยกับการเสียเวลาลองพิจารณา ถ้าหากเปลี่ยนแปลงอะไรนิดหน่อย มันก็จะดีขึ้น ถึงจะเป็นสิ่งเล็กๆ น้อยๆ แต่มันก็ดีขึ้นกว่าเดิม //โห.. ช่างเป็นบริษัทที่สอดแทรกคุณธรรม..นำชีวิตจริงๆ ค่ะ

ตอนแรกๆ ของการทำ Kata เราก็ได้ทำคนเดียว.. แต่หลังๆ มา มีเพื่อนๆ เข้ามาฝึกงานเพิ่ม เย้ๆๆๆ เราก็ได้ทำ Kata แบบ Pair กับเพื่อนด้วยล่ะ อิอิ

CREDIT - P'KAN

CREDIT – P’KAN

.

.

อีกอย่างที่เราได้ Try to be Geek คือ การทำ CodeDojo ทุกวันศุกร์

CREDIT - P'KAN

CREDIT – P’KAN

การทำ Code Dojo ก็คล้ายๆ กับการทำ Kata คือการฝึกลับคมดาบเช่นกัน แต่ต่างกันตรงที่.. เราจะไม่ใช่แค่ Pair Programming ละ แต่จะมาร่วมกันทำเป็นกลุ่ม มี 3 คน ก็ทำ dojo กันทั้ง 3 คน  ถ้ามี 5 คน ก็ทำ dojo กันทั้ง 5 คนนั่นแหละค่า.. วิธีการทำคือผลัดกันทำทีละคน.. process ของการทำก็คล้ายๆ กับ Kata นั่นคือ “Test > Code > Refactor”

ประโยชน์ของมันคือ..​ เราทั้งหมดจะได้มาพิจารณา.. “โค้ดของเรา” ด้วยกัน ใครที่เป็นคนจับคีย์บอร์ดพิมพ์โค้ดอยู่ คนนั้นจะต้องอธิบายสิ่งที่เราทำ ให้เพื่อนๆ ทุกคนฟัง คือ.. พิมพ์ไป พูดไป.. เพราะฉะนั้น เราจะได้มีสติกับสิ่งที่เราทำ และต้องมีความเข้าใจกับสิ่งที่เราทำ ไม่ใช่เพียงแค่ท่องจำโค้ด แล้วมาพิมพ์ๆๆๆ ไม่มีประโยชน์ นอกจากนี้ ก็ยังฝึก communication skill อีก การพูด การอธิบาย เอาเป็นว่า Code Dojo นี่ ยิงปืนนัดเดียว ได้นกหลายตัว..​ ใครสนใจอยากจะลองทำดู แบบ Try to be Geek ก็ลองเอาวิธีการ Code Dojo ไปใช้ดูนะคะ ประโยชน์เยอะมากๆ

.

.

ได้เรียนรู้วิถีการทำงานแบบ Agile

ดูรูปข้างล่างนี้ไว้นะคะ รูปน่าร๊ากกกก โมเอะ มุ้งมิ้งฟรุ้งฟริ้ง … คงจะมีกำลังใจในการทำความเข้าใจกับ Agile โดยใช้ Scrum ในการ implement นะจ๊ะ

เราจะเรียกการทำงานใน 1 iteration ของ scrum ว่า.. ว่า ว่า ว่า ว่าาาาา า.. “Sprint” นะคะ โดยใน 1 sprint ของเราจะเท่ากับ 2 weeks (บางที่ อาจจะมีความยาวของ sprint สั้นกว่านี้ หรือยาวกว่านี้ก็ได้ แต่จะไม่เกิน 1 เดือน) ภายใน 1 sprint ก็จะมีกิจกรรมต่างๆ ตามรูปข้างบน เดี๋ยวเราจะมาดูกันว่า บรรยากาศของจริงจะเป็นยังไง

วันแรกของ sprint เราจะมีกิจกรรมที่เรียกว่า “Sprint Planing” ทั้ง part 1 และ part 2 เป็นการเลือกงานมาทำภายใน 1 sprint นี้ พร้อมกับ estimate คะแนนให้กับงานแต่ละงาน นอกจากนี้ก็ยังจะมาช่วยกันดูรายละเอียดของแต่ละงานด้วย ว่ามีรายละเอียดของการจะทำงานนั้นให้เสร็จสมบูรณ์ มีอะไรบ้าง..

IMG_0552

CREDIT: P’KAN

 

หลังจากที่เรา planing เสร็จแล้ว ก็จะเอางานแต่ละงานเขียนใส่ sticky note แล้วแปะไว้ที่ physical board แต่นอกจากเราจะใช้ physical board แล้ว ก็ยังมี electronic board อีกด้วย เผื่อเอาไว้ใครอยากจะกลับบ้านไปอ่านรายละเอียดแต่ละการ์ดแบบง่ายๆ สะดวกดี อิอิ

orig-21285268

CREDIT: P’KAN

 

หลังจากการทำ sprint planning แล้ว วันต่อๆ ไป ก็จะมี daily meeting ที่เรียกว่า “Standup Meeting” เป็นช่วงเวลาที่ตื่นเต้นที่สุด ทุกๆ วัน คือเราจะสั่นตลอด ตื่นเต้นบ้างไม่ตื่นเต้นบ้าง บางวันก็ไม่ใช่เพราะตื่นเต้น.. แต่เป็นเพราะ แอร์ลงหัว.. //ฉันหนาวเหลือเกินนนน.. ~ ~ ตึกโป๊ะ!!! เราก็จะต้องพูดกันเป็นภาษาอังกฤษ ว่าเมื่อวานทำอะไรมาบ้าง ติดปัญหาอะไรมั้ย? แล้ววันนี้จะทำอะไรต่อไป?

IMG_0551

CREDIT: P’KAN

 

หลังจาก standup meeting จบแล้ว เราก็จะมาวาดกราฟที่ Burn Down Chart หน้าตาก็ประมาณว่าเป็น Trend ถ้ามีการ์ดไหนทำเสร็จแล้ว ก็จะหัก point ของการ์ดนั้นออกจาก point ของการ์ดทั้งหมด ถ้ากราฟลงได้อย่างสวยงามคือเป็นเส้นทแยงมุม ซึ่งเป็น.. “เส้นในอุดมคติ” !!! การทำงานจริงๆ มันไม่ใช่แบบนั้น มันก็เลี้ยวซ้ายเลี้ยวขวา ออกนอกเส้นทางบ้าง อาจจะไปถึงจุดหมายได้ทันเวลา หรือไม่ทัน แล้วแต่ sprint

IMG_0555

CREDIT: P’KAN

 

แล้วก็เข้าสู่โหมดการทำงานปกติในแต่ละวัน

กิจกรรมภายใน  sprint ยังมีอีกนะ …

Sprint Review ที่เป็นการให้ทุกๆ คนในทีม คุยกับ stake holder ว่าที่ผ่านมามีอะไรคืบหน้าบ้าง และใน sprint นี้ จะมีอะไรอัพเดทอีกบ้าง

Backlog Refinement คล้ายๆ กับการทำ Sprint Planning คือเราจะเข้าไปอยู่ในห้อง war room เหมือนกัน มานั่งดูการ์ดใน electronic board แล้วก็มาช่วยกันดูว่า จำนวนงานที่เหลือ เหมาะสมกับระยะเวลาการทำงานใน sprint ที่เหลือหรือเปล่า? เวลาเหลือเยอะ ก็อาจจะเลือกงานมาทำเพิ่ม ไม่ได้กำหนดว่าจะเลือกกี่งาน เราจะเลือกเข้ามาเพิ่มก้ได้ หรือไม่เพิ่มก็ได้

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

S__6848525

CREDIT: P’KAN

ส่วนใครที่อยากจะรู้รายละเอียดของ Agile แบบ Scrum เพิ่มเติม ติดตามได้ในโพสต์ต่อๆ ไป จ้าาาา หรือจะลองหาหนังสือมาอ่านก็ได้นะ เยอะแยะมากมายจริงๆ หรือถ้าไม่อยากอ่านเป็นหนังสือ ก็ลอง search ใน google เข้าไป.. ฮ่าๆๆๆ คนพูดถึง Agile เยอะมว๊ากกกกก

เราแอบไป search ดู แล้วแว๊บไปเจอรูปนี้..​ มันช่างเป็นเรื่องจริงในการทำงานของสังคมไทย ไม่ใช่เฉพาะงานสาย IT นะ แต่รวมไปถึงงานสายอื่นๆ ด้วย.. เพราะฉะนั้นมาใช้ Agile กันก็ดีนะคะ environment ของการทำงานจะได้ดีขึ้น🙂

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

  • Vagrant
  • Elastic Search
  • Fabric
  • Test Driven Development (TDD)
  • Unit Test
  • Acceptance Test Driven Development (ATDD)
  • Cucumber
  • Capybara
  • Git
  • Continuous Integration (CI)
  • Django
  • Virtual Environment
  • etc…

เราว่าเราอาจจะลิสต์ไม่หมดนะ ฮ่าๆๆๆ บอกแล้วว่าเยอะจริงๆ กำไรจริงๆ

.

.

และแล้ว.. ก็ได้ออกสู่โลกที่กว้างคือ.. ได้ไปงาน Agile Thailand 2014 และไม่ต้องห่วงสำหรับการได้ไปฟรีๆ ฮ่าๆๆๆ แต่ก่อนจะออกไปสู่โลกกว้าง ก็ได้แปลงกายเป็น.. สาวโรงงานนรก ซักนิดนึง

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

และแล้วเรื่องไม่คาดฝันก็เกิดขึ้น.. คือ.. เปิด section กันเองด้วยจ้ะ -_- แหะๆ คือไม่ได้เตรียมอัลไล? แล้วน้องๆ จะพูดอัลไล? พี่ๆ ก็แนะนำว่าพูดถึงเรื่องการเป็น Intern in Agile Team จิๆๆๆ ฮ่าๆๆๆ สรุปเหล่าสาวๆ lovely interns และอดีต lovely intern รวมทั้งหมด 4 ชีวิต จะพูดแบบกระทันหัน.. //นึกถึงตอนเรียนวิชาภาษาไทย ตอนม.5 เรียนเรื่องการพูดต่อหน้าสาธารณะชนแบบกระทันหัน !!! อื้มมม.. ได้ใช้จริงๆ เลยนะ ฮ่าๆๆๆๆ แต่ถึงจะกระทันหันมากขนาดไหน เราก็พูดจนหมดเวลานะจ๊ะ อร๊ายยย เขิลจัง..​ เก่งจุง.. ถึงจะรู้เรื่องบ้างไม่รู้เรื่องบ้าง แต่ก็สนุกดีนะ ที่ได้ทำสิ่งที่ไม่ค่อยได้ทำแบบนี้ อิอิ

10273099_661082433946052_2187685880458679825_o

CREDIT: P’WINDY

10378000_562526940533564_3019555622172377570_n

CREDIT – JENIZ

 

หลังจาก Work Hard แล้วเราก็จะต้อง “Play Harderrrrrrr..” //จริงๆ เกือบจะกลายเป็น Play Hardest เลยก็เป็นได้

.

.

เริ่มจาก Snack Time ทุกวัน เริ่มตั้งแต่เวลา 15.00 น. พอนาฬิกาค่อยๆ เขยิบไปที่เวลา 15.00 น. หรือ 3.00 PM ของทุกวัน ทุกๆ คนจะเริ่มมีอาการกระอักกระอ่วนในท้อง เหมือนกับต้องการสิ่งใดสิ่งหนึ่งมาเติมเต็มท้องไส้ที่เริ่มจะว่างเปล่า ฮ่าๆๆ ไม่ต้องห่วงเลยว่ามาอยู่ที่นี่แล้วจะอดอยากปากแห้ง หิวโหย ขอบอกว่าเราเป็นคนที่น้ำหนักขึ้นยากมากๆ ตอนนี้ขึ้นมาละจ้ะ กิโลนึง สุดยอด หน้ากลมเลย เซ็ง T^T

ต่อให้หิวขึ้นไปอีก กับ Company Meeting and Sabai Sabai Party ทุกวันศุกร์ที่ 2 ของเดือน อันนี้งานใหญ่ รวมทั้งบริษัท อิ่มหนำสำราญมากๆๆๆๆ หุหุ พิมพ์ไป เลือกรูปไป ก็หิวไป ทำร้ายกันมากเลยนะโพสต์นี้..

CREDIT - JENIZ

CREDIT – JENIZ

CREDIT - JENIZ

CREDIT – JENIZ

 

Enjoy Eating in R&D Team ทั้งมีโอกาสและไม่มีโอกาสก็จะหาโอกาสกินให้ได้ ฮ่าๆๆ ช่วงเวลาแห่งการเสียพื้นที่ว่างในกระเพาะ อิ่มมากๆ ส่วนใหญ่จะเน้นบุฟเฟ่ต์ กินเข้าไปๆ น้ำหนักไม่ขึ้นให้มันรู้ไปสินะ ทั้งแซลม่อน พิซซ่า ชาบู เคเอฟซี ขอบอกตามตรง ตอนนี้หิวมากค่ะ มาม่าแพร๊ปปปส์..

CREDIT - JENIZ

CREDIT – JENIZ

CREDIT - JENIZ

CREDIT – JENIZ

CREDIT - JENIZ

CREDIT – JENIZ

CREDIT - JENIZ

CREDIT – JENIZ

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

CREDIT - JENIZ

CREDIT – JENIZ

10521173_584058255047099_8210658403153970126_n

CREDIT – JENIZ

 

อีกอย่างของการได้เป็น intern ที่นี่ คงจะเป็นแรงบรรดาลใจให้พี่ๆ เปิด page “Girls Who Dev” ก็สาวๆ developer ใน pronto มีแต่น่ารักๆ ทั้งนั้นนิ่.. กร๊ากๆๆๆๆๆๆๆๆ

Screen Shot 2557-08-03 at 10.31.34 PM

เข้าไป LIKE กันได้แรงๆ ค่ะ ที่ https://www.facebook.com/girlswhodev

 

W E  . . A R E . . L O V E L Y . . T E A M ! !

CREDIT: P'KAN

CREDIT: P’KAN

 

 

ขอบคุณรูปภาพจากทุกๆ คนใน R&D Lovely Team และความอบอุ่น ความน่าร๊ากกที่ตลบอบอวล ขอบคุณพี่ๆ ทุกคนที่สอนนู่นนี่นั่นอยู่ตลอดเวลา เหมือนกับเราทุกคนเป็นครอบครัวเดียวกัน

 

ถ้ากะตั๊กเรียนจบแล้ว กะตั๊กจะกลับไปตามหลอกหลอน.. !! พี่ๆ อย่าพึ่งผวานะคะ เราได้ทำบุญร่วมกันมาแล้ว ยังไงก็คงได้เจอกันอีก เนื้อคู่กันแล้ว ย่อมไม่แคล้วกันนะ ฮ่าๆๆๆ

 

รักที่สุด จุ๊ฟๆๆๆ

กะตั๊ก

 

Reference:

เป็นไงมาไง? ถึงได้ฝึกงานที่ Pronto Marketing

เราเขียนโพสต์นี้ขึ้นมา เผื่อใครอยากจะรู้ว่า โอกาสที่ได้ฝึกงานที่  Pronto Marketing ของเรามันเริ่มจากจุดไหน?😀 นะ

.

.

.

.

นับตั้งแต่วันแรกเห็น link รับสมัครนิสิตนักศึกษาฝึกงาน ตำแหน่ง Junior Software Engineer ของบริษัท Pronto Marketing ที่รุ่นพี่โพสต์ประกาศใน group comswu ใน facebook

บอกเลยว่าสนใจตั้งแต่เข้าไปอ่านรายละเอียด ผ่าน smartrecruiter ไม่รู้อะไรดลใจให้ตอนนั้นอยากจะทำอะไรเกี่ยวกับ web มาก อยาก dev web สุดๆ อาจเพราะเพิ่งเรียนวิชา แล้วรัก และประทับใจมากๆ หรืออีกอย่างที่อาจจะดลใจให้สมัครที่นี่ คงเป็นเพราะ เป็นบริษัทที่มีฝรั่งเยอะดี 555 ก็แบบว่า… รู้ว่าเราไม่ได้เก่งภาษาอังกฤษอะไรมากมาย speak English ก็พอถูๆ ไถๆ ไปได้ แบบ งงๆ ฮ่าๆๆๆ แต่ประมาณว่าชอบพูด ก็เลยอยากจะ improve ตัวเองซักหน่อย ไหนๆ ก็ไหนๆ ลองสมัครดูแล้วกัน ไม่เสียหายอะไร..

หลังจากนั้น.. เราก็กรี๊สดังๆ ที่ห้องของตัวเอง.. มีฝรั่งคนนึง ส่งเมลกลับมาหา จากบริษัท Pronto Marketing ว่าให้ลองไปสัมภาษณ์ดู เราก็ถามเกี่ยวกับการสัมภาษณ์นิดๆ หน่อยๆ ว่าต้องเตรียมตัวยังไงบ้าง? แต่เราก็งงๆ ว่าทำไมเค้าถึงให้ส่งเมลไปถามอีกคน พอถามอีกคนอีกเรื่องนึง ก็ให้ส่งเมลไปถามอีกคน งงๆ 5555 แต่ก็คิดในใจ เออ.. เค้าคงแบ่งเป็นแผนก บลาๆๆ

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

สำหรับการเดินทางก็เดินทางง่ายมากๆๆ ไปบีทีเอสค่ะ ลงสถานีสะพานควาย แล้วเราก็นั่งมอเตอร์ไซค์เข้าไป ยี่สิบบาท บอกว่า ประดิพัทธ์ 17 จอดข้างหน้า 33 Space แล้วค่อยเดินเข้าไปตึกข้างหน้า ตึกแรกเลยค่ะ แลกบัตรแล้วบอกว่ามาบริษัทพรอนโต้

แล้วเราก็นั่งรอซักแปปนึง พี่ๆ กำลังมีมีตติ้งอะไรซักอย่างอยู่..

หลังจากนั้นพี่ๆ มีตติ้งเสร็จแล้ว.. เราก็นั่งสั่น แบบว่า.. ตื่นเต้น.. เพราะถ้าเราตื่นเต้นเราก็จะสั่น ฮ่าๆๆๆ สั่นแบบหยุดไม่ได้ ไม่รู้ทำไม กร๊ากๆๆ ตลกดี แล้วการสัมภาษณ์ก็ไม่ได้เป็นอย่างที่เราคิดไว้ ที่คิดไว้คือ คงจะมี HR ซักคนนึงมานั่งถามเราว่าเป็นไงมาไง มีความสามารถอะไร ชอบอะไร นู่นนี่นั่น ตามเสต็ปของ HR จะถาม แต่ที่นี่ มันไม่ใช่!! พี่ๆ ทุกคนที่อยู่ในทีม R&D หรือ Research and Development มานั่งสัมภาษณ์ OMG!!! ตื่นเต้นยิ่งกว่าเดิมค่ะ ฮ่าๆๆๆ งงด้วย ทำไมไม่ได้เป็นแบบที่เราคิดแว้.. แต่ไม่ใช่ว่าจะไม่ดีนะ ฮ่าๆๆ เราว่าเป็นกันเองดีมากๆ คือ.. ทุกคนคุยกับเราด้วยความเอ็นดู๊เอ็นดู เราก็แบ๊วๆ ใสๆ น่ารักๆ กร๊ากๆๆๆ ช่างเหมาะกันดีเหลือเกิน อิอิ นี่แหละ เราคลิกกับที่นี่และ เอาอะไรมาฉุดก็จะไม่ไปแน่ๆ

พี่ๆ ในทีมก็ถามว่าเราชอบอะไรที่เรียนมา .. บลาๆๆ จริงๆ ตอนนั้นเราก็ชอบหมด แต่เพิ่งเรียนเว็บมา ก็เลยจำได้ว่าชอบเว็บ ฮ่าๆๆๆ ชอบโปรแกรมมิ่งทุกอย่างแหละ อันที่จริง จริงๆ เราก็อยากรู้เหมือนกันนะ ว่าเราเหมาะกับอะไรมากกว่า .. ระหว่างทำเว็บ หรือเดฟจาวา .. พี่เค้าถามอะไรมา เราก็จะตอบไปอย่างที่คิด บางทีมันก็สับสนในตัวเองอยู่เหมือนกัน.. และพี่ๆ เค้าก็คุยกับเรานานมากๆ น่ารักทุกคนเลยยย อิอิ สุดท้ายก็รับเราฝึกงาน เย่ แล้วเราก็อยากรู้ว่าต้องฝึกกี่เดือน พี่เค้าก็บอกว่าแล้วแต่เรานะ ฮ่าๆๆๆ เราก็ไม่รู้อะ แต่พี่แนะนำว่า จริงๆ ฝึกแค่สองเดือนน่ะ มันไม่ค่อยได้อะไรหรอก พี่ว่าอยู่มากกว่านั้นจะดีกว่า เราก็เลยบอกไปว่า ประมาณสี่ห้าเดือนละกันค่ะ แล้วเราก็กลับไปทำหนังสือ บวกลบวันกับตอนปิดเทอม เปิดเทอม ให้เรียบร้อย สรุปคือ เริ่มฝึกงานวันที่ 1 เมษายน 2557

ถ้าอยากรู้ว่าฝึกงานที่ Pronto Marketing ใน lovely R&D team เป็นยังไง ติดตามต่อไป โพสต์หน้านะจ๊ะ :D 

Kata & TDD (ฉบับย่อสุดๆ)

ไม่ได้อัพบล๊อคมานานโข ..
วันนี้เลยจะอัพสาระความรู้ และประสบการณ์ ที่ได้มาจากการฝึกงาน
และได้บรรจุเป็น lovely intern แห่ง R&D Team @ Pronto Marketing

Kata คืออะไร??

อันที่จริงเราเองก็ยังไม่สามารถนิยามมันได้แบบถูกเป๊ะๆ แต่รู้ว่ามันมาจาก คำภาษาญี่ปุ่น ซึ่งเป็นรูปแบบท่าทางการฝึกฝน การต่อสู้ของญี่ปุ่น ซึ่งเมื่อเปรียบเทียบกับการเขียนโปรแกรม เขียนโค้ด มันก็เหมือนกับการฝึกฝน (practice) เขียนโค้ดโจทย์เดิม ซ้ำๆ ยิ่งทำ ยิ่งเมพ เหมือนกับการลับคมดาบ ยิ่งลับ ยิ่งคม !!

Kata ทำได้อย่างไร??

ก่อนอื่นเลย ขอบอกตรงนี้ ว่าการทำ kata เราสามารถใช้ภาษาโปรแกรมมิ่งภาษาไหนก็ได้ มาฝึกฝน แต่เราเริ่มโดยการทำจากภาษา python ซึ่งเราก็ได้มาเรียนรู้ syntax ใหม่ตอนเข้ามาเป็น intern ที่ pronto marketing และประทับใจกับ python มาก เป็นภาษาที่ syntax ไม่ยากจริงๆ ใครๆ ที่ไม่เคยเขียน พอมาอ่านก็สามารถทำความเข้าใจได้ง่าย ใช้เวลาไม่นาน

ตัวช่วยในการทำ Kata เราจะใช้วิธีในการเขียนโค้ดวิธีที่เรียกว่า “Test Driven Development” หรือ “TDD” ที่เรารู้จักกันนั่นเอง ขั้นตอนการทำ TDD นั้นง่ายมากจริงๆ ชื่อก็บอกอยู่แล้วนะคะ ว่าเป็น Test Driven ..

ขั้นแรก => เขียน Test

ขั้นที่สอง => เขียน Code

ขั้นที่สาม => Refactor

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

การเขียน Test เราจะใช้สิ่งมีชีวิตดุ๊กดิ๊ก ตัวเล็ก ที่เรียกว่า unittest คือ automate test ตัวเล็กๆ ที่ใช้ทดสอบว่า code ที่เราเขียน เราไม่ได้มโนขึ้นมาเองว่ามันทำงานได้ถูกต้องดั่งใจ

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

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

Reference:

http://en.wikipedia.org/wiki/Kata

http://chavp.wordpress.com/2013/11/19/tdd-kata/

#2 – Inspiration in Augmented Reality with Origami

สำหรับสิ่งมี่สนใจจะทำ senior project ตอนนี้ก็ยังคงเป็น ..​Augmented Reality อยู่เหมือนเดิม

แต่เราจะเอา Augmented Reality ไปบวกกับ อะไร ?? ให้มันเกิดประโยชน์มากขึ้น มีความน่าสนใจมากขึ้น

อาทิตย์ที่แล้ว เราเข้าไป Play Store

แล้วก็ไปเจอกับเกมพับกระดาษเกมนึง .. ชื่อว่า Paperama

เป็นเกมที่ดูจะเล่นได้ง่ายๆ แต่ก็ใช้ความคิดนิดนึง (ส่วนตัวคิดว่ามันใช้ความคิดแนวๆ Cut the Rope )

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

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

แต่คนเล่นก็สามารถ undo ได้

และสิ่งที่ยาก ก็คืออันนี้แหละ ..​ เงื่อนไขที่ว่า ..​”พับไม่เกินกี่ครั้ง” ฮ่าๆๆๆๆ

ใครที่อยากรู้ว่าเป็นยังไง ..​ก็ลองไปโหลดได้ฟรีจ้า..

 

 

แต่โดยส่วนตัว ..​คิดว่ามันยากเกินไปนะ เพราะปกติก็ไม่ค่อยมีความอดทนในการเล่นเกมคิดเยอะๆ เท่าไหร่

สรุปคือ..​ เล่นครั้งเดียวเลิกเลย .. แต่สำหรับคนที่ชอบแนวๆ นี้ เกมนี้ไม่น่าพลาด เพราะ UI น่ารักดี สีสันสดใส..

 

ทีนี้เลยได้แรงบรรดาลใจในการทำอะไรที่เกี่ยวกับ ..​พับกระดาษ หรือที่รู้จักกันในชื่อญี่ปุ่นๆ ว่า ..​ Origami

หลังจาก search ดูตาม คุณพี่ Google แล้วก็ได้เจอกับ application มากมายที่ สอนพับ origami

 

สำหรับ application ที่เกี่ยวกับ origami ที่อยู่บน play store ที่น่าสนใจ เช่น

Let’s Fold – Origami Puzzles

 

สิ่งที่น่าสนใจ ของแอปนี้ ..​ น่าจะพยายามเจาะกลุ่มเป้าหมายที่ไม่ใช่ผู้ชายแม๊นแมน ..​เจาะเฉพาะกลุ่มที่ชื่นชอบความน่ารักๆ

เช่น ผู้หญิง เด็กๆ เพราะแอปทำได้มุ๊งมิ๊งมากๆ มีเสียงเพลงน่ารักๆ ภาพสวยๆ สีสันสดใส เล่นก็ไม่ได้ยากมาก

เป็นเกมที่ให้พับกระดาษไปๆ มาๆ แค่นั้น ไม่ได้สอนพับให้เป็นรูปร่างแบบ origami

เพิ่มเติม : https://play.google.com/store/apps/details?id=air.kr.fivethirty.YouCanFold

#1 – What is Augmented Reality?

 

Augmented Reality เป็นเทคโนโลยีที่ผสานโลกความเป็นจริง เข้ากับโลกเสมือน โดยเราสามารถซ้อนภาพกราฟฟิค เสียงต่างๆ  เข้าไปในภาพที่เรามองเห็นในโลกแห่งความเป็นจริงแบบ real time โดยอาศัยกล้อง และเซ็นเซอร์ของอุปกรณ์ต่างๆ เช่น คอมพิวเตอร์ โทรศัพท์สมาร์ทโฟน ในการแสดงผล ในด้านของนักพัฒนา สิ่งที่จำเป็นในการทำ Augmented Reality ได้แก่

  • ระบบ tracking เช่น พวก Marker ต่างๆ หรืออาจจะใช้ sensor แบบอื่นๆ
  • ระบบแสดงภาพ เช่น หน้าจอคอมพิวเตอร์ หน้าจอโทรศัพท์ เป็นต้น
  • ระบบประมวณผลเพื่อสร้างวัตถุ 3D

ผู้นำของซอฟต์แวร์ Augmented Reality บนโทรศัพท์มือถือในปัจจุบันคือ Layar สำหรับผู้ที่ใช้โทรศัพท์มือถือสมาร์ทโฟนระบบปฏิบัติการแอนดรอยด์ และไอโอเอส สามารถดาวน์โหลดได้ฟรี

ในปัจจุบัน เราสามารถนำเทคโนโลยี Augmented Reality มาใช้กับงานต่างๆ ได้อย่างมากมาย เช่น

  • การนำทาง เช่นการซ้อนภาพปลายทาง หรือคำอธิบาย ลงในภาพจริง
  • การโฆษณา ประชาสัมพันธ์
  • การท่องเที่ยว
  • สถาปัตยกรรม

ตัวอย่างของการนำเทคโนโลยี Augmented Reality มาใช้ เช่น

credit:

http://hangman.exteen.com/20081224/augmented-reality

http://www.isriya.com/node/3109/augmented-reality

https://www.layar.com/augmented-reality/

http://www.digitaltrends.com/mobile/what-is-augmented-reality-iphone-apps-games-flash-yelp-android-ar-software-and-more/#!FlOry

First Time at Pronto

วันแรกของวันฝึกงาน ที่พรอนโต้

บอกได้ตรงๆ ว่า..​. “ตื่นเต้นม๊วกกก”

ตื่นเต้นตั้งแต่ขึ้นลิฟต์มาแล้วไม่เจอใครเลย ห้องปิด O.o !!!! พลันคิดในใจว่า..​ เราอาจมาเร็วเกินไปก็เป็นได้..

ดังนั้น..​จึงนั่งจุ้มปลุ๊กอยู่ที่บันได ข้างๆ ลิฟต์ อย่างใจจดจ่อ แล้วโพสต์ลงเฟสบุ๊ก ..

เพื่อแจ้งให้พี่ๆ ทั้งหลายทราบ.. T^T ..

 

Q: ฝึกงานวันแรก ทำอะไรบ้าง???

A: โหววววว..​ สุดยอดแห่งความสนุกสนาน (นี่ตอบตรงคำถามปะ​?)

คือ.. ตอนแรกคุณพี่เค้าก็จะชี้แจงเรื่องเกี่ยวกับการฝึกงาน ต้องทำอะไรบ้าง เพื่อเป็นข้อแลกเปลี่ยนกับการได้ใบประเมินดีๆ TT

บอกได้อีกคำว่า..​เยอะสึสสส ..​แต่มั่นใจว่าอยู่ๆ ไป ใช้เวลากับมันช่วงนี้ ก็คงทำได้เอง …ล่ะมั้งงง

ต่อไปคือ.. ทำ Kata (จำได้คือเหมือนการลับคมดาบของญี่ปุ่น) เป็นการฝึกทำโจทย์ คล้ายๆ กับโจทย์ภาษา C ของ AJ.PD. (นี่คือชื่อในวงการ ที่คอมสวู)

ใช้ Python แต่.. ได้ข่าวว่าไม่เคยเรียน และเพิ่งจะลองฝึกจาก codeAcademy เมื่อสองวันก่อน ..

ขอบอกตามตรงว่า.. Syntax ก็จำไม่ได้ คำสั่งก็จำไม่ได้.. ตายยยยยยยยย.. อันที่จริงก็ยังไม่ตายซะทีเดียว

ขุดความรู้เรื่อง math และ algorithm ที่มีอยู่อย่างจำกัดและน้อยนัก.. งัดกลยุทธ์ทั้งหมด ออกมาเขียน Test & Code & Refractor

เริ่ดอะ .. ทำๆ ไปๆ ทำๆ มาๆ ก็หนุกดี แต่ถ้า advance มากๆ คงตายยยยยย หลายลูกเลย (มากกว่าลูกเดียว)

 

สวัสดี นิสิต !