做一个优秀的程序员到底难在哪里?

关注者
6,135
被浏览
1,500,146
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

初入此门,觉得语法和算法很难,搞不懂C++的STL,搞不懂Java的Full GC,搞不懂函数式,搞不懂动态规划和各种树、图……

入行二三年,正常情况下,语法和算法都不再成为门槛,开始感觉最难是架构:RX还是Vue? Weex还是RN?Django还是Flask?

然而入行五六年,我感觉最难的,还是在“人”

对于上级,你要说服他们你在做的东西是有意义的,或者使你做的东西至少“看起来”有意义——因为这关系到你的项目能拿到多少资源。

对于下级,你需要解释清楚你要做的东西,要达到的目标,要接受他们水平有限做出来的东西不如你,要接受他们加班却写更多bug,你的责任是带团队一起成长,你不能有抱怨。

然而这都不算最难。

最难的是什么呢?扁鹊昔日的答魏王的典故,可以很好的描述这一问题

魏文王问扁鹊:“你们家兄弟 3 人,都精于医术,到底哪一位最好呢 ? ”
扁鹊答:“我的大哥医术最好,二哥次之,我最差。”
文王再问:“那么为什么你最出名呢 ? ”
扁鹊答道:“我大哥治病,是治病于病情发作之前的时候,由于一般人不知道他能事先铲除病因,反而觉得他的治疗没什么明显的效果,所以他的名气无法传出去,只有我们家的人才知道。我二哥治病,是治病于病情初起的时候,看上去以为他只能治轻微的小病,所以他的名气只能在我们乡里流传。而我扁鹊治病,是治病于病情已经严重的时候。一般人看到我在经脉上穿针放血,在皮肤上敷药,用麻药让人昏迷,做的都是些不可思议的大手术,自然以为我的医术高明,因此名气响遍全国,远远大于我的两位哥哥。”

曲突徙薪亡恩泽,焦头烂额为上客。

由于你是一个优秀的(或仅仅是经验丰富的)程序员,你可以看出项目代码里存在着的隐患。你选择防患于未然,修复这些问题,但由于问题并没有真的发生,你所做的一切,在不那么优秀的程序员同事的眼中(以及老大眼中),看起来并没有什么产出。

你为了不出问题作出的努力,所收到的回报,

往往不如那些在朋友圈里晒自己通宵加班处理问题的同事。

如果不被认可,你还能坚持自己的初心么?会继续做那些你认为是正确的事,并企图说服、证明自己做的有意义?

还是故意放过那些细微的、难以察觉且不属于自己的漏洞,静候漏洞爆发时,作出跟旁人一样打了鸡血一样的奋战样子,假装好不容易才解决,并拍照发朋友圈到“同事”分组?


----------结尾的分割线---------

1. 每个人的答案,只能基于自身的眼界。我没有看过国外的环境是如何的,我自身也仅仅在向着优秀努力而已。以上不过一家之言。

2. 我说的可能都是错的