做软件开发的第一年,还需要用到哪些技能(还需要篇)

前言

你好,我是 Haiyung,这是“做软件开发的第一年”系列,预计两集,这是第二集。

做软件开发的第一年,你会接手一些不是很复杂的问题(bug)、新功能开发(feature)。你能够使用某门计算机编程语言完成这些任务。

不过,解决任务的过程往往并不一帆风顺,往往,一波未平,一波又起,让你焦头烂额。

这些我都经历过或者正在经历。软件研发行业会试图一步步逼近每一个人的学习极限,你、我都应该逐渐适应。

在本文中,我将会谈到工作中用到的“软技能”,并尽可能把该技能用到的场景以及我解决问题的过程分享出来,希望对你能有所帮助。

如何做事?

少说多听多做

原因有二。

一:每个公司的文化是不一样的,因此,刚进入某个公司的时候,你说话、做事的方式很可能需要做适当的调整。

二:当你以外来者的身份(新人)进入一个新的环境,工作中面对的人和事儿都是新的,这很有可能导致心理上短暂的诸多不适。在这种情况下,我不认为“自来熟”是一个好策略,反而你拘谨一些,少说话多做事,会更容易给别人一个踏实、稳重的形象。

事情当然要一件一件的做

因为是初入职场,我当时并不具备为自己制定工作计划的能力。比方说,有一次项目主管分配给我 3 个任务,当时我的内心对此是崩溃的。

原因是我不知道把这 3 个任务在我脑袋里如何排列。结果就是,手底下做着一个任务,脑袋里想着另一个任务的解决方案,时不时的还要惦记着另外的另外一个任务。我发现我的脑袋根本不够使,也无法集中注意力到当下任务上。这让我非常非常沮丧。

偶然的情况下,我的项目主管发现了这个问题,她跟我说:

事情啊,当然要一件一件的做。

这个小妙招对我帮助很大。

胡子眉毛一把抓,是一件费力极不讨好的事情。按照既定的先后顺序,逐个击破,不仅大大节省了个人的精力分散时间,对整体任务的把控也更有力。

每个职场人不可能手上永远只有一件事。为多个任务制定计划,高效调度自己的精力,我坚信这个本事一定会赢得同事对你专业度的认可。

每天记录工作内容,详略得当

姜文在电影《邪不压正》中调侃蒋介石为“写日记的人”,意思是在小事上执着的人成不了大事。有意思的是,古代有“一屋不扫何以扫天下”的说法,意思是小事儿做不好怎么做大事。这个吧,没有对错,具体人具体分析吧。

我是个普通人,干不来兴国安邦这样的大事,目前这个小小的软件开发工程师,我也只能算是刚刚 hold 住,在天资方面,可谓是普通得不能再普通的人了。

我的大脑处理问题的能力较弱,无法同时处理多件事情,所以我要先把问题记录,再挨个儿来。不记录,就一定会忘事儿,忘事儿就得挨批,我不想挨批,就只能老老实实的把待处理的事情一条一条的记录下来。职场新人的我不敢有半点马虎。

我观察我周边的同事,也许是同为普通人的缘故,几乎每个人都有自己的一个工作簿,里面是工作记录。

我很开心。

有了这些小帮手,我对自己的工作安排逐渐游刃有余,在这个岗位上也逐渐自信起来,感觉从散兵游勇慢慢成长为正规军了。

不要不置可否,不要给出没有依据的答案

没有依据的答案只能是猜想。

如果你有了猜想,下一步应该做的是积极验证你的猜想,看看你的猜想是对还是错。然后把你的猜想的结果说出来。

在工作中,假如你总是“我以为”“我以为”“我以为”,而不是“我确定”“我确定”“我确定”,那么我只能以为你的工作态度有问题,做事情马马虎虎、不周全。我甚至会考虑你是不是还适合这个岗位。

每当遇到一个任务,你的第一件事是把事情的原委搞得清楚、明白,你甚至需要张嘴把整个事情复述一遍。我们是开发者,是与机器打交道的一群人,来不了一丁点的马虎,有时候,你少一个括号都不行。比如在 Go 语言中,以下两段代码结果完全相反:

	a, b, c := 1, 2, 3
	if a == 1 || b == 100 && c == 1000 {
		fmt.Println("true")
	} else {
		fmt.Print("false")
	}
	a, b, c := 1, 2, 3
	if (a == 1 || b == 100) && c == 1000 {
		fmt.Println("true")
	} else {
		fmt.Print("false")
	}

Attention: why 在前面, how 在后面。解决一个问题,先明确 why,再明确 how。

基于这个流程,你就能经得住别人对这个问题的盘问,也只有这样,你才能显示出你做事情的专业性。如果别人一问你就哑巴了,那不只你尴尬,还会影响对方对你专业度的评价。

