每天写代码4个小时,还有其余的工作任务

很多开发者在编程多年以后,总是在实际工作的惨痛教训中学会了一些本该在大学时期就掌握的软件开发真理。我太难了,早干嘛去了……

1不要太在意“代码行数”

你可能听到过很多有关“代码行数”的疯狂理论,但请不要把它们当真。基于代码行数来做技术决策是一件很荒谬的事情。代码行数能够为我们提供的信息是很有限的。实际上,在大多数情况下,代码行数能够为我们提供的信息为零。基于代码行数来做技术决策无异于基于一本书的页数来判断书的质量。

有人认为,项目的代码越少就越容易读懂,但这个观点只说对了一部分。我认为,具有可读性的代码应该具备以下这些特点:

  • 一致性;
  • 自描述;
  • 良好的文档;
  • 使用了稳定的特性;
  • 不会太复杂;
  • 性能不会太差。

如果为了减少代码行数而破坏了这些原则,那才是问题。事实上,如果你尽量去遵循这些原则,代码行数自然会处在一个很完美的位置,根本不需要特意去计算究竟有多少行代码。

2不一定要把编程语言分出“好坏”

人们经常会这样说:

C 语言比某某语言好,因为它的性能更好。

Python 比某某语言好,因为它更简洁。

Haskell 比某某语言好,因为它是异类。

使用一句话来评判和比较一门编程语言是对语言本身的侮辱。它们是编程语言,可不是什么口袋精灵。

编程语言之间确实存在差别,而且很少存在“没有用”的编程语言(除了那些过时或者已经死掉的语言)。每一门编程语言都在某些方面做出了权衡,它们就像工具箱里的工具。起子可以做锤子做不到的事情,但你能说起子比锤子更好吗?

在说出我的编程语言评判标准之前,需要先澄清一个问题。编程语言的选择很少会对一个项目起到实质性的作用。如果你写的是前端代码,选择不会太多,但通常来说,编程语言的选择只是决定项目成败的一个不那么重要的因素。

以下是我认为在选择编程语言时需要考虑的一些因素(已经排好序了):

  • 是不是有很多相关教程;
  • 开发速度;
  • 出现 bug 的几率;
  • 库生态系统的质量和广度;
  • 性能;
  • 好不好招人。

不过,有一些场景是你无法掌控的。例如,如果你是一名数据科学家,那可能就得用 Python、R 语言或 Scala。如果只是一个个人项目,那完全可以选择使用你喜欢的编程语言。我在选择编程语言时只有一条原则:如果 StackOverflow 上与这门语言相关的问题不多,我就不会使用这门语言。并不是说遇到问题自己解决不了,而是因为花太多时间在这些问题上面不值得。

3阅读别人的代码是个麻烦事

阅读别人的代码其实并非易事。Robert Martin 在《整洁代码之道》里提到过这个问题:

事实上,人们花在阅读代码和花在写代码上的时间比率超过了 10 比 1。阅读旧代码是写新代码的一个组成部分……所以,容易读懂的代码会让写新代码的工作变得更容易些。

有很长一段时间,我被阅读别人的代码这件事所困扰。后来发现,其实有很多人都跟我一样,每天都要面对这个问题。阅读别人的代码就像是在阅读一本用外文写的书,即使代码是用你熟悉的语言写的,代码的风格和架构仍然会不一样。这个问题不太好解决,不过我发现下面这些做法可能会对你有所帮助。

评审别人的代码有助于提升阅读代码的能力。在过去两年中,我评审了很多 GitHub PR。每评审完一个 PR,我就越能够适应阅读别人的代码。GitHub PR 很适合用来提升代码阅读能力,因为:

  • 随时都可以评审,只要找到你想加入的开源项目;
  • 在划定的范围内进行练习(一个功能、一个 bug);
  • 需要专注细节,迫使你仔细查看每一行代码。

第二种方式有点特别,这也是我一直在践行的,可以帮我节省很多时间。在了解了某个项目的代码风格之后,就用这种风格来写代码,这样可以提升阅读这种风格代码的能力。因为你已经体验过类似的风格,所以再去阅读这样的代码就不会感到陌生。

4不要试图写出“完美”的代码

在加入团队工作之前,我做了 4 年的“独行侠”。那个时候,我以为每一个程序员都会写出完美的代码,而写出“完美”的代码是需要付出时间和努力的。

