一部のプログラマーが開発のUI部分を嫌うのはなぜですか?[閉まっている]


54

私が会った多くのプログラマーは常に「彼はUIの人ではない」と言っています。実際、最近の開発は、Web、Windows、Linux、OSX、またはその他の種類の開発に関係なく、見栄えの良いUIを備えたソフトウェアで構成されています。なぜこれほど多くの開発者がUIの動作を好まないように見えるのでしょうか?


54
彼らはデザイナーではないからです:)
マフムード

17
開発がないではない見栄えの良いUIを有する分子を含んで、それが持つのと、販売可能な製品を。誰もが何かを美しく見せることができますが、それを機能させることができる人はほとんどいません。
ジョシュK

58
@JoshK-あなたの主なポイントはスポットオンですが、「誰でも何かを良く見せることができる」ことに同意しません。私たちの開発者は、私たちの職業を過小評価している人々(「タイピングしているだけで、どれだけ難しいか?」)にいらいらします。
スティーブS

20
見栄えがUIの最も重要なものではないことを忘れないでください。本当に使いにくい、見栄えの良いUIが数多くありました。デザイナーに人的要因の背景がない限り、グラフィックデザイナーにUIをデザインさせたくありません。
デビッド・ソーンリー

17
@ジョシュK:「日常的なもののデザイン」を読んだことは、逆のことだと思います。何かを機能させるのは簡単な部分です。うまく機能させることで、ユーザーは直感的にそれを理解し、好きになり、再び使用したいのははるかに困難です。
ニキエ

回答:


102

私もUIの人ではありません。まあ、私は自分のプロジェクトでUIを実行しますが、仕事ではそれとは何の関係もありません。私の仕事はフロントエンドではなくアプリの内臓にあります。

それ以上に、嫌いというより退屈だと思います。UIの設計は、困難でやりがいのある部分です。実装は大部分が単調な作業です。ユーザーインターフェイスを実装する方法には、ほとんど挑戦も革新もありません。また、わずかなメンタルになる前に、画面にチェックボックスを配置できるのは非常に多くあります。そして、それは「ちょうど」ピクセルを揃えるのに何時間も費やすことにも触れていません。


63
「ピクセルを「ちょうど」揃える」ための+1、私はそれが嫌いです。99.99999%完璧ですが、ユーザーはボックスの周囲の境界線を望みます。境界線は最初の位置にあるべきではなく、幅が1ピクセルではなく2ピクセルで、「明るい」シェードではなく、明るいシェードです。 2リビジョン前に、それよりも暗くなりました。などなど...これが私が今経験していることです。アプリは100%動作しますが、このツールチップの大文字と小文字を変更し、ピリオドを削除するという退屈な要求を受け取っています...これが私の「テスター」が焦点を当てていることです...すべての機能ではありません。
CaffGeek

3
@ロバート・ハーベイ、それは日々の闘争です。ここに1人か2人の専用UIの人がいたらいいのですが...それはまた、主要なアプリ全体でUIを標準化できないという問題の解決にも役立ちます。
-CaffGeek

23
+1は、GUIを構築するよりもGUIを設計する方がはるかに興味深いことに注目してください。
jprete

5
実装は面倒な作業であってはなりません。もしそうなら、あなたは貧弱に分解されたアーキテクチャを持っているか、非効率的なプロセスを持っています。私たちはプログラマです。マシンができることをしているのなら、それを自動化するべきです。
11

10
@munificent自動化は大きな目標だと思いますが、デザイナーのビジョンや顧客の好みに合わせて調整する必要のない自動化されたUIレイアウトはまだ見ていません。そして、技術的な制限があります。たとえば、WinFormsを使用している場合、自動レイアウトオプションは制限されます。Webアプリの方がデスクトップアプリよりも優れていると思いますが、テレパシーでUIレイアウトを作成して接続できない限り、かなりの労力がかかると思います。将来この点に関して間違っていることが証明されるのを楽しみにしています。:)
アダムリア

55

優れたUIを作成するには、バックエンドコードを書くこととは異なるさまざまなスキルが必要です。

バックエンドの要件は通常、ブラックボックスのように指定でき、xが入り、yが出るはずです。動作させるにはロジックを実装する必要があり、プログラムで動作するかどうかをプログラムでテストできます。

優れたUIを作成するには、使いやすさ、視覚的なデザイン、レイアウト、配色などを考慮する必要があります。芸術的な創造性を持つことはここでのボーナスであり、多くのプログラマーはこれを持っているとは感じません。論理的な脳にとって、UIの問題の解決策は主観的なものに思えるかもしれません。正しい答えが1つもないか、「正しく」実行されたことを検証する簡単な方法がないからです。

