为什么有些程序员讨厌开发的UI部分?[关闭]


54

我遇到的许多程序员总是说“他不是UI专家”。事实是,当今的开发,无论是Web,Windows,Linux,OSX还是任何其他类型的开发,现在都包含具有漂亮UI的软件。为什么这么多开发人员似乎不喜欢UI工作?


54
因为他们不是设计师:)
Mahmoud Hossam

17
发展并没有包含具有好看的UI,它包括具有的可销售产品。任何人都可以使事物看起来不错,很少有人可以使它起作用。
乔什K

58
@JoshK-您的要点是明确的,但我不同意“任何人都可以使某些东西看起来不错”。我们的开发人员会对那些低估我们专业的人感到恼火(“这只是打字,这有多难?”),所以我们不要对其他学科做同样的事情。
史蒂夫·S

20
让我们不要忘记,外观并不是UI的最重要要素。有许多外观精美的UI确实很难使用。我宁愿没有图形设计师来设计UI,除非设计师具有一些人为因素背景。
David Thornley

17
@Josh K:看过“日常用品的设计”后,我认为这是相反的。使某事正常工作很容易。使它运行得如此好,用户将直观地理解它,并希望再次使用它要困难得多。
nikie 2011年

Answers:


102

我也不是UI用户。好吧,我在自己的项目上执行UI,但是在工作中我与它无关—我的工作是在应用程序的胆量中,而不是前端。

除此之外,我认为这比无聊更令人讨厌。设计UI是困难而艰巨的部分。实施主要是艰巨的工作。如何实现用户界面几乎没有挑战或创新,只有很多次才能在屏幕上摆出一个复选框,然后再稍作思考。而且,这甚至还没有花很多时间来“对齐”像素对齐。


63
+1表示“对齐像素””,我很讨厌。它的99.99999%完美,但是用户希望盒子周围的边框(不应该放在第一位)是2像素宽而不是1,并且是“较浅”的蓝色阴影,而不是您想要的浅阴影有2个修订版本,比之前更暗。依此类推,等等……这就是我现在正在经历的。该应用程序可以100%运行,但是我收到的乏味的请求是更改此工具提示的大小写,并删除句点...这是我的“测试人员”所关注的...根本没有功能。
CaffGeek 2011年

3
@Robert Harvey,这是每天的挣扎。我希望我们这里有一两个专门的UI使用者...这也将有助于解决我们无法跨主要应用程序标准化UI的问题。
CaffGeek 2011年

23
+1表示设计GUI比构建GUI更有趣。
jprete 2011年

5
实施绝不应是艰巨的工作。如果是这样,您要么架构欠佳,要么流程效率低下。我们是程序员,如果我们正在做一台机器可以做的事情,那么我们应该将其自动化
优厚

10
@munificent我认为自动化是一个伟大的目标,但是我还没有看到不需要调整UI来适应设计师的愿景或客户喜好的自动化UI布局。然后只有技术上的局限性-例如,如果您使用WinForms,则自动布局选项将受到限制。我认为,Web应用程序比桌面应用程序具有更好的性能,但是除非我们能以心灵感应的方式创建UI布局并将其连接起来,否则我认为仍然会涉及大量的苦恼。我期待将来在这一点上被证明是错误的。:)
亚当·李尔

55

与编写一些后端代码相比,制作一个好的UI涉及许多不同的技能。

后端需求通常可以像黑盒子一样指定,x进入,期望y应该出来。使之工作涉及实现逻辑,您可以通过编程方式测试其是否有效。

为了制作出良好的用户界面,您需要考虑可用性,视觉设计,布局以及诸如配色方案之类的东西。在这里具有一定的艺术创造力是一种奖励,许多程序员并不觉得自己拥有这种能力。在逻辑上,解决UI问题似乎是主观的,因为没有一个正确的答案或没有简单的方法来验证它是否“正确”完成。

我认为许多没有太多UI经验或没有对其进行过多研究的程序员都没有意识到,从可用性角度和设计角度(例如颜色)来看,好的UI设计背后都存在规则和科学。理论)。

当然,一些程序员对此方面没有问题,但是讨厌它,因为许多UI只是无聊的代码。它们可能包含许多重复性工作,例如管理页面的表单页面,在这些页面中它们只需要起作用,就不会遇到设计挑战。


3
编写后端代码也涉及许多不同的技能(与您的第一个评论所暗示的不同),这只是一组不同的技能。
Matthieu M.

