19个编程误区
您可能认为基于逻辑和学习的职业不会受到民间传说的影响,但开发者社区仍然充斥着神话——这些神话如此普遍,以至于开始变成现实。
如果所有关于编程的迷思都是真的,那么编程世界看起来就像一群二十多岁的极客(有些人比其他人厉害十倍),用他们高超的数学技能彻夜不停地写代码。然而,如果你身处这个行业,你可能知道事实并非如此,开发者们自己对这个行业的一些看法也并非如此。让我们来揭穿这些迷思:
1. 优秀的程序员昼夜不停地工作
这里我们插入一张硅谷的照片:一屋子穿着连帽衫的家伙,正在喝着红牛。这话确实有道理,尤其是在初创公司。然而,情况并非总是如此,研究表明,长时间工作和睡眠不足实际上并不会提高生产力。事实上,努力和进步之间的界限很模糊,这通常是不切实际的期望造成的。很多开发者除了编程之外,还有家庭和生活,他们更愿意在正常时间下班。与其让这种想法持续下去,编程社区应该从改进工作流程的方法和运用敏捷方法设定切合实际的目标中受益。
2. 离岸外包带来更便宜、更快速的软件
离岸外包通常效果相反,企业之所以被吸引,仅仅是因为它看起来更便宜。然而,用更少的钱雇佣更多的程序员并不意味着速度更快。这需要更多的沟通成本、培训和重新分配工作。离岸开发团队也容易出现更高的人员流动率,这意味着长期预期的效果会落空。在这种情况下,内部团队必须弥补不足,从而减少节省。
3. 离岸外包会毁掉你的职业生涯
如上所述,离岸外包并不一定能降低软件开发成本,加快软件交付速度。人们会不断尝试这种模式,直到它被证明毫无价值为止,但离岸外包并不会抢走美国所有的工作岗位。事实依然如此:语言确实很重要。尝试与离岸经理和团队沟通既不可靠,又容易引发混乱。客户通常会耗尽资金或耐心与离岸团队合作,最终选择在本国更能有效执行合同的开发公司。
4 - 检查的人越多,错误越少
Eric S. Raymond 创造了“只要足够多的眼力,所有 bug 都浅显易懂”这句话。人们普遍认为,开源软件中的 bug 都能被发现、审查和修复,因为任何人都可以采取行动。然而,事实上,使用开源软件的人比贡献代码的人多,而且大多数人都无法纠正代码中的错误。换句话说,人多反而会把事情搞砸。更好的方法是组建一支配备强大 bug 跟踪软件的专注团队。
5. 数学技能决定编码技能
是也不是。数学技能并不一定意味着你就是优秀的开发者。如果一个人不擅长数学,他们可能更擅长某些需要聪明才智或实践能力的编程领域。除了游戏之外,大多数开发者只会使用基本的代数和统计学来评估代码的效率,而且这种做法也非常少见。
6. 开发人员都是天才
成为一名程序员并不需要天赋,你只需要有学习的动力和能力。程序员总是会犯一些令人沮丧的错误,而最优秀的开发者是那些能够不断失败并从错误中汲取教训的人。
7. 你可以专注于一件事
学习永无止境,因为编程世界瞬息万变。掌握一门语言是明智之举,因为它能让你更好地工作,并理解其中的细微差别。然而,永远不要只局限于掌握一门语言,否则你最终会了解一些无人问津的“遗留”软件。
8. X语言更好
世界上没有一种万能的语言可以解决所有编程问题。相反,每种语言在编程环境中都占据着各自的特殊领域。这并不意味着某些语言在某些方面没有优势——你可以用 JavaScript 来开发交互式软件,但如果你想快速完成某件事,那就用 C++。开发者们,你们自己去争论吧,没有一种语言是完美的。
9. 你可以在几周内掌握一门语言
你或许能在两三周内学会一门语言的基本原理,但你肯定无法成为大师。掌握一门语言需要兴趣、耐心,以及最重要的——应用。你不会希望一个只读过所有医学教科书、参加过考试的医生给你做手术,你想要一个在实际手术中投入了无数时间的人。好吧,不妨把自己想象成一名外科医生,因为成为一名优秀的开发人员也需要同样的肌肉记忆。
10. 软件危机
1968年,埃德加·迪杰斯特拉(Edgar Dijkstra)提出了“软件危机”,指的是开发效率低下、预算超支、质量低下且难以维护的软件。如今,“漏洞百出”的软件给美国带来了数十亿美元的损失,这一事实恰恰表明了这场“危机”,尽管这并非真正的危机。软件行业目前的表现并不算太差,它一直在不断改进。它以闪电般的速度发展,掌控着经济的很大一部分,而新软件的出现总会造成效率上的波动。无需恐慌,这场危机只是一个神话。
11. 当你发布软件时,你就完成了
软件很少能完成。当然,管理层和开发人员都乐于相信,一个庞大、多层次的软件总是在不断变化,开发该软件的开发人员并不完美,应用程序会不断变化,新增的功能也会带来新的 bug。管理层和团队需要考虑支持和维护成本,并考虑到产品为了保持竞争力必须持续创新。
12 - 编码只是编写代码的行为
管理层常常认为开发人员只是将想法转化为代码,而没有理解他们在此过程中做出的决策。这其实是一个很大的误解,因为开发人员在项目的每个阶段都在构建和制定决策。开发人员每天都会遇到大量的非功能性需求和设计决策,而优秀的开发人员能够跟踪这些需求,与团队沟通重要决策,并就细节做出执行决策。
13-这不是一个创意领域
是的,它既技术性又合乎逻辑,但它也是一种艺术形式。许多非程序员忽视了代码构建的美感,而一些开发人员甚至可能也认同这一点。许多程序员会说它就像诗歌。这绝对是一种创造性的努力。保罗·格雷厄姆在他的文章《黑客与画家》中概述了编码的艺术性。
14. 开发人员社交能力差:
很多人认为程序员是独来独往的人,喜欢独自坐在电脑前写代码,在社交场合中也难以为组织做出贡献。这常常导致管理人员在与开发人员互动时低估开发团队的贡献。如果管理人员这样做,他们就等于将自己置于一个充满怨恨的团队的风险之中。开发人员在编写代码时会不断做出决策,而且他们的类型各异,所以即使你喜欢编程,也不意味着你喜欢独处。
15. 开发人员认为经理没什么贡献
开发人员通常认为经理缺乏技能,无法指导开发团队。事实并非如此,大多数经理真正了解自己的工作,他们的存在是为了保护团队免受干扰,为他们提供最佳工具,管理截止日期和预算,并在需要时引入额外资源。人们往往关注负面因素,因此当事情变得令人沮丧时,经理们往往会受到指责,但他们的目的是让团队的工作更顺利地进行。
16. 年轻的开发者认为自己很厉害
这或许只是年龄的一种表现,但职业生涯早期的开发人员往往认为自己比经验丰富的开发人员更优秀。他们学习了他们认为更高效的新技术,因此比使用旧平台的人更有价值。许多开发人员随着年龄的增长仍在继续学习新技术,这是理所当然的。而刚从大学毕业的开发人员却忽略了一个重要因素:经验的深度和广度,而这只能随着时间的推移而积累。
17. 编程很无聊
每个人都会对某些事情感到厌倦,但你不会把一生奉献给那些让你感到无聊的事情。编程可以很迷人,它融合了建筑、数学和语言。那些认为编程无聊的人并不了解其中的复杂性,但开发者们知道,编程的意义在于提出解决方案并不断学习——这怎么会无聊呢?
18. 35岁,开发者的职业生涯就结束了
编程界确实存在年龄歧视,但年龄并非职业生涯的终结。那些困于一门语言,或无法学习新平台和技术的人,会加剧自身影响力的下降。这并不是说开发者会完全放弃编程,许多人会进入管理岗位或创办自己的公司。还有一些人会在整个职业生涯中持续学习并热爱开发,只是要保持与时俱进。
19-开发人员是一种商品
人们通常认为写代码越多的人效率越高,但开发可不是砌砖工。雇佣更便宜的程序员,却期望他们完成的工作完全一样,这很不合理。开发人员也是人!他们拥有特定的技能、个性和知识。就编程语言而言,有些程序员在某个项目上比另一个项目更优秀,而这正是影响效率的因素。
顺便说一句,如果您正在寻找 GitLab / Github 的替代品,欢迎查看 Codegiant。我们拥有简洁直观的用户界面 / 用户体验,以及 GitLab 提供的所有功能 :) - https://codegiant.io/
文章来源:https://dev.to/codegiantio/19-programming-myths-jgn