UIの経験があまりない、またはあまり研究していない多くのプログラマーは、使いやすさの観点とデザインの観点の両方から、優れたUIデザインの背後にルールと科学があることに気付かないと思います理論)。

もちろん、一部のプログラマーはこの側面に問題はありませんが、多くのUIはコードに飽き飽きしているため、それを嫌います。それらは、機能する必要があるだけの管理ページのフォームのページのような多くの反復作業で構成される場合があり、設計上の課題はありません。


3
バックエンドコードの記述には、多くの異なるスキルも含まれます(最初のコメントが示唆するように思われるものとは異なります)、それは単に異なるスキルのセットです。
マチューM.

2
@Matthieuそれはします、そして、私はそうしなかったと決して言いませんでした。つまり、UIコーディングには、バックエンドコーディングとは異なる多くのスキルが含まれます。私がバックエンドのコーディングを軽視していたとは思わないでください、それは私が主に生活のためにやっていることです:)
Alb

+1:これは難しく、ソフトウェア設計の通常のアプローチはグラフィックスでは機能しません。ugい場合は、stayいままです。

18

人々はただ異なる興味を持っています。一部のプログラマーは、データ構造とアルゴリズム、アーキテクチャー、ユーザビリティとUIデザイン、またはそれらと他のニッチの組み合わせに興味があります。彼らはそれぞれ、異なるスキルと問題についての異なる考え方を必要とします。プログラミングの低レベルの基本が好きな場合は、ユーザーの考え方についてあまり気にかけないかもしれませんし、その逆も同様です。

個人的には、私は後者の陣営に入ります。複雑なアルゴリズムよりもUIを設計したいです。それは私が面白いと思うようなものです。


15

与えられたUIデザインが良いか悪いかはかなり主観的であり、プログラマーは一般的に魅力的ではないと思います。優れたUIテクニックを定量化および認定するための数十年の努力は、適用可能ないくつかの広範なルールを作成するのに役立ちましたが、UIが良いかどうかを実際に判断するには多くの場合、多くのA / Bテストと他のユーザー観察が必要ですテクニック。

プログラミングには確かに主観性がありますが、一般的に、ある選択肢が別の選択肢より優れている理由に関する客観的な理由のいくつかの形式を指すことができます:過去など。特定のUIの選択を守るため、そしてそれ自体で選択を行うことも、一般的に「I like it」に低下します。


2
スポット、「主観」は迷惑です。2人を連れて行くと、彼らは良いUIとは何かについて大きく異なる意見を持っています。GUIアスペクトを単体テストすることはできません(実際にはそうではありません)。等...
マシューM.

13

私は個人的にUI開発を楽しんでいません。ユーザー心理には、理解が得意ではないという巨大な要素があります。私の最大の問題は、ユーザーの立場に立たないことだと思います。ユーザーにとって直感的なものがわからないため、また、見た目を美しくする方法がわからないため、直感的なレイアウトを作成する方法がほとんどわかりません。

一部のプログラマーは、UIの設計が嫌いであるのと、必ずしも得意ではないことをするのが嫌いだとは限りません。UIの開発が苦手な開発者がたくさんいることがあります。


+1-「プログラマーは得意でないことをすることを嫌います。」仰るとおり。個人的なプロジェクトでそれをやっているとき、それは練習であり、楽しいことができますが、仕事のためにそれをしているとき-それはパフォーマンスであり、スキルを持っていない場合、それはただストレスを感じます。
lunchmeat317

11

UIデザインの問題は、誰もが意見を持っていることです...そして、正しい答えも間違った答えもありません。一方、開発者は白黒と論理が大好きです。どんな規模の会社でも、誰もがそれに同意するでしょうが1+1=2、どのフォントが読みやすいかを尋ねてください(Comic Sans Obviously)...洪水に備えましょう。誰もが異なるので、1万の異なる答えと誰もが正しいです。


6
ああ神、漫画サン
...-Maxpm

白黒ロジックの場合は+1。正しい答えも間違った答えも持たないもの(UIの設計、住む場所の決定、夕食に何を食べるかなど)について決定するのは本当に嫌です。
ダン

7

UIの開発を実際に楽しんでいる開発者として(具体的には、Webデザインのかなりの部分を担当しました)、スキルセットを持っていない人がそこに留まらないことに感謝しています。

