İyi UI tasarımı neden bazı Geliştiriciler için bu kadar zor? [kapalı]


206

Bazılarımız UI tasarımının daha yumuşak yönleriyle ( özellikle kendim ) zorlanıyoruz . "Arka uç kodlayıcıları" yalnızca iş mantığı ve veri katmanları tasarlamaya mahkum mudur? Beynimizi hoş ve kullanışlı sunum katmanları tasarlamada daha etkili olmak için yeniden eğitmek için yapabileceğimiz bir şey var mı ?

Meslektaşlarım beni dahil birkaç kitap tavsiye ettim Sitelerinin Tasarım , düşünmeme yapmayın ve Neden Yazılım berbat , ama başkalarına bu alandaki eksiklikleri gidermek için yaptıklarını merak ediyorum?


1
Kendim için (aynı problemi yaşıyorum) Birini kullandığımda iyi bir kullanıcı arayüzü biliyorum. Ve kesinlikle beni rahatsız eden bir kullanıcı arayüzü biliyorum. Ama kendimi tasarlamaya çalışırken çok zor zamanlar geçiriyorum. Başka birinin kullanıcı arayüzünü kullandığımda sahip olduğum kritik göz gibi kendi tasarımlarımda çalışmıyor.
JMD

1
"Arka uç kodlayıcı" teriminden nefret ediyorum ve bunu unvanın dışında tutmaya çalışıyordum
Chris Ballance

20
Grafik tasarım! = UI tasarımı. Birincisi işleri güzelleştirmekle ilgilidir. İkincisi, işleri kullanışlı ve kullanılabilir hale getirmekle ilgilidir.
Esko Luontola

2
+1 @Esko. Genellikle 'güzel' tamamen BM tarafından kullanılabilir anlamına gelir. Ancak, dikkat ve düşünce ile ele alınırsa, iki CAN birlikte var olabilir.
Dhaust

12
UI tasarımcıları için yazılım geliştirmek neden bu kadar zor?
Greg Hurlman

Yanıtlar:


360

Doğrudan söyleyeyim:

Bu konuda iyileştirme yönergelerle başlamıyor. Yazılım hakkındaki düşüncelerinizi yeniden yapılandırmakla başlar.

Çoğu hardcore geliştirici , yazılımlarının kullanıcıları ile neredeyse sıfır empatiye sahiptir. Onlar sahip hiçbir ipucu kullanıcıların kullandıkları yazılım ve nasıl genel olarak bir bilgisayar kullanmak modellerini nasıl inşa, kullanıcılar nasıl düşündüğünü.

Bir uzmanın bir meslekten olmayanlarla çarpışması tipik bir sorundur: Normal bir insan , uzmanın 10 yıl önce ne anladığını anlamamak için nasıl bu kadar aptal olabilir ?

Hemen hemen tüm deneyimli geliştiriciler için anlaşılması inanılmaz derecede zor olduğunu kabul eden ilk gerçeklerden biri şudur:

Normal insanların sahip olduğunuzdan çok farklı bir yazılım konsepti vardır. Programlama konusunda hiçbir fikri yok. Yok. Sıfır. Ve umursamıyorlar bile. İlgilenmeleri gerektiğini bile düşünmüyorlar. Eğer onları zorlarsanız, programınızı silerler.

Şimdi bu bir geliştirici için inanılmaz derecede zor. Ürettiği yazılımdan gurur duyuyor. Her özelliği seviyor. Arkasındaki kodun tam olarak nasıl çalıştığını size söyleyebilir. Belki de öncekinden% 50 daha hızlı çalışmasını sağlayan inanılmaz bir akıllı algoritma icat etti.

Ve kullanıcı umursamıyor.

Ne salak.

Birçok geliştirici normal kullanıcılarla çalışmaya devam edemez. Mevcut olmayan teknoloji bilgisi ile bunalıyorlar. Bu yüzden çoğu geliştirici utangaç ve kullanıcıların aptal olması gerektiğini düşünüyor.

Onlar değil.

Bir yazılım geliştiricisi bir araba satın alırsa, sorunsuz bir şekilde çalışmasını bekler. Genellikle lastik basınçlarını umursamaz, bu şekilde çalışması için önemli olan mekanik ince ayar. Burada uzman değil . Ve ince ayar yapmayan bir araba alırsa, geri verir ve istediği şeyi yapan bir araba alır.

Birçok yazılım geliştiricisi filmleri sever. Hayal güçlerini ateşleyen iyi filmler. Ancak, film üretme, görsel efektler üretme veya iyi film senaryoları yazma konusunda uzman değillerdir. Çoğu inek, oyunculuk konusunda çok, çok, çok kötüdür, çünkü hepsi karmaşık duyguları göstermekle ve analitik hakkında çok az şeyle ilgilidir. Bir geliştirici kötü bir film izlerse, sadece bir bütün olarak kötü olduğunu fark eder. İnekler, iyi ve kötü filmler hakkında bilgi toplamak için IMDB'yi bile oluşturdular, böylece hangilerini izleyeceklerini ve hangilerinden kaçınacaklarını biliyorlar. Ancak film oluşturma konusunda uzman değiller. Bir film kötüyse, filmlere gitmezler (veya BitTorrent'den indirmezler)

Bu yüzden aşağıdakilere kayıyor: Bir uzman olarak normal kullanıcıları kesmek cehalettir. Çünkü uzman olmadıkları alanlarda (ve çok fazla var), diğer alanlardan uzmanların ürünlerini veya hizmetlerini kullanan normal insanları zaten düşünmelerini beklerler.

Bunu düzeltmek için ne yapabilirsiniz? Bir programcı olarak ne kadar sert olursanız, normal kullanıcı düşüncesine o kadar az açık olursunuz. Size yabancı ve clueless olacak. Sen düşünecek: İnsanların nasıl düşünemiyorum hiç bilgi bu eksikliği ile ilgili bir bilgisayar kullanın. Ama yapabilirler. Her kullanıcı arayüzü öğesi için şunu düşünün: Gerekli mi? Bir kullanıcının aracımla ilgili konsepte uyuyor mu? Onu nasıl anlatabilirim? Lütfen bunun için kullanılabilirliği okuyun, birçok iyi kitap var. Aynı zamanda bütün bir bilim alanıdır.

Ah ve sen söylemeden önce, ben bir Apple hayranıyım;)


8
Mükemmel yorum! Yazılım tasarımındaki en temel engellerden birini çivilediniz. Sertleşmiş geliştiriciler (benim gibi) için yutmak zor bir gerçek, ama gerçek genellikle.

12
+1. "Mahkumlar iltica ediyor" yazmanızı öneririm, kullanıcı / geliştirici zihniyetlerindeki farklılıklar ve bazı çareler hakkında ayrıntılı bilgi verir.
Richard Levasseur

9
+1 Dürüst olmak gerekirse, kullanıcıyı umursamayan herhangi bir geliştirici kötü bir geliştiricidir!
Gary Willoughby

7
Çok geçerli noktalar ve bence bu anlayış, geliştirici tarafından yürütülen bir dizi projenin (örneğin, açık kaynaklı veya sahip olduğunuz), çoğu geliştirici tarafından kullanımı zor olarak ortaya çıkmasının nedeninin bir parçası olduğunu düşünüyorum. "gerçek" son kullanıcı için değil, kullanıcı olarak kendileri için yazın.
CloudyMusic

25
+1 Bu, Linux'un ortalama bir kullanıcının masaüstüne hala hazır olmamasının nedeni.
Bryan Anderson

215

UI tasarımı olan sert

Soruya:

UI tasarımı neden çoğu geliştirici için bu kadar zor?

Ters soruyu sormayı deneyin:

programlama çoğu kullanıcı arayüzü tasarımcıları için neden bu kadar zor ?

Bir UI kodlamak ve bir UI tasarlamak farklı beceriler ve farklı bir zihniyet gerektirir. UI tasarımı, çoğu geliştirici için zor , bazı geliştiriciler için değil , yazma kodu bazı tasarımcılar için değil, çoğu tasarımcı için zor .

Kodlama zor. Tasarım da zor. Birkaç kişi her ikisini de iyi yapar. İyi UI tasarımcıları nadiren kod yazarlar. Nasıl yapılacağını bile bilmeyebilirler, ancak yine de iyi tasarımcılar. Öyleyse neden iyi geliştiriciler UI tasarımından sorumlu hissediyorlar?

UI tasarımı hakkında daha fazla bilgi sahibi olmak sizi daha iyi bir geliştirici yapar, ancak bu UI tasarımından sorumlu olmanız gerektiği anlamına gelmez. Bunun tersi tasarımcılar için geçerlidir: kod yazmayı bilmek onları daha iyi tasarımcılar haline getirecektir, ancak bu, kullanıcı arayüzünü kodlamaktan sorumlu olmaları gerektiği anlamına gelmez.

