มาถึงช่วงที่สำคัญที่สุดในการออกแบบโปรแกรม เพราะกุญแจในการเข้าถึงผู้ใช้คือการปรับตัวเข้ากับสภาพแวดล้อมที่ผู้ใช้อยู่ เช่น เมื่อโปรแกรมของเราอยู่ในระบบ windows ซึ่งผู้ใช้คุ้นเคยกับการทำงานแบบหน้าต่างเดียวโปรแกรมก็ควรแสดงแบบหน้าต่างเดียว

โปรแกรม Adobe Photoshop แสดงแบบหน้าต่างเดียวบน windows แต่เมื่อทำงานบน mac ที่ผู้ใช้คุ้นเคยแบบหน้าหน้าต่าง

โปรแกรม Adobe Photoshop ก็จะแสดงเป็นแบบหลายหน้าต่าง
เพราะในสภาพแวดล้อมที่ผู้ใช้คุ้นเคย ผู้ใช้จะนำประสบการณ์ของเค้ามาตีความโปรแกรมของเรา และพยายามทำในสิ่งที่คุ้นเคยเสมอ ยกตัวอย่างโปรแกรม Adobe Photoshop บนระบบ Windows ผมจะคุยคุยที่จะย่อขนาดจอทีเดียวแล้วทุกอย่างหายไปหมด ถ้าโปรแกรมแสดงเป็นหน้าต่างๆ และไม่สามารถปิดได้ในทีเดียว ผมจะรู้สึกไม่ดีแน่ๆ ตรงข้ามกันถ้าทำงานบน OS X พฤติกรรมปกติคือผมจะเปิดโปรแกรม Finder ไว้อีกตัวเพื่อใช้ดึงรูปที่ต้องการมาเปิดใน Photoshop และคงรู้สึกไม่ดีถ้ามีฉากมาบังไว้
เข้าเมืองตาหลิวก็ต้องหลิ่วตาตามครับ มันจะดีหรือไม่ดีอย่างน้อยคนรอบข้างก็เข้าใจเราได้ง่ายขึ้น หลังจากนั้นถ้าผู้ใช้เห็นว่าแบบไหนง่ายกว่า ก็ให้แก้ property เอา

ในแต่ละ platform ก็มีสิ่งที่ต้องคิดไม่เหมือนกัน การได้ลองเปรียบเทียบหลายๆ แบบน่าจะทำให้เราเข้าใจใน platform ที่เราจะสร้างมากขึ้น
menu bar

ผู้ใช้ mac คุ้นเคยกับการที่ menu ของโปรแกรมอยู่ด้านบนของจอภาพ

ผู้ใช้ windows คุ้นเคยกับการที่ menu อยู่ติดกับโปรแกรม ใต้ title bar
ใช้วิธีแสดงหลายๆหน้าต่างซ้อนๆ กัน
เหมือนในตัวอย่าง Adobe Photoshop ถ้าเป็น mac จะเน้นให้ทุกอย่างเป็นหน้าต่างย่อยๆ ถ้ากดย่อก็จะย่อเฉพาะหน้าต่างนั้นๆ และขณะที่โปรแกรมไม่ Active จะแสดงเฉพาะหน้าต่างหลักเท่านั้นพวก tools bar จะหายไป ในส่วนของ windows จะให้หนึ่งโปรแกรมเป็นหนึ่งหน้าต่างถ้าย่อก็จะย่อหมด
การใช้ Dock หรือ Title bar
ผู้ใช้บน mac จะสังเกตุ message ที่เกิดขึ้นบน dock เช่นการกระโดษ หรือการที่มีตัวเลขบน icon โปรแกรมที่ดีจะสื่อสารกับผู้ใช้ผ่านทาง Dock หรือ Title bar ในแบบที่ผู้ใช้บน platform นั้นคุ้นเคย

