如何成为优秀的软件工程师
- 原文地址
这篇文章还是挺符合笔者思想的。笔者涉世不深,见识短浅,不过讲真,这么多年来遇到的,笔者觉得真正能做到以下几点的,聊聊无几。这个性质往往不是由你的经验和你已知的决定,而是由你对技术本身的态度决定。笔者现在不玩游戏不看剧,每天看看文章写写代码,本身就是一件非常开心的事情。获得知识与创造的快感,只可意会不可言传。
文首是原作者参加一次会议所感,实际上绝大部分踏入程序猿这个行业的人都会考虑,怎么才能成为一名优秀的程序员,无论是为了物质生活还是精神追求,而本文列举的几点也是原作者所想。
需要注意,这篇文章是
Opinionated ,请批判的去看。笔者也插入了很多自己的观点,不过主旨上还是和原文保持一致,只是做些讲解。
Know What You’re Not Doing: 知你不知
有个非常著名的适用于基本上所有领域的论断,当然肯定也合适与软件开发啦:
牛逼的工程师往往都会选择合适的事情去做,譬如知道你能够完成哪些任务,知道在当前任务下应该选择怎么样的解决方案,知道应该钻研或者关注哪些技术等等。优先做处在关键节点上的事情,相对应地,也需要知道你现在还不懂哪些东西。
不要让你已有的东西成为你的阻碍
所有人都会说学习一门语言没啥的,但是人们在选择解决方案或者承接任务的时候不可避免地会受到已会的语言的影响,就像笔者会尽可能避免使用
一直记得苏格拉底的一句话,就是认识你自己,映射到程序猿中,就是能知道你可以做的和不可以做的,而尽可能地少去迷惑自己到底能不能做。无论是对于技术选型还是项目规划都适用这个观点,随着学习的深入和了解的东西的增加,自然会越发觉得知识海洋的浩瀚无垠。庄子有云,吾生也有涯,而知也无涯。以有涯随无涯,殆已!笔者之前也一直会问,当我学习的速度远远赶不上新知识出现的速度,莫大的悲哀啊。这好像一个
NP 问题,而笔者自我解决的办法就是建立一个合理的健壮的知识体系,这样我虽然记不住或者没时间深入研究很多东西,但是至少可以把它们放到合适的地方,可以借鉴笔者的。笔者自己目前最主要的信息来源主要是5 个信息聚合的站点:
-
Medium
: 你可以在Medium 上订阅一些Tags 或者Publication 或者Following Users ,笔者自己感觉这个的整个质量和粮草比例最高。不过缺陷是要上这个得自带梯子。 -
Reddit
: 可以订阅譬如web_dev 等等感兴趣的subreddit ,经常会看到不错的文章与分享。 -
InfoQ
: 挺不错的,经常出现精品,但是也有不少文章感觉太过于阳春白雪。 -
开发者头条
: 笔者一般只会看推荐的头条精选等,还是有很多不错的。
仅笔者自己感觉,如果想成为一名了解前沿的开发者,还是需要多关注
Medium 与CSDN 每个月的程序员杂志与InfoQ 的架构师质量也都非常高。
Communication Skills: 沟通技巧
You don’
你要能够让别人知道你已经理解了他们的问题并且能够合适的表达自己。尽可能地遵循公司统一的
Do not Ask for Work: 不要等着别人分你分配工作
笔者也觉得,搬砖和设计之间的一个很大区别就是会不会自己去划分乃至于发现潜在的任务
我第一次进行远程工作的时候就发现主动性非常重要,工作并不会主动找上门来,就像上帝重不垂青无准备之人。有时候当你发现了问题的时候,并不意味着你的领导也看到了并且会主动让你去修复。这个道理在
Nothing at Facebook is someone else’
s problem.
把这个认知结合到远程工作中,更不会像传统的办公室里还有人天天盯着你,你主动参与更加重要,这也是你的责任之一:

Take Your Time to Think: 留点时间思考

Contribute to Open Source Software: 贡献开源社区
笔者一直认为,与传统的简历相比,博客与开源项目更能展示你
本次讨论有个主题是I’ve been advocating myself,关于贡献开源社区的好处。你不能仅仅因为贡献开源项目会让你的

在反馈给他人和
Final Notes
Just do it.