UI tasarımında nasıl daha iyi olunur

UI tasarımında daha iyi olmak isteyen geliştiriciler için 3 temel tavsiyem var:

  1. Tasarımı ayrı bir beceri olarak tanımak . Kodlama ve tasarım ayrı ancak ilişkilidir. UI tasarımı bir kodlama alt kümesi değildir. Farklı bir zihniyet, bilgi tabanı ve beceri grubu gerektirir. Orada UI tasarımına odaklanan insanlar var.
  2. Tasarım hakkında bilgi edinin . En azından biraz. Aşağıdaki uzun listeden tasarım kavramlarından ve tekniklerinden birkaçını öğrenmeye çalışın. Daha hırslıysanız, bazı kitaplar okuyun, bir konferansa katılın, ders alın, derece alın. Tasarım hakkında bilgi edinmenin birçok yolu vardır. Joel Spolky'nin UI tasarımı kitabı, geliştiriciler için iyi bir astar, ancak daha fazlası var ve tasarımcıların resme girdiği yer burası.
  3. Tasarımcılar ile çalışın . İyi tasarımcılar, eğer yapabilirsen. Bu işi yapan insanlar çeşitli başlıklara sahiptir. Bugün en yaygın başlıklar Kullanıcı Deneyimi Tasarımcısı (UXD), Bilgi Mimarı (IA), Etkileşim Tasarımcısı (ID) ve Kullanılabilirlik Mühendisi. Tasarım hakkında kod hakkında düşündüğünüz kadar düşünüyorlar. Onlardan çok şey öğrenebilirsiniz, onlar da sizden. Ancak onlarla çalışın. Şirketinizde bu becerilere sahip kişileri bulun. Belki birini işe almalısın. Veya bazı konferanslara gidin, web seminerlerine katılın ve UXD / IA / ID dünyasında zaman geçirin.

İşte öğrenebileceğiniz bazı özel şeyler. Her şeyi öğrenmeye çalışma . Aşağıdaki her şeyi biliyorsanız, kendinize bir etkileşim tasarımcısı veya bilgi mimarı diyebilirsiniz. Listenin üst kısmına yakın şeylerle başlayın . Belirli kavram ve becerilere odaklanın. Sonra aşağı inin ve dallayın. Bu şeyleri gerçekten seviyorsanız, bunu bir kariyer yolu olarak düşünün. Birçok geliştirici yönetime geçer, ancak UX tasarımı başka bir seçenektir.

UI tasarımı neden zor?

İyi UI tasarımı zordur çünkü 2 farklı yetenek içerir:

  • Makinenin derinlemesine anlaşılması . Bu gruptaki insanlar önce kod, ikincisi endişe ediyor. Derin teknolojik bilgi ve beceriye sahipler. Onlara geliştiriciler, programcılar, mühendisler vb. Diyoruz.
  • İnsanları ve tasarımı derinlemesine anlamak : Bu gruptaki insanlar önce insanlar için endişelenir, ikinci olarak kodlar. İnsanların bilgi, bilgisayar ve çevrelerindeki dünyayla nasıl etkileşimde bulundukları hakkında derin bilgiye sahipler. Onlara kullanıcı deneyimi tasarımcıları, bilgi mimarları, etkileşim tasarımcıları, kullanılabilirlik mühendisleri vb. Diyoruz.

Bu iki grup arasındaki - geliştiriciler ve tasarımcılar arasındaki temel fark:

  • Geliştiriciler işe yarıyor . TiVo cihazınızda, iPhone'unuzda, favori web sitenizde vb. İşlevselliği uygularlar. Gerçekte yapması gerekeni yaptığından emin olurlar. En yüksek önceliği, onu işe almak.
  • Tasarımcılar İnsanların yaptığı seviyorum onu . Onunla nasıl etkileşime gireceğini, nasıl görüneceğini ve nasıl hissetmesi gerektiğini anlıyorlar. Uygulamayı, web sitesini, cihazı kullanma deneyimini tasarlarlar. En yüksek önceliği, geliştiricilerin yaptıklarına aşık olmanızı sağlamaktır. Kullanıcı deneyimi ile kastedilen budur ve marka deneyimi ile aynı şey değildir.

Dahası, programlama ve tasarım sadece farklı bilgi ve farklı beceriler değil, farklı zihniyetler gerektirir . İyi UI tasarımı her iki zihniyet, her iki bilgi tabanı, her iki beceri grubu gerektirir. Her ikisinde de ustalaşmak yıllar alır.

Geliştiriciler, UI tasarımcılarının yazma kodunu zor bulmayı beklemeleri gibi UI tasarımını zor bulmayı beklemelidir.


8
Buradaki en iyi cevap bu. Büyük bağlantılar BTW!
Bernard Igiri

UI tasarımına mükemmel genel bakış! Farklı zihniyet fikrinizi de gözlemledim. Hem kullanıcı arayüzü tasarımı hem de programlama yapıyorum ve her seferinde bunlardan sadece birine odaklanmam en iyisi. [...]
Esko Luontola

Programlama sırasında UI tasarım kararları verirseniz, uygulamanın en basit yolunun ne olduğunu düşünürsünüz, bu da genellikle kötü UI tasarımına yol açar. UI tasarımı yaparken uygulamayı düşünürseniz, uygulaması daha kolay olan ancak kullanıcı için iyi olmayan UI tasarım modellerini seçebilirsiniz.
Esko Luontola

2
Bu neden en iyi cevap olarak işaretlenmiyor? Thorsten79'un cevabından çok daha iyi görünüyor.
AbdullahC

1
Bu cevabı doğrudan favorim olsaydı. :)
Dan J

70

Tasarımımı geliştirmeme gerçekten yardımcı olan şey, diğer bir geliştiriciyi, bir QA'lı adamı, PM'yi ya da yürüdüğü ve belirli bir widget veya ekranı denemesini sağlayan herkesi kapmaktır.

Başka birisinin yazılımınızı ilk kez kullandığını izlerken fark edeceğiniz şey şaşırtıcı


Bu yaklaşımı çok denedim ve çok etkili buldum. Bazen teknik olmayan bir arkadaşım onu ​​kullanmaya çalışırken acı çekmelerine neden olan şeyleri görmek için kullanıyor.
Chris Ballance

Ben de aynı yaklaşım benim.
Ed

Bu yaklaşıma "kullanılabilirlik testi" perchance denebilir mi? ;) Evet, öncesinde, sırasında ve sonrasında izlemeniz gereken yaklaşım budur.
Ateş Goral

Bu neredeyse benim kesin cevabım olurdu. KG ve teknik destek harika. Geliştiriciler UI Design'ı emiyor, yineliyor ve başkalarının sık sık test etmesini sağlıyor.
Bill K

7
Ben "koridor kullanılabilirlik testi" denilen inanıyorum
Kevin

32

Sonuçta, bu gerçekten empati ile ilgilidir - kendinizi kullanıcının yerine koyabilir misiniz?

Elbette yardımcı olan bir şey, "kendi dogfood'ınızı yemek" - uygulamalarınızı gerçek bir kullanıcı olarak kullanmak ve sinir bozucu olanı görmek.

Başka bir iyi fikir, uygulamanızı kullanarak gerçek bir kullanıcıyı izlemenin bir yolunu bulmaktır; bu, tek yönlü aynalar, ekran video çekimi, kullanıcılar üzerinde video kameralar vb. İle kullanılabilirlik laboratuvarı kadar karmaşık olabilir veya basit olabilir. koridorda yürürken bir sonraki kişiyi kullanarak kağıt prototipleme olarak.

Her şey başarısız olursa, arayüzün çok karmaşık olmasının çok basit olmasının neredeyse her zaman daha iyi olduğunu unutmayın. "Ah, bunu nasıl çözeceğimi biliyorum, sadece bir onay kutusu ekleyeceğim, böylece kullanıcı hangi modu tercih ettiklerine karar verebilir" demek çok kolay. Yakında kullanıcı arayüzünüz çok karmaşık. Varsayılan bir mod seçin ve tercih ayarını gelişmiş bir yapılandırma seçeneği yapın. Veya sadece dışarıda bırakın.

Tasarım hakkında çok şey okursanız, düşen gölgeler ve yuvarlak köşelere ve benzeri şeylere kolayca asılabilirsiniz. Önemli olan bu değil. Sadelik ve keşfedilebilirlik önemli şeylerdir.