開発には、多くのデータを心に留め、一度に多くのデータを処理する能力が必要です。UIの設計には、整合性を犠牲にすることなく、できる限り最小限に抑える機能が必要です。私は愛することの挑戦を。そして、画面上で管理できないウォールOデータであるUIを誰かが作成するのを見ると、うんざりします。(レイアウト、カラー理論などに関しては、私は完全にオタクです)

一方、低レベルのものは嫌いです。ドライバー、カーネル、またはそのような他のもののコードには手を触れません。


6

ほとんどのプログラマーが脳の左部分を使用していることに依存すると思います。

この主題をさらに読むための優れた情報源

ここに画像の説明を入力してください


6
この本「Pragmatic Thinking and Learning:Refactor Your Wetware」をお楽しみください。左脳と右脳の違いについて考える新しい方法を提供します。実際には、それらをリニアモードとリッチモードに改名し、本当に素晴らしい読み物です。
CaffGeek

@チャドありがとうチャド!検討します!
アミールRezaei

これを持ってくると+1。バックエンドアプリ開発は高度に分析的ですが、フロントエンドの作業はより創造的です。両方が好きな人もいますが、多くはそれぞれのニッチに固執するのが好きです。
-bunglestink

興味があるかもしれない人のためのほんの少しの追加情報:実際には、どの半球が数学能力を決定するのにより大きな役割を果たすかは100%明確ではありません
ダン・タオ

特に「芸術」とグループ化されているため、「音楽」が右脳機能に該当することに同意しません。音楽は非常に数学的かつ論理的ですが、芸術は完全に正反対です(おそらく、技術的な制限が論理を「芸術」に再導入するピクセルアートを除く)。
ダン

6

間違った人からあまりにも多くの情報を得るため、UI開発は複雑になります。彼らは皆、グラフィックデザインの専門家です。何かの公式を知りたいときに、どこにあるかはわかりません。

彼らは自分が何を望んでいるのか分からないが、それを見たときにそれを知っており、味がない。フォーム上のフィールドの量を制限するなど、UIのガイドラインに従うと、すべてのフィールドが「必要」であり、別のタブに配置するのは面倒なので、さらに50フィールドを追加する要求があります。ご存知のとおり、Excelと同じです。農民!

これを補うことはできません。私は、大手法律事務所の経理部門のトップ2人(年額約5万人)が、弁護士が使用する請求Webページのラベルについて30分かけて議論する会議に出席しました。これは、弁護士が理解しやすいようにするためでした。弁護士に聞いてみませんか?簡単すぎる。そのため、IT部門は、WTFの「残余純請求額」が知りたいと思っている弁護士からの50件の電話をフィールドに送ります。


5

ブロッコリーが好きな人もいれば、そうでない人もいます。私たちはそれを食べなければならないかもしれませんが、私たちはそれを好きにする必要はなく、私たちはそれを食べたときにそれを楽しむつもりはありません。それだけでなく、できる限り食べることを避けます。

UIだけでなく、コーディングするものが他にもたくさんあります。いくつか例を挙げると、Webサービス、Windowsサービス、埋め込み(電子レンジのUIの多くではありません)。


9
UIは、通常、電子レンジで短い手間がかかります。そのため、ほとんどの場合、UIは不便です。
ロバートハーヴェイ

4
電子レンジの問題は、良いものを持っているとき、タスクを達成するためにボタンに非常に特定の順序を必要としない素晴らしいUIがあれば、それについて考えることすらありません。しかし、地下室などで安い電子レンジを購入すると、UIがどれほど恐ろしいものであるかがすぐにわかります。ボタンを押す正確な順序を覚えておく必要があります。時間前に電力レベルを選択しますか?またはその後?最初に料理時間を打つ必要がありますか?などなど...そして、中に隠された指示を読む必要があるとき!?うーん!良いUIは、ユーザーには「見えない」はずです。
CaffGeek

ひどい比phor。ブロッコリーは大好きですが、UIのデザインは嫌いです。;)
ダン

4

その理由は、場合によっては、UIを描画するのに役立つと明確に考えられているツールが、代わりにストローで死んだ赤ちゃん猿を吸うためです。


4

UI開発には、適切なものを特定するのが難しいものがあります。

レイアウトもその1つです。私は15年以上にわたってUIを構築してきましたが、まだレイアウト管理に対する適切なソリューションではありません。

もう1つはイベントルーティングです。MVPアーキテクチャやフレームワークで義務付けられているものであっても、ほとんどの複雑なUIにはイベントルーティングの問題があると主張します。


3

