在形形色色的行业中,程序员绝对是非主流:除了 IT 从业者之外,我的同学、亲友们 几乎都不能一下子就明白我做的工作是什么。
这自然是一个悲剧,在外人眼里,随便挑一个程序员出来都会认为他是一个 geek…… 更悲剧的是,很多程序员自身都难以清晰地解释程序员的意义。
于是那篇文章指出一个核心观点:程序员是将人类想法翻译成计算机语言的人。
两个物种,两个世界
我们可以把“计算机”看成一个新物种,这种“生物”的特点是,能够保证全理性地执行工作。 就是说,你告诉他要做什么,他就做什么。
另一方面,人类本身是复杂的生物,记忆力有限、注意力容易分散……所以相比而言,计算机 拥有超过人类成千上万倍的工作效率。因此,计算机能做的事情,我们都给它做,这样生活就会更好。
这当中存在的一个问题是,计算机不可能直接领会人类的意图而执行任务。于是我们需要程序员 来告诉计算机我们要做什么。 容易忽略的一点是,程序员不仅仅要和计算机打交道,更重要的,他必须“明白人类的需求”, 所以“需求分析”是那么的重要。
程序员需要具备的能力
这是最后最重要的结论。正因为程序员是和两个世界打交道的人,因此他必须具备两方面的能力。
理解人类的需求并提出解决方案
- 沟通——与人建立联系的能力,能够同他人亲密的交谈,并有勇气去尝试分享自己的观点。
- 意图——从谈话中提取有用的信息,理解并使之有意义。
- 逻辑——为不懂让步的计算机整理、剔除那些人类思想中含糊而有争议的内容。
- 创造力——挖掘、转变人类的想法,从而创建优秀的解决方案。
- 构思——利用人类友好的接口和便捷的互动性来包装编程思想。
- 大局观——清楚解决方案是如何适应全世界的用户、企业以及其他,从而使你的程序更有用。
告诉计算机该做什么,并建立解决方案
- 逻辑(再次强调)——把程序员的想法组织整理成有凝聚力的软件思想和计算机指令
- 技术——发现并理解科技黑箱(对于 99% 的人来说是黑箱)。
- 编程语言——学习美观的、富有逻辑的、清晰明了的语言,从而把程序员的想法提供给电脑。
- 算法——精通让计算机完成任务最高效的方法。
- 建模——在软件代码中建立抽象和模型,从而掌握并操控想法。
- 实践(比如代码重构、单元测试、持续集成)——周期性活动,以保持系统可靠、健壮与可改变。
最后,不与人沟通的程序员不是好程序员。 一个优秀的解决方案需要计算机世界与人类世界的双重技能。 只有连接起两个世界,才能成为一个真正的优秀程序员。
分享到:
相关推荐
同时,“眼中体”也鼓励人们以更轻松幽默的态度看待自己的职业,用自嘲来应对误解和压力,增进彼此的理解。这种网络文化现象不仅体现了时代的共鸣,也展示了社会中不同群体间沟通的挑战和需求。
计算机体系结构是指计算机系统的概念性结构和功能特性,它是程序员眼中计算机的基本属性。根据计算机系统的多层次结构,不同层级的程序员会看到不同级别的计算机属性。一般来说,较低层级的属性对较高级别的程序员来...
每天垒乱码(或许你不觉得,但是大多时候在别人眼中确实就是乱码)并不能使你获得更多的进步,相反要达到高水平的程序员,养成良好的开发习惯是绝对必需的。 不要沉迷表面的得失,看似无用的东西要经过慢慢的累积由...
苏轼的故事告诉我们,人们的观念和心境会影响他们对事物的判断,这与计算机处理信息的过程类似,不同的输入信息决定了程序的输出结果。 2. **数据存储**:内心的想法和情感可以类比为计算机内存中的数据。人脑储存...
人们觉得自己在 Perl 里可以有创造力,因为它们有表达的自由:他们可以选择是为计算机速度优化还是为程序员的速度优化,是冗长还是简洁,是选择可读性还是可维护性,或者选择复用性,移植性,接受性和传授性等等。...
1. **目标设定与追求**:故事中的大河和黄毛都有自己的目标,尽管他们的行为在村民眼中并不光彩,但他们的决心和勇气值得我们思考。每个人都有权利设定自己的目标,无论大小,都有其价值。对于青少年来说,设定个人...
可能在这些教科书作者的眼里,操作的细节不属于课程的一部分,或者这些细节看上去太容易,根本不值一提,甚至作者认为这些属于所谓“经验”的一部分,约定俗成是由读者本人去摸索的。但是实际情况往往是,这些书中...
可能在这些教科书作者的眼里,操作的细节不属于课程的一部分,或者这些细节看上去太容易,根本不值一提,甚至作者认为这些属于所谓“经验”的一部分,约定俗成是由读者本人去摸索的。但是实际情况往往是,这些书中...
在很多人眼中,CRM就是一套C/S或者B/S的应用系统。 而当CRM进入了SaaS,他在架构上会是一个什么样子呢?我们以361CRM为例,来看一下SaaSCRM的架构。 361CRM系统采用分布式架构。采用企业级的多层次、多应用的...