其实这根本不是智商的问题,很多人都会拿“经验少、脑子转不过来”这样的理由搪塞自己,但不是的,这就是自己在解决问题的时候,大脑犯懒了,不想把问题思考的更全面,不愿一板一眼的、仔仔细细的斟酌、分析,在关键的地方总想着用什么样的方式把这一步骤跳过去,导致了诊断问题的思路不连贯,这也注定了任务的失败。

想办法提高工作效率

试用期的作用是对应聘者的二次考察,是面试环节考察通过后的又一重要环节。其实这一环节并不难,它的考察点就只有“能不能保质保量完成任务”,嗯,对,仅仅是对你与该岗位的匹配程度再做考察。

这当然只是对你要从事这个岗位最基本的、最底线的要求。

但你并不应该只是满足于此。就拿我来说吧,我是个初级工程师,因此我的工作难度是非常低的,而即便是难度较低的情况下,我往往仍需要额外加很多班才能按时完成任务。

谁想永远当菜鸟呢?

想办法,想办法,想办法,让你的脑袋敏捷些,再敏捷些,刻意练习,再刻意练习,祝你成功。

一丝不苟,认真对待

工作中有一次,我针对一个问题去向产品团队中的某个人指教,询问一下某个需求到底要做成什么样子。

有结论后,我回到工位。过了五分钟,我收到一封邮件,被告知某需求的说明文档更新了。我点开查看,刚刚跟那位同事沟通的结果,已被他工工整整的记录在文档中。

我顿时对他肃然起敬。

这只是关于“敬业”这个话题的一个侧面。

工作中,有可能出现你解决不了的问题,怎么办?等吗?不,傻傻等待不是一个敬业的做法,你在那儿等着,就永远不会有人知道你的工作遇到问题了,等到最后,大家伙都干完了,得嘞!就差你一个了,尴尬不尴尬?丢人不丢人?难道要等到这时候说吗?

你应该早早的豁出脸面去问,或跟你的直属上级去商讨,尽量跟团队中其他的人多沟通、多商量,尽早的把问题在团队中抛出来,让大家帮着你一起解决。这应该是一个解决问题的正确态度。

认真对待你工作中遇到的每一个困难,我相信困难就是给养。

面对任务,不可以说“No”

与我同期进入这家公司的,有一位同事,不是很靠谱。跟我们聊天的时候,曾大言不惭的说“还有一个月我就转正了,转正后我就天不怕地不怕了”。当然,他没能等到转正,不到一个月,他就被开除了。

这个人做事,根本不像是工作了七八年的老同志。给他一份任务,他说做不了,再给他一份,他说有难度,回头吃饭的时候还不忘跟我们这些刚毕业的“小朋友”吐槽、得瑟、传递人生经验。

作为一个职员,公司给发工资的职员,我们唯一能回馈给公司的就是帮助公司处理了多少任务。然后,公司再按照任务的重要性、难度系数定职位、工资的高低。

如果给到你任务,你却挑三拣四,这个“No”,那个“No”,专挑好干的做,怎么想怎么觉得这个人在团队中就像寄生虫。

不管啥任务,先得敢接下来,气势上、态度上不能先输了啊。如果这个问题真真有难度,你把难点尽可能列出来,列的尽可能详实一些,然后跟你的上级商量,把你对该任务的认识细致的分析一遍,再委婉的把你的难处说一说,我相信,这样会更好一点。

定期向直属上级反馈工作进度

历史书上总有讲,说多少年前人类驯化了小麦。但尤瓦尔·赫拉利唱反调,说其实是小麦驯化了人类。

人类驯化了小麦,对呀,当然是人类把小麦驯化了的,从前小麦生长非常不规律,这儿一棵,那儿一棵,是人类大规模帮着小麦繁衍的呀,没错,是人类驯化了小麦。

小麦驯化了人类,也对呀,从前人类是部落社会,骑马射箭,英勇善战的,自从可以大规模生产小麦了,人类就走上了农业社会,开始了“安土重迁”的生活,是啊,是小麦驯化了人类啊。

我们不在此争论对错,合二为一,小麦和人类是互相驯化的过程

人跟人其实也一样。

啥是信赖?无非就是“你办事我放心”嘛。

一个人对另一个人的好感,归根究底,不就是产生“信赖”了么。那么一个人如何赢得另一个人的信赖呢?

无非就是“驯化”的过程。你需要不断给他反馈,让他知道你做到哪一步了,还差多少,这样就产生了“一切尽在掌握之中”的感觉。这种感觉相当舒适、妙不可言,每个人都会享受这欢愉,你给另一个人带来了这份欢愉,从一定意义上来说,你就赢得了另一个人的“信赖”。