私はUI devを非常に退屈で遅く、特にフォームやウィノウに物事を配置するレイアウトコードを書くのが嫌だったので、以前はUI devを嫌っていたことを知っています。Visual StudioのフォームデザイナなどのUIデザイナツールを使用することで、ほぼ楽しめます。私が他の人から聞いた嫌いな理由には、「愚かだ」、「常に変化しすぎている」、「十分に挑戦していない」、「退屈だ/退屈だ」などがあります。


4
ユーザー名でどのように正方形に答えますか?:)
ロバートハーベイ

@ロバート・ハーベイ:結構です!フォームデザイナは優れていますが、汎用UIコンテナに夢中になり始めると、動きが止まり始めます。または、少なくともVS2008はそうでした。2010はまだ試していませんが、同様の問題があると思われますか?いずれにせよ、問題は最終的に解決されました(SOに関する私の最初の投稿を参照)。それを詰まらせる他のこともありますが、それは私現在UIの設計/開発を楽しんでいるほど退屈なものを取り除きます。
FrustratedWithFormsDesigner

3

すべてのチェスプレイヤーがチェス盤と彼らがプレイするピースのデザインを好まないのはなぜですか?

一部の人々がそれを好まないというのは奇妙なことではありません...私たちがすべきだと期待するのは奇妙です。


1
チェスプレーヤーはチェス盤や駒を設計しません。これらの設計は1世紀以上にわたって国際チェス連盟(FIDE)によって標準化されており、それらの規格が広く採用されているためです。
11

2

UIでの作業が好きです。それは必ずしも私には当てはまりませんでしたが、UIの仕事の楽しさは、ここ数年で良くなったので、増えました。一部の開発者は、スタイルシートやカラーパレットの近くで許可されないことを知っています。それは間違いなく異なるスキルセットであり、誰もが持っているわけではありません。


2

UIフレームワークを嫌うほど、UIの動作を嫌うことはありません。たとえば、.NETを10年以上プログラミングしています。Webアプリケーションを作成するためのフレームワークは優れています(ASP.NET WebFormsおよびASP.NET MVC)。しかし、デスクトップアプリケーションを作成するためのフレームワークは、そうではありません(WinFormsとWPF)。

したがって、この点で、GUIアプリケーションの作成は、私が好きではないフレームワークを使用する側面です。

別の側面があります。私はよく「エンタープライズ」スタイルのアプリケーション、つまりデスクトップアプリケーションがサーバーからデータを受信する必要があるアプリケーションを使用します。この場合、データをある形式から別の形式に変換するレイヤーが非常に多いため、本当に退屈になります。

たとえば、アプリケーションは一連のDTOオブジェクトを通じて情報を受け取ります。その後、アプリケーションはデータの独自のモデル表現を作成します(サーバーで作成されたのと同じドメインクラスを再利用しません)。モデルクラスは、モデルのプロパティを公開するビューモデルによって(WPF MVVMパターンで)使用されます。

多くの場合、同じデータが異なるクラスで表されます。そして、それは退屈になります。しかし、これはこのタイプのデスクトップアプリケーションに固有の問題です。

このタイプのアプリケーションには、あるクライアントから変更を取得して別のクライアントですぐに更新する方法など、興味深い課題もあります。


++私はあなたの意味を知っています。クライアント間での更新の伝播に関する最後のポイントでは、ポーリング(通常は1秒)を使用しますが、これはおそらくかなり小さなDBと少数のクライアントでのみ機能します。
マイクダンラベイ

2

これらの理由から、私はUI開発の大ファンではありません。

  1. 開発者は、作成する自由が少なくなります。顧客は、UIのあらゆる小さな面を確認し、意見を述べることができます。次のようなリクエストを受け取ります。この色を変更します。そのボタンをそこに移動します。気にしないで、元に戻してください。バックエンドコードが表示されることはほとんどありません。

  2. UIはより複雑で、バックエンドはより「プラトニック」です。私はバックエンドコードのofい混乱を見てきましたが、UIコードよりも(コードの観点から)クリーンであることがより一般的だと思います。UIは見た目がきれいでユーザー向けにデザインされていますが、私は開発者であり、コードを使用するよりもコードに多くの時間を費やしているため、コードをきれいにしたいと思っています。

  3. UIはバックエンドよりも「配管」のようなものだと感じています。つまり、巧妙なアルゴリズムを使って脳を限界まで追い込む機会が少ないのです。


1

UI(Webではなくデスクトップ)と内部ガットの両方を実行します。

どちらが好きか嫌いかは、ドメイン固有言語(DSL)のようなものを使ってどれだけできるかによって異なります。

