如何成为一个超级程序员?
文 | 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-
译者 | 李瑞杰
大连海事大学硕士研究生在读,对智能优化算法感兴趣。
后台回复 “志愿者”
了解如何加入我们
- 一个秘密:眼睛长前面的,吃眼睛长两边的
- 蜜菓饮品加盟怎么样?前景如何_挣钱吗?
- 600万的房子还是留不住老婆的心,离婚时财产如何分割?
- 您还有个福利没领,这里这里
- 胡说有理 | 学习如何学习,成为高效率学习者!(一次演讲)
- 一个双十二5折,成功解锁成都这座幸福城市的密码...
- 外星生物在哪里?NASA宣布发现另一个“太阳系”
- 音乐桌面 2.0:音乐工作者如何提升生产力?
- 肺癌都有哪些症状?如何早点发现?
- 斑马线究竟如何礼让? 德宏司机很困扰