ระบบ mac ออกแบบให้ไม่ต้องปิดระบบ (shutdown) ในขณะที่ Windows ออกแบบให้ปิดทุกครั้งที่เลิกใช้งาน
ดังนั้นถ้าคุณพัฒนาโปรแกรมบน mac
- อย่าให้ผู้ใช้ต้อง rebooting เพื่อล้างหน่วยความจำ หรือไฟล์สำรอง ทั้งตอนใช้งานและตอนติดตั้งโปรแกรม
- อย่าแม้แต่ให้ผู้ใช้ต้อง login ใหม่
ถ้าคุณพัฒนาโปรแกรมบน windows ก็พยายามอย่าให้ผู้ใช้ต้อง reboot แต่ถ้าจำเป็นผู้ใช้ก็ให้อภัยได้เพราะทำอยู่เป็นประจำ
ระบบสามารถเปลี่ยนแปลง/เชื่อมต่อได้อยู่ตลอดเวลา
ส่วนนี้เป็น concept ที่ไม่ว่าคุณพัฒนาโปรแกรมบน mac หรือ windows ก็ควรพยายามทำให้ได้แต่พึงระลึกว่าถ้าคุณพัฒนาโปรแกรมในปัจจุบัน พฤติกรรมของผู้ใช้จะถอดๆ เสียบๆ อุปกรณ์อยู่ตลอดเวลา ถ้าโปรแกรมของคุณต้องเชื่อมต่อกับระบบเหล่างนี้ก็ควรเขียนโปรแกรมให้รองรับไว้ด้วย
อุปกรณ์สำคัญๆ ก็เช่น
- ส่วนแสดงผล เช่น ผู้ใช้สามารถเสียบ ถอดจอภาพที่สอง ได้ตลอด ถ้าเราต้องออกแบบโปรแกรม presentation เวลาที่ผู้ใช้เสียจอที่สองขณะที่ present โปรแกรมก็ควรตอบสนองทันที
- อุปกรณ์เสริม เช่น mouse join stick ถ้าเขียนเกมส์ที่ใช้ join stick บังคัยแล้วผู้ใช้ถอดหรือเสียบ join stick เข้ามาเกมส์ก็ควรตอบสองทันที
- ปรับแก้ network เช่น การเปลี่ยน network location ผู้ใช้สามารถเปลี่ยน network connection ได้ตอลดเวลาดังนั้นโปรแกรมควรจะตรวจสอบค่า configuration อยู่เสมอ
รองรับระบบผู้ใช้หลายคน
เดี๋ยวนี้ OS เป็นระบบผู้ใช้หลายคนกันหมดแล้ว แถมยังสามารถเปลี่ยนผู้ใช้ได้ on the fly อีกต่างหากดังนั้นเราจึงควร
- ใช้ session ID เพื่อแบ่งปันทรัพยากร
- อย่าให้สิทธิพิเศษกับผู้ใช้บางคนเพื่อจองทรัพยากร เช่น CD,DVD
- ใช้ CFPreferences เพื่อกำหนดตำแหน่งไฟล์ (ใช้บน Cocoa สำหรับบน Windows ไม่แน่ใจ)
- ให้ใช้ค่า Default เป็น user’s home directory โดยดูว่า OS นั้นๆ กำหนดตำแหน่งของ user อย่างไร
OSX = /Users/apirak
Windows = C:\Documennt&Setting\apirak
Linux = /Home/apirak
ใช้ Documents folder

ทำให้ความคุ้นเคยเดิมๆ ของผู้ใช้ยังคงทำได้
ให้โปรแกรมของเราสามารถทำได้เหมือนโปรแกรมอื่นๆ บน platform นั้นๆ เช่น Drag and Drop ผู้ใช้สามารถเปิด Address book แล้วลากชื่อผู้ใช้มาใส่ในโปรแกรมเราได้, ใช้ panel ที่ผู้ใช้คุ้นเคย เช่นตัวเลือก font หรือตัวเลือกสี ยกเว้นว่าโปรแกรมของเราสามารถทำได้ดีกว่า
เทคนิค.. พยายามใช้ของที่ platform นั้นๆ มีมาให้อยู่แล้วเพื่อประหยัดเวลาในการพัฒนาและทำให้ผู้ใช้คุ้นเคยกับโปรแกรมของเราได้ง่ายขึ้นด้วย
สิ่งที่เราควรออกแบบคือตัว core value ของโปรแกรม ไม่ต้องเสียเวลาออกแบบ color panel ใหม่ถ้ามันไม่ใช่ core value ของเรา
Accessibility and Spoken Interface
OS X และ Windows ต่างเตรียมระบบที่ทำให้โปรแกรมของเราสามารถรองรับผู้ใช้ได้ตามข้อจำกัดของเค้า โดยนักพัฒนาเพียงแค่ใส่ใจในรายละเอียดของโปรแกรม เช่นกำหนดชื่อให้กับรูปภาพและช่องกรอกข้อมูล เพื่อให้ OS อ่านตัวหนังสือดังกล่าวกับให้ผู้ใช้ที่มีปัญหาทางสายตา เป็นต้น ระบบที่มีมาให้ไม่ต้องการ การติดตั้งเพิ่มสามารถใช้งานได้เลย

นักพัฒนาโปรแกรมสามารถทำให้โปรแกรมรองรับได้หลายภาษาโดยอาศัย framework ที่มีอยู่แล้วใน International Technology ทำให้นักพัฒนาไม่ต้องเขียนโปรแกรมเพื่อวาดตัวอักษรเอง สามารถใช้งาน Unicode ได้ทันที และสามารถใช้กับหลายๆภาษาได้โดยไม่ต้องแก้โคต

นักพัฒนาควรใช้พลังของ Spotlight ให้เต็มที่โดยการใส่ Metadata ให้กับเอกสาร หรือสร้าง plugin ให้ Spotlight เพื่อให้มันสามารถค้นหาเอกสารของโปรแกรมให้กับผู้ใช้ได้ ซึ่งทาง Apple ได้จัดเตรียมเครื่องมือในการทำให้แล้ว (ใน Vista ไม่รู้ว่ามี feature นี้มาด้วยหรือเปล่า ถ้าทำให้ compatible กับ google desktop แทนละกัน)