Introduction to UX

User research lead to core of problems

Blog อันนี้ผมแตกมาจาก สรุปงาน Google I/O Extended Bangkok 2016 ข้อมูลมันเยอะมากครับ อ่าเข้าเรื่องเลยดีว่า ทำไมเราต้องมาสนใจ UX หละ ดูภาพนี้ น่าจะมีคำตอบในตัวครับ จากภาพเราสร้าง Software มาเป็น Product ชิ้นนึงได้ นอกจากการ Requirement ที่ตรงตาม Business แล้ว ยังต้องสร้างประสบการณ์ที่ดีแก่ User ด้วยครับ ซึ่งสร้าง Product ที่ดีขึ้นมาได้ เราต้องมี MindSet ที่ดี มันเริ่มจากปรับจูน แต่ส่วนมา 2 ข้อนี้มักเป็น Infinite Loop ครับ แต่ Deadline เท่าเดิม T____T UX Designer ที่ดีต้องรู้ว่า สิ่งที่ทำเราแก้ปัญหาอะไร จะได้ฉีดยาให้ตรงจุด เป็นตัวแทนของ User (Empathize-เข้าอกเข้าใจ User) แต่ไม่ใช่ User มาต่อที่ 3 คำนี้ดีกว่า User Experience หรือ UX ตัว UX Designer ทุกอย่างที่ส่งผลกระทบต่อประสบการณ์ของผู้ใช้งาน ไม่ว่าจาก Business, Design หรือ จาก Code ของเราเอง มันจึงมีตำแหน่งนี้ เพื่อเอามาทำ Research เก็บข้อมูลต่างๆ ทำ Usability Test ก่อนลงมีอ Coding หรือ ทำ A/B Testing โดยให้ตอบโจทย์ที่ดีที่สุดในขณะนั้น เพราะวันเวลาเปลี่ยนไป Trend เปลี่ยนไป หลายคนอาจจะงงว่า Business , Design หรือ Code เกี่ยวอะไรกับ User Experience ? Netflix – เดิมก็เป็น Startup เล็กๆ แต่ล้มยักษ์อย่าง Blockbuster…

Progressive Web App (PWA) & Firebase

Blog อันนี้ผมแตกมาจาก สรุปงาน Google I/O Extended Bangkok 2016 ข้อมูลมันเยอะมากเลยย โดยคำว่า Progressive Web App (PWA) ผมเพิ่งได้ยินมาจากงานนี้แหละ ปกติใช้แต่ HTML กับ JQuery ทำงานนิดหน่อย ส่วนมาทำแต่หลังบ้าน (บ้าน .Net, บ้าน Java) ฮ่าๆ Progressive Web App (PWA) PWAเป็น Metaphor ในการทำเว็บในยุคนี้ครับ เพราะ ยุคนี้ Mobile First และสัดส่วน Mobile App 87% ส่วน Mobile Web 13% ครับ เพราะเว็บมันช้าสู้ App ไม่ได้ แต่ถ้าเรามีเว็บแล้ว แต่เอา Resource ไปทำ App ด้วย ก็จะเสียเลาเกินไปครับ เอาเวลาไปสนใจ Business ดีกว่าครับ WIFI vs. LIFI มีเนต กับ ไม่มีเนต เป็น App-Like สำหรับตัวที่ทำให้เกิด Progressive Web App (PWA) มาที่ Tools หรือ ภาษากันบ้าง Case Study AIiExpress / pwa.rocks Firebase TL;DR Progressive Web App (PWA) & FireBase เป็นWorkshop ตัวอย่าง Code สามารถเอาจาก Git ของ GDG หรือ ไปลองทำตามใน CodeLab ก็ได้ครับ จบแล้วครับ ต่อไปเป็น Blog แยกของ Introduction to…

สรุปงาน Google I/O Extended Bangkok 2016