UIドメインでは、ユーザーに提示するもの、およびユーザーから取得する情報の複雑さは、フォームデザイナー、多くのイベントハンドラー、MVCなどの典型的なツールを使用しなければならなかった場合に夢中になります、すべての「最先端」のもの。ありがたいことに、何十年も前に、DSLを作成し、その中で作業するという、より良い方法だと思うことを発見しました。現在、私はそれを動的ダイアログと呼んでおり、それは微分実行と呼ぶ制御構造に基づいています。幸いなことに、特定の機能については、ソースコードがほぼ1桁少なくなり、UIにより多くの機能を追加できます。悪いニュースは、私がそれを教えようとしたのと同じくらい、私は技術を移すのにそれほど運がなかったということです。

非UIドメインでは、コマンドラインから使用可能なDSLとして開始された多くの製品から教訓を学びました。これにより、エキスパートユーザーにはUIをバイパスできる場所が提供され、カジュアルユーザーには気軽に使用できるものが提供されます。(例:R、SPlus、Matlab、SAS、WinBugs。)したがって、当社の製品には専門家向けのコマンドライン言語があります。パーサー、コードジェネレーター、プリコンパイラー、およびランタイムモデリングエンジンを使用して、こうしたものを開発するのが大好きです。これに費やされる労力は、UIに費やされる労力よりも少なくとも10のべき乗分だけ少なくなります。

UIの努力が非常に多い理由の1つは、DSLで実行できない「接着剤」がまだたくさんあることです。データグリッドの管理、あらゆる種類のデータの並べ替え方法、あくびをする「ひび割れ」に該当するすべてのもの純粋なUIと基礎となる言語の間。

あなたの質問は、「なぜ開発者のUI部分が嫌いなプログラマがいるのですか?」です。DSLを持っていない「接着剤」のためだけに嫌いです。


1

正直なところ、最高のGUIツールキットを見つけて、実際にその中身を学んでいるのはちょっとPITAです...もちろん、大学で多くのUIのことを学んでいないので、初心者です... ..


1

既に述べられていること(コードを作成するのは退屈で退屈でイライラする作業であり、設計は通常、彼のアイデアがそれらを実装しようとしている人にどのような問題を引き起こすかについての手がかりがない人によって前もって行われます)を超えて、重要な要因は「何をすべきかについてのアイデアが絶えず変化する人々と協力する必要があります。彼らはバックエンドよりもはるかに多くのことをしています。結果として、あなたは動いているスペックに対してさらに射撃している、そしてこれらの人々はまたニッカーズである傾向がある。コンポーネントはテストする人が本来あるべきだと思っていた場所から1ピクセル離れていたため、文字通りユーザーインターフェイスでテストに失敗しました。うまくいきましたか?はい。良さそうでしたか?はい。しかし、彼はピクセルのカウントを開始しましたが、何かが残りのピクセルとは一線を画していたため、手直しのために送り返しました。


1

さらにいくつかのポイント:

1)UIデザインはテストが難しくなる可能性があります。そのボタンが目的どおりに機能するかどうかを確認できますが、使いやすいかどうかをテストすることは困難です。障害のある人と使用できるかどうかをテストするのはどうですか?

2)多くのプログラマーはトレーニングを受けておらず、それについてあまり知りません。


1

事実、多くのUIツール/フレームワーク/ APIは、直感的であるために、はるかに遠く、悪く、複雑です。私はC / C ++のWin32 API、javax.swing、CSSなどで開発しました。それ以来、UI開発を扱う必要はありません... Qtフレームワークまで!


1
もはや一般的に使用されなくなったツールを使い果たしたということです(最近ではほとんどの人がUIプログラミングにWin32を使用しないでしょう)。申し訳ありませんが、これを有効なポイントとは考えていません。
user16764

1

CSの学生として、データ構造、データベース、C ++などのUIを除きます。だからあなたは最初からそれが得意でないでしょう。あなたがそれが得意でなければ、あなたはそれを嫌うでしょう。


多くの大学では、UXデザインコースを提供しています。多くの場合、CSカリキュラムの一部として。
user16764

1

コインの両側、つまりUIデザインとバックエンドコードで作業した結果、コインの両側は基本的に同じものであることがわかりました。

日々の作業とは異なる要件が常に発生するわけではなく、現在ではすべてのサービスがCRUDを中心に展開する時代になり、退屈になります。

とにかく、フロントエンドをコーディングすることで、フロントエンドの設計に基本的に経験の浅い手をねじ込む、より良い相互作用とクレイジーなダイナミズムが可能になります。私は個人的にフロントエンドで困難な方法を学びましたが、フロントエンドの設計ははるかに面白く挑戦的なものであると安心できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.