http://www.codeceo.com/article/habits-pay-off-for-programmer.htmlhtml
*******************************************************程序员
老实说,若是你google搜索“程序员的好习惯”这方面的内容,那么就会有不少大同小异的文章映入你的眼帘。编程
可是今天我想从一个略有不一样的角度来探讨这个主题。不是关于如何更擅长编程,而是如何使程序员更有市场竞争力。app
不要曲解我上面的意思。更擅长编程确定能让程序员赚更多的钱。但这方面的提升可能最终会受到边际报酬递减的影响。我今天要谈论的一些实践方法,在程序员要求加薪或寻求新工做的时候,搞很差会让收益产生巨大的爆炸。框架
我将从与人直觉相反的这一方面开始。我已经数不清我碰到过多少人认为编写一些难以想象的、复杂的代码能够为他们提供工做的保障。“若是除了我其余人都不知道薪资报告模块是如何工做的话,上面就确定不敢炒我鱿鱼!”单元测试
固然,这在理论上多是对的(尽管有太多的人在说这句话的时候每每高估了本身)。虽然企业老板可能不会炒掉你,但他们也不会支付你不少薪水。若是公司不能在薪资报告模块上失去你,那么天然而然也不会晋升你。它不会把你放到另外一个更受人瞩目的项目上。这样作只会让你牢固地待在当前位置,就像死水同样波澜不惊。学习
并且,不要自欺欺人地觉得这也能够测试市场反应。企业老是但愿程序员可以编写干净、可维护的代码。他们须要刷掉不合格的人以知足业务需求。若是你的简历主要特色是“精通寻租行为”,那么你就不会有不少选择,由于在一次又一次的晋升考验中,你的老板老是会略过你。测试
不要走那条错误的路。与之相反,你须要编写可以使其余人受益的代码,并让业务灵活起来,不管是在项目人员配置上仍是在对代码进行更改的时候。google
在编程世界中,所谓的“快乐路径”提出了一种高度乐观的情景。沿着快乐路径行进,没有出错的地方,也没有错误发生。spa
不少时候,程序员在编程中犯错误却反而发现了快乐路径。好比说,他们实现一个用户登陆页面,当用户键入正确的用户名和密码时,登陆成功。可是,若是她输入错误的话,app就会崩溃。但若是她有一个没填的话,那么app就会将其做为管理员登陆。哇哦。
不能说明不快乐路径的场景是程序员面临的一个常见陷阱。事实上,之因此会产生这样的思惟是由于咱们在软件开发的过程当中嵌入了本身的假设。因而就算是写代码的同一我的也没法来测试代码。
在编写和测试代码时,学会普遍地去推理不快乐路径的场景。若是做为开发者的你可以由于在推理不快乐路径方面一次成功而出名,那么你对细节的注重将为你赚到更多的酬劳。
也许你一直坚持反对软件行业自动化测试的安装验收。也许你甚至能编写比那些TDD和ATDD程序员更好的代码。在某种意义上,二者之间真的没有关系。
不要误会我。我是自动测试的疯狂支持者,由于它功用巨大而且能够改进代码库。我不但本身实践TDD,还会去教别人这样去作。
可是,你们对于职业生涯中关于功用是否应该排在钱包后面的讨论,各执一词。抵制者仍是支持者是否正确变得可有可无。企业愈来愈多地要求这种技能出如今求职者的简历上,但却没有一家公司的职位说明上会写“毫不能编写单元测试”。学会写自动化测试,而后见证工做前景的蓬勃发展。
为何你要在这里使用工厂模式?为何你选择那个特定的Javascript框架?若是你在回答这类问题时使用“由于这是正确方法”诸如此类的答案,那么就不会给你带来任何好处。
这个世界在很大程度上依赖于软件和软件开发者的传递性。咱们拥有常常使咱们处于权威地位的专业知识,特别是在与非技术人员或不太有经验的利益相关者打交道的时候。所以,你会发现,你常常采起的是那种你们尝试的作法,“我说怎么作就怎么作”。
抵制这样作的冲动。至少,要解释你的推理。使用类比和其余方式来帮助人们理解,即便他们缺少你拥有的技术经验。最重要的是,学习从经验出发去作案例,同时借鉴研究、实验数据或专家意见。职业生涯须要在技术的氛围中才能发展,因此那些学习将编程决策证实也是商业决策的人会发现他们占据了领导地位。
说到业务对你本身的钱包的重要性,那么你能描述你写的某一行给定代码是如何帮助业务吗?你刚添加的用于中止SQL注入的代码行——是帮助你避免砸本身的招牌吗?避免被诉讼吗?若是它实际上并不能提供任何帮助,那怎么办?
若是有人付钱让你写软件,那么你的输出结果就应该产出经济效益。学习并了解这个利益关系。发展向任何人解答这方面内容的能力。
对最新的客户端技术或在云中进行加速的能力感到兴奋的开发人员比比皆是。对这些东西感到兴奋,而且了解如何使用这些能力来赚钱的开发者就少见的多了。
若是你能针对产品特征好好培养对业务动机的理解,那么你就能作得更好。你会找到既能节省时间又一样能实现业务目标的替代方法。或者,当有一个产品特征证实不可能实现时,你能够提出能下降一部分红本的建议。
企业(特别是真正支付薪水的大boss)喜欢这种软件人的思惟。这将意味着你能够晋升,提供咨询服务以及担任领导角色。
正如我前面提到的,擅长编程表明了职业生涯的其中一个方面,而且是一个重要的方面。建议你们多考虑许多其余的方面,而且有目的地去发展和培养那些习惯。在你本身的时间里,你应该经过一切手段,爱上这个职业。固然还要确保你能够为他人和为本身赚到钱。
译文连接:http://www.codeceo.com/article/habits-pay-off-for-programmer.html
英文原文:Habits That Pay Off for Programmers
翻译做者:码农网 – 小峰