2
@Matthieu可以,但我从未说过没有。我的意思是UI编码涉及到不同的很多技能比后端编码。请不要以为我在贬低后端编码,这是我主要谋生的方法:)
Alb

+1:这很困难,并且软件设计的常规方法对图形不起作用。如果丑陋,它将保持丑陋。

18

人们只是有不同的兴趣。一些程序员对数据结构和算法更感兴趣,一些对体系结构,一些对可用性和UI设计感兴趣,或者对那些和其他领域的任意组合。他们每个人都需要不同的技能和不同的思考问题的方式。如果您喜欢底层的编程细节,也许您不太在乎用户的想法,反之亦然。

就我个人而言,我属于后者-我宁愿设计UI也不愿使用复杂的算法。这只是我觉得很有趣的事情。


15

给定的UI设计是好是坏是相当主观的,我认为程序员通常都没有吸引力。几十年来对量化和合格的UI技术进行量化的努力帮助创建了一个可以应用的广泛规则,但要真正确定一个UI是否有用,往往要进行大量的A / B测试和其他用户观察技术。

尽管编程中肯定有主观性,但通常您可以指出某种客观原因,说明一个选择胜于另一个选择的原因:执行速度,内存需求,满足未来可能需求的灵活性,实践证明在以下方面更有效捍卫给定的UI选择-甚至自己做出选择-通常会降级为“我喜欢它”,这是一种完全不同的观点。


2
当场,“主观”很烦人。带两个人去那里,他们对什么是好的UI会有不同的看法。您不能对GUI方面进行单元测试(不是真的)。等等...
Matthieu M.

13

我个人不喜欢UI开发,因为我不擅长。我只是不善于理解用户心理的巨大要素。我认为我最大的问题是我无法放任用户。我不知道如何制作直观的布局,很大程度上是因为我不知道什么对用户来说是直观的,也不知道如何使外观看起来漂亮。

我不一定认为有些程序员讨厌设计UI就像讨厌做自己不擅长的事情一样。碰巧有很多不擅长UI开发的开发人员。


+1-“程序员讨厌做自己不擅长的事情。” 如此真实。当您在个人项目上进行练习时,它是一种实践并且可以很有趣,但是当您为自己的工作而做时-它是一种表现,而如果您没有技能,那将是很大的压力。
Lunchmeat317

11

UI设计的问题是每个人都有自己的见解...而且没有正确或错误的答案。另一方面,开发人员喜欢黑白和逻辑。在任何规模的公司中,每个人都会同意1+1=2,但是询问哪种字体最容易阅读(Comic Sans Obviously)...为洪水做准备。一万种不同的答案,每个人都是正确的,因为每个人都是不同的。


6
哦,天哪,Comic Sans ...
Maxpm 2011年

+1为黑白逻辑。我真的很讨厌对没有正确或错误答案的事情做出决定(设计UI,确定住的地方,晚餐吃什么等等)。

7

作为一个真正喜欢UI的开发人员(特别是我已经完成了相当多的Web设计工作),当不具备此技能的人不参与其中时,我将不胜感激。

开发需要能够记住大量数据并一次处理大量数据的能力。UI设计要求能够在不牺牲其完整性的情况下将其最小化。我喜欢这样的挑战;当我看到有人创建的UI在屏幕上是无法处理的Wall-o-Data时,我感到非常畏缩。(在布局,色彩理论等方面,我也是个极客。)

另一方面,我讨厌底层的东西。我绝不会接触驱动程序,内核或诸如此类的其他代码:


6

我认为这取决于大多数程序员使用大脑的左手部分。

这是进一步阅读该主题的好资料

在此处输入图片说明


6
您可能会喜欢《实用思维与学习:重构您的湿软件》这本书,它为思考左右脑的差异提供了一种新方法。实际上,它将它们重命名为线性模式和富模式,这是一本非常不错的文章。
CaffGeek

@乍得谢谢乍得!我会考虑的!
阿米尔·雷扎伊

+1提出来。后端应用程序开发人员具有高度的分析能力,而前端工作则更加注重创意。有些人喜欢两者,但许多人喜欢坚持各自的利基。
bunglestink 2011年

对于那些可能感兴趣的人,只需提供一些额外的信息:实际上,并不是100%清楚哪个半球在确定数学能力中起着更大的作用
丹涛