วันนี้ 25 มิ.ย. ใกล้หมดครึ่งปีแล้ว และวันนี้เป็นจัดงานของ Google Developer Group(Thailand) ในเรื่อง Google I/O Extended Bangkok 2016 ครับ ผมเลยมาอัพเดตข่าวสาร Technology Trend สักหน่อยครับ (จริงๆ ตั้งใจมาเอาเสื้อฟรี 555 แต่เสื้อหมด ใครใจดีส่งมาให้ก็ดีครับ ฮ่าๆ) ต่อไปนี้เป็นสรุป โดยผมอาจจะใส่ความคิดเห็นตั้งแต่เริ่มเข้างานจนจบงานนะครับ ส่วนแรกการลงทะเบียน ผมว่าเรื่องนี้ทำให้งานกร่อยไปเลยครับ เพราะมีการจัดการที่ทุลักทุเลมาก ชลมุนเล็กน้อยครับ ตั้งแต่เริ่มการ Order รายชื่อผู้สมัคร มีหลายกระแสมากครับ หลังจากผ่านเรื่องวุ่นวายมาแล้ว รอคิวเข้าโรงภาพยนตร์สยามภาวลัยอีกประมาน 20 นาทีจากที่สุดทะเบียนเสร็จ ก็มาเข้าสู่ช่วง Welcome Speech โดยคุณ Soonson Know ที่ดูแล Google Developer ในส่วน South Asia, นิวซีแลนด์ และออสเตรเลียครับ โดยเป็นการพูดคุยทั่วไป มีการ Sound เสียง ผ๊เข้าชมงานคร่าวๆ มาจาก Sector ไหน เรียนอยู่ หรือทำงาน ทำเว็บ หรือ โมบายครับ และก็มีการแนะนำทีมงานของ Google ที่มาในวันนี้ครับ มีหนึ่งในนั้นเป็นคนไทยนะครับ ดูแลในส่วนของ Google Cloud Platform (Speaker ใน Session Introduction GCP & Machine Learning)  ครับ หลังจากแนะนำตัวกันเสร็จ ก็จะเป็นตัว Key note ของงานโดยคุณ Thye Yeow, Bok มาสรุป Recap จากงาน Google I/O ครับ โดยอันนี้ผมขอกล่าวรวมๆ กว้างๆนะครับ เพราะ ใน…

[JAVA] Pass By ?

ปัญหานี้น่าจะเป็นปัญหาที่โลกแตกพอสมควรครับ และเป็นเรื่องที่ควรรู้ และเข้าใจครับ ไม่งั้น เวลาเจอ Defect อยู่ๆข้อมูลเปลี่ยนเฉย ผีหลอก หรือป่าว ไม่ใช่ครับ เราอาจจะเข้าใจผิดมาตลอด ตอนเรียน 2 ปีแรกที่มหาวิทยาลัย สิ่งที่ผมเข้าใจเกี่ยวกับ pass by ของ Java คือ แต่ที่ผมเข้าใจมาผิดหมดครับ มารู้จริงๆ ตอนฝึกงานครับ เจอคำถามของพี่เลี้ยงไปจุกครับ พี่เลี้ยงเค้าบอกว่า Java ไม่ว่าเป็น Primitive Data Type หรือ Reference Type มีการ Pass by Value เท่านั้นครับ หลายคนน่าจะงงกัน มาลองดูกันครับ  จาก Code ลองมาดูผลลัพธ์กันครับ ผมจะ Prove ว่าถ้ามัน Pass by Reference จริงๆ แล้วค่าต้องเปลี่ยนครับ จากการทดสอบของผมครับได้ผลลัพธ์ ดังนี้ java.lang.NullPointerException แต่มันไม่แสดงนี่สิ แสดงว่า Java Pass by Value ถ้า Pass by Reference แล้วค่าต้องเปลี่ยนครับ หลังจากเข้าใจแล้ว ว่าแต่ทำไม Java ถึงมีแต่ Pass by Value ทั้งหมด !!! คงต้องกลับไปตอนเรียนวิชา CP121 ไม่ใช่สิ ต้อง CP111 วิชา Programming I ภาษา C นั้นเองครับ ตัวภาษาตระกูล C มันมี ของแสบอย่างหรือครับ คือ Pointer เรามาดูดีกว่าว่าภาษา C Pass by ? ต่อไปขยับอีกนิดเป็น C++ แต่สิ่งที่ C กับ…

การทำหรือเผา Data Dictionary ที่มีประสิทธิภาพ

