过来人写给软件工程师的 30 条建议

就在几天前,我的人生迈入了30岁。在过去的十年中,我做了很多事情,也学习了很多东西。在本文中,我将回顾人生的历程,并将软件工程师的工作和生活公之于众。

下面,让我们进入正题。

1,努力工作

没有人会平白无故地给你升职或加薪。然而,光是努力工作还不够,你还需要提高效率。

努力地工作却没有提供任何价值的人一无是处,不要成为这种把坐在椅子上的小时数当作生产力的人。

顺便说一句,你也需要避免与这种庸庸碌碌的人一起工作,通常他们所在的公司也超级有毒,会让你苦不堪言。值得庆幸的是,这样的人已经在我们这个领域绝迹了。

2,不要执着于编程语言

过于执着某一种语言毫无意义。大多数编程语言都大同小异,而且有各自的优势。这也就是为什么我们有很多种语言,因为没有一种语言是完美的。

但是,请确保你至少了解每种范式内的一种语言。例如,函数式编程、面向对象编程等。

3,每年学习一种新的技术语言

你应该尝试每年学习一种新语言(理想情况下应该选择流行的语言,并强迫自己走出舒适区),只有这样才能保持大脑敏锐并跟上市场趋势。

另外,如果你发现某种语言的价值,则可以将其作为解决特定问题的工具,推荐给公司。

4,对自己的职业生涯负责

你的童年很心酸,你的前任经理(或现任经理)是一个混蛋,你经历了3段婚姻,离婚5次,你付出了2年时间才掌握的Web框架如今却不流行了。你的生活一团糟,看不到一丝曙光。

即便如此,你是成年人,应该靠自己打赢这场战斗。过去的种种艰辛不是不求上进的借口。全力以赴提升自我,才能有更好的明天。

5,不用担心无法控制的事情

你只需要考虑自己力所能及的事情。如前所述,你付出了2年时间才掌握的Web框架如今却不流行了。那么该怎么办?再学一种啊。这一次可以选择一个发展前景更好的框架。你可能需要在职业生涯中经历很多次这样的情形。

也许你(挚爱)的技术主管离开了公司。虽然非常伤心(过去我也有过这样的经历),但现在你需要打起精神,给新主管留下好印象。

如果你做不到,那么也可以离开公司。但是,请千万不要因为无法控制的事情而烦恼。你需要调整你的状态,因为“表演必须继续”(英语:The Show Must Go On,英国摇滚乐队皇后乐队的歌曲)。

6,不要与人结仇

如果某人在某方面比你强,不要恨他们,你应该向他们学习。通常,我们会将比自己优秀的人视作威胁。而我会将他们视作提升自我的动力源泉,你也应该这样做。

我记得过去有几位同事非常擅长应对压力,他们甚至可以在千钧一发之际力挽狂澜。我从他们身上学到了很多东西,我从来不嫉妒他们,因为我知道我也可以培养这样的能力。

如果周围无人能够超过你(在技术上),那么请当心,也许是时候为自己和事业寻找新的机遇了。相信我,除非你身居高职(如CTO),否则你不想成为公司里最强的员工。俗话说得好,宁为凤尾不为鸡头。

仇恨会毁掉你的生活,打击你的生活积极性。仇恨并不能给你带来任何好处。

7,敢于肩负重任,就不用担心薪水的问题

很遗憾的是,很多人眼里只有钱,却没能磨练自己的技术,建立强大的形象。

你认为下面哪种人未来的薪资会更高:是薪水低于平均水平的CTO,还是薪水高于平均水平的初级工程师?所以,要明智地选择自己工作。

8,辜负技术力的人,终将被技术力辜负

很多人以为计算机科学学位可以让自己身价倍增,各大公司会求着你去他们公司,而且就凭着一张纸就可以轻松获得一切。

不要误会我的意思,我相信一个好的学位可以证明你学习了大量有用的知识,但是很多人都止步于此了。

在这方面上,我很欣赏自学成才的程序员。可能他们缺乏对计算机科学理论知识的了解,但是他们知道迎难而上,因为他们成功的点点滴滴都是靠自己的拼搏换来的。

另外,如果你对于流行趋势的一些基本知识缺乏了解,那么就代表你的做法有问题。你无需成为专家即可掌握周围的世界。

9,廉价的硬件不仅质量堪忧,而且对你的健康有害

