我遇到的许多程序员总是说“他不是UI专家”。事实是,当今的开发,无论是Web,Windows,Linux,OSX还是任何其他类型的开发,现在都包含具有漂亮UI的软件。为什么这么多开发人员似乎不喜欢UI工作?
我遇到的许多程序员总是说“他不是UI专家”。事实是,当今的开发,无论是Web,Windows,Linux,OSX还是任何其他类型的开发,现在都包含具有漂亮UI的软件。为什么这么多开发人员似乎不喜欢UI工作?
Answers:
我也不是UI用户。好吧,我在自己的项目上执行UI,但是在工作中我与它无关—我的工作是在应用程序的胆量中,而不是前端。
除此之外,我认为这比无聊更令人讨厌。设计UI是困难而艰巨的部分。实施主要是艰巨的工作。如何实现用户界面几乎没有挑战或创新,只有很多次才能在屏幕上摆出一个复选框,然后再稍作思考。而且,这甚至还没有花很多时间来“对齐”像素对齐。
与编写一些后端代码相比,制作一个好的UI涉及许多不同的技能。
后端需求通常可以像黑盒子一样指定,x进入,期望y应该出来。使之工作涉及实现逻辑,您可以通过编程方式测试其是否有效。
为了制作出良好的用户界面,您需要考虑可用性,视觉设计,布局以及诸如配色方案之类的东西。在这里具有一定的艺术创造力是一种奖励,许多程序员并不觉得自己拥有这种能力。在逻辑上,解决UI问题似乎是主观的,因为没有一个正确的答案或没有简单的方法来验证它是否“正确”完成。
我认为许多没有太多UI经验或没有对其进行过多研究的程序员都没有意识到,从可用性角度和设计角度(例如颜色)来看,好的UI设计背后都存在规则和科学。理论)。
当然,一些程序员对此方面没有问题,但是讨厌它,因为许多UI只是无聊的代码。它们可能包含许多重复性工作,例如管理页面的表单页面,在这些页面中它们只需要起作用,就不会遇到设计挑战。
人们只是有不同的兴趣。一些程序员对数据结构和算法更感兴趣,一些对体系结构,一些对可用性和UI设计感兴趣,或者对那些和其他领域的任意组合。他们每个人都需要不同的技能和不同的思考问题的方式。如果您喜欢底层的编程细节,也许您不太在乎用户的想法,反之亦然。
就我个人而言,我属于后者-我宁愿设计UI也不愿使用复杂的算法。这只是我觉得很有趣的事情。
给定的UI设计是好是坏是相当主观的,我认为程序员通常都没有吸引力。几十年来对量化和合格的UI技术进行量化的努力帮助创建了一个可以应用的广泛规则,但要真正确定一个UI是否有用,往往要进行大量的A / B测试和其他用户观察技术。
尽管编程中肯定有主观性,但通常您可以指出某种客观原因,说明一个选择胜于另一个选择的原因:执行速度,内存需求,满足未来可能需求的灵活性,实践证明在以下方面更有效捍卫给定的UI选择-甚至自己做出选择-通常会降级为“我喜欢它”,这是一种完全不同的观点。
我个人不喜欢UI开发,因为我不擅长。我只是不善于理解用户心理的巨大要素。我认为我最大的问题是我无法放任用户。我不知道如何制作直观的布局,很大程度上是因为我不知道什么对用户来说是直观的,也不知道如何使外观看起来漂亮。
我不一定认为有些程序员讨厌设计UI就像讨厌做自己不擅长的事情一样。碰巧有很多不擅长UI开发的开发人员。
UI设计的问题是每个人都有自己的见解...而且没有正确或错误的答案。另一方面,开发人员喜欢黑白和逻辑。在任何规模的公司中,每个人都会同意1+1=2
,但是询问哪种字体最容易阅读(Comic Sans Obviously)
...为洪水做准备。一万种不同的答案,每个人都是正确的,因为每个人都是不同的。
我认为这取决于大多数程序员使用大脑的左手部分。
这是进一步阅读该主题的好资料。
UI开发变得复杂,因为您从错误的人那里得到了太多的输入。他们都是图形设计专家。当您想知道某事的公式时,找不到它们。
他们不知道自己想要什么,但在看到它们时就知道了,没有品味,那些拥有决策能力的人无论如何都不会使用该应用程序,但肯定应该是绿色的。您遵循良好UI的准则,例如限制表单上的字段数量,并要求添加50个以上的字段,因为它们“需要”所有字段并将它们放在单独的选项卡上需要太多的工作。您知道,与Excel相同。农民!
你不能弥补这一点。我参加了一次会议,一家大型律师事务所的会计部门中排名前两名的人(年薪约50万)花了半个小时在律师所使用的计费网站页面上争论一个标签。这样做是为了使律师容易理解。为什么不问律师呢?太容易了。因此,IT部门接到了想知道WTF“剩余净账单金额”是多少的律师打来的50个电话,以及为什么要在他们的时间输入表格上显示。
有些人喜欢西兰花,有些则不喜欢。我们可能必须吃掉它,但是我们不必喜欢它,当我们吃掉它时我们就不会享受它。不仅如此,我们将避免尽可能多地食用。
除了UI之外,还有很多其他东西要编写。仅举几个例子,Web服务,Windows服务是嵌入式的(不是很多的UI)。
我知道我曾经讨厌UI开发人员,因为我发现它非常乏味且缓慢,特别是编写布局代码以将内容放置在窗体或窗口中。现在有了UI设计器工具,例如Visual Studio中的Forms Designer,我几乎喜欢它。我从其他人那里听到的讨厌它的其他原因包括“它很愚蠢”,“它总是变化太大”,“它挑战性不够”,“它乏味/无聊”。
为什么所有的国际象棋玩家都不喜欢设计棋盘和棋盘上的棋子?
有些人不喜欢它并不奇怪……您期望我们应该这样做很奇怪。
我讨厌UI的工作不如讨厌UI的框架。例如,我从事.NET编程已有10多年的历史了。创建Web应用程序的框架很棒(ASP.NET WebForms和ASP.NET MVC)。但是,用于编写桌面应用程序的框架,我不喜欢它们(WinForms和WPF)。
因此,就此而言,编写GUI应用程序更多是使用我不喜欢的框架的一个方面。
还有另一方面。我经常使用“企业”风格的应用程序,即桌面应用程序需要从服务器接收数据的应用程序。在这种情况下,数据从一种格式转换到另一种格式的层次太多,以至于它真的变得很无聊。
例如,应用程序通过一系列DTO对象接收信息。然后,应用程序创建其自己的数据模型表示(而不重用在服务器上创建的相同域类)。模型类由视图模型使用(在WPF MVVM模式中),该视图模型公开了模型上的属性。
很多时候,相同的数据由不同的类表示。这变得无聊。但这是特定于此类桌面应用程序的问题。
在这种类型的应用程序中还存在有趣的挑战,例如我们如何从一个客户端获取更改以立即在另一客户端上更新。
由于以下原因,我不是UI开发的忠实拥护者:
作为开发人员,您创建的自由度较小:客户可以查看并拥有对UI的每个小方面的看法,您必须对此做出反应。您将收到类似的请求:更改其颜色;将该按钮移到那里;没关系,将其移回原位。后端代码很少可见。
用户界面更混乱,而后端则更“柏拉图式”。尽管我已经看到了丑陋的后端代码,但我认为(从代码角度来看)它比UI代码更干净。UI看起来确实很干净,并且为用户设计的很好,但是由于我是一名开发人员,并且比使用它花费更多的时间在代码中,因此我更喜欢清理代码。
我觉得UI比后端更像是一个“管道”,即使用聪明算法并真正将大脑推向极限的机会更少。
我同时执行UI(桌面而不是Web)和内部胆量。
我喜欢还是不喜欢的数量取决于使用特定于域的语言(DSL)之类的东西可以完成多少工作。
在UI领域中,我向用户呈现的内容以及从用户那里获得的信息的复杂性使得如果不得不使用典型的工具(例如表单设计器,大量事件处理程序,MVC),我会发疯,所有这些“最先进的”东西。值得庆幸的是,几十年前,我发现了我认为更好的方法,那就是为其创建DSL,并以此来工作。目前,我将其称为“动态对话框”,它基于一种称为“ 差异执行”的控件结构。好消息是,对于给定的功能,源代码大约要少一个数量级,这使我可以在UI中添加更多功能。坏消息是,就我所尝试教的一样,我没有多少运气来转让这项技术。
在非UI领域,我从许多产品中吸取了教训,这些产品最初是可从命令行使用的DSL,后来又将UI移植到了这些产品上。这为专家用户提供了可以绕过UI的地方,而为临时用户提供了可以随便使用的地方。(例如:R,SPlus,Matlab,SAS,WinBugs。)因此,我们的产品为专家提供了一种命令行语言。我喜欢用解析器,代码生成器,预编译器和运行时建模引擎来开发这类东西。在此方面花费的精力至少比在UI上花费的精力少10倍。
UI工作量如此之大的一个原因是,仍然存在很多DSL无法完成的“胶水”-管理数据网格,各种数据排序方式,所有陷入“打ck”的东西在纯UI和基础语言之间。
因此,您的问题是“为什么有些程序员讨厌开发的UI部分?”。我只是讨厌它,因为我没有DSL的那种“胶水”。
事实是,许多UI工具/框架/ API不好,很复杂,很不直观。我使用C / C ++中的Win32 API,javax.swing,CSS等进行开发。从那以后,我讨厌不得不进行UI开发……直到Qt框架!
作为一名CS学生,您将学会数据结构,数据库,C ++ ...除了UI。因此,从一开始您就不会擅长此事。如果您不擅长,那就会讨厌它。