私が会った多くのプログラマーは常に「彼はUIの人ではない」と言っています。実際、最近の開発は、Web、Windows、Linux、OSX、またはその他の種類の開発に関係なく、見栄えの良いUIを備えたソフトウェアで構成されています。なぜこれほど多くの開発者がUIの動作を好まないように見えるのでしょうか?
私が会った多くのプログラマーは常に「彼はUIの人ではない」と言っています。実際、最近の開発は、Web、Windows、Linux、OSX、またはその他の種類の開発に関係なく、見栄えの良いUIを備えたソフトウェアで構成されています。なぜこれほど多くの開発者がUIの動作を好まないように見えるのでしょうか?
回答:
私もUIの人ではありません。まあ、私は自分のプロジェクトでUIを実行しますが、仕事ではそれとは何の関係もありません。私の仕事はフロントエンドではなくアプリの内臓にあります。
それ以上に、嫌いというより退屈だと思います。UIの設計は、困難でやりがいのある部分です。実装は大部分が単調な作業です。ユーザーインターフェイスを実装する方法には、ほとんど挑戦も革新もありません。また、わずかなメンタルになる前に、画面にチェックボックスを配置できるのは非常に多くあります。そして、それは「ちょうど」ピクセルを揃えるのに何時間も費やすことにも触れていません。
優れたUIを作成するには、バックエンドコードを書くこととは異なるさまざまなスキルが必要です。
バックエンドの要件は通常、ブラックボックスのように指定でき、xが入り、yが出るはずです。動作させるにはロジックを実装する必要があり、プログラムで動作するかどうかをプログラムでテストできます。
優れたUIを作成するには、使いやすさ、視覚的なデザイン、レイアウト、配色などを考慮する必要があります。芸術的な創造性を持つことはここでのボーナスであり、多くのプログラマーはこれを持っているとは感じません。論理的な脳にとって、UIの問題の解決策は主観的なものに思えるかもしれません。正しい答えが1つもないか、「正しく」実行されたことを検証する簡単な方法がないからです。
UIの経験があまりない、またはあまり研究していない多くのプログラマーは、使いやすさの観点とデザインの観点の両方から、優れたUIデザインの背後にルールと科学があることに気付かないと思います理論)。
もちろん、一部のプログラマーはこの側面に問題はありませんが、多くのUIはコードに飽き飽きしているため、それを嫌います。それらは、機能する必要があるだけの管理ページのフォームのページのような多くの反復作業で構成される場合があり、設計上の課題はありません。
人々はただ異なる興味を持っています。一部のプログラマーは、データ構造とアルゴリズム、アーキテクチャー、ユーザビリティとUIデザイン、またはそれらと他のニッチの組み合わせに興味があります。彼らはそれぞれ、異なるスキルと問題についての異なる考え方を必要とします。プログラミングの低レベルの基本が好きな場合は、ユーザーの考え方についてあまり気にかけないかもしれませんし、その逆も同様です。
個人的には、私は後者の陣営に入ります。複雑なアルゴリズムよりもUIを設計したいです。それは私が面白いと思うようなものです。
与えられたUIデザインが良いか悪いかはかなり主観的であり、プログラマーは一般的に魅力的ではないと思います。優れたUIテクニックを定量化および認定するための数十年の努力は、適用可能ないくつかの広範なルールを作成するのに役立ちましたが、UIが良いかどうかを実際に判断するには多くの場合、多くのA / Bテストと他のユーザー観察が必要ですテクニック。
プログラミングには確かに主観性がありますが、一般的に、ある選択肢が別の選択肢より優れている理由に関する客観的な理由のいくつかの形式を指すことができます:過去など。特定のUIの選択を守るため、そしてそれ自体で選択を行うことも、一般的に「I like it」に低下します。
私は個人的にUI開発を楽しんでいません。ユーザー心理には、理解が得意ではないという巨大な要素があります。私の最大の問題は、ユーザーの立場に立たないことだと思います。ユーザーにとって直感的なものがわからないため、また、見た目を美しくする方法がわからないため、直感的なレイアウトを作成する方法がほとんどわかりません。
一部のプログラマーは、UIの設計が嫌いであるのと、必ずしも得意ではないことをするのが嫌いだとは限りません。UIの開発が苦手な開発者がたくさんいることがあります。
UIの開発を実際に楽しんでいる開発者として(具体的には、Webデザインのかなりの部分を担当しました)、スキルセットを持っていない人がそこに留まらないことに感謝しています。
開発には、多くのデータを心に留め、一度に多くのデータを処理する能力が必要です。UIの設計には、整合性を犠牲にすることなく、できる限り最小限に抑える機能が必要です。私は愛することの挑戦を。そして、画面上で管理できないウォールOデータであるUIを誰かが作成するのを見ると、うんざりします。(レイアウト、カラー理論などに関しては、私は完全にオタクです)
一方、低レベルのものは嫌いです。ドライバー、カーネル、またはそのような他のもののコードには手を触れません。
ほとんどのプログラマーが脳の左部分を使用していることに依存すると思います。
この主題をさらに読むための優れた情報源。
間違った人からあまりにも多くの情報を得るため、UI開発は複雑になります。彼らは皆、グラフィックデザインの専門家です。何かの公式を知りたいときに、どこにあるかはわかりません。
彼らは自分が何を望んでいるのか分からないが、それを見たときにそれを知っており、味がない。フォーム上のフィールドの量を制限するなど、UIのガイドラインに従うと、すべてのフィールドが「必要」であり、別のタブに配置するのは面倒なので、さらに50フィールドを追加する要求があります。ご存知のとおり、Excelと同じです。農民!
これを補うことはできません。私は、大手法律事務所の経理部門のトップ2人(年額約5万人)が、弁護士が使用する請求Webページのラベルについて30分かけて議論する会議に出席しました。これは、弁護士が理解しやすいようにするためでした。弁護士に聞いてみませんか?簡単すぎる。そのため、IT部門は、WTFの「残余純請求額」が知りたいと思っている弁護士からの50件の電話をフィールドに送ります。
ブロッコリーが好きな人もいれば、そうでない人もいます。私たちはそれを食べなければならないかもしれませんが、私たちはそれを好きにする必要はなく、私たちはそれを食べたときにそれを楽しむつもりはありません。それだけでなく、できる限り食べることを避けます。
UIだけでなく、コーディングするものが他にもたくさんあります。いくつか例を挙げると、Webサービス、Windowsサービス、埋め込み(電子レンジのUIの多くではありません)。
私はUI devを非常に退屈で遅く、特にフォームやウィノウに物事を配置するレイアウトコードを書くのが嫌だったので、以前はUI devを嫌っていたことを知っています。Visual StudioのフォームデザイナなどのUIデザイナツールを使用することで、ほぼ楽しめます。私が他の人から聞いた嫌いな理由には、「愚かだ」、「常に変化しすぎている」、「十分に挑戦していない」、「退屈だ/退屈だ」などがあります。
UIフレームワークを嫌うほど、UIの動作を嫌うことはありません。たとえば、.NETを10年以上プログラミングしています。Webアプリケーションを作成するためのフレームワークは優れています(ASP.NET WebFormsおよびASP.NET MVC)。しかし、デスクトップアプリケーションを作成するためのフレームワークは、そうではありません(WinFormsとWPF)。
したがって、この点で、GUIアプリケーションの作成は、私が好きではないフレームワークを使用する側面です。
別の側面があります。私はよく「エンタープライズ」スタイルのアプリケーション、つまりデスクトップアプリケーションがサーバーからデータを受信する必要があるアプリケーションを使用します。この場合、データをある形式から別の形式に変換するレイヤーが非常に多いため、本当に退屈になります。
たとえば、アプリケーションは一連のDTOオブジェクトを通じて情報を受け取ります。その後、アプリケーションはデータの独自のモデル表現を作成します(サーバーで作成されたのと同じドメインクラスを再利用しません)。モデルクラスは、モデルのプロパティを公開するビューモデルによって(WPF MVVMパターンで)使用されます。
多くの場合、同じデータが異なるクラスで表されます。そして、それは退屈になります。しかし、これはこのタイプのデスクトップアプリケーションに固有の問題です。
このタイプのアプリケーションには、あるクライアントから変更を取得して別のクライアントですぐに更新する方法など、興味深い課題もあります。
これらの理由から、私はUI開発の大ファンではありません。
開発者は、作成する自由が少なくなります。顧客は、UIのあらゆる小さな面を確認し、意見を述べることができます。次のようなリクエストを受け取ります。この色を変更します。そのボタンをそこに移動します。気にしないで、元に戻してください。バックエンドコードが表示されることはほとんどありません。
UIはより複雑で、バックエンドはより「プラトニック」です。私はバックエンドコードのofい混乱を見てきましたが、UIコードよりも(コードの観点から)クリーンであることがより一般的だと思います。UIは見た目がきれいでユーザー向けにデザインされていますが、私は開発者であり、コードを使用するよりもコードに多くの時間を費やしているため、コードをきれいにしたいと思っています。
UIはバックエンドよりも「配管」のようなものだと感じています。つまり、巧妙なアルゴリズムを使って脳を限界まで追い込む機会が少ないのです。
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ピクセル離れていたため、文字通りユーザーインターフェイスでテストに失敗しました。うまくいきましたか?はい。良さそうでしたか?はい。しかし、彼はピクセルのカウントを開始しましたが、何かが残りのピクセルとは一線を画していたため、手直しのために送り返しました。
CSの学生として、データ構造、データベース、C ++などのUIを除きます。だからあなたは最初からそれが得意ではないでしょう。あなたがそれが得意でなければ、あなたはそれを嫌うでしょう。