反过来,你不沟通,不反馈,就像喂动物食物一样,你经常性的断它粮,对方将会是什么样的感觉?他会不安,会有不详的预感,会总惦记着你,会觉得你早晚是颗定时炸弹。于是,你得不到信赖。

人跟人,其实就是通过“沟通”互相驯化的过程。“沟通”就代表着“反馈”,你反馈的越勤,越容易让别人上瘾。游戏行业就是个典型的例子,你每打一个怪物,就立即给你加上多少金币,这个反馈是即时的,让你越玩越舒服、痛快,这是即时满足的极端例子。在工作中,如果能把它运用的恰到好处,于人于己,不都是一件皆大欢喜的事情吗?

如何处世?

善于提问

2018 年 8 月 16 日,我第一份工作的第一天。我接到了一个入职任务:

维基百科里有说,《提问的智慧》是一篇被广泛转载而广为人知甚至奉为经典长篇文章,它说明了作者所认为一位发问者事前应该要做好什么,而什么又是不该做的,作者认为这样能让问题更容易令人理解,而且发问者自己也能学习到较多东西。

还有一本书,叫做《提问的艺术》,虽然我还没有看过,但就书名中把提问当作一门艺术来看待这件事来说,我认为一点都不过分。

工作中,我有很多次求助大佬的机会。在这些次提问中,大佬耐着性子问了我许多问题:

如果同为菜鸟互相浪费些时间也就算了,但跟段位较高的人交流时,你不是把问题完整的、有逻辑的、直达问题本质的抛出来,而是尝试性的让对方“猜”,这并不是对人表示尊重的方式,浪费他人时间就是冒犯!

打磨你自己的提问之道吧。

动脑筋说话

表达是一个技术活儿,好的表达往往是在合适的时间合适的地点合适的人合适的表达方式说了合适的话

就像“加盐少许”一样,如何给“少许”定量?同样的,这个“合适”到底该怎么拿捏,说实话,挺难,需要好好动动脑筋。

说话的情境可以列举无穷,我只举一个例子说说什么叫“动脑筋说话”。

不管是在工作还是学习、生活中,我们经常需要做解释,以期待别人的理解和支持。比如:

有一天,我在工作的 QQ 群里接到了一条技术总监发送的消息,挺值得借鉴:

HY<xxxxx.xxx@gmail.com> 2019.01.21-15:51:37
通知: 今天需要合并一批代码到master
目的是: 部分API的路径改动 和 输入输出的规范
代码改动涉及到: 前端和后端代码
影响的功能: 可能会影响所有功能
如果有流程不同,请及时联系我.
谢谢 

这条“通知”的意思是说:我(技术总监),往代码库中添加了很多代码,这有可能会导致很多不可预测的问题,希望大家遇到问题不要怕,我的锅我来背。

这段话看似平淡无奇,但细细分析,其实是可以看得出写作者的为文和为人的。

思路清晰表达明确无歧义读起来也非常和气,这三点是这条通知的“魂”。

他的思路是:

  1. 先说结论(在这里就是“合并代码”)
  2. 再说 Why- -目的(在这里就是“为了规范 API”)
  3. 后说 How- -怎么做(在这里就是“前端、后端代码做了变动”)
  4. 再明确影响范围(在这里就是“可能会影响所有功能”)
  5. 指定责任人(在这里就是他自己)
  6. 最后礼貌的说声“谢谢”

沟通是一件非常重要的事,沟通得好,事半功倍,沟通得差,不仅得罪了人,还费力不讨好,甚至搬起石头砸自己脚,这都有可能。

说话是要动脑筋的,你说话的“魂”在哪里?

不犯懒不犯倔不犯混

我很懒。有时候还偷懒。

请问有人偷懒是光明正大的偷懒的吗?

如果光明正大的偷懒,我认为值得尊敬,比如很多黑客之所以写出某优秀的软件,原因往往是“太懒了”,懒得去做重复性的工作;为什么软件质量写的这么高?太懒了,不希望修 bug 修的焦头烂额。

绝大多数人的偷懒是耍小聪明式的偷懒。

偷懒没有不好,只是,耍小聪明是不好的。比如,某某月,安排你手动编译并安装某软件,你偷懒,直接去官网下了完整的安装包一键安装了事。这其实就是没有按照任务说明来做,耍了些小聪明,以为没有人知道,但假若被人查出来,你的人品,岂不是碎了一地?

人倔了,就会犯浑。

比如如何应对领导的批评?

平常的话,我就不应对,人家是上司,有什么可争论的呢?

但有一次,我是犯倔犯浑了:我竟然顶嘴了。

