it-swarm.cn

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

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

54
zero95teen

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

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

102
Adam Lear

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

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

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

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

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

55
Alb

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

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

18
Travis Christian

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

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

15
Matthew Frederick

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

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

13
Pemdas

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

11
MVCylon

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

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

另一方面,我hate低级的东西。我绝不会接触驱动程序,内核或诸如此类的其他代码:.

7
keithjgrant

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

一个很好的 source ,可以进一步阅读该主题。

enter image description here

6
Amir Rezaei

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

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

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

6
JeffO

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

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

5
Muad'Dib

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

4
s.m

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

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

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

4
Uri

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

3

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

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

3
user18161

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

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

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

  3. 我觉得UI比后端更像是一个“管道”,即聪明的算法并没有将您的大脑推到极限的机会就更少了。

2
Kaypro II

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

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

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

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

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

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

2
Pete

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

2
Marcie

老实说,我发现找到最好的GUI工具包然后实际学习它的来龙去脉有点像PITA ...更不用说您不会在大学中学到很多UI知识,而是一个新手…… ..

1
user6791

除了已经说过的东西(编写代码是繁琐,乏味,令人沮丧的工作,而且设计通常是由某个人事先完成的,他不知道他的想法对那些试图实现它们的人造成了什么问题),一个重要因素是你必须与那些对您的想法不断做出改变的人进行合作,这远远超出了后端。结果,您将要面对不断变化的规格,而这些人也往往是挑剔的人。我实际上已经进行过用户界面失败测试,​​因为组件比测试人员认为应该的位置低了1像素。奏效了吗?是。看起来不错吗?是。但是他开始计算像素,有些像素与其余像素不符,因此他将其寄回进行返工。

1
jwenting

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

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

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

1
Remi

还有几点:

1)UI设计可能很难测试,请确保您可以检查该按钮是否达到了应有的功能,但是要测试它是否易于使用就很难。如何测试它是否适用于残疾人?

2)许多程序员都没有接受过相关的培训,对此了解也不多。

1
Zachary K

事实是,许多UI工具/框架/ API不好,很复杂,很不直观。我使用C/C++中的Win32 API,javax.swing,CSS等进行开发。从那以后,我讨厌不得不进行UI开发……直到Qt框架!

1
canardman

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

1
卢声远 Shengyuan Lu

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

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

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

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

UI工作量如此之大的一个原因是,仍然存在很多DSL无法完成的“胶水”-管理数据网格,各种数据排序方式,所有陷入“打ck”的东西在纯UI和基础语言之间。

因此,您的问题是“为什么有些程序员讨厌开发的UI部分?”。我只是讨厌它,因为我没有DSL的那种“胶水”。

1
Mike Dunlavey