我不同意“音乐”属于右脑功能,尤其是因为它与“艺术”归为一类。音乐是极其数学和逻辑的,而艺术则是完全相反的(也许像素艺术除外,因为像素艺术的局限性将逻辑重新引入了“艺术”中)。
2015年

6

UI开发变得复杂,因为您从错误的人那里得到了太多的输入。他们都是图形设计专家。当您想知道某事的公式时,找不到它们。

他们不知道自己想要什么,但在看到它们时就知道了,没有品味,那些拥有决策能力的人无论如何都不会使用该应用程序,但肯定应该是绿色的。您遵循良好UI的准则,例如限制表单上的字段数量,并要求添加50个以上的字段,因为它们“需要”所有字段并将它们放在单独的选项卡上需要太多的工作。您知道,与Excel相同。农民!

你不能弥补这一点。我参加了一次会议,一家大型律师事务所的会计部门中排名前两名的人(年薪约50万)花了半个小时在律师所使用的计费网站页面上争论一个标签。这样做是为了使律师容易理解。为什么不问律师呢?太容易了。因此,IT部门接到了想知道WTF“剩余净账单金额”是多少的律师打来的50个电话,以及为什么要在他们的时间输入表格上显示。


5

有些人喜欢西兰花,有些则不喜欢。我们可能必须吃掉它,但是我们不必喜欢它,当我们吃掉它时我们就不会享受它。不仅如此,我们将避免尽可能多地食用。

除了UI之外,还有很多其他东西要编写。仅举几个例子,Web服务,Windows服务是嵌入式的(不是很多的UI)。


9
用户界面通常会在微波炉上折腾,这就是为什么它们大多数会吸吮的原因。
罗伯特·哈维

4
微波的作用是,当您拥有一个好的微波炉,一个漂亮的UI时,您不需要非常特定的按钮顺序即可完成任务,甚至都无需考虑。但是,当您购买便宜的廉价微波炉作为地下室之类的物品时,您会立即注意到UI多么可怕。您必须记住按钮的精确顺序。我会在时间之前选择功率电平吗?还是之后?我必须先打厨吗?等等,等等...当您需要阅读里面隐藏的说明吗?!啊!良好的用户界面应该对用户“不可见”。
CaffGeek

可怕的隐喻。我喜欢西兰花,但讨厌设计UI。;)

4

这可能是因为-在某些情况下-专门设计用来帮助您绘制UI的工具是通过吸管吸吮死去的小猴子。


4

UI开发中的某些事情很难解决。

布局就是其中之一。我从事UI的建设已经有15年以上的时间了,但是对于布局管理来说,我还没有一个像样的解决方案。

另一个是事件路由-即使使用MVP架构和框架要求的内容,我也会认为大多数复杂的UI都有事件路由问题-如果任何测试框架都能很好地解决它们,则可能会发现。


3

我知道我曾经讨厌UI开发人员,因为我发现它非常乏味且缓慢,特别是编写布局代码以将内容放置在窗体或窗口中。现在有了UI设计器工具,例如Visual Studio中的Forms Designer,我几乎喜欢它。我从其他人那里听到的讨厌它的其他原因包括“它很愚蠢”,“它总是变化太大”,“它挑战性不够”,“它乏味/无聊”。


4
您如何用您的用户名平方?:)
罗伯特·哈维

@罗伯特·哈维:足够公平!Forms Designer很好,但是当您开始喜欢通用的UI容器时,它就会开始令人窒息。或者至少VS2008做到了。尚未尝试2010,但我怀疑它可能存在类似问题?无论哪种方式,问题都最终得以解决(请参阅我关于SO的第一篇文章)。还有其他一些因素也使它感到窒息,但它消除了我通常现在喜欢UI设计/开发的沉闷乏味。
FrustratedWithFormsDesigner

3

为什么所有的国际象棋玩家都不喜欢设计棋盘和棋盘上的棋子?

有些人不喜欢它并不奇怪……您期望我们应该这样做很奇怪。


1
国际象棋棋手不设计棋盘和棋子,因为国际象棋联合会(FIDE)已经将这些设计标准化了一个多世纪,并且这些标准已被普遍采用。
jwenting 2011年

2

我喜欢在UI上工作。对于我来说,这并不总是正确的,但是随着过去几年的不断完善,我对UI工作的享受越来越多。我确实知道不应允许某些开发人员靠近样式表或调色板。这绝对是一个不同的技能组,并非所有人都有。


2

