怎样做一个很出色的程序员?

2021-03-03 18:03:54 浏览数 (6097)

一、拥有旺盛的好奇心,并能转化为求知欲

好奇心是什么东西?

其实就是人的一种想要探索未知的短暂行为。

有很多程序员或者在工作中偶然碰到了一些新概念,或者自己业余主动探索了一些新概念。然后,觉得这些东西很好玩儿,就兴起了探索的欲望,这玩意儿就是好奇心。

但小王也见过不少程序员,尤其是年纪大点的,那见了新概念和新技术,就跟给媳妇交公粮一样,避之唯恐不及。这对吗?这不对。

所以,年轻程序员的好奇心,它就跟围棋建立了先手优势一样,可以不讲武德,有了直线超车老同志的资本。

可是,只有好奇心还不够。好奇心这玩意儿就跟普通人看明星八卦一样,是个人有兴趣了,都能追追,没啥门槛。

有门槛的是什么?求知欲。

这可厉害了,就像普通人追明星八卦觉得不够,于是变身成为狗仔队,直接干成了职业的。狗仔队要追明星隐私很辛苦的,上山爬树,装电线杆子,啥都得干。

求知欲就类似这种,你得把好奇心转化成一种稳定的认知欲望,需要坚持不懈,需要付出辛苦,这就是门槛。

小王原来就有个同事,不知道从哪里知道了 go 语言,那时候,go 语言刚出来不久,连个成熟的编辑器也没有。

小王这同事,人家就有那种好奇心,先去搜了搜概念,然后又研究了下 go 语言的技术文档。顿时,他觉得 go 很有前途,好奇心就变成了求知欲,一路跟着 go 成长。工作中,也是想办法用 go 做点小项目,小工具。

得,短短三四年,人家就成了 go 语言领域的大牛,出书,讲座不断。这就是好奇心转化成求知欲的好处。

有了好奇心,你可能就有了一个进入新的技术蓝海的机会,而有了求知欲,就意味着你可能有了在蓝海建立自己的话语权的资格。

所以,小王的那些后来发展的非常好的前同事们,大多数人都拥有这种鲜明的共性,这个共性,让你的职业生涯很可能将会拥有别人没有的先发优势。

二、 勇于尝试新技术并能快速掌握

一个人有了好奇心求知欲就完了吗?那不能,这可不够。

除了好奇去探索外,你还得有把探索所得,转化成自己经验的能力。这种能力的外在表现就是勇于尝试新技术,而且还得快速掌握。

再举个小王另一个同事的例子,这个同事在工作中遇到了一个问题,就是存储海量数据的问题。那时候,还是 2008 年,这人刚毕业不到一年。他知道了 HDFS 这技术,就想着能不能把这东西用到项目上。

可是,他只是个小年轻,人微言轻,怎么办?他也有本事,人家利用业余时间,没日没夜花了一周时间,自己搞了环境,又写了 Demo,还写程序模拟了大量数据去测试。

然后把这些拿给领导看,得,有理有据,最牛的是这哥们儿还弄了个像样的图表。

OK,彻底 KO 了领导。

这个小伙子后来逐渐成了这个项目中的最懂大数据的人。再后来,小伙子跳槽去了百度搞凤巢,如今人家又去了 Google,再 Transfer 到美国,活得有声有色的。

所以,有了好奇心,有了求知欲,你还得把学到的东西落地,形成自己的独到经验,还得让别人知道你掌握了它,这样这个先发优势就进一步落了地,你的职业生涯可能开始有了自己的小地位了。

三、 用批判性思维批判下

你有了求知欲,又有了落地的能力,但是要把握好怎么落地?何时落地?

一般来说,在我们工作中,如果想应用新技术,就得找到现有方案的不足。有了不足,把不足作为切入点,和领导谈谈,在项目的某些小地方可以先尝试你想搞的新技术。一般来说也没啥问题。

除了找现有项目的茬,你还得明白新技术有哪些坑。

新技术一般为了快速推广,往往夸大其词,搞得世界没了它就要灭亡一样。

这时候,怎么找到新技术的问题和不足,是至关重要的。找到不足,你既可以把控落地到项目中的风险,也有了去当这项新技术 Commiter 的机会,再不济去提个 Issue 刷刷存在感也是好的。这对将来职业发展都是大有帮助的啊。

那找新技术的不足就需要批判思维了。这批判性思维的前提,就是要求你能独立思考,独立判断,不是做做样子,找个小问题就行了的。

有一阵子,小王的公司项目一直是用的 Spring MVC 搞 Web 项目。有个同事用了觉得很麻烦。为啥?因为在 Spring MVC 需要大量的配置,每次搞一个小项目都需要大量的改动配置。如果再加个 Hibernate,那配置把人要搞疯。

于是,这个同事就想到了 SpringBoot。但是在用 SpringBoot 之前,他认为,SpringBoot 也是刚推出不久的,肯定也有自己的问题。于是,他就去 Google 上用 SpringBoot challenge 这种关键字,挖出了不少坑出来。

同时,又发现 SpringBoot 封装的太好了,他又认为封装的太过易用,如果出现了一些底层问题,估计不好解决。他把这些优势和劣势统统搞了个报告,去申请 SpringBoot 试用。申请过后,他又从各方面审视项目的各种不足,不断改进问题。

独立思考,以批判的眼光找到现有的不足,以批判性思维找到可以改进的方向,你将在自己的团队中拥有自己的行业话语权,项目前进的方向也可以在你的主导下进行。

四、现实点,别吹牛逼

小王和小马谈到现在行业内存在的一些弊病的时候,不禁摇头叹气。现在行业内,做事飘得多,踏实的少。

掌握点儿 Docker,就给你吹自己掌握了云技术。了解点儿 SpringBoot、SpringCloud,就告诉你精通了微服务。

可是,就小王的经验,真能成功的,那都是脚踏实地的实干者。

实干者们对一个项目,有着充分的评估,能在最坏的情况时,拿出早就准备好的方案。能在项目出现延期风险的时候,作出提前而精准的判断。

而这些,可不是那些夸夸其谈的营销类、建立类、PPT 类程序员能搞定的。

需要沉下心来,去了解项目可能出现的问题的每一个核心原因。沉下心了解问题核心,可不仅仅是给项目带来好处。这东西可以直接训练人们处理问题的思路,也能加强对项目风险预测的嗅觉。这两种东西对将来团队管理、项目管理的好处就不言而喻了。

做事儿踏实点,错不了。

青铜圣斗士有了第七感能打败黄金圣斗士。你有了敏锐的解决问题思路和预先嗅到风险的感觉,就能踢开阻挡你突飞猛进的拦路虎。

五、啥都知道点,关心些职责之外的

小王、小马身边那些成功的程序员们,做事可不是只闷头做自己眼前这点儿就行了。

人家从小兵子的时候,工作除了拧螺丝,还会关心整个航母。当个后端工程师,人家把前端的活儿也揽过来,把前端框架了解的透透的。写个业务代码,顺便把底层框架摸了个滚瓜烂熟。

工作态度主动点儿,干好自己手头工作之余,尽可能的去多多了解整个项目。把项目弄的越熟悉,项目就越离不开你,这时候,别人还会把你看成小兵子吗?

以上说了这么多,小王自己全都做到了吗?没有,知易行难嘛,小王只是像数学的极限一样,不断地逼近这些特点。小王期待自己最终也会破茧而出,能变得更加出色。


推荐好课:初级脚本算法正则表达式JavaScript面向对象编程