zoukankan      html  css  js  c++  java
  • 人们眼中的程序员

    在形形色色的行业中,程序员绝对是非主流:除了 IT 从业者之外,我的同学、亲友们 几乎都不能一下子就明白我做的工作是什么。

    这自然是一个悲剧,在外人眼里,随便挑一个程序员出来都会认为他是一个 geek…… 更悲剧的是,很多程序员自身都难以清晰地解释程序员的意义。

    于是那篇文章指出一个核心观点:程序员是将人类想法翻译成计算机语言的人。

    两个物种,两个世界

    我们可以把“计算机”看成一个新物种,这种“生物”的特点是,能够保证全理性地执行工作。 就是说,你告诉他要做什么,他就做什么。

    另一方面,人类本身是复杂的生物,记忆力有限、注意力容易分散……所以相比而言,计算机 拥有超过人类成千上万倍的工作效率。因此,计算机能做的事情,我们都给它做,这样生活就会更好。

    这当中存在的一个问题是,计算机不可能直接领会人类的意图而执行任务。于是我们需要程序员 来告诉计算机我们要做什么。 容易忽略的一点是,程序员不仅仅要和计算机打交道,更重要的,他必须“明白人类的需求”, 所以“需求分析”是那么的重要。
    程序员需要具备的能力

    这是最后最重要的结论。正因为程序员是和两个世界打交道的人,因此他必须具备两方面的能力。

    理解人类的需求并提出解决方案

    1. 沟通——与人建立联系的能力,能够同他人亲密的交谈,并有勇气去尝试分享自己的观点。
    2. 意图——从谈话中提取有用的信息,理解并使之有意义。
    3. 逻辑——为不懂让步的计算机整理、剔除那些人类思想中含糊而有争议的内容。
    4. 创造力——挖掘、转变人类的想法,从而创建优秀的解决方案。
    5. 构思——利用人类友好的接口和便捷的互动性来包装编程思想。
    6. 大局观——清楚解决方案是如何适应全世界的用户、企业以及其他,从而使你的程序更有用。

    告诉计算机该做什么,并建立解决方案

    1. 逻辑(再次强调)——把程序员的想法组织整理成有凝聚力的软件思想和计算机指令
    2. 技术——发现并理解科技黑箱(对于 99% 的人来说是黑箱)。
    3. 编程语言——学习美观的、富有逻辑的、清晰明了的语言,从而把程序员的想法提供给电脑。
    4. 算法——精通让计算机完成任务最高效的方法。
    5. 建模——在软件代码中建立抽象和模型,从而掌握并操控想法。
    6. 实践(比如代码重构、单元测试、持续集成)——周期性活动,以保持系统可靠、健壮与可改变。

       最后,不与人沟通的程序员不是好程序员。 一个优秀的解决方案需要计算机世界与人类世界的双重技能。 只有连接起两个世界,才能成为一个真正的优秀程序员。

  • 相关阅读:
    真正的e时代
    在线手册
    UVA 10616 Divisible Group Sums
    UVA 10721 Bar Codes
    UVA 10205 Stack 'em Up
    UVA 10247 Complete Tree Labeling
    UVA 10081 Tight Words
    UVA 11125 Arrange Some Marbles
    UVA 10128 Queue
    UVA 10912 Simple Minded Hashing
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/5835350.html
Copyright © 2011-2022 走看看