ตอนนี้โปรเจคที่ผมกำลังเข้าช่วงโค้งสุดท้ายในการลงนาม ตรวจรับ สิ่งที่สำคัญที่สุด คือ การเผา เอกสารครับ ตอนนั้นมีเอกสารในส่วนของฐานข้อมูล ผมขอเรียกมันว่า Data-Dict นะครับ ตอนแรกทีมที่ทำก็อึ้งๆ เนื่องจากโปรแกรมมีมานานและ 20 กว่าปี แต่ไม่เคยมี Data-Dict ที่สมบูรณ์สักที ทำไมทำมาได้ 1100 Table เพราะ มีหนี้ทางเทคนิค Technical Debt ที่เกิดจาก แต่งาน Customize เสริมยังดีที่มีการทำ Data-Dict มาแล้ว ก่อนตะแก้ปัญหา เราต้องดูก่อนว่ามี Resource อะไรบ้าง สิ่งที่ต้องทำ เผา Data Dictionary  ทันใน 1 สัปดาห์ ทั้งๆที่ แต่ละ มีงาน End Pharse หลังโปรเจคจบ งานจบ แต่ SA กับ Dev ยังต้องเก็บกวาด สิ่งที่เกิดขึ้นจากการ Estimate Time ที่ผิดพลาดครับ T……T

Inversion of Control (IoC)

Inversion of Control หรือ IoC มันเป็นจุดขายของตัว Spring Framework จนหลายๆเจ้าเอาไปปรับใช้เข้ากับ Product ของตัวเองครับ (Microsoft ASP.NET MVC ก็ใช้นะ) ก่อนจะไปใช้กัน เรามารู้กัดีกว่า เจ้าตัว Inversion of Control หรือ IoC มัน คือ อะไรครับ Inversion of Control หรือ IoC คือ อะไร มีประโยชน์อย่างไร Do not call us we will call you Inversion of Control (IoC) กับ Dependency Injection ? กลับมาที่ Spring ดีกว่าตัว Spring ใช้ Dependency Injection ในการจัดการ Inversion of Control ตัวภาษาของ Java ที่เป็น OOP มีตัว Interface มาช่วยลดการผูดติดกันของ Code มาให้อยู่แล้วครับ Reference

[WordPress] Migrate SEO จาก Plugins All in one SEO Pack เป็น Yoast SEO

ช่วงนี้เว็บ WordPress ดูอืดๆครับ และก็ไปสะดุดลิงค์ของเว็บ 9Tana ด้วย ทำไมเวลาแชร์ลิงค์ลง Facebook ถึงมี By … ติดมาด้วย ด้วยความอยากได้ ผมเลยสอบถามจากคุณเตย แห่งเว็บ wpthaiuser ครับ ได้แนะนำ Plugins ตัวนี้ครับ Yoast SEO โดยสามารถดูวิธีการได้จากลิงค์ “Yoast SEO กับ Facebook แชร์ยังไง ให้แสดงข้อมูลตามที่เราต้องการ” ครับ มารีวิวการ Migrate SEO จาก Plugins All in one SEO Pack เป็น Yoast SEO ดีกว่าครับ ง่ายกว่าของเก่าเยอะครับ ของเดิมเหมือนนานมาแล้ว การย้ายทีนึงต้องไปแก้ไข Code และ Update Field ใน Database ด้วย คราวนี้ง่ายเลยครับ Backup ข้อมูลครับ กันไว้ดีกว่าแก้ครับ หาตัว Plugins มาก่อนครับ ลง และ Activate โอ้ววว มัน Detect เจอครับ ว่ามี Plugins 2 ตัว Activate พร้อมกัน ถามว่าจะให้ import ไหม กดอันล่างของ Yoast เลยครับ ถ้าเป็นของเดิมที่เคยทำนี้ต้องอัติโนมือครับ Query ล้วนๆ กด Import โลดครับ และลบไฟล์ขยะทิ้งด้วยนะครับ เก็บไปก็ไร้ค่า Deactivate Plugins All in one SEO Pack ต่อไปรอ UAT 555 ผ่านไปสักระยะหนึ่งก่อน ผมกะเวลาไว้ประมาณ 1 Week มาเทสที่ Local…

[DB] มาดูพวก Operator JOIN ทั้งหลายใน Execution Plan ดีกว่า

IBM DB2

