如何成为一个超级程序员?

如何成为一个超级程序员?


文 | Stephanie Kim  译 | 李瑞杰

如何成为一个超级程序员?

热门美剧《硅谷》中 Nelson 提到自己的好朋友 Richard 是一个10x 程序员,而自己只是个普通的开发者,这让他很闹心。

这里的 10x 程序员到底要怎么理解呢?对小编来说,10x 程序员就是开发工程师中的 “超人”!

 

有人对在线以及离线编程的探索性实验研究后,发现不同程序员完成编程任务花费的时间差别很大。这里我们来说说 “超人” 是怎样工作的,和 “超人” 是怎样练成的——

如何成为一个超级程序员?

程序设计

  • 了解业务

  •  高水平:  你需要对将要解决的业务有一个高水平(清晰)的认知

  •  业务过程:了解业务流程对程序项目的影响

  •  合作者:  搞清楚项目的合作者,并向其解释清楚项目设计需要花费的时间及精力

  •  

    如何成为一个超级程序员?

    程序设计:

    当一个 10x 程序员设计程序时,他会首先了解数据(对数据的理解比业务更重要)——

  • 了解真实数据的差异

  • 数据质量

  • 潜在数据源

  • 如何成为一个超级程序员?

    为何要这样进行项目设计

  • 你将效率更高(在编程之前,花时间思考哪些是必须要做的)

  • “你可以稍微懒一些”(发现顾客想法与其所需的差别)

  • 更少出错(对问题理解更清晰)

  • 如何成为一个超级程序员?

    代码设计:可读性比简练更重要

    上面三条代码实现同一个功能,第一条最简练,但是可读性最差,第三条虽然长,但是易懂,对于以后排除bug更容易。上面例子强调代码的可读性很重要。

    如何成为一个超级程序员?

    代码设计:命名很重要。

    在计算机科学中,存在两件困难的事情,分别为:缓存失效及命名。(该页ppt中两个函数功能相同,但内部参数名不同,显然第二个函数中参数命名更易懂。第一条语句中,参数用“x”来命名,用“x”对变量命名仅在机器学习之类领域比较合适,因为我们一贯把“x”当成自变量,与机器学习中被观察的变量意思一样。除数据科学领域外,你应该遵守所使用编程语言的变量命名规范)

     

    如何成为一个超级程序员?

    代码设计:一致性

    代码风格保持一致性与遵守一定的变量命名规则一样重要。(该页PPT右侧代码,语句前的缩进不一,代码毫无理由的另起一行,导致可读性极差,应尽量避免)

    如何成为一个超级程序员?

    代码设计:函数/类

    尽量将实现某一功能的代码编为函数,并确保你可以将函数抽象化,以便于重用。这样通过调用一条函数,可以在程序多处减少些多条代码的编写,并且在函数中声明变量,不像全局变量那样,容易出现命名冲突。

    如何成为一个超级程序员?

    代码设计:代码存根&注释

    虽然少见,但是重要的程序设计是使用代码存根。代码存根简单的模仿类及其函数,展示输入、输出以及注释。编程之前,进行代码存根编写,也是你对程序思考的过程,可以避免难以理解的“意大利式”代码的出现。(译者对代码存根也不是完全理解,译者把把代码存根功能简单理解为程序中的注释)

    如何成为一个超级程序员?

    代码设计:异常处理

    程序有可能会出现错误,编程中进行异常处理并且留下有用的错误信息提示,对你自己以及合作者都很有用。上面的代码展示了程序出现异常时,程序将会终止。

    如何成为一个超级程序员?

    代码设计:单元测试

    上述代码使用了python测试库。对代码进行测试很重要。一旦你成为自己代码的“质量认证”,当你的代码投入生产时,每个人都会把你当成“摇滚巨星”。

    如何成为一个超级程序员?

    合适的工具:版本控制

    工程中使用版本控制是成为10×程序员来说重要的一步。

    图中“Data Version Contro”是一个开源的数据版本控制工程,它依赖GIt并允许组内成员使项目重现。

    如何成为一个超级程序员?

    合适的工具:机器学习API

    调用网上现成的函数库或API而不是自己手动编写将会节约很多时间。

    如何成为一个超级程序员?

    合适的工具:自动工具

    使用自动化工具可更快的调试别人或自己写的代码。

    如何成为一个超级程序员?

    提升你的模型:产品化代码

    有时你可能没有一个团队来协助你处理你的模型,所以你需要知道如何部署你自己的模型。一旦你知道自己该如何部署模型,你就将会建立更完善模型,来使用户满意。当用户满意,企业主自然会满意。

    如何成为一个超级程序员?

    10×开发员额外需要的技能

  • 模式匹配——我之前曾见过相似的问题

  • 学会解释你的代码——向你自己及他人

  • 学会如何/何时停止以及重新开始(如何有更好的方法来解决问题,别害怕重新开始)

  • 相关论坛或网站建立自己的托管服务库

  • 如何成为一个超级程序员?

    调试错误你需要做好:

  • 异常处理

  • IDE调试工具(IDE是编程软件中的集成开发环境)

  • 网站上分享你调试的代码

  • 检查源代码

  • -END-

    译者 | 李瑞杰

    如何成为一个超级程序员?

    大连海事大学硕士研究生在读,对智能优化算法感兴趣。



    后台回复 “志愿者”

    了解如何加入我们

    如何成为一个超级程序员?