iyi koymak. Çoğu zaman, esneklik ekleme girişimleri sadece dağınıklığa neden olur. Daha basit == daha iyi.
SquareCog

Daha önce hiç yaşamadığınız bir kültürde kendinizi gezegenin diğer tarafındaysa, kullanıcılarınızın yerine koyabilir misiniz? Uluslararasılaşma sağlam UI tasarımında önemli bir husustur. Herkesin ABD'de yaşadığını varsayalım.

Kesinlikle; şu anki projem aslında tüm gezegendeki kullanıcıları hedefliyor (temelde bulunduğum ABD dışındaki her ülkede). Empatiyi daha da zorlaştırıyor, hiç kuşku yok - ve onu ciddi ve güçlü bir şekilde denemek daha da önemli.
Jacob Mattison

Ayrıca, gerçek bir kullanıcıya baktığınızda kullanılabilirlik sorunlarının büyük çoğunluğunun şok edici bir şekilde açık olduğunu da ekleyeceğim. Evet, kültüre özgü ince olanlar olacak, ancak koridorda yürüyen bir sonraki adamı kullanarak muazzam iyileştirmeler yapabilirsiniz.
Jacob Mattison

+1, sadece kendimi +100 yapamadığım için! Çok farklı uygulamaları kullanarak deneyim kazanmanın, bir UI geliştiricisi olarak büyümenize yardımcı olduğunu ekleyeceğim. Yalnızca Visual Studio veya diğer geliştirme araçları gibi araçlar kullanmak bu yeteneğe engel olur ...
BQ.

26

Popüler mitin aksine, UI tasarımında tam anlamıyla yumuşak bir yön yoktur, en azından iyi bir arka uç tasarlamak için gerekenden daha fazla değildir.

Aşağıdakileri göz önünde bulundur; iyi arka uç tasarımı, iyi bir geliştiricinin aşina olduğu oldukça sağlam ilkelere ve unsurlara dayanır:

  • düşük bağlantı

  • yüksek uyum

  • mimari desenler

  • endüstrinin en iyi uygulamaları

  • vb

İyi arka uç tasarımı genellikle testler veya gerçek kullanım sırasında elde edilen ölçülebilir geri bildirime dayanarak ilk planın yavaş yavaş geliştirildiği bir dizi etkileşimden doğar. Bazen arka ucun daha küçük yönlerini prototiplemeniz ve onları ayrı ayrı denemeniz gerekir.

İyi UI tasarımı aşağıdakilerin sağlam ilkelerine dayanır:

  • görünürlük

  • sağlayıcılık

  • geri bildirim

  • hata payı

  • basitlik

  • tutarlılık

  • yapı

Kullanıcı arabirimi ayrıca test ve deneme yoluyla, yinelemeler yoluyla doğar, ancak derleyici + otomatik test takımı ile değil, insanlarla birlikte doğar. Arka uca benzer şekilde, sektördeki en iyi uygulamalar, ölçüm ve değerlendirme teknikleri, kullanıcı arayüzünü düşünme ve kullanıcı modeli, sistem görüntüsü, tasarımcı modeli, yapısal model, fonksiyonel model vb.

Kullanıcı arayüzü tasarlamak için gereken beceri seti, arka uç tasarımı yapmaktan oldukça farklıdır ve bu nedenle önce biraz öğrenme yapmadan iyi kullanıcı arayüzü yapmayı beklemezsiniz. Ancak her iki faaliyetin de ortak noktası tasarım sürecidir. İyi yazılım tasarlayabilen herkesin, nasıl yapılacağını öğrenmek için biraz zaman harcadıkları sürece iyi kullanıcı arayüzü tasarlayabileceğine inanıyorum.

İnsan Bilgisayar Etkileşimi'nde bir ders almanızı, örneğin çevrimiçi malzemeler için MIT ve Yale sitesini kontrol etmenizi öneririm:

Anlama ve Kullanımda Yapısal ve İşlevsel Model

Thorsten79'un mükemmel önceki yazısı, kullanıcılara karşı yazılım geliştirme uzmanlarının konusunu ve yazılım anlayışlarının nasıl farklı olduğunu ortaya koyuyor. İnsan öğrenme uzmanları fonksiyonel ve yapısal zihinsel modelleri birbirinden ayırır. Arkadaşınızın evine giden yolu bulmak, ikisi arasındaki farkın mükemmel bir örneği olabilir:

  • İlk yaklaşım bir dizi ayrıntılı talimatı içerir: otoyolun ilk çıkışını yapın, sonra 100 yarda sola dönün vb. Bu işlevsel bir modele örnektir: belirli bir hedefe ulaşmak için gerekli somut adımların listesi. Fonksiyonel modellerin kullanımı kolaydır, sadece düz bir yürütme için çok fazla düşünme gerektirmezler. Açıkçası basitlik için bir ceza var: en etkili yol olmayabilir ve herhangi bir istisnai durum (yani bir trafik sapması) kolayca tam bir başarısızlığa yol açabilir.

  • Görevle başa çıkmanın farklı bir yolu yapısal bir zihinsel model oluşturmaktır. Örneğimizde bu, "görev nesnesinin" iç yapısı hakkında birçok bilgi taşıyan bir harita olacaktır. Haritamızı ve arkadaşımızın evinin göreli yerlerini anlayarak fonksiyonel modeli (rota) düşebiliriz. Açıkçası, daha fazla çaba gerektirir, ancak olası sapmalara rağmen görevi tamamlamanın çok daha güvenilir bir yoludur.

İşlevsel veya yapısal modeli UI üzerinden iletme (örneğin, sihirbaz ve gelişmiş mod) arasındaki seçim, Thorsten79'un gönderisinden göründüğü kadar basit değildir. Gelişmiş ve sık kullanıcılar yapısal modeli iyi tercih edebilirken, zaman zaman veya daha az tecrübeli kullanıcılar işlevseldir.

Google haritaları harika bir örnektir: hem işlevsel hem de yapısal modeli içerirler, birçok sat nav da içerir.

Sorunun bir başka boyutu, UI aracılığıyla sunulan yapısal modelin yazılımın yapısıyla eşleşmemeli, daha ziyade eldeki kullanıcı görevinin veya ilgili görev nesnesinin yapısıyla eşleşmesi gerektiğidir.

Buradaki zorluk, birçok geliştiricinin yazılımlarının iç yapılarının iyi bir yapısal modeline sahip olması, ancak yazılımın yardımcı olmayı amaçladığı kullanıcı görevinin sadece fonksiyonel modelinin olmasıdır. İyi kullanıcı arayüzü oluşturmak için görev / görev nesnesi yapısını anlamak ve kullanıcı arayüzünü bu yapıya eşlemek gerekir.

Her neyse, hala yeterince güçlü bir HCI kursu almayı tavsiye edemem. Bir sürü şey gibi yer var sezgisel , türetilen ilkeler Gestalt psikolojisinin , yollar insanların öğrenmek vs.


MIT OCW bağlantısı için +1 + 1) Bu ders notları çok değerli
PlagueHammer

Haklısınız, kullanıcılar bir yazılımın uzmanı olabilirler ve birileri "güzel" kullanıcı arayüzü yoluyla daha hızlı olmaları için bir yol açtıklarında bunu severler. Örneğin, tüm önemli kısayollar buradadır. kullanılabilirlik çok ilginç bir konudur!
Thorsten79

25

Kullanılabilirlik ve diğer şeylere odaklanmadan tüm kullanıcı arayüzünüzü şu anda yaptığınız şekilde yapmaya başlamanızı öneririm.

alternatif metin http://www.stricken.org/uploaded_images/WordToolbars-718376.jpg

Şimdi şunu düşünün:

Bir tasarımcı, eklenecek hiçbir şey kalmadığı zaman değil, götürecek bir şey kalmadığında mükemmelliğe ulaştığını bilir. - Saint-Exupéry

Ve bunu tasarımınıza uygulayın.


Bu yüzden Office 2007'yi çok tercih ediyorum!
Richard Ev

Birisi bu mezardan hangi mezardan çıkardığımı merak ederse, uygarlıktan duydum 4. Harika bir oyun. Yazarın kim olduğu hakkında hiçbir fikrim yok, ama cehennem olarak, kelime tasarımcılarından daha iyi bir kullanıcı arayüzü yazabileceğinden emin.
Hoffmann

A. Einstein'dan da benzer iyi bir alıntı var: "Her şeyi olabildiğince basitleştir, ama daha basit değil." Bu fikirlerin UI tasarımı için de geçerli olduğunu gördüm: www.presentationzen.com. ... ve +1
Pyry Jahkola