หลังจากมี Blog เกี่ยวกับ Execution Plan ไป 2 ตอนแล้ว ถ้าลองสังเกตุดีๆ ตอนที่มันสร้าง Flow ขึ้นมา มันมีกล่องแทนการกระทำต่างๆ เช่น FETCH, TBSCAN เป็นต้น ซึ่งถ้าลองย้อนกลับไปในตอนเรียนวิชา Database มันมีหัวข้อนึง ชื่อ Query Optimization ทำอย่างไรให้ Relational Algebra (Low Level จาก SQL ครับ จริงๆตัว SQL ที่ใช้เบื้องหลังมันก็ไปแปลงกลับเป็น Relational Algebra)  หรือพูดง่ายๆ คือ Query ดึงข้อมูลได้มีประสิทธิภาพครับ โดยคราวนี้เราสนใจเฉพาะกลุ่ม Join ครับ นอกจาก INNER JOIN, RIGHT JOIN และ LEFT JOIN มันมีอะไรที่ลึกล้ำกว่านี้อีกเหรอ คำตอบ คือ มีครับ มองว่าเป็น Algorithm ที่เอามาจัดการกับข้อมูลที่ต้องการครับ โดยผมขอ Focus ที่ตัว DB2 ก่อนนะว่า มีอะไรบ้าง เอาเฉพาะที่โผล่มาใน Execution Plan บ่อยๆนะครับ NLJOIN (Nest Loop Join) MSJOIN (Merge Scan Join) HSJOIN (Hash Join) จบไปกับ Blog อีกตอนที่อาจจะเขียนแล้วดูงงๆนะครับ

[DB2] แค่เปลี่ยน Query ชีวิตก็ดีขึ้นแล้ว JOIN vs Sub Query

IBM DB2

วันนี้พอดีมาประจำการที่ Site และได้ดูเคสบ่นๆจาก User ว่าทำไมหน้า Exchange Rate มันช้าจังเลย เปิดทีรอ 2-3 นาทีได้ ตอนแรกเราก็เฉยๆอยู่ เพราะงานหลักของเรา คือ BOT DMS (DataSet กับ DataFile 2 พี่น้อง) แต่พอสักสายๆ เข้า BA บอกว่าเปิดไม่ได้เลย เค้าลอง Interface feed ข้อมูล ย้อนหลัง 10 ปี เข้าไป น่าจะประมาน 100,000 Record ได้ หลังจากผมเข้าไปดูที่เครื่อง BA สิ่งที่ผมเข้าใจได้ คือ Query มัน Timeout ครับ รีบไปเปิด Code ทันทีเลยครับ มาดู Query กัน จาก Query ข้างต้นนะครับ เท่าที่ดูมาใช้ LEFT JOIN ปกตินะ แต่มีอยู่ก้อนนึง ที่มีความพิเศษเป็นการ Join ที่เกิดจากการ SELECT และก้อนที่มีการ SELECT มา JOIN เนี่ย มีใช้ Sub Query ต่ออีก โดยผมขอตัดมาให้ดูนะครับ ถ้ามองที่ Query แล้ว โอ้วมีการใช้ Sub Query ที่มีการ Join กับ Query หลักด้วย (AND MEX.COMMODITYID = ME2.COMMODITYID  AND MEX.QUOTEDID = ME2.QUOTEDID) คิดดูเล่นๆ ข้อมูล 100,000 Record มาก็เอามา Cross กับอีก 100,000 Record…

งานในสาย IT Analyst มีอะไรบ้าง

วันเสาร์ที่ผ่านมา ผมไปฟังงานสัมมนาของ อ.ปิ่น “Hello World Becoming Professional Software Analyst” ผมขอสรุปเรียบเรียงไว้จากมุมมองที่ผมเข้าใจนะครับ โดยทุก Analyst ต้องมีสิ่งที่เหมือนกัน เช่น Overall-Mangement Business Technical Technical ผมจัดกลุ่มนี้ เพราะ หลายๆที่ SA 1 คน ดูแลงานทั้งหมด Quality จริงๆ Analyst ถ้าอธิบายในมุมของ Developer มัน คือ Abstract Class นี่แหละ มี Interface และการทำงานบางส่วนไว้ จากนั้นให้แต่ละตำแหน่ง Extend(สืบทอด) ตามมุมมองที่กำลังจัดการอยู่ ไม่ว่าจะเป็น Project Analyst, Business Analyst หรือ System Analyst เป็นต้นครับ และในบางหน่วยงาน เราก็ต้องแสดงในหลายๆบทบาทครับ ทำวันนี้ให้ดีที่สุดครับ ^__^