我讨厌UI的工作不如讨厌UI的框架。例如,我从事.NET编程已有10多年的历史了。创建Web应用程序的框架很棒(ASP.NET WebForms和ASP.NET MVC)。但是,用于编写桌面应用程序的框架,我不喜欢它们(WinForms和WPF)。

因此,就此而言,编写GUI应用程序更多是使用我不喜欢的框架的一个方面。

还有另一方面。我经常使用“企业”风格的应用程序,即桌面应用程序需要从服务器接收数据的应用程序。在这种情况下,数据从一种格式转换到另一种格式的层次太多,以至于它真的变得很无聊。

例如,应用程序通过一系列DTO对象接收信息。然后,应用程序创建其自己的数据模型表示(而不重用在服务器上创建的相同域类)。模型类由视图模型使用(在WPF MVVM模式中),该视图模型公开了模型上的属性。

很多时候,相同的数据由不同的类表示。这变得无聊。但这是特定于此类桌面应用程序的问题。

在这种类型的应用程序中还存在有趣的挑战,例如我们如何从一个客户端获取更改以立即在另一客户端上更新。


++我知道你的意思。关于在客户端之间传播更新的最后一点,我使用轮询(通常为1秒),但这可能仅适用于相当小的数据库和少量的客户端。
Mike Dunlavey

2

由于以下原因,我不是UI开发的忠实拥护者:

  1. 作为开发人员,您创建的自由度较小:客户可以查看并拥有对UI的每个小方面的看法,您必须对此做出反应。您将收到类似的请求:更改其颜色;将该按钮移到那里;没关系,将其移回原位。后端代码很少可见。

  2. 用户界面更混乱,而后端则更“柏拉图式”。尽管我已经看到了丑陋的后端代码,但我认为(从代码角度来看)它比UI代码更干净。UI看起来确实很干净,并且为用户设计的很好,但是由于我是一名开发人员,并且比使用它花费更多的时间在代码中,因此我更喜欢清理代码。

  3. 我觉得UI比后端更像是一个“管道”,即使用聪明算法并真正将大脑推向极限的机会更少。


1

我同时执行UI(桌面而不是Web)和内部胆量。

我喜欢还是不喜欢的数量取决于使用特定于域的语言(DSL)之类的东西可以完成多少工作。

在UI领域中,我向用户呈现的内容以及从用户那里获得的信息的复杂性使得如果不得不使用典型的工具(例如表单设计器,大量事件处理程序,MVC),我会发疯,所有这些“最先进的”东西。值得庆幸的是,几十年前,我发现了我认为更好的方法,那就是为其创建DSL,并以此来工作。目前,我将其称为“动态对话框”,它基于一种称为“ 差异执行”的控件结构。好消息是,对于给定的功能,源代码大约要少一个数量级,这使我可以在UI中添加更多功能。坏消息是,就我所尝试教的一样,我没有多少运气来转让这项技术。

在非UI领域,我从许多产品中吸取了教训,这些产品最初是可从命令行使用的DSL,后来又将UI移植到了这些产品上。这为专家用户提供了可以绕过UI的地方,而为临时用户提供了可以随便使用的地方。(例如:R,SPlus,Matlab,SAS,WinBugs。)因此,我们的产品为专家提供了一种命令行语言。我喜欢用解析器,代码生成器,预编译器和运行时建模引擎来开发这类东西。在此方面花费的精力至少比在UI上花费的精力少10倍。

UI工作量如此之大的一个原因是,仍然存在很多DSL无法完成的“胶水”-管理数据网格,各种数据排序方式,所有陷入“打ck”的东西在纯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
您的意思是您精疲力尽了不再使用的工具(如今,大多数人不会将Win32用于UI编程)?抱歉,我只是认为这没有道理。
user16764 2011年

1

作为一名CS学生,您将学会数据结构,数据库,C ++ ...除了UI。因此,从一开始您就不会擅长此事。如果您不擅长,那就会讨厌它。


许多大学和学院都提供用户体验设计课程。通常作为其CS课程的一部分。
user16764 2011年

1

在硬币的两面都工作过(即UI设计和后端代码)之后,我发现硬币的两面基本上是同一回事。

与您的日常工作有所不同的要求不会一直出现,在当今所有服务都围绕CRUD运转而变得无聊的时代。

无论如何,对前端进行编码可以实现更好的交互和疯狂的动力,这基本上会使经验不足的前端设计陷入困境。我个人了解了前端的艰辛方法,可以轻松地说前端设计更加有趣和具有挑战性。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.