Saint-Exupery bir pilot ve uçak tasarımcısından çok daha fazlasıydı; Onu alıntılamak için +1. Çocuk kitabı ("Küçük Prens") okumaya değer, ancak burada konu dışı kalıyorum.
David Thornley

5
Baskı görünümünü seçmelisiniz ... cetvelleri şimdi göremiyorsunuz.
Mussnoon

16

Birçok geliştirici kod yazabildikleri için her şeyi yapabildiklerini düşünüyor. Bir arayüz tasarlamak tamamen farklı bir beceridir ve üniversiteye gittiğimde hiç öğretilmedi. Sadece doğal olarak gelen bir şey değil.

Başka bir iyi kitap da Donald Norman'ın Gündelik Şeylerin Tasarımı .


Teşekkürler, "Günlük Düşünüyor Tasarımı" Amazon WishList'imde
Chris Ballance

+1. "Günlük şeylerin tasarımı" da önerilen okuma kodlama Korku listesinde (geliştiriciler için iyi bir kitap listesi). Son zamanlarda okumayı bitirdi ve kesinlikle tavsiye edebilirim.
Mun

Şu anda "Gündelik şeylerin Tasarımı" nı okuyorum - kesinlikle çok iyi, ama başka bir cevabın yorumlarında belirtildiği gibi, Alan Cooper'ın "Mahkumlar İltica'yı yönetiyor" tam olarak bu konuyu ele alıyor. Bir geliştirici olarak, kitap "hayatını değiştirdi"!
Stuart Helwig

Benim huyum: bir çok geliştirici (ve tasarımcılar ve diğerleri) kodlayabildiğim için kullanıcı arayüzünü tasarlayamayacağımı düşünüyor. Photoshop'u çok iyi tanımıyorum, ama bence neyin işe yarayıp neyin yaramadığını iyi bir gözüm var. (Gündelik şeylerin tasarımı benim ilk UI incilimdi.)
Barry Brown

14

Tasarım ve estetik arasında büyük bir fark vardır ve genellikle karıştırılırlar.

Güzel bir kullanıcı arayüzü, kendim de dahil olmak üzere birçok kişinin üretemeyeceği sanatsal veya en azından estetik beceriler gerektirir. Ne yazık ki, yeterli değildir ve birçok ağır flaş tabanlı API'de görebildiğimiz için kullanıcı arayüzünü kullanılabilir hale getirmez.

Kullanılabilir kullanıcı arayüzleri üretmek, insanların bilgisayarlarla nasıl etkileşime girdiğini, psikolojideki bazı konuları (örneğin, Fitt yasası, Hick yasası) ve diğer konuları anlamayı gerektirir. Çok az sayıda CS programı bunun için eğitim alır. Bildiğim çok az geliştirici, bir JUnit kitabı vb. Üzerinden bir kullanıcı test kitabı seçecektir.

Birçoğumuz da "çekirdek programcılar" dır ve UI'leri projemizin başarısını artırabilecek veya bozabilecek bir faktör olarak değil, cephe olarak düşünmeye eğilimliyiz.

Ayrıca, çoğu UI geliştirme deneyimi son derece sinir bozucudur. Ya eski VB gibi oyuncak GUI kurucuları kullanabilir ve çirkin tutkal kodu ile uğraşmak zorunda kalabiliriz ya da Swing'deki mizanpajları sıralamak gibi bizi son derece sinirlendiren API'leri kullanırız.


"Ya eski VB gibi oyuncak GUI kurucuları kullanabilir ve çirkin tutkal kodu ile uğraşmak zorunda kalabiliriz ya da Swing'deki mizanpajları sıralamaya çalışmak gibi bizi son derece sinirlendiren API'leri kullanırız." GUI oluşturma konusundaki deneyimlerimi gerçekten kaynattın. Eğer ekleyebilirsem: "ya da çılgın DOM ve CSS kombinasyonu"
Hoffmann

Eminim herkes Totally Gridbag'i biliyor mu? " madbean.com/anim/totallygridbag "
Uri

12

Slashdot'a gidin ve Apple ile ilgili herhangi bir makaledeki yorumları okuyun. Apple ürünlerinin özel bir şey olmadığı hakkında konuşan çok sayıda insan bulacaksınız ve iPod ve iPhone'un başarısını modaya uygun veya şık olmaya çalışan insanlara atfediyorsunuz. Genellikle özellik listelerinden geçecekler ve daha önce MP3 çalarların veya akıllı telefonların yapmadığı hiçbir şey yapmadıklarına dikkat çekecekler.

Sonra iPod ve iPhone'u seven insanlar var, çünkü kullanıcıların el kitaplarına başvurmadan basit ve kolay bir şekilde istediklerini yapıyorlar. Arayüzler, arayüzlerin aldığı, akılda kalıcı ve keşfedilebilir olduğu kadar sezgiseldir. Daha önceki sürümlerde olduğu gibi MacOSX'taki kullanıcı arayüzüne düşkün değilim, sanırım glitz lehine bazı kullanışlılıklarından vazgeçtiler, ancak iPod ve iPhone mükemmel tasarım örnekleri.