你应该花钱买一些高质量的键盘、鼠标和显示器。你的事业需要大量依赖于你的手和眼睛。

降噪耳机值得拥有,但如果你没有前面提到的高质量硬件,那么就不要因为盲目跟风。

除非你的工作环境非常嘈杂,否则就没有必要专门买降噪耳机。

10,出去走一走,也许问题就解决了

好吧,我有点夸张,但是我想强调发散模式的必要性,Barbara Oakley在她的课程中讲述了学习的方法,我强烈推荐。

如今,人们不太重视发散的思维方式。至少我知道很少有公司会同意你在上班期间睡觉(或进行其他发散性的活动),但事实上我们都需要发散思维。实际上人们嘴边常挂着的“以后再说”就隐含了发散模式的重要性。

11,将一部分收入投入到专业教育中

如果你的公司愿意支部费用,那就更好了。

YouTube是一种绝佳的学习资源,但是如果你真的想认真学习一门技术,而且收入允许的话,还是应该订阅高质量的培训服务,例如O'Reilly / Pluralsight。

找到适合自己的学习方法,然后学习更多知识。

12,避开没有培训政策的公司

可能我在这一点上持有强硬且带有偏见的看法。如果这家公司相对较新或资金不足,那也可以例外。

由于科技领域需要不断学习新知识,跟上最新的潮流,所以我认为不应该考虑没有适当培训/教育政策的公司。

对我而言,最低限度的教育政策是每位员工都有专门的预算,至少每年可以支付下面的部分费用:

• 参加会议

• 购买书籍

• 购买O'Reilly learning等高质量的培训服务

• 进行认证

当然,由于种种原因,大多数人不会在一年中把上述所有的事情都做一遍。也许是因为他们已进入稳定期,或者是因为他们有家庭,他们不能投入大部分的业余时间,但如果员工有这个意向,公司就应该全力支持。

我对大公司的要求更高,我希望大公司能够举行一些讲座,特别是在领域关键的问题上。例如,如果公司想采用Scrum,那么最好能邀请一名敏捷教练来帮忙做准备。

13,使用金钱可以买到的最好的工具

例如IDE。与硬件同理,不应该在IDE上贪便宜。正如《程序员修炼之道》所说,你需要选择一个编辑器,然后学习如何用好它。高质量的工具可以节省你宝贵的时间。

不要忘记,时间就是金钱。现在你支付了高昂的价格,以后就可以节省时间。

14,忽视动力

人们需要很大动力才能实现重要的人生目标。

动力很重要,但也是一种情感。和所有的情感一样,动力也会忽有忽无。

你需要找到一种更好的方式来指引自己前进的方向,至少在一些重要的事情上明白自己需要做些什么。

当一切顺利时,人们很容易知足常乐,但是当你失去动力或进入倦怠期时,又能做些什么呢?

15,保持活力与热情

虽然我不建议你时刻像打了鸡血一样积极发展事业和生活,但我认为每个人都应该有自己的事业远景规划。

你应该清楚自己的发展方向,只有这样才能知道做出的每个决定是否可以让你的事业更快、更安全地发展。正如2000年英国著名的划船手奖牌获得者所说,这个决定是否可以加速船的前进?

16,了解哪种类型的公司更适合你,并专心做好这类的工作

创业公司、中型公司和大公司,都有各自的福利和消极的方面。

如果你更喜欢在大公司工作,那么不一定能够处理好创业公司的日常工作。

你需要进行一番研究,确保你了解你有哪些选择,而你的每个选择能获得什么以及失去什么。不幸的是,这个问题没有统一的答案。

17,遇上一位好经理是健康的工作及生活的基础

你可能对这一点并不陌生,遇上一位通情达理、能与之有效沟通的经理,而且还能从事自己喜欢的工作,那将是人生一大幸事。

很多人辞职都不是因为公司,而是因为他们的经理。你需要确保自己能和经理愉快地相处。理想情况下,在进入公司之前就要确认这一点。

18,要想给别人一碗水,自己就得有一桶水

这是我最初开始写博客的原因。

如果我得知了一些有趣的事情,那么我可以通过博客分享。

我认为这种方法的效果很好。至少对我来说是如此,虽然我从未问过我的读者:)

19,只有坚持学习才不会被时代淘汰

与软件行业相关的高薪领域的变化相对也很多。该领域的发展如此之快,所以一旦你停止学习,就会被时代淘汰。

