很多人认为计算机变得如此智能,所以在不久的未来将不再需要
程序员。另外一些人认为程序员是天才,他们在电脑前能不断地解决复杂的数学难题。甚至不少程序员对他们是做什么的都没有清晰的概念。在这篇文章中,笔者想给不知情的人解释一下程序员到底是做什么的……
计算机没有什么作用。他们只能告诉你答案。——毕加索
程序员是将人类想法翻译成计算机语言的译者。
他们是两种世界之间的纽带。你认为维护这个纽带很容易吗?
计算机非人性的一部分表现是,一旦完成编译并且顺利运行,它将忠实地完成工作。——艾萨克·阿西莫夫
计算机是人类文明的最佳发明。它由CPU、主板、内存、硬盘驱动器、显示器和其他部分构成。计算机将我们的文明推入一个新的水平,使我们的生活更有意义并充满乐趣,还弥补了我们大脑的缺陷。很可能计算机比人类更聪明。(不过,我有点关心如果这成为现实后,计算机还需要人类程序员吗?)
现代计算机具有完全逻辑性、直接性和顺从性。如果你知道它应该做什么并且知道如何命令它,那么和计算机一起工作是快乐的。唯一的问题是,计算机只会做你告诉它去做的。因此,你应该有清晰的思路并且在见你的上司或客户时保证计算机不出岔子。
在人类和计算机之间的翻译
翻译中会遇到三个主要的挑战:
-
1. 语言歧义。人类语言是模糊、复杂并且双关的,例如:“这个程序不能提供良好的用户体验”。文化、背景和上下文语境都会对沟通和含义造成影响。与之相反,所有计算机语言都是准确、直接的,与上下文无关。
-
2. 细节层次。人类的沟通是笼统而不带有过多细节的,例如:“我想让这该死的程序运行起来”。这样可以节省时间与精力,但由于缺少详细信息,会产生两个比较大的问题——误解和不确定性。而计算机需要所有细节——每件事都要说清楚。
-
3. 思维模式。人类习惯于思考需求、结果与解决方案之间的关系,例如:“这份报告应该在2秒内运行,而不是2个小时”。然而,计算机需要算法——按照步骤去达到想要得到的结果。
为了写出优秀的软件,程序员们必须克服这些困难,理解人们的想法并将之转换成计算机语言。
一名优秀程序员所具备的能力
我们可以看到,一名优秀程序员应该具备应付两个不同世界的两套技能。
理解人类的需求并提出解决方案:
- 1. 沟通——与人建立联系的能力,能够同他人亲密的交谈,并有勇气去尝试分享自己的观点。
- 2. 意图——从谈话中提取有用的信息,理解并使之有意义。
- 3. 逻辑——为不懂让步的计算机整理、剔除那些人类思想中含糊而有争议的内容。
- 4. 创造力——挖掘、转变人类的想法,从而创建优秀的解决方案。
- 5. 构思——利用人类友好的接口和便捷的互动性来包装编程思想。
- 6. 大局观——清楚解决方案是如何适应全世界的用户、企业以及其他,从而使你的程序更有用。
告诉计算机该做什么,并建立解决方案:
- 1. 逻辑(再次强调)——把程序员的想法组织整理成有凝聚力的软件思想和计算机指令
- 2. 技术——发现并理解科技黑箱(对于99%的人来说是黑箱)。
- 3. 编程语言——学习美观的、富有逻辑的、清晰明了的语言,从而把程序员的想法提供给电脑。
- 4. 算法——精通让计算机完成任务最高效的方法。
- 5. 建模——在软件代码中建立抽象和模型,从而掌握并操控想法。
- 6. 实践(比如代码重构、单元测试、持续集成)——周期性活动,以保持系统可靠、健康与可改变。
面向人类和面向硬件对象/系统的程序员有很大不同。
不与人沟通的程序员不是好程序员。一个优秀的解决方案需要计算机世界与人类世界的双重技能。只有连接起两个世界,才能成为一个真正的优秀程序员。
分享到:
相关推荐
程序员如何防止颈椎病程序员如何防止颈椎病程序员如何防止颈椎病程序员如何防止颈椎病程序员如何防止颈椎病程序员如何防止颈椎病程序员如何防止颈椎病程序员如何防止颈椎病程序员如何防止颈椎病程序员如何防止颈椎病...
【视频答疑】为什么做程序员头发还这么浓密?!
"程序员的项目如何讲解?" 程序员在面试时,如何讲解项目是非常重要的。很多程序员都忽视了这个问题,导致在面试时无法让主考官相信自己的项目经验。下面我们将从四个方面来讲解如何讲解项目。 首先,程序员在讲解...
综上所述,程序员的未来需要我们不断学习和适应新技术,同时要具备创新能力和理论基础,才能在这个不断变化的行业中立于不败之地。对于中国程序员来说,既不能完全照搬国外的模式,也不能满足于当前的技能水平,必须...
在这个行业中,成为一个优秀的程序员不仅仅是掌握编程语言那么简单,还需要一系列综合能力。以下是对这些能力的详细阐述: 1. **解决问题**:作为程序员,首要任务就是解决各种技术难题。这要求具备逻辑思维、分析...
总之,成为一名优秀的程序员,不仅需要具备耐心、毅力、细心和勇于挑战的品质,还需要保持谦逊、热情和自我反省的态度,同时避免轻易放弃、浮躁自满、消极被动和推卸责任等行为。通过这样的自我修养和努力,才能在IT...
好买财富-王晔倞-面对职场变化和转型分岔路,程序员该如何设定目标?
为什么程序员必须写技术博客_以及如何写_博客在面试时的加分可不是一点点,别再犹豫了,快行动起来!
【程序员写不出好代码的原因分析】...综上所述,程序员写出优质代码的过程不仅需要个人技术实力,还需要良好的工作环境、合理的管理机制和团队协作精神。克服这些障碍,有助于提升整个开发团队的代码质量和项目成功率。
目前ChatGPT的水平,还只能是给出一段功能性的代码,能提高程序员的工作效率,对于程序员有一定的辅助作用,但它是没有办法根据需求生成整个系统的,更不用说安装运行环境,调试,测试之类,而对于高级或者资深一点...
程序员危机如何破_你确定要写代码吗_
程序员选什么方向好_前端还是后端_在职程序员聊聊软件开发就业方向的选择问题
最后,《程序员的呐喊》还收录了他写的Google面试攻略,这篇文章可以说为无数应试者点亮了明灯。 《程序员的呐喊》讨论的都是程序员非常关注的热点话题,内容广泛,观点独到,非常适合广大程序员阅读参考。
程序员工作 必须掌握的技术,还有涉及到的核心技术, 还有程序员的工资待遇
此外,程序员还需要对每个模块的功能进行详细的记录,并且需要对每个模块的实现细节进行详细的说明。 程序员项目交接文档是程序员在项目交接过程中的重要文件,它对项目的开发、测试和维护起着至关重要的作用。...
为什么很多程序员喜欢喝咖啡?喝咖啡真的很伤身体吗?除了咖啡之外,还有什么方法可以提神?一个老鸟来为你分享一下真实的心里感受
1、有人曾说,做程序员的人,都是疯子,做长了往往入戏太深,成天与代码打交道,话都很少说,所以评论程序员们都是以后连妞都泡不到的人,我听后,我可以这样说,泡妞好比一个方法,他人是学习方法,而程序员呢,是...
程序员的工作不仅仅是编程序,还需要有乐趣。当你学到新知识时,当你有新的思想见解时,当你有新的产品问世时,和知己探讨你的成果时,这些都是非常愉快的体验。 基础知识和概念 作为一名程序员,你需要具备以下...