既然你选择了程序员这一条路,就说明了你接受这工作给你带来的酸甜苦辣,无论如何,勿忘初心。
1.技术只是解决问题的选择,而不是解决问题的根本
我们可以因为掌握了最新的 JavaScript 框架 ahem、Angular 的 IoC 容器技术或者某些编程语言甚至操作系统而欢欣雀跃,但是这些东西并不是作为程序员的我们用来解决问题的根本——它们只是用于帮助我们解决问题的简单工具。
我们必须非常谨慎,不要对某项正好喜欢或者正好很火的特定技术走火入魔。否则,我们将进入这样的思维怪圈:把掌握的那项技术比做是锤子,在思考问题时,会自然的把所有的问题都想象成是锤子可以解决的钉子。
2.聪明是代码清晰的敌人
当编写代码时,我们应当努力做到代码清晰易理解。
虽然这句话并不总是正确的,但在一般情况下,聪明确实是代码清晰的敌人。
事实证明,当我们写一段自认为非常了不起的代码的时候,这些代码在别人眼里可能会是一头雾水。
所以当你在编写某段聪明高效的代码的时候牢牢记住这个原则是很有必要的。
3.写尽可能少的代码
这句话看起来有一些矛盾。程序员的工作不就是编写代码么?
嗯,是的但也不是。
我们的工作需要我们编写代码,但是我们在尝试解决问题的时候应当做到尽量编写更少的代码。
这并不意味着我们需要尽量把代码写得更紧凑或者把所有的变量都使用单个字母。它的意思是我们应当尝试用更精简的算法来实现所需要实现的功能。
通常情况下,我们在代码中所添加的各种很酷的特性是非常诱人的,这还能让我们的代码看起来更“健壮”和“灵活”,能够处理各种不同类型的情况。但 是,在更多的时候,我们尝试更多可能有用的特性或者预防可能在未来存在的问题的做法是错误的。这些额外的代码可能不具备任何的价值,但是却可能造成更多的 伤害。因为代码越多,出现未知错误的机会就越多,代码的维护也更加的麻烦。
优秀的软件工程师写尽可能少的代码。
伟大的软件工程师删除尽可能多的代码。
4.注释是代码表述的最后选择
鲍勃·马丁曾经说过:“当你在为一段代码写注释的时候,你应当对自己糟糕的表达能力而反思。”
这并不意味着我们以后就不要写注释了。但在大多数情况下这种情况是可以避免的,你可以选择用更好的命名方式来取代它。
只有在使用命名都无法表述清楚某个方法或者变量的目的时,注释才是最后的选择。事实上,表达无法轻易在代码表达的东西才是注释的真正作用。
举个例子,注释可以告诉你在代码中的那些奇怪的操作命令并不是一个错误,而是故意的,那是因为在底层操作系统存在着某个 bug。
虽然在一般情况下,许多注释还是非常有用的,但是却存在着误导的风险。
在其它代码更新后,与某些更新前代码相关的注释常常会得不到同样的更新,这就导致了某些注释会变得非常的危险,它们很可能会把你引导到一个错误的方向。
你检查过与代码密切相关的每一段注释么?是否确保代码都是在按照注释所说的那样做?如果你都照着这样做了,那么注释的意义又何在呢?如果你没有这样做,你又怎么知道注释说的都是真的?
所以,注释的作用并不象所宣扬的那么好,这种东西切勿滥用。
5.在编写代码之前你应当清楚你的代码要做什么
这看起来是理所当然的,但实际情况却不是。
现实工作中你有多少次是在没有经过充分了解到你的代码要干些什么就开始着手编程的?反正对于我来说,是不计其数了,所以我把这条记录下来用来随时提醒我。
测试驱动开发(TDD)的实践在这里可以帮助你,因为你需要在编写代码之前了解这些代码将要用于什么地方,虽然这仍然不能阻止你创建错误的东西,但是它仍然非常重要。所以当你完完全全了解需要构建的需求和功能时,再动手编程。
6.提交完成代码之前先自行测试
不要在完成编程工作后,就把代码扔给 QA,然后就坐等消息了。这样会浪费每一个参加处理不必要 Bug 和问题的人的时间。你应当在报告编程工作完成之前,花费几分钟时间运行测试场景进行自我检测。当然,在你把代码提交给 QA 之前不一定会发现每一个 Bug,但至少你可以杜绝一些我们每个人都可能犯下的愚蠢低级错误。
很多的软件开发人员认为测试代码只是 QA 人员的工作。这是不对的。保持质量是我们每个人的责任。
7.每天都要学一些新东西
有句名言“刀不磨要生锈,人不学要落后。”这句话是很有道理的,因为无论是否获取到新的知识,你每天都会遗忘掉一些以前的东西。
每天学些一些新东西并不会花费掉你很多的时间。试着每天用 15 分钟时间去读书,然后你就会发现每天你都会有一点点的进步,在未来的某个时候,你会发现这种进步是巨大的。因此,为了在今后获得丰厚回报你必须从现在开始 就进行投资。另外,今天的技术发展日新月异,如果你不改善自己的技巧,学习新的东西,你很快就会被甩开。
8.写代码应该成为一种乐趣
这是非常正确的。或许,你进入这个行业仅仅是因为它的薪水可观。选择一份报酬丰厚的工作这并没有错,但是还有更好的选择,比如医生或者律师。事实上很多人选择做软件开发还有一个原因,那就是他们喜欢写代码。在你被工作压力所累的时候,不要忘了你选择这份职业的初衷。
编写代码可以带来很大的乐趣。多年的时间里,很多人可能都已经遗忘了这一点,那么从现在起,重新唤回以前的那份热情吧,从身边的项目开始,把你的观念和意识转换到以前你开始学习编程的那个时刻。
9.你不需要无所不知
在你学到了很多知识的时候,你仍然有很多东西不知道。
意识到这点很重要,因为它可以驱使你去了解更多更多的东西。
不知道问题的所有答案没有关系,不了解某个东西说出来并寻求帮助也无关紧要。在很多情况下,你可以选择现学现用——相信我,我就是这么走过来的。
我的观点是,不要企图去学习所有的知识,因为这是一个不可能完成的任务。你需要关注和掌握的是能够帮助你快速学习的技巧。
10.最佳的实践视环境而定
测试驱动开发最好的方法是先编写测试代码?
我们应该保持结对编程的习惯?
如果不使用 IoC 容器是否会低人一等?
所有这些问题的答案是“看情况。”这取决于所处的实际环境。
人们试图把最佳的实践通过喉咙等方式传输给你,他们会告诉你,他们平时都是这样应用的。所以,你也应该这样做——这其实并不正确。
在写代码的时候,我也借鉴过不少别人的成功经验。但是,这些借鉴都是有条件的。
知识是死的,人是活的。最好的实践需要视环境而定。
11.努力做到化繁为简
所有的的问题都可以进行分解。而最优雅的解决方案通常都非常简单。但是,要变得简单并不容易,这需要许多的工作。
比如,这篇文章的目的是从复杂的软件开发工作和日常生活中提取经验,通过归纳,以较简洁的方式呈现给大家,而这并不是一件容易的事情。
在解决问题时,可以先找到一个较为复杂的笨方法。在此基础上进行努力改进和提炼,使它在正确的基础上变得简单。这需要花费很多时间和努力,而人类不正是因为这个过程才慢慢变得聪明么?
文章来源:http://www.devstore.cn/essay/essayInfo/438.html
相关推荐
作为一名程序员,职业生涯的发展和规划至关重要。以下是对程序员的几点忠告,旨在帮助大家在就业和前景上做出明智的选择。 首先,关注个人社会保障。户口档案、养老保险、医疗保险和住房公积金是生活中不可或缺的...
- **应用场景**:在长时间加班或面临紧张的项目截止日期时,程序员可能会用这句话来自嘲并寻求片刻的放松。 ##### 3. **“同床共枕”** - **含义**:形象比喻程序员之间合作非常紧密的情况,尤其是指在解决某个...
”这句话暗示了这份资料是面向初学者和程序员的通用指南,它可能包含了编程基础知识、最佳实践以及行业洞见。 【标签】:“程序员必读”标签表明这些内容是程序员在学习和工作中应该掌握的关键知识点,可能是关于...
1、别更新了,学不动了。2、我不会修电脑,谢谢。3、听说今晚不用加班。4、是你的网络有问题。5、清一下缓存再试试6、扫码提需求,谢谢。7、换一台设备试试看。8、保证今晚十点上线。9、键盘给你,你来写。...
”这句话反映了程序员群体中的一种普遍现象:不同的编程语言会有各自的拥趸者。PHP作为一种广泛应用于Web开发的语言,在其支持者眼中具有很多优点: - **易于上手**:PHP语法简洁,入门门槛较低。 - **广泛的社区...
给年轻程序员的几句话。我收到了不少新手的来信,他们都希望能成长为一名真正的程序员。我绝对不是第一个谈论这个话题的人,所以,我不知道应该做哪方面的补充。不管怎样,下面的是一些一直记在我心头的、有必要读...
例如,“我有一个bug需要修复”,这句话只有程序员才能理解其中的苦乐参半。再如,“我是代码的诗人”,则是对程序员工作性质的一种诗意表达。这类设计通常能引起程序员内部的共鸣,使得它们不仅是日常穿着,也成为...
”这句话生动地表达了程序员面对浩瀚的技术海洋时的心态——即使已经取得了一定成就,但仍感觉自己还有很多不足之处,需要不断学习进步。 七、技术分享:随着技术能力的提高和个人影响力的扩大,程序员开始尝试将...
”这句话暗示了这份资料是由个人或团队根据黑马程序员的教学内容整理而出的,可能包含了个人的理解和总结。它并非官方教材,但作为辅助学习的资源,可能提供了一种不同的解题思路或者更贴近实践的应用方式,对于自主...
2. **职业目标或简介**:一两句话概述你的专业技能和求职意向,体现你对所申请职位的理解。 3. **技能清单**:列出你的编程语言、框架、工具和技术熟练程度。按重要性和熟练度排序,确保与应聘岗位的要求相符。 4....
这句话揭示了程序员成长过程中面临的挑战和困难。 在这个行业中,程序员的成长经历各不相同,他们可能来自不同的背景,有着不同的起点。但是,无论起点如何,他们都希望能够通过不断的学习和努力,最终达到一定的...
“我可以重载甚至覆盖这个世界里的任何一种方法”这句话体现了程序员对编程语言中的重载(overloading)和覆盖(overriding)机制的理解和运用能力。重载是在同一个类中,允许有多个同名的方法,但参数列表必须不同。...
”这句话强调的是专注的重要性。 - **听音乐:** 虽然适当听音乐有助于放松心情,但如果选择过于吸引人的歌曲,则可能让人难以集中精力。 #### 二、工作时间打无聊电话 - **无效沟通:** 工作时间拨打与工作任务...
说句实在话,我在从事编程工作很长一段时间内都没有关注这个问题,基本上是边编边学,边学边编,从学习中积累,从编程中积累。 程序员的特点 程序员有很多特点,例如: 1.因为比尔·盖茨是编程序的,所以似乎每个...
【标题】"Axure夜话之程序员眼中的原型设计视频教程之书到用时方恨少.rar" 提供了一个关于原型设计的视频教程,特别强调了程序员视角下的设计思考。这个教程可能涵盖了如何使用Axure工具,以及如何将编程思维融入到...
程序人生 : 30岁,我的程序员梦想 本文是作者红桥(雪燃)的程序人生经验总结,讲述了作者从一个业余的程序员到实现程序员梦想的...这句话的本意是一个水平很高的人本身并不一定很高明,关键是他善于利用别人的高明!
可以包括一句关于自己职业目标的描述,表明你对未来工作的期待。 三、核心技能 列出你的核心技能,包括掌握的编程语言(如Java、Python、C++等)、框架(如React、Angular、Vue.js等)、数据库(如MySQL、MongoDB、...
这句话也暗示了抢票软件的复杂性,它可能涉及到网络请求、数据解析、定时任务等多个技术环节。 【标签】"火车票 抢票 程序员专用"是这个压缩包的关键信息,从中我们可以推断出以下几点: 1. **火车票**:这是抢票...
”这句话揭示了这款软件在朋友圈中受到的热烈欢迎和高度期待。软件的开发者可能是受到身边人的鼓励,决定将这款具有创新性和实用性的作品公之于众。它不仅满足了个人的需求,也可能激发了其他程序员的创作灵感,推动...