编者注:本文为历史博文归档;涉及 JDK、框架与工具链版本请以当前官方文档为准。引用外链图片可能失效,阅读时请注意时效性。

“菜鸟”和“大神”

刚刚步入职场的程序员,技术往往是起步的基点。今天我们就聊一聊有关技术成长的话题。首先,请您思考以下几个问题:

  • 社会上程序员众多,CSDN 堪称程序员之家,但为何程序员的水平参差不齐?
  • 您属于哪一类程序员?
  • “菜鸟”程序员和“大神”程序员的差距究竟在哪里?
  • 差距真的仅仅在于技术吗?如果不是技术,那又差在哪里?

上面这一连串的问题,没有把您搞晕吧?接下来,我将为您一一分析这些问题背后的答案。确切地说,程序员群体中确实存在着“菜鸟”与“大神”之分。

衡量一个程序员有多优秀,核心标准在于他写的代码。程序员自己的代码,才是工作状态的真实体现。

“菜鸟”程序员和“大神”程序员到底有什么区别呢?我们不妨通过具体场景来看看。

代码的展现与网络的应用

展现题目:实现一个很小的功能,例如当鼠标移动到一个标题下时,在其下方显示可选菜单。

“菜鸟”程序员的代码

“菜鸟”程序员的代码往往会写得比较冗余。这些代码的来源通常有三种:

  1. 从书上找来的;
  2. 从网上找来的;
  3. 仅凭记忆提取的(对真正的原理似懂非懂,如同雾里看花)。

“大神”程序员的代码

“大神”程序员的代码,当你看第一眼:简洁;看第二眼:精妙。他们能用最少的代码,将程序写得非常精辟,充分体现自己的思维思路。

为什么会出现这样的现象?同样一个小的功能,放在不同的人手里就产生不同的结果,这难道不值得我们去探究原因吗?

真正的原因是:“菜鸟”程序员没有将自己的思维融入代码。 代码本应是程序员思维智慧的结晶。当我们拿到一个小功能时,如果发现自己这方面的知识准备不足,本能反应往往是上网查找。

通常解决问题的方法有两种:

  1. 从网上或书中找到类似的代码;
  2. 请教别人指点(但在工作中,大家都很忙,相互讨论帮忙的机会很少)。

上网搜索时,我们经常出现这样的现象:看到要编写的程序,感觉自己没什么思路。找了半天收获不大,看了很多实现方法,花很长时间去理解。虽然最终把问题搞出来了,但过程耗时耗力,之后便抛诸脑后。有些时候运气好,正好搜到这类问题的解决方法,直接把代码搬过来搞定!

我们就这样一直循环下去,到最后什么也没有留下。下面一幅图就显示了“菜鸟”程序员的现状:

(这一幅很有寓意的图)

“大神”程序员拿到这个程序,做的第一件事情是思考。自己先思考如何实现这个问题,有哪些相关知识可以借鉴,列出解决问题的可能性,考虑解决问题的最难点。所以上网搜索时,直接搜问题的解决关键点,将其转换成自己的思想,用自己的思维写出想要的代码。这就是“代码是思维结晶”的精华所在。

“菜鸟”背后的答案

通过这一个问题的对比,我们可以发现为什么我们会成为“菜鸟”:因为没有思考,没有去仔细研究找到其中的规律,没有找到问题的本质。 本来想建立自己的思维程序,但自己没有这个意识,所以一直停留在“菜鸟”的水平上。

“大神”程序员通过认识几个重要的知识点,就把这个问题解决了。所以技术对于他们来说,没有任何难度而言,因为他们经过了不断的思考。

我们就应该认清我们“菜鸟”和“大神”之间的差距在哪里?我们不应该逃避这个问题,因为这个问题决定我们解决问题的态度,决定着我们的人生价值。

在程序员当中,为什么人家能挣八千一万,而自己却只能挣四五千(在程序员里最低)?这就是根本原因。思考与解决问题的能力,就是你到了一家企业的价值。 其实在企业中,不在乎你拿走多少薪水,关键在于你创造了多少价值。

就是因为这四五千的收入差值,除去生活的基本消费等,到退休时,你会发现一个是富翁,一个是穷光蛋。我们都想成为富翁,那么如何才能成为富翁?我们可以把问题下移一下:我们如何成为一个“大神”程序员?

我们必须要变,改变我们自己。首先,当我们遇到这样的问题时,应该改变我们的思维方式:

  • 我如何才能解决这个问题?
  • 而不是遇到问题就上网找答案。
  • 这个问题和我以前的知识有什么关系和区别?

这样我们就在学习中解决了这个问题。如何培养自己的编程思维?编程只有我们有自己的思维,我们才叫一个独立体,我们才能创造意想不到的价值。对于自己这样做本身是百利而无一害,因为现在的编程风格(源于自己的思想)不知道哪一种会“火”起来,这样编程的世界才能百花争艳。

通过这样一个小的实例就可以说我们为什么还是“菜鸟”,因为我们整个学习技术体系存在问题,我们的学习方法存在着很大的漏洞。

反思自己

回想自己的往事,当初自己在做“牛腩新闻发布系统”的时候:自己照着视频上一点一滴地敲完了,自己感觉很兴奋,但是等到运行的时候自己又胆怯于测试。自己做完了这个系统,跟自己没有关系了。

真的没关系了吗?首先来说,自己连做出来的东西测试自己都不敢,这就是最大的问题。其实测试才是我们真正学习到知识的时候,这一点我自己做得不好。自己更没有将系统在每个浏览器上测试一下,自己没有这个勇气,也有可能是自己没有想到这个问题的严重性。

但是当我从事网页项目开发的时候才知道,每个浏览器兼容问题是我们必须要考虑的。 只有解决好这些问题,这就是我们最大的进步。把兼容问题写成总结,这对于我们来说以后从事网页项目开发就是一笔宝贵的财富,为将来我们在做开发的时候提供更加有力的保证。

所以当初自己做这个系统的时候,自己没有好好的把握。自己现在意识到当初自己的失败,但是失败并不可怕,当我们意识到了这个问题的时候,如何改变我们自己才是我们要前进的方向和目标。当今天这个问题惊醒我的时候,让我措手不及,所写下这篇博客以示警戒。

“菜鸟”转变“大神”之思

菜鸟们(我自己也是),我们该醒醒了。如何适应企业,如何适应将来的发展,如何生存是我们每个程序员必须面临的问题。我知道想当管理者的程序员很多,但是别忘了,从事软件业是从程序员一步步做起来的。我们连做好程序员的底子都没有,那我们如何受到同事的尊重、领导的重视?这个问题离我们很近了。

我们现在应该转变我们的观念:学习的观念,适应企业的观念。

总结:思考解决问题的方法,不要滥用手中的工具,建立自己的编程思维,开发自己的创新力,展现自己的编程精华。

这就是“菜鸟”程序员和“大神”程序员之间的区别。以上是我的个人感受,仅代表个人意见,若有得罪之处,多多见谅。

时效性说明

本文归档自历史博文,文中提及的薪资水平(如四五千、八千一万)及特定教程项目(如“牛腩新闻发布系统”)具有明显的时代特征,仅供参考。技术成长的核心逻辑(思维优于复制)依然适用,但具体技术栈与工具请以当前官方文档为准。