我曾经为此感到焦虑,但在加入了团队之后,我才发现,没有人会写“完美”的代码。但为什么进入到生产环境的代码总是那么“完美”呢?答案是:代码评审。

我所在的团队里有很多聪明人,他们都是很有能力且自信的程序员。如果有人胆敢提交未经评审的代码,他们一定不会善罢甘休。即使你觉得自己是下一个比尔盖茨,也无法避免犯错。我说的不单单是逻辑错误,还包括拼写错误、丢字符之类的。

争取与那些愿意跟你抠细节和给你意见的人合作。忠言逆耳,但这也是提升自己的一条路径。在接受代码评审时要虚心,不要把它跟个人联系在一起。别人评审的是你的代码,而不是针对你。

在评审别人的代码时,我会用谷歌搜索解决方案,看看代码的解决方案与流行的解决方案有什么不一样的地方。通常,抱着“初学者”的心态会发现更多别人发现不了的问题。

5程序员并非无时不刻都在写代码

这是个很普遍的问题,但从来没有人能够给出一个明确的答案。

很少有人每天写代码的时间会超过 4 个小时。

如果有人不是这样的,那说明他们的公司应该对他们更好一些。编程是一项很耗费脑力的活动,一个人一周 5 天、每天 8 个小时都在写代码是完全不合理的,除非是为了赶进度,但这种情况不应该是常态。如果一家公司因为管理上的问题或者不想招更多的人而让你加班,你就没必要容忍!

其次,即使你每天花 8 个小时写代码,对你的公司来说也不一定有好处。你的老板可能会认为这样子很好,但其实这是一种短视,因为从长远来看,这样做会影响到生产力和员工的健康。

需要说清楚的是,我并不是建议你每天只工作 4 个小时。另外的 4 个小时你还需要:

  • 做调研;
  • 与同事讨论;
  • 帮助别人解决问题;
  • 计划未来的工作;
  • 参加代码评审;
  • 开会。

我个人强烈建议每天都要定时休息,做一些运动,哪怕是简单的运动。我发现,运动有助于缓建精神压力,帮你更好地集中精神。

原文地址:https://www.cnblogs.com/EarlyBridVic/p/12080026.html

时间: 2024-10-03 23:31:35

每天写代码4个小时,还有其余的工作任务的相关文章

关爱码农成长:关于写代码二三事

工作这么多年以来,一直从事软件相关领域,即使担任主管职务,也一直对技术充满热情.写代码写了这么多年,多少有些体会.我把自己对写代码这份工作的心得写下来,希望能给从事相关领域或有志于写代码的人参考. 一.你适合当程序员吗? 程序员,也叫软件工程师.程序设计师,我觉得「程序员」三个字简洁有力,是一种身份的象征. 如果你正从事这份工作,恭喜你!这是个热门行业,在可预见的将来,也不会消失.不过也别高兴太早,这一行的技术汰旧换新非常快,必须不断努力学习才行. 一点天赋 打开一个空白文档,必须创造出代码.与

MySQL 创始人:写代码比打游戏爽,程序员应多泡开源社区

根据StackOverflow的最新调查,MySQL仍然是全世界最流行的数据库,受访的开发者中有44.3%的人在使用,超过了第二位的SQL Server 10多个百分点.可是你知道MySQL是怎么诞生的吗?openocean 的一篇有关MySQL开发者Michael “Monty” Widenius的传记为我们揭秘. 大学计算机专业的数量总是会随着技术公司的兴衰而起伏,而现在,计算机科学正处在全盛时期.这意味着,不管怎样,计算机科学专业的毕业生绝大部分可能都会去敲2年的代码,再转到产品管理,然后

不仅仅是写代码,而是完成作品

近来有人问起,现在似乎真得变成了码农,日出而作,日落而息.整天不停的写代码,开发业务需求,周而复始,日子长了,感到厌倦.有时回想,应该在过去的某个时期我也曾陷入过这样的循环中,后来又是如何脱离的呢? 代码与缘由 这要回归到从写代码这件事上开始.写代码是因为有需求,需求来自业务的发展需要,需求经过产品经理再传递到程序员. 刚开始,作为一个新手程序员,不停的为各种需求写代码.开发完一个,接着又是下一个,生生不息,循环不止.一开始也许会感觉有些累,但并没有产生太多的厌倦.这是一个从不熟悉到熟悉再到熟练

为什么程序员喜欢深更半夜写代码

版权声明:本文为北京尚学堂原创文章,未经允许不得转载. 程序员自己也常说,工作效率最高的时候总是在深夜,不是凌晨还在写代码就是凌晨爬起来写代码. 深夜之所以工作效率高是因为不易分心,额!其实仔细想想晚上和白天并无多大区别,但程序员们也总是有自己的理由,大致分为一下三点. 1.生产型时间表 记得曾看过一篇关于时间表的文章,他们把时间基本分为两类:管理型和生产型时间表,所谓的管理型时间表是把一天的时间分成每小时来安排,就算是有别的事打扰到你也只是浪费了这一点时间. 而生产型时间表就不一样了,这段时间

OSChina 周二乱弹 —— 日写代码三千行,不辞长做IT人

星期二了,各位OSCer 大家壕!昨天脚趾头被砸了一下,去医院,大夫说:「你去做个脑电图吧.」本人极为不解:「我是脚趾头砸了,又不是头被砸,做啥脑电图啊?」 大夫看了我一眼,语重心长地对我说:「你的脑子要是反应灵敏,怎么会被砸呢? 我仔细想了想,还是不做脑电图了,脑子要是治好了以后还怎么写乱弹. @xmind:如果你想写程序,那就去当程序猿喽,唉,一如程序深如如海 @软件达人:我就是一苦逼的程序猿 @霡霂:上辈子做了什么坏事,让我这辈子当程序员!! 不干程序猿,也可以去卖烧烤! @任雲:日写代码

CTO集体怒吼:我到底要不要继续写代码(下篇)

注:承接上文,CTO们就从哪些方面确定产品和技术布局大方向,目前面临的困惑,以及作为CTO的技术修炼等方面进行探讨.上篇:CTO集体怒吼:我到底要不要继续写代码(上篇) 5.在人人创业的时代里,竞争压力非常大.有很多产品,甚至会有多个竞争对手,那么产品技术和布局会非常重要.CTO从哪些方面确定大的方向? 肖文峰(TalkingData):人员成本水涨船高,尽早储备人才. 多深多远还是回到CTO对于公司未来的愿景理解的多深.根据愿景储备人才.尤其是创业初期,大家知道人才是很贵的,比如研发人员,尤其

如何做到每天写代码?

你是否曾为业余项目没有进展而惆怅过?想要有完整两天时间(没有任何的放松机会)来编程也不现实,时间的零乱往往让人不知所措.还有一个重要的问题就是你上个星期写的代码,隔一个星期后再接着写,你还能记得多少? 为此,可汗学院计算机科学学院院长暨jQuery创始人John Resig撰文分享了自己的心得和体会.现在,让我们看看John Resig是如何做到每天都写代码的,首先他给自己定下了几条规则: 1. 每天必须写代码.可以写文档.博客或者其他的文章,但是必须要加进自己写的代码. 2. 代码必须是有用的

怎么样做到每天都能写代码?

你是否曾为项目没有进展而惆怅过?想要有完整两天时间(没有任何的放松机会)来编程也不现实,时间的零乱往往让人不知所措.还有一个重要的问题就是你上个星期写的代码,隔一个星期后再接着写,你还能记得多少? 为此,可汗学院计算机科学学院院长暨 jQuery 创始人 John Resig 撰文分享了自己的心得和体会.现在,让我们看看他是如何做到每天都写代码的,首先他给自己定下了几条规则: 1. 每天必须写代码.可以写文档.博客或者其他的文章,但是必须要加进自己写的代码. 2. 代码必须是有用的.不要格式化.

.netER的未来路,关于基础是否重要和应该自己手写代码吗?

http://www.cnblogs.com/onepiece_wang/p/5558341.html#!comments 引用"基础知识的学习,一开始可能是背书,但是在后续若干年的工作过程中,在写代码时有没有想过为什么代码要写成这样子." 谁没有去想过呢?我深究过,但后来放弃了,原因很简单,因为我深究后发现,1+1等于2 苹果就是叫苹果.我去思考1+1为什么等于2 苹果为什么叫苹果.研究透后才发现只是多此一举,很浪费时间也没有实质性的作用.因为他就叫那个苹果名字,1+1就是等于2,我