İlk kamptaysanız, ortalama bir insanın yaptığı gibi düşünmezsiniz ve bu nedenle kötü kullanıcı arayüzleri oluşturabilirsiniz, çünkü onlara iyi olanlardan anlatamazsınız. Bu umutsuz olduğunuz anlamına gelmez, daha ziyade iyi bir arayüz tasarım ilkelerini ve iyi bir kullanıcı arayüzünü nasıl tanımanız gerektiğini (Asperger'in sahip olduğu bir kişinin sosyal becerileri açıkça öğrenmesi gerekebilir). Açıkçası, sadece iyi bir kullanıcı arayüzüne sahip olmak, bir tane oluşturabileceğiniz anlamına gelmez; örneğin edebiyat için takdirim, şu anda yayınlanabilir hikayeler yazma yeteneğine uzanmıyor gibi görünüyor.

Bu nedenle, iyi UI tasarımı için bir anlam geliştirmeye çalışın. Bu sadece yazılımdan daha fazlasını kapsar. Don Norman'ın "Gündelik Şeylerin Tasarımı" bir klasik ve orada başka kitaplar da var. Başarılı UI tasarımlarından örnekler alın ve farkınızı hissetmek için onlarla yeterince oynayın. Bir şeyleri düşünmenin yeni bir yolunu öğrenmek zorunda olabileceğinizi anlayın ve tadını çıkarın.


Öneri için +1 +1 Günlük Şeylerin Tasarımı
Oskar Duveborn

Çok iyi bir cevap için +1. Sanırım hala 1 yukarı oylamaya (şimdi 2) gittiğinizi söylüyor; açıklamanıza uyanlar muhtemelen yaptıklarını düşünmeyecek veya sadece fikri
reddetecektir

Bu battaniye bir ifade. Slashdot hakkındaki her Apple karşıtı yorumu, UI'sinin bir eleştirisi veya UI anlayışının eksikliğinin doğrulanması değildir. Apple'ın iyi kullanıcı arayüzü var ve rakiplerinin çoğu da öyle.
Bernard Igiri

Başka bir düşünce: Apple herkes için değildir; örneğin, bir CLI'nin olağanüstü olağanüstü gücünü sağlamaz.
J. Polfer

2
Kişisel olarak Apple ürünlerinin kullanımı son derece sezgisel olmadığını düşünüyorum. İlk iPod'ları koşu yapmaya her başladığımda şarkıları karıştırmaya başladığında veya iPhone ekranının neden sürekli kendini ters çevirdiğinde hayal kırıklığına uğramış tek kişi olmadığımı hayal ediyorum. Bence işler sadece doğrudan, açık olmayan kullanıcı işlemlerinden kaynaklanmalı.
Lotus Notes

10

Tuttuğum ana kural, hiçbir zaman ikisini birden yapmaya çalışmamaktır. Arka uç kodu üzerinde çalışıyorsam, bunu bitireceğim, bir ara vereceğim ve UI şapkamla geri döneceğim. Kod yaparken çalışmaya çalışırsanız, yanlış zihniyetle yaklaşırsınız ve sonuç olarak bazı korkunç arayüzlerle sonuçlanırsınız.

Hem iyi bir arka uç geliştirici hem de iyi bir UI tasarımcısı olmanın kesinlikle mümkün olduğunu düşünüyorum, sadece üzerinde çalışmalı, konuyla ilgili biraz okuma ve araştırma yapmalısın (Miller'in # 7'sinden Nielsen arşivlerine kadar her şey) ve UI tasarımının neden çok önemli olduğunu anladığınızdan emin olun .

Bunun yaratıcı olmaya ihtiyaç olduğunu düşünmüyorum, daha ziyade, arka uç gelişimi gibi, öğrenilmesi gereken çok metodik, çok yapılandırılmış bir şey. En büyük kullanılabilirlik canavarlıklarından bazılarını yaratan kullanıcı arayüzleriyle 'yaratıcı' hale gelen insanlar ... Yani, başlangıç ​​için% 100 Flash web sitelerine bir göz atın ...

Düzenleme : Krug'ın kitabı gerçekten iyi ... özellikle Web için tasarlayacaksanız, bir okuyun.


ve bu
krug'un

@refhat Üst yazıya belirgin bir şekilde bağlandı, bu yüzden o zaman bağlantı vermedim, ama bu şu: librarything.com/work/12322
James B

8

Bunun için birçok nedeni vardır.

(1) Geliştirici işleri kullanıcı açısından göremiyor. Bu olağan şüphelidir: empati eksikliği. Ancak bu genellikle doğru değildir, çünkü geliştiriciler insanların ortaya çıkardığı kadar yabancı değildir.

(2) Bir başka, daha yaygın neden, geliştiricinin eşyalarına bu kadar yakın olması, eşyalarıyla uzun süre kalması, eşyalarının diğer insanlara çok tanıdık (sezgisel olmaktan daha iyi bir terim) olamayacağını fark etmemesidir. .

(3) Yine bir başka neden, geliştiricinin tekniklerden yoksun olmasıdır.

BÜYÜK İDDİA: herhangi bir UI, insan interection tasarımı, prototip kitap okuyun. Örneğin Açıkça Tasarım Yapma: Web Uygulaması Tasarımında Ortak Bir Anlam Yaklaşımı, Beni Düşünme: Web Kullanılabilirliğine Ortak Bir Anlam Yaklaşımı, Anı Tasarlama, Ne olursa olsun.

Görev akışlarını nasıl tartışıyorlar? Karar noktalarını nasıl tanımlarlar? Yani, herhangi bir kullanım durumunda, en az 3 yol vardır: başarı, başarısızlık / istisna, alternatif.

Böylece A noktasından A.1, A.2, A.3'e gidebilirsiniz. A.1 noktasından A.1.1, A.1.2, A.1.3 vb. Konulara ulaşabilirsiniz.

Bu tür detaylandırma görev akışını nasıl gösterirler? Yapmazlar. Sadece parlıyorlar.

UI uzmanının bile bir tekniği olmadığı için geliştiricilerin şansı yok. Kafasında net olduğunu düşünüyor. Ancak, yazılım uygulamasında açıkça ifade edersek, kağıt üzerinde bile net değildir.

Bunun için kendi el yapımı tekniklerimi kullanmalıyım.


7

Tasarıma özgü web siteleri ve metinlerle iletişimde kalmaya çalışıyorum. Ayrıca mükemmel Robin Williams kitabının Tasarımcı Olmayan Tasarım Kitabı'nı bu çalışmalarda çok ilginç buldum .

Tasarım ve kullanılabilirliğin yazılım mühendisliğinin çok önemli bir parçası olduğuna inanıyorum ve daha fazla öğrenmeli ve tasarım yapmamamız gereken bahaneler vermemeliyiz.

Herkes arada bir tasarımcı olabilir, aynı zamanda herkes bir programcı olabilir.


Herkesin programcı olabileceğini kabul etmiyorum. Ticaretin bazı yönleri öğretilemez, bunu hackleyebilirsiniz ya da yapamazsınız (cezalandırma amaçlı değildir)
Chris Ballance

2
Yani, arada bir, bu adamın iyi bir programcı olacağı veya sonsuza dek olacağı anlamına gelmez .
Edwin Jarvis

7

UI tasarımına yaklaşırken, aklımda tuttuğum şeylerden bazıları (tam bir liste değil):

  • Bir modelin iletilmesi . Kullanıcı arayüzü, kullanıcıya zihinsel bir modeli açıklayan bir anlatıdır. Bu model bir iş nesnesi, bir dizi ilişki, neyiniz olabilir. Görsel öneme, uzamsal yerleşim ve iş akışı siparişi, bu modeli kullanıcıya iletmede önemli bir rol oynar. Örneğin, belirli bir liste başka bir listeye karşı, farklı şeylerin yanı sıra listedeki içeriğin modelin geri kalanıyla ilişkisi anlamına gelir. Genel olarak, bir seferde yalnızca bir modelin iletildiğinden emin olmak en iyisidir. Programcılar sık ​​sık aynı kullanıcı arayüzü alanında birden fazla model veya birden fazla parçayı iletmeye çalışır.

  • Tutarlılık . Popüler kullanıcı arayüzü metaforlarını tekrar kullanmak çok yardımcı olur. İç tutarlılık da çok önemlidir.

  • Görevlerin gruplandırılması . Kullanıcıların ilgili komut dizisini doğrulamak veya tamamlamak için fareyi ekran boyunca tamamen hareket ettirmeleri gerekmez. Kalıcı diyaloglar ve açılır menüler bu alanda özellikle kötü olabilir.

  • Hedef kitlenizi tanıyın . Kullanıcılarınız aynı etkinlikleri tekrar tekrar yapacaklarsa, bu görevlerde hızlı bir şekilde güçlü kullanıcılar olacaklar ve ilk giriş engelini azaltma girişimleri nedeniyle hayal kırıklığına uğrayacaklar. Kullanıcılarınız nadiren birçok farklı türde etkinlik yaparsa, kullanıcı arayüzünün sürekli olarak elini tutmasını sağlamak en iyisidir.


Kitlenizi tanımakla iyi bir noktaya değindiniz ... Ayrıca "Siz kullanıcı değilsiniz" (Platt) ve "Kullanıcılarınızı tanıyın" (Platt) Bu yeterince vurgulanamaz
Chris Ballance


5

Kullanıcı arabirimi tasarımında en iyi aracı bulduğum ilk kez Kullanıcı yazılımı kullanmaya teşebbüs etmek. Bir sürü not alın ve onlara bazı sorular sorun. Asla onları yönlendirmeyin veya yazılımın nasıl çalıştığını açıklamaya çalışmayın. Bu kullanıcı arayüzünün (ve iyi yazılmış belgelerin) işidir.

Tüm projelerde bu yaklaşımı sürekli benimsiyoruz. Bir Kullanıcı'nın yazılımla daha önce hiç düşünmediğiniz bir şekilde uğraşmasını izlemek her zaman büyüleyici.

Kullanıcı arayüzü tasarımı neden bu kadar zor? Genel olarak Geliştirici ve Kullanıcı hiçbir zaman buluşmadığı için.


Kesinlikle kabul edildi, ancak bir geliştiricinin sağlam temel UI ilkelerini uygulaması oldukça mümkündür.
nailitdown

Sağlam Temel UI ilkeleri her ülkede çalışmaz. Yazılımları birçok bölgede kullanıyoruz ve dünyanın farklı bölümleri için UI tasarımında büyük bir fark var. Bir zamanlar ABD merkezli uygulamanızı Çin'e göndermeyi deneyin ...

5

duffymo bana nedenini hatırlattı: Birçok Programcı "* Tasarım" == "Sanat" diye düşünüyor.

İyi UI tasarımı kesinlikle sanatsal değildir. Araştırmayı yapmak için zamanınız varsa verilerle desteklenebilecek sağlam ilkeleri takip eder.

Tüm programcıların yapması gereken ilkeleri öğrenmek için zaman ayırmak olduğunu düşünüyorum. Kodda ya da düzende olabildiğince iyi uygulamayı uygulamak doğamızda var. Tek yapmamız gereken, işimizin bu yönü için en iyi uygulamaların ne olduğunun farkında olmaktır.


Estetiği tamamen indiremeyeceğinizi düşünüyorum. Belki de çirkin bir arayüz, güzel bir kullanıcı kadar kullanışlı olabilir, ancak bu bir kullanıcı arayüzü için yeterli değildir. Sonuçta, UI, bir kitabın kapağı gibi, programınızın yüzüdür: insanların güzel bir kullanıcı arayüzüne sahip bir program seçmeleri daha olasıdır.
Tikhon Jelvis

Kesinlikle, estetik önemlidir, ancak bu UI tasarımı değil Grafik Tasarım'dır.
nailitdown

5

Kullanıcı arayüzü tasarımında daha iyi olmak için ne yaptım?
Dikkat!

Sanki haberlerde bir grafiği veya elektronik veri yolu işaretini ne zaman görüyorsunuz ve 'Bu verileri nasıl elde ettiler? Bunu ham sql ile mi yaptılar yoksa LINQ kullanıyorlar mı? ' (veya buraya kendi ortak inek merakınızı ekleyin).

Bunu yapmaya başlamanız gerekiyor, ancak her türlü görsel unsurla.

Ancak yeni bir dil öğrenmek gibi, kendinizi gerçekten içine atmazsanız, asla öğrenemezsiniz.

Yazdığım başka bir cevaptan :

Etrafınızdaki dünyaya bakmayı, gerçekten bakmayı öğrenin. Neden bu arayüzden hoşlanıyorum ama bundan nefret ediyorum? Bu restoran menüsünde erişte yemeklerini bulmak neden bu kadar zor? Vay be, kelimeleri bile okumadan önce bu işaretin ne anlama geldiğini biliyordum. Nedendi? Bu kitap kapağı neden bu kadar yanlış görünüyor? Neden her türlü görsel öğeye tepki verdiğinizi düşünmeye zaman ayırmayı öğrenin ve daha sonra bunu işinize uygulayın.


Bakmayı ve düşünmeyi öğrenmek için zen tavsiyesi için +1. Çok az insan gözle neyi karşıladığını sorguluyor.
PlagueHammer

5

Ancak bunu yapmak (ve yukarıda bazı büyük noktaları vardır), bir kez ben INTUITIVE OLARAK HİÇBİR ŞEY olduğunu kabul kez gerçekten yardımcı oldu ....

Ufukta savunan argümanları duyabiliyorum ... bu yüzden biraz açıklayayım.

Sezgisel: bilinçsiz bir yönteme veya duyuma dayanarak kişinin doğru ya da doğru olduğunu düşündüğü şeyi kullanmak.

(Carl Sagan'ın öne sürdüğü gibi), şimdiye kadar karşılaştığınız hiçbir şeye benzemeyen şeyleri anlayamayacağınızı kabul ederseniz, daha önce hiç böyle bir şey kullanmadıysanız bir şeyin nasıl kullanılacağını nasıl bilebilirsiniz?

Bir düşünün: Çocuklar kapı tokmağının nasıl çalıştığını "bildiği" için değil, başka birisinin bunu yaptığını gördükleri için kapıları açmaya çalışırlar ... genellikle düğmeyi yanlış yöne çevirirler veya çok erken çekerler. Kapı tokmağının nasıl çalıştığını öğrenmek zorundalar. Bu bilgi daha sonra farklı ama benzer durumlarda uygulanır: bir pencere açmak, bir çekmece açmak, büyük, düğme görünümlü bir kulp ile neredeyse büyük olan her şeyi açmak.

Bize sezgisel görünen basit şeyler bile diğer kültürlerden insanlar için hiç sezgisel olmayacaktır. Birisi kollarını önünde tutup kolunu sabit tutarken elini bileğinden yukarı ve aşağı feragat ederse .... Seni uzaklaştırıyorlar mı? Muhtemelen, Japonya'da değilseniz. Orada, bu el sinyali "buraya gel" anlamına gelebilir. Kim haklı? Her ikisi de, elbette, kendi bağlamlarında. Ama ikisine de seyahat ediyorsanız, ikisini de bilmeniz gerekir ... UI tasarımı.

Projemin potansiyel kullanıcılarına zaten "tanıdık" olan şeyleri bulmaya çalışıyorum ve daha sonra kullanıcı arayüzlerini etrafında oluşturuyorum: kullanıcı merkezli tasarım.

Apple'ın iPhone'una bir göz atın. Ondan nefret etseniz bile, içine giren düşünce miktarına saygı duymalısınız. Mükemmel mi? Tabii ki değil. Zamanla bir nesnenin algılanan "sezgiselliği" büyüyebilir veya tamamen kaybolabilir.

Örneğin. Çoğu kişi, üst ve altta iki sıra delikli bir siyah şeridin bir film şeridine benzediğini bilir ... ya da öyle mi?

Ortalama 9 ya da 10 yaşındaki çocuğunuza ne düşündüklerini sorun. Halen Hollywood'u temsil etmek için kullanılan bir şey ya da film (film) ile ilgili bir şey olmasına rağmen, şu anda kaç çocuğun onu bir film şeridi olarak tanımlamakta zorlanacağına şaşırabilirsiniz. Son 20 yıldaki filmlerin çoğu dijital olarak çekildi. Ve en son ne zaman herhangi bir film, fotoğraf ya da film gibi bir film düzenledik?

Yani, benim için her şey kaynıyor: Kitlenizi tanıyın ve "sezgisel" şeylerde eğilimlere ve değişikliklere ayak uydurmak, ana kullanıcılarınızı hedeflemek ve deneyimsizleri lehine cezalandırmayacak şeyler yapmaya çalışmak için sürekli araştırma yapın. acemileri elinizde tutmak için ileri düzey kullanıcılar veya ileri düzey kullanıcıları yavaşlatır.

Nihayetinde, her programın kullanımı için kullanıcının belirli bir miktarda eğitim alması gerekecektir. Alınması gereken kararların ne kadar eğitim ve hangi düzeyde kullanıcı için olduğu.

Bazı şeyler, hedef kullanıcınızın bir insan veya bilgisayar kullanıcısı veya öğrenci ya da başka bir şey olarak geçmişteki deneyim düzeyine bağlı olarak az çok tanıdıktır.

Sadece çan eğrisinin en şişman kısmı için ateş ediyorum ve olabildiğince çok insan almaya çalışıyorum ama asla herkesi memnun etmeyeceğimin farkına varıyorum ....


4

Microsoft'un kendi yönergeleriyle oldukça tutarsız olduğunu biliyorum, ancak Windows tasarım yönergelerini okumanın bana gerçekten yardımcı olduğunu buldum. Burada web sitemde bir kopya var , sadece Vista UX Kılavuzu biraz aşağı kaydırın. Renkler, boşluklar, düzenler ve daha fazlası gibi şeyler için bana yardımcı oldu.


Platformun tasarım yönergelerini okumak +1 kesinlikle yapılması gereken bir şeydir (ve Microsoft'un kendi kurallarını ne sıklıkta ihlal ettiğini keşfedin;)
Oskar Duveborn

Ek olarak Apple'ları da okuyun (İnsan Arayüz Kılavuzları). İçlerinde daha fazla temel ve ilkeleri var. Bu, neyin evrensel olması ve platforma özgü ne olduğunu anlamanıza yardımcı olur
Stephan Eggermont

Siz bu sırada GNOME HIG'yi de okuyun. Bu üçü arasında, tek bir platformun sadece belirli bir şeyi ve genel olarak iyi bir fikir gibi görünen şey görünür hale gelmeye başlar.
mghie

Bunların çoğu IBM'lere dayanıyor, ancak şu anda oldukça eski. Örneğin, standart kes ve yapıştır komutları Shift + Del ve Shift + Ins'dı (hala çalışıyorlar, btw).
Simon Buchan

4

Ana sorunun farklı yetenekler veya becerilerle ilgisi olmadığına inanıyorum. Temel sorun, bir geliştirici olarak uygulamanın ne yaptığını ve nasıl yaptığını çok fazla biliyor olmanız ve UI'nizi otomatik olarak bu bilgiye sahip birinin bakış açısından tasarlamanızdır.

Bir kullanıcı tipik olarak uygulama hakkında kesinlikle hiçbir şey bilmeden başlar ve iç işleri hakkında hiçbir şey öğrenmesi gerekmez.

Sahip olduğunuz bilgileri kullanmamak çok zor, neredeyse imkansız - ve bu yüzden arkasındaki uygulamayı geliştiren biri tarafından bir kullanıcı arayüzü tasarlanmamalıdır.


4

"Ekranın her iki tarafından tasarlama", programcıların UI tasarımını neden zor bulduklarına dair çok basit ama derin bir neden sunar: UI tasarımcıları ortak durumlar veya kullanım açısından düşünmek üzere eğitilirken programcılar uç durumlar açısından düşünmek için eğitilir.

Bu yüzden, herhangi birinden varsayılan eğitim diğerinin tam tersi ise, bir dünyadan diğerine gitmek kesinlikle zordur.


3

Programların UI tasarımını emdiğini söylemek, noktayı kaçırmaktır. Sorunun amacı, çoğu geliştiricinin teknolojiyle derinlemesine eğitim aldığı resmi eğitimdir. İnsan - Bilgisayar Etkileşimi basit bir konu değildir. Bu basit bir satır ifadesi sağlayarak size "zihin-meld" bir şey değil "oh y yerine x yaparsanız kullanıcılar bu uygulamayı daha etkili kullanacağını" fark.

Bunun nedeni, eksik UI tasarımınızın bir parçası olmasıdır. İnsan beyni. Bir arayüzün nasıl tasarlanacağını anlamak için, insan zihninin makinelerle nasıl etkileşime girdiğini anlamalısınız. Minnesota Üniversitesi'nde bir Psikoloji profesörü tarafından öğretilen bu konuda aldığım mükemmel bir ders var. Adı "İnsan - Makine Etkileşimi". Bu, UI tasarımının bu kadar karmaşık olmasının birçok nedenini açıklar.

Psikoloji Nedensellik değil Korelasyonlara dayandığından, herhangi bir durumda UI tasarım yönteminin her zaman işe yarayacağını asla kanıtlayamazsınız. Birçok kullanıcının belirli bir UI tasarımını çekici veya verimli bulacağını ilişkilendirebilirsiniz, ancak her zaman genelleştirileceğini kanıtlayamazsınız.

Ek olarak, UI tasarımında birçok kişinin kaçırdığı iki bölüm var. Estetik çekicilik ve fonksiyonel iş akışı var. % 100 estetik bir cazibe için giderseniz, insanların sizin ürününüzden başka bir şey olacağından emin olabilirsiniz. Yine de estetiğin kullanıcı hayal kırıklığını azaltacağından şüpheliyim.

Orada Bill Buxton en gibi (almak için bu konu ve kursta birkaç iyi kitaplardır Sketching Kullanıcı Deneyimleri ve Wild Biliş Edwin Hutchins tarafından ). Birçok üniversitede İnsan - Bilgisayar Etkileşimi üzerine yüksek lisans programları bulunmaktadır.

Bu sorunun genel cevabı, bireylere bilgisayar bilimi nasıl öğretilir. Hepsi matematik temelli, mantık temelli ve kullanıcı deneyimine dayalı değil. Bunu elde etmek için, genel bir 4 yıllık bilgisayar bilimi derecesinden daha fazlasına ihtiyacınız vardır (4 yıllık bilgisayar bilimi dereceniz psikolojide küçük değilse ve İnsan - Bilgisayar Etkileşimi'nde vurgulanmadıysa).


Kabul etmiyorum: bilgisayarlar doğası gereği matematik ve mantık temelli. Herhangi bir bilgisayar programlama öğretisi matematik ve mantık temelli olmalıdır.
Paul Nathan

1
Evet, haklısın Paul. Bilgisayarlar matematik ve mantıktır. UI tasarımı, tarihte çok daha az matematik ve mantık tabanlı olduğunu kanıtlamış bir insan unsurunu içerir.
jwendl

Daha az matematik ve mantık temelli oldukları kadar çok değil, arkasındaki matematik ve mantık, bugünün çoğunun ötesinde, çok daha karmaşık. Bununla birlikte, iyi UI tasarımlarının bir dereceye kadar geometriye dayalı olduğunu iddia ediyorum.
Tikhon Jelvis

2

Sorunuzu tersine çevirelim -

"UI tasarımcıları" yalnızca bilgi mimarisi ve sunum katmanları tasarlamaya mahk ?m mudur? Keyifli ve verimli sistem katmanları tasarlamada daha etkili olmak için beyinlerini yeniden eğitmek için yapabilecekleri bir şey var mı?

Görünüşe göre "ui tasarımcıları" tamamen farklı bir perspektif almak zorunda kalacaklar - kutunun içinden dışarıya bakmak zorunda kalacaklardı; kutunun dışından bakmak yerine.

Alan Cooper'ın "Mahkmatmlar Sığınma Koşusu" düşüncesi, her iki perspektifi de başarıyla alamayız - bir şapka takmayı öğrenebiliriz, ancak sadece şapka değiştiremeyiz.


2

Bence bu iyi bir kullanıcı arayüzü mantıklı değil. İyi bir kullanıcı arayüzü sezgiseldir.

Yazılım geliştiricileri genellikle 'sezgisel'


Mükemmel nokta, beynin diğer tarafını gerektirir
Chris Ballance

Kullanıcı arayüzü için sezgisel diye bir şey yoktur. Zaten bildiğim şeye benzer, ama bu biraz farklı.
Stephan Eggermont

Hiçbir şey "sezgisel" değildir, her şey öğrenilir. Sezgisel, iş adamları tarafından programcıları terletmek için atılan bir kelimedir.
Bernard Igiri

gerçek bir programcı gibi konuşulur .... ve o zaman sorunun kökü budur.
Gregor Brandt

@gbrandt Sezgisel "tanıdık" ve "basit" kombinasyonudur. Yine de çabalamak için hala bir hedef. Kullanılabilirlikle ilgili en zor şey, bazıları için sezgisel olanın, diğerleri için mutlaka sezgisel olmamasıdır. @Stephan haklı "sezgisel" bazı zor "gerçek" değil, kullanıcıya göreli.
TM.

2

Yararlı bir çerçeveleme, yaptığınız işi aktif olarak bir iletişim süreci tasarlamak olarak değerlendirmektir. Çok gerçek anlamda, arayüzünüz kullanıcının bilgisayara ne yapacağını söylemek için kullanması gereken bir dildir. Bu, bir dizi noktanın dikkate alınmasına yol açar:

  1. Kullanıcı bu dili zaten konuşuyor mu? Oldukça kendine özgü bir arayüz kullanmak, daha önce hiç konuşmadığınız bir dilde iletişim kurmak gibidir. Bu yüzden arayüzünüzün kendine özgü olması gerekiyorsa, en basit terimler ve dikkat dağıtıcı unsurlarla kendini en iyi şekilde tanıtmıştı. Öte yandan, arayüzünüz kullanıcının alışkın olduğu deyimleri kullanıyorsa, başlangıçtan itibaren güven kazanacaktır.
  2. İletişim düşmanı gürültüdür. İşitsel gürültü, sözlü iletişime müdahale eder; görsel gürültü görsel iletişimi engeller. Arayüzünüzden ne kadar çok gürültü çıkarırsanız, onunla o kadar kolay iletişim kurarsınız.
  3. İnsan konuşmalarında olduğu gibi, genellikle söylediğiniz gibi değildir, bunu nasıl söylersiniz. Çoğu yazılımın iletişim şekli, bir kişi olsaydı, yüzüne yumruk atan bir dereceye kadar kaba. Birisine bir soru sorduysanız ve cevap vermeden önce başka bir şekilde yanıt vermeyi reddederek orada oturdu ve birkaç dakika boyunca size baktılarsa ne hissettiniz? İlerleme çubukları ve otomatik odak seçimi gibi birçok arabirim öğesi nezaketin temel işlevine sahiptir. Kendinize, kullanıcının gününü nasıl biraz daha keyifli hale getirebileceğinizi sorun.

Gerçekten, bu varlık olarak programcılar arayüz etkileşimin ne düşündüğünü belirlemek için biraz zor diğer iletişim sürecinin daha, ama belki sorun hiç birşey olarak düşünülebilir almaz olmasıdır.


2

Zaten çok fazla iyi yorum var, bu yüzden ekleyebileceğim çok şey olduğundan emin değilim. Ama hala...

  • Bir geliştirici neden iyi kullanıcı arayüzü tasarlamayı umuyor?
  • O alanda ne kadar eğitim almıştı?
  • Kaç kitap okudu?
  • Kaç yıl boyunca kaç şey tasarladı?
  • Kullanıcılarının tepkisini görme fırsatı buldu mu?

Rastgele bir "Joe tesisatçı" nın iyi bir kod yazmasını beklemiyoruz. Öyleyse neden rastgele "programcı Joe" nun iyi kullanıcı arayüzü tasarlamasını umuyoruz?

Empati yardımcı olur. UI tasarımını ve programlamayı ayırmak yardımcı olur. Kullanılabilirlik testi yardımcı olur.

Ancak UI tasarımı, diğerleri gibi öğrenilmesi ve uygulanması gereken bir zanaattır.


Tam olarak ne düşünüyordum, "geliştirici" nasıl "Kullanıcı Arayüzü Tasarımcısı" ile ilgilidir?
Jorge Córdoba

@Jorge şimdi bununla ilgili: birçok geliştirici, tasarımcı olmasalar bile, işverenleri için kullanıcı arayüzleri tasarlamalıdır. Şirketimde HERHANGİ bir sanatçımız yok. Uygulamalarımız çok kötü görünmüyor. Bu durumda, tasarımın güzel olduğundan emin olmak için grup incelemelerine ve malzemelerine sahip olmanız gerekir.
TM.

@TM: Tasarım mutlaka UI / UX Tasarımı değildir. Elbette iyi görünebilir, ancak bu iyi çalıştığı anlamına gelmez .
Kevin Peno

2

Geliştiriciler (zorunlu olarak) örgüde iyi olmadıkları için (mutlaka) UI tasarımında iyi değildir; zor, pratik yapmak gerekiyor ve birisinin size nasıl olduğunu ilk başta göstermesi acı vermez.

Çoğu geliştirici (ben dahil), yazılım yazmanın gerekli bir parçası olduğu için kullanıcı arayüzlerini "tasarlamaya" başladı. Bir geliştirici, iyi olmak için çaba gösterene kadar, olmayacaktır.


2

Geliştirmek için sadece mevcut sitelere bakın. Zaten önerilen kitaplara ek olarak, Robin Williams'ın "Tasarımcı Olmayan Tasarım Kitabı" adlı mükemmel kitabına ( dezenfekte Amazon bağlantısı ) göz atmak isteyebilirsiniz.

Zen Garden'daki çeşitli sunumlara göz atarak görsel tasarımda nelerin mümkün olduğuna bir göz atın .

UI tasarımı kesinlikle bir sanattır, ancak C'deki işaretçiler gibi, bazı insanlar bunu elde eder ve bazı insanlar almaz.

Ama en azından girişimlerinde bir kıkırdama yapabiliriz . BTW Komik bir çizgi roman için Tamam / İptal ve Joel "En İyi Yazılım Yazma I" ( dezenfekte Amazon bağlantı ) kitabınıza koymak için teşekkürler Tamam / İptal .


2

Kullanıcı arayüzü, ince bir boya tabakası gibi, gerçekte uygulanabilecek bir şey değildir. Başlangıçta orada olması gereken ve gerçek araştırmaya dayanan bir şey. Elbette tonlarca Kullanılabilirlik araştırması var. Sadece başlangıçta değil, yazılımı ilk etapta yapma nedeninizin özünü oluşturması gerekiyor: Dünyada bir miktar boşluk var, bir sorun var ve yapılması gerekiyor daha kullanışlı ve daha verimli.

Yazılım kendi uğruna orada değil. Bir yazılımın var olmasının nedeni İNSANLAR İÇİNDİR. Kimseye neden ihtiyaç duyacağını anlamadan, yeni bir yazılım parçası için bir fikir bulmaya çalışmak bile gülünç. Yine de bu her zaman olur.

Tek bir kod satırı yazılmadan önce, arayüzün basılı sürümlerini gözden geçirmeli ve gerçek kişiler üzerinde test etmelisiniz. Bu biraz garip ve aptalca, çocuklarla en iyi çalışır ve "bilgisayar" gibi davranan eğlenceli biri.

Arayüzün doğal bilişsel tesislerimizden faydalanması gerekiyor. Bir mağara adamı programınızı nasıl kullanır? Örneğin, hareketli nesneleri izleme konusunda gerçekten iyi olacak şekilde geliştik. Bu nedenle, iphone gibi fizik simülasyonlarını kullanan arabirimler, değişikliklerin anında meydana geldiği arabirimlerden daha iyi çalışır.

Bazı soyutlamalarda iyiyiz, ama diğerleri değil. Programcılar olarak, en tuhaf soyutlamaları anlamak için zihinsel jimnastik ve geri dönüşler yapmak için eğitildik. Örneğin, bir dizi gizli metnin, dikkatlice tasarlanmış bir cihazla karşılaşıldığında, elektronikteki ışık hızında meydana gelen görünmez olayların bir dizisine yol açan bir metal plaka üzerinde bir elektromanyetik durum modelini temsil edebileceğini ve çevrilebileceğini anlıyoruz. devre ve bu olaylar yararlı bir sonuç üretmek için yönlendirilebilir. Bu anlaşılması gereken inanılmaz derecede doğal olmayan bir şey. Bize, dış dünyaya mükemmel rasyonel bir açıklama varken, teklifimizi yapmak için görünmez duygusal ruhları çağırmak için anlaşılmaz büyüler yazdığımızı anlıyoruz.

Normal insanların anladığı soyutlamalar, haritalar, diyagramlar ve semboller gibi şeylerdir. Sembollere dikkat edin, çünkü semboller, sembol öğrenilene kadar kod çözmek için bilinçli zihinsel çaba harcayan çok kırılgan bir insan kavramıdır.

Sembollerle ilgili hile, sembol ile temsil ettiği şey arasında açık bir ilişki olması gerektiğidir. Temsil ettiği şey ya bir isim olmalıdır, bu durumda sembol temsil ettiği şey gibi ÇOK ÇOK görünmelidir. Eğer bir sembol daha soyut bir kavramı temsil ediyorsa, bu İLERİ İLERİ olarak açıklanmalıdır. Msword veya photoshop araç çubuğundaki anlaşılmaz etiketlenmemiş simgeleri ve temsil ettikleri soyut kavramları görün. Photoshop'taki kırpma aracı simgesinin CROP TOOL anlamına geldiği ÖĞRENMELİDİR. CROP'un ne anlama geldiğini anlamak gerekir. Bunlar, bu yazılımı doğru bir şekilde kullanmak için önkoşuldur. Bu da önemli bir noktayı beraberinde getiriyor, ASSUMED bilgisine dikkat edin.

Biz sadece 4 yaş civarında haritaları anlama yeteneğine sahibiz. Sanırım şempanzelerin 6 ya da 7 yaşlarındaki haritaları anlama yeteneğini kazandığını bir kez okudum.

Başlangıçta bu kadar başarılı olmasının nedeni, çoğunlukla metinsel arayüzlerin bir manzarasını bilgisayarlara, bilgisayar kavramlarını fiziksel bir yere benzeyen bir şeye eşleyen bir şeye değiştirmeleridir. Guis'in kullanılabilirlik açısından başarısız olduğu yerler, gerçek hayatta gördüğünüz bir şeye benzemeyi bıraktığı yerdir. Fiziksel dünyada gördüğünüz hiçbir şeye benzemeyen bir bilgisayarda meydana gelen görünmez, öngörülemez, anlaşılmaz şeyler vardır. Bunlardan bazıları gereklidir, çünkü sadece bir gerçeklik simülatörü yapmanın bir anlamı olmaz- Fikir işten tasarruf etmek, bu yüzden biraz sihir olmalı. Fakat bu sihir mantıklı olmalı ve insanların anlamaya iyi adapte olduğu bir soyutlamaya dayandırılmalıdır. Soyutlamalarımız derinleşmeye ve katmanlaşmaya başladığında, ve eldeki işin bozulmasına neden olan görevle eşleşmedi. Başka bir deyişle, arayüz temel yazılım için iyi bir harita işlevi görmemektedir.

Çok kitap var. Okuduğum ve bu nedenle önerebileceğim ikisi donald norman'ın "Gündelik Şeylerin Tasarımı" ve Jef Raskin'in "İnsan Arayüzü".

Ayrıca psikoloji dersini de öneririm. "Her Gün Şeylerin Tasarımı" bu konudan biraz bahseder. Bir çok arayüz, geliştiricinin psikolojideki “halk anlayışı” nedeniyle bozulur. Bu "halk fiziği" ne benzer. Hareket halindeki bir nesne hareket halinde kalır, çoğu insan için bir anlam ifade etmez. "Hareket halinde tutmak için itmeye devam etmelisin!" fiziğin acemi olduğunu düşünüyor. Kullanıcı testi çoğu geliştirici için anlamlı değildir. "Kullanıcılara ne istediklerini sorabilirsiniz ve bu yeterince iyi olmalı!" psikoloji acemi olduğunu düşünüyor.

Philip Zimbardo'nun ev sahipliğini yaptığı PBS belgesel dizisi Discovering Psychology'yi öneriyorum. Başarısız olursa, iyi bir fizik ders kitabı bulmaya çalışın. Pahalı tür. Sınırlarda bulduğunuz pulp fiction kendi kendine yardım bok değil, sadece bir üniversite kütüphanesinde bulabileceğiniz kalın ciltli şeyler. Bu gerekli bir temel. Onsuz iyi bir tasarım yapabilirsiniz, ancak neler olduğunu sadece sezgisel bir şekilde anlayacaksınız. Bazı iyi kitaplar okumak size iyi bir bakış açısı sağlayacaktır.


2

"Yazılım neden berbat" kitabını okursanız Platt'ın cevabını görürdünüz, ki bu basit:

  1. Geliştiriciler, kullanım kolaylığı üzerinde kontrol tercih ediyor
  2. Ortalama insanlar kontrol üzerinde kullanıcı dostu olmayı tercih eder

Ancak sorunuzun bir başka yanıtı da "diş hekimliği neden bazı geliştiriciler için bu kadar zor?" - UI tasarımı en iyi bir UI tasarımcısı tarafından yapılır.

http://dotmad.net/blog/2007/11/david-platt-on-why-software-sucks/

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.