这并不意味着你应该将所有的工作时间都用来阅读和编写代码,但也不要走向另一个极端:安于现状,无视周围的变化。

20,学习是一个长期坚持的过程,不要急于求成

至于学习的心态,与平日荒废到了周日就一整天都坐在电脑前相比,每天花30-40分钟学习的效果更好。

上大学时你就对此深有感触,不是吗?如果你平时就按时做作业,那么考试前的压力就会小很多,知识需要一点一点地积累,无法一蹴而成。

21,先让程序跑起来,再考虑正确性,最后再考虑速度

Kent Beck的这句话是我最喜欢的名言之一(还有一句是Unix哲学)。我对软件开发业界缺乏务实的思想感到震惊。

人们过于强调空格与制表符、下划线分割与首字母大写以及接口的命名方式。

我没有说这些问题不重要,只不过我们首先需要保证程序能够运行,不是吗?

我最喜欢观察别人,每每看他们代码都没有通过编译,就加了大量的注释,也挺无语的。朋友,请务实。

22,花在社交媒体上的时间应该物有所值

只关注那些值得你花费时间的名人。我关注了Twitter上的很多名人,包括许多dev.to上的作家。

即使我并不经常使用推特,但我也喜欢读到不同的观点,因为他们能给我很好的视角。

23,勇敢发问

无论你在公司中处于哪个职位,即便你是CTO,也不会有人认为你理应掌握所有信息。相反,研究表明,人们更喜欢你向他们寻求帮助。

而且,计算机科学领域如此之大,没有人能无所不知。就像其他被堆积如山的案牍所累的行业一样。

24,原理和头脑风暴不能决定成败

能够决定成败的只有最终的结果。你已经离开了学校,没有人在乎你浪漫的编程方式,这些理论不适用于行业问题或假设。我并不是说它们并不重要,但是企业界更加重视结果,而不是抽象的讨论。

这是一个可悲的事实。如果你不喜欢,那么也许企业生活不适合你。最好还是找一处以研发为导向的科研或大学吧。

25,尝试软件行业之外的业余爱好

最近,我有点后悔没有遵循这条建议。

我并没有成功地在全职工作、健身训练和硕士学位之间建立平衡,如今正在想法修复。

这条建议可以帮助你避免过度疲劳,而且也能从不同的角度考虑事情。

例如,我见过许多文章探讨发散思想与乐器之间的联系。

26,不要在技术上刚愎自用

这就没必要解释了吧。由于某种原因,软件技术中有很多选择。不要鼓吹某个编程思想或技术,或将其视为唯一的解决方案。这种做法只会让你招人烦,或显得自己很无知。

27,切勿在办公室中触碰不能容忍的行为

性别歧视、种族主义、欺凌行为、反感自己的事业或者老板休假就拖欠工资(我就有过这样的经历)。有些公司的人认真、成熟且专业,他们懂得尊重别人。你需要找到这样的公司。让那些不懂得尊重别人的人们在他们狭小的圈子里寻找优越感和独特性吧。

28,单元测试很无聊,但是...

遇到产品快速增长或大规模重构即将来临等情况时,单元测试可以救你一命。

就像生活中的所有事物一样,只有辛勤播种,才有收获。

29,有效的时间/任务管理非常重要

有效的时间/任务管理与最新和最热门的技术同等重要,甚至比它们更重要。

为什么?因为如果你不能有效利用自己的技术按时提供价值,那么对别人来说你一文不值。如果你觉得自己这方面的能力有待培养,那么可以从《Getting Things Done》(简称GTD)和《15 secrets of time management》入手。

30,重视软技能

除非你是不需要公开竞标的自由职业者,或者将销售和客户处理工作委托他人,否则你会非常需要软技能。

我们每天都需要与人合作,我们需要知道如何与不同的人有效地沟通,并用对方听得懂的语言与之交谈。

如果所有人的软技能都不强,那可能也不会有问题,但是这就有点反乌托邦了,我还是希望你能务实一点,努力培养这方面的能力。

至于如何培养软技能,我推荐你可以从以下三本入手:

• 《Soft skills》

• 《How to win Friends & Influence People》

• 《The charisma myth》

总结

感谢您的阅读,希望你喜欢本文提到的技巧。如果你有其他可以分享的点,请在下方留言。

零基础学习Java编程可以加入我的十年Java学习园地

你可能感兴趣的:(java程序员编程程序员发展)