在网络上我看到一段关于犯浑、与上司顶嘴的高见:

    跟上司顶嘴肯定是不行。
    
    跟任何人顶嘴都不行。
    
    什么叫顶,当然就是下对上,如果下位者和上位者沟通,采用“顶嘴”的方式,肯定不能。
    
    因为这达不到目的。
    
    你顶的越厉害,态度越糟糕,离你自身的目的就越远。
    
    你和上层沟通的目的是什么?
    
    发泄情绪,施展威力?不可能,因为上层有充足的权力来整理,你发泄情绪效果只有一个,走人。
    
    那是为了沟通顺畅,说服对方,听你的话?
    
    那用顶嘴是绝对达不到的。
    
    顶嘴只是情绪的宣泄和层次力量的互相碾压。
    
    张嘴讲道理,才叫沟通和交际。
    
    一是场合,不要公开在多人面前,对自己的上司发表不同看法,尽量私密,
    
    二是情绪和语气,要慢慢冷静,不要被委屈或者生气冲昏头脑,而是应该慢慢说,缓和的说,避免积累,
    
    三是措辞和句子,要注意用词,直白的表达情绪,而不是情绪化的表达,这是两码事。
    
    可以说,领导你这么说真的让我感到很伤心,很委屈,
    
    尽量不要说,你这话也太膈应人了,辛辛苦苦给你干就是要挨你骂的?
    
    四是逻辑连贯和论证说理。
    
    用数据,事实,举例来说理。

        -- 来自 “恶魔奶爸” 微博

这段话我看了好多遍,讲得真好!

坦白从宽,抗拒从严

问什么就如实回答就可以了。

是就是,不是就不是;确定就是确定,不确定就是不确定;

知之为知之,不知为不知,是知也。

不沾便宜

有一次,我们组团准备自己煮火锅,我带一个汤锅,但一个不够,一位女同事站出来说“我家里有,那我就把我家的拿过来”。

巧了,我们俩的锅同款,一模一样,只是我使用的次数多一些,也就旧一些。

饭毕,吃的特别舒畅,锅碗瓢盆收拾的利利索索,拿到家后,发现拿错了。

我掏出手机,往群里发了句俏皮话:

xx姐,请还我的旧锅。

第二天,有同事就说不就一锅吗,型号一样,你使着不就完了嘛,你如果不说,她可能都不知道这事。

我不这么想,锅是小事儿,形象是大事。

虽然又费劲把锅拿回来,再把自己的锅拿回去,费了点事儿,但我心里落得个坦荡。

你不重要,你的形象很重要。

谦逊谦逊谦逊

我们团队中有好几个做软件研发这一行五年以上的同事,我跟他们说话、问问题,人家都谦虚的不得了,态度非常和气,也非常乐于花时间将他自己所知道的分享给我。

我是团队中年龄比较小的,技术也比不得他们,我说话、做事,自然要更加恭敬、更加谦逊了。

我觉得这挺好,整个团队的氛围不是比高低、比工龄、比这比那的,而是尊重人、尊重知识、尊重创造,整个团队中的人是积极的,阳光的,向上的,这样带来的结果就是凝聚力高、流动性降低。

从个人的角度来讲,谦逊,是智慧。

你不重要,你的形象很重要。

你的形象会反过来塑造你成为怎样的人。

总结

说了很多。

不止软件研发这一行不容易,也许各行各业都如此,因为,把一件事做好本身就挺不容易。

我总结了一句话,叫做:

千回百转,忍了,就峰回路转

工作中,不如意之事,十有八九,有各种各样的沟沟坎坎,这不就是“千回百转”吗?来来回回折腾,反反复复试错,不容易。

但要忍啊,所谓“动心忍性,增益其所不能”嘛!能扛过去压力,扛过去各种不舒适,就是好样的,就能“峰回路转”,就能收获。

最后再说说自己的老本行。

总的来说,软件研发行业是个风气较为淳朴的新行业(我对比的是销售这个传统行业),你不需要陪客户吃饭喝酒,也不需要使用阿谀奉承、尔虞我诈这样的伎俩,你的任务非常明确:把代码保质保量的交付出去

在这样一个行业里,会有大多数工作岗位中都没有的优势:允许你、鼓励你继续读书、学习、进步

这是一个非常训练逻辑思维的行业,在复杂的社会关系里,这个行业是难得的一方净土,它提供了一个接近于真空的工作环境,让你不受打扰的理解科学做事的方式、方法。

我从事 Go 语言开发一年多了,我的感觉是:像又上了一次大学

我很感激我现在的团队,我的同事们善良淳朴,待人非常诚恳,教给了我丰富的学科知识,我的项目经理干练、敬业、活泼,非常重视对人的训练和培养,我的技术总监聪敏、温良、有大爱而又学富五车、技术卓越。他们帮助我太多太多了,在职业生涯初期我能进入这样优秀的技术团队是我的荣幸,我真爱他们。

这就是〈做软件开发第一年〉系列了,第二集也是最后一集。林林总总说了这么多,希望对你有所帮助。


本文完

“做软件开发的第一年”系列·完