3

软件开发是非常主观的 - vadim

 2 years ago
source link: https://www.jdon.com/61952
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

软件开发是非常主观的 - vadim
你们中的大多数人都熟悉加入一家新公司的感觉,并有那种重写一切的冲动。看到你的新团队成员几年前犯下的亵渎神明的行为,让你的眼睛很痛。当然,你知道的更多,你会在开发该功能时遵循最佳实践。对吗?

可能是吧。但多年来,我了解到,"最佳实践 "的问题在于它们非常主观。你工作的每家公司都有不同的规则要遵循,随着时间的推移,这些规则是有意义的,当你离开公司时,你会把这些规则中的一些作为你自己的 "最佳实践"。

但是,在软件开发中,没有一个适合所有的尺寸。我们所做的一切都非常有主见,只对我们有用。这是一个由不同范式的不同方面建立起来的怪物,它帮助我们,也只有我们,变得高效。

自以为是的实践
如果我们看一下开发实践,有许多不同的方法可以让你去构建软件。

  • 测试驱动开发--每个人都试图实现的开发的圣杯。
  • 接受测试驱动开发--TDD的一个变种,但更侧重于从业务角度解释需要做什么。
  • 行为驱动开发--另一个变种,着重于建立对软件的一部分应该如何工作的描述的共同理解。
  • 例子驱动开发和故事TDD--甚至更多的变化,你可以定义软件需要做什么以及如何测试它。

正如你所看到的,每一种都是非常自以为是的做法,每一种都有开发者宣扬它是构建软件的唯一正确方式。如果你不做TDD,你还能做软件开发吗?

自以为是的框架
javascript的世界充满了奇迹。有一些框架都声称对DOM的渲染和模块的封装有不同的方法。你可以用一千种不同的方式来构建你的网络应用(甚至是移动应用),而你使用的这些框架都有自己的最佳实践,并不匹配。

服务器端渲染不久前被放逐了,但现在它又回到了桌面上,成为新的酷事,用部分服务器端渲染来 "加速 "你的应用程序。现在的最佳做法是在服务器端渲染那些变化较少的内容,而在浏览器上渲染那些经常变化的部分。一些人同意,另一些人则会说这太疯狂了。

TailwindCSS是一个非常有意见的CSS框架的例子,它的样式是通过类来完成的。许多人讨厌这个想法,并争论说:"HTML变得臃肿,Tailwind就像内联样式,它违反了样式和标记的分离"。传统的智慧与Tailwind相反--在样式表中隐藏尽可能多的CSS,对一个元素使用单一的类。但我喜欢这个概念,并认为它使我在为我的博客做HTML修改时变得高效,比如说。

那么,谁是正确的呢?没有人。这只是我们的观点,即使我们有相反的观点,它们也是有效的。

自以为是的产品
你知道微软的Excel是如何试图猜测你要做什么的,有时它的假设是错误的,所以你必须到配置中去改变字体、表格等。这就是约定俗成的配置--这意味着产品在90%的情况下都能愉快地工作,但在必要时允许改变其他10%的情况。

有很多自以为是的产品--即使我们只拿日历应用来说。有许多不同的方式可以显示日历和每周的时间表,以至于有数百个应用程序是以强烈的意见建立的。例如,有的只允许以1小时为单位的预订时段,有的只允许以周为单位的查看。

在Java世界里,一个很好的例子是Ant与Maven的对比。这些都是用于创建java可执行文件的构建工具。Ant给你提供了灵活性,你需要指定一切,而Maven则隐藏了大部分东西,但允许你覆盖默认值。

在Java生态系统中,Maven比Ant更受欢迎,因为它90%的时间都很容易使用,而另外10%的时间你可以通过配置来改变。

惯例创造了一个自以为是的产品;“自以为是”创造了用户的喜悦;用户的喜悦创造了成功的商业。

自以为是的流程
你可能会认为,如果你没有完全按照敏捷的要求去做,你就是一个失败者。如果你不能按照敏捷之神的旨意去做,你还能做软件开发吗?

嗯,这也是错误的。关于做敏捷,有太多的观点,以至于最初的宣言不再有意义了。例如,在过去的几个月里,我听到了几个关于敏捷团队做估算和计划的矛盾说法。

  • 你应该以点来估算。
  • 你应该以小时为单位进行估算。
  • 你根本就不应该估算,应该把故事分解成最小的任务。
  • 根本就不要做敏捷。瀑布是最好的。

尽管你可能认为 "做敏捷 "是最好的做法,但关于如何做敏捷有很多自以为是的,盲目地遵循任何建议都是没有意义的。

采用任何东西都有一个简单的指南:你采取任何你认为适合你的目标的方法论,然后挤压它、拉伸它、压扁它,使其适合你的组织--这样你就可以尽可能地有效。如果方法论中的任何内容使你效率低下,就把它扔掉,然后定义你的规则。

自以为是的结论
没有任何银弹解决方案能让你自动高效。恰恰相反,如果你采用任何方法论并试图完全按照它的描述来实施,你的效率很可能会下降。

敏捷并不意味着对所有事情都有一个规则,而只是遵循红色的虚线。把事情做好是唯一重要的因素。即使你的公司对SCRUM方法有独特的适应性--这也很好,只要它对你有用。

观点很重要。你周围的环境使你的情况独特,你选择的工具也必须适应你的情况。

你选择的每一个框架、编程语言和IDE都只是一个工具,它应该帮助你以一种有效的方式从A点到B点,而不影响你的价值观。只要你有了这些,那么恭喜你,你有了一个工作系统。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK