必赢电子游戏娱乐一个程序猿的营生素养

日期:2019-11-26编辑作者:明星八卦

题图来自Pixabay

早上刚到公司,收到群里杨同学发的一条微信:‘被RD怼了’,并发了一张被怼的聊天记录截图:

不想成为优秀程序员的码农,那和咸鱼有什么区别?李清照有句诗:生当作人杰,死亦为鬼雄。也许我们不必、也可能永远都不会是最优秀的程序员,但我们至少可以成为一名职业的程序员。我们也想成为一名专业人士

必赢电子游戏娱乐 1

Chapter 1. 专业主义

有趣被怼

作为一名“专业人士”,不仅仅是一种荣耀,它更多的意味着义务,正所谓欲戴王冠,必承其重。当项目中有某个“临时工”犯了错误,他大可不必承担责任,只需要摊摊手,说几句自我安慰的话;如果是“职业”人员,你必须为自己写的每一行代码负责,出了bug必须承担相应的责任。
“职业”的程序员也应当有自己的职业道德,Bob大叔把它概括为以下8点:

杨同学是我一朋友,有性格、有想法的东北爷们儿,在百度做PM。看到被怼后的回复,我真心诚意的为他点了个赞。先不论这件事的前因后果,也不去探究到底谁的责任。单从杨同学对这件事的处理方式上就看得出来,他的职业素养比那个怼他的RD高出去一大截。

  • 了解你的领域
  • 坚持学习
  • 练习
  • 合作
  • 辅导
  • 了解业务领域
  • 与雇主/客户保持一致
  • 谦逊

PM和RD貌似是天生的仇家,前两年还有过一篇很热的报道发生在深圳科技园『程序员砍杀产品经理』的新闻,虽然后来警方出来澄清是劳资纠纷导致产品被误伤,但是当时在网络上还是轰动一时,各种段子各种调侃满天飞,我自己身边无论是产品还是开发平时开玩笑也都旁征博引各种网络段子。这也从侧面反映了PM和RD之间普遍存在的矛盾,这批人又是战斗在互联网一线,嗅觉都很敏锐,所以只要有PM和RD的热点,就会被无限放大,肆意编排出各种调侃自嘲的段子。

Chapter 2. Say No

为什么PM和RD之间这么容易产生冲突呢?

职业的程序员敢于与现实抗争,敢于说“不”。尤达说过:“能就是能,不能就是不能。不要说‘试试看’”。如果某项任务你无法胜任,拒绝接受总比临近交付日期才告诉产品经理你无法完成好;同样的,如果没办法在某个时间内完成,就不要说“试试看”。试试看意味着你会尝试着去完成,而大多数人都是乐观主义者,这样说无异于一种承诺。碍于情面的人也许觉得不妥,需要指出的是:“say no”并不意味着拒绝合作,而且为了团队更好的发展。

从团队角度说PM和RD应该是一条战线上的兄弟,因为大家的目标是一致的。无论是PM还是RD大家都希望把产品和项目做好,这里我们可以说:"志同"。

Chapter 3. Say Yes

但是PM和RD因为在产品开发过程中所扮演的角色和工作内容不同,而且可能相互不了解工作内容,期间会有很多沟通的成本,沟通不是说话,而是改变行动。真正的沟通者关注沟通的效果。在沟通时,重要的不是你说了什么,而是对方理解了什么,所以对方的反馈非常重要。往往很多PM和RD的沟通会出现"驴头不对马嘴"大家相互听不懂的情况,甚至会导致小摩擦,这时我们说:"道不合"。

如果你觉得“say no”让你很难为情,那么,“say yes”(做出承诺)也很有挑战性。做出承诺包含了三个步骤:

『道不同不相为谋』,必定导致意见不一,所以PM和RD的『战争』每天都在上演。

  • 口头上说自己将会去做
  • 心里认真对待做出的承诺
  • 真正付诸行动

6年前我刚来腾讯的时候,主要做一些专题性质的需求,比如车展、奥运会之类的。项目周期短,修改频繁,记得在做北京电影电视节的一个专题的时候,一个功能反反复复来来回回修改了十几次,产品在最后一次让我再改下的时候,年少气盛的我没能压住内心的洪荒之力,冲着PM喊出了类似开头截图上那位RD说的话。后来我被投诉到了老大的老大那里。

“职业的”程序员对自己做出的承诺会做到言必行,行必果,甚至承担相应的责任,职场上可不允许随便说说而已。

老大语重心长的跟我聊了很多,其中有一句话记忆深刻:『你就是做这个工作的,如果你觉得不耐烦,那是你道行太浅』。

Chapter 4. 编码

随着自己慢慢的成熟,也慢慢理解了这句话,所谓『道行』其实就是个人的职业素养。作为一个程序员,技术能力、专业水准当然是职业素养的一部分,是硬实力,也是立身之本。沉着冷静、与人为善、外圆内方的作风却是职业素养的另外一个重要组成部分,可以理解成是软实力。你的职业素养越强,你和PM沟通对话的气场就越强,你就会抛弃自己的情绪,心平气和的和PM沟通,也就会越少产生冲突。

“职业的”程序员应该具备良好的编码能力。代码要整洁、符合规范,特别是在赶进度的情况下。Bob大叔在《Clean Code》(《代码的整洁之道》)中说到,一个外科医生不会因为时间紧急而答应病人的请求——不要洗手就做手术,因为这样并不是职业的做法(更别说犯罪)。同样地,职业的程序员不会因为时间紧急就写出混乱的代码或者上百行代码的函数,这样谈不上快,只会让进度更加慢。整洁的代码也需要从平时不断的训练养成,这方面的书有《The Art of Readable Code》、Bob大叔的《Clean Code》、《Code Complete》。

一直以来想把自己对工作的看法写出来,自己工作即将满九年,颇有一些不愉快的职场经历,亦挫亦回顾,亦败亦总结,渐渐明白大部分问题的解决之道不在于吐槽抱怨、怨天尤人或者愤然离场。职场注定充满不如意与不确定,提升自己的职业素养是唯一能做且有效的化解之法。与耐心读至此处的诸君共勉。

Chapter 5. 测试

Bob大叔的书有一个特点(虽然我只看过两本…),他会在不经意中特别地插入测试方面的内容。看他的书都会对TDD有一定的了解,此处略去n个字……
不管是否采用TDD的方式,“职业的”程序员都必须具有一定的测试能力。最为开发人员,写的最多就是单元测试,虽然单元测试不能保证程序一定不出错,但是写好的单测是对自己代码负责的一种体现。如果代码没有测试过就签入代码库,无异于放进去一个定时炸弹。《Code Complete》里面介绍了一些办法,可以在写更少量的单测的情况下覆盖到更多的代码,例如结构化的基础测试。

Chapter 6. 预估

软件开发过程中最常出现的问题就是延期交付,因为进度延迟往往导致开发人员需要连续的加班,甚至通宵达旦的赶进度,而这个日期很多时候都是由于项目组过于乐观的预估。

  • 时间预估——三元分析法
    三元分析法是1957年美国海军的潜艇极地航行计划中的一部分内容,是一种对预估的计算方法,这种技术简单而有效,把预估变成概率分布。你可以更具三个数字预估某项任务:

    • O:乐观预估。这是非常乐观的数字,也就是我们经常说的最快时间,快到程序没有异常,开发过程中不会出岔。实际上,为了保持乐观预估有意义,这个数字对应的概率应当小于1%(正常分布下具体数字是3个西格玛或者0.13%)。
    • N:标称预估。这个数字概率最大。如果画一张柱状图,标称预估就是最高的那个。
    • P:悲观预估。这是最糟糕的数字,因为它考虑到各种意外,比如飓风啊,战争啊。为了保证这个数字有意义,它的概率也应当小于1%。

    有了以上三个预估,我们可以这样描述概率分布:
    μ = (O+4N+P)/ 6
    μ 是任务的期望完成时间。
    σ = (P - O)/ 6
    σ 是任务的概率分布的标准差,用来衡量不确定性。数字大就表示非常不确定。
    所以一项任务的预估时间就是 μ/σ 。

Chapter 7. 压力

书中有一段描述:

你看见自己躺在一张手术台上,以为外科医生给你做开胸手术。医生竭力挽救你的性命,但是时间有限……
你期望医生的表现如何?你希望他冷静、井井有条吗?你希望他清楚准确地吩咐助手吗?你希望他严格遵循当初训练时的做法坚守手术规程吗?
还是想让他汗流浃背、咒骂之声不断?想让他乱扔手术器械、把东西摔的哐当响吗?想让他满腹怨气责怪管理人员设定的不现实的手术时间,一直嚷嚷时间不够用吗?你期望他表现得像一名专业人士,还是像我们常见的某些开发人员的那种做派?

关于压力,最好的做法就是避免压力:

  • 承诺:不要轻易做出承诺,承诺的时候也要正确地预估,避免过于乐观。
  • 保持整洁:快速前进确保最后期限的方法就是保持整洁。专业人士不会为了快点儿乱来。“快速但脏乱”是自相矛盾的说法。
  • 危机中的纪律:Bob大叔说过,观察自己在危机时刻中的反应就可以了解自己的信念。如果在危机中依然遵循你守持的纪律,就说明你确实相信那些纪律。选择那些你在危机中依然会遵循的纪律原则,并且在所有工作中都遵守这些纪律。遵守这些纪律原则是避免陷入危机的最好途径。

如果压力已经产生,不可避免的,“职业”的做法是不要惊慌,而是从容不迫、努力寻找解决方案,同时寻求帮助。

Chapter 8. 协作

大多数软件都是靠团队开发出来的,单打独斗与游离于团队之外都是不专业的表现。即使是Linus Torvalds这种单兵作战能力超强的,也需要一堆优秀程序员来帮忙维护Linux。想象一下deadline到来之前你拼了命赶进度,恨不得多找几个人来帮忙,这时候你是坚定不移的相信团队开发这个守则的。那为什么平时却不肯相信?
协作主要有两点:

  • 与开发人员的协作:这要求我们按照规范写好代码、注释和文档,便于其他程序员更快理解。这也要求程序员要有良好的表达能力和写作能力。Joel Spolsky在《软件随想录》中给计算机系学生的建议中,第一条就是:毕业前练好写作。
  • 与雇主的协作:代码应该是为了业务服务,有的开发人员只知道为了开发方便,随意的砍需求,或者想出一些不切实际的想法。所以Joel的建议(3)是:毕业前学好微观经济学。

本文由必赢437登录发布于明星八卦,转载请注明出处:必赢电子游戏娱乐一个程序猿的营生素养

关键词:

CentOS6.9 下编译安装MySQL5.7.19

作为博主那样的Linux生手,CentOS下最赏识的正是yum安装。但有时因为特别情状(比如被墙等卡塔 尔(阿拉伯语:قطر...

详细>>

【必赢优惠大厅官网】二零一五到2017东方之珠跨

前言 离开上贰遍出游已经3个月了,每7个月发三回疯要出去旅游风华正茂趟的小编一拍脑袋就订了东方之珠的往返机...

详细>>

【必赢优惠大厅官网】二零一五到2017东方之珠跨

前言 离开上贰遍出游已经3个月了,每7个月发三回疯要出去旅游风华正茂趟的小编一拍脑袋就订了东方之珠的往返机...

详细>>

【必赢437登录】linux系统下创建oracle表空间和顾客

2、删除有时表空间 --查看用户要具备drop tablespace的权限,如果没有,先用更高级的用户(如sys)给予授权select a2.username...

详细>>