【回复“1024”,送你一个特别推送】


原文作者:2gua

原文地址:https://zhuanlan.zhihu.com/p/26186494

特别声明:本文为2gua原创并授权发布,未经原作者允许请勿转载,转载请联系原作者

前几天在知乎上看到一个帖子:《是不是程序员总会遇到一个瓶颈期,觉得自己没有进步了,该怎么解决?》,看到知乎大神2gua的回答,感觉写的真是太好了。原文叫:《作为一个程序员的学习思考》,可谓写的深入人心,如果你也遇到了这样的问题,看完这篇文章,相信我,可能帮助你解决你心中的疑虑和焦虑。

其实关于读书、学习的那些事情,以前我也陆续叨叨了不少,但总觉得 “学习方法” 就是一个永远在路上的话题。个人的能力、经验积累与习惯方法不尽相同,而且一篇文章甚至一本书都很难将学习方法阐述得清清楚楚、面面俱到。那么,要为自己找到最优的学习方法其实很困难,要去指导别人怎么学习那更是相当困难......

大凡提到读书、学习,都几乎会提到 “计划”、“方向”、“坚持”、“静心”、“总结”、“思考”、“实践” 这些个关键词。其实都是没错的,如果日积月累下来,你最大的感悟往往也就是沉淀于此。而所谓 “知易行难”。

我在这篇文章里想尽可能从 “自己作为一名程序员” 的角色及历程——来做些思考,算是对自己学习过程的一个审视。

想了想,我的知识积累过程大抵分为四个阶段。

第一阶段:困惑期

这个阶段往往是小白阶段,要么经验积累不够(比如刚毕业),要么是重大技术转型阶段(颠覆性的,比如由 GUI 应用模式转到 Web 应用模式)。

以前刚出道时,写的基本是 C++ 的 GUI 应用和 Foxbase 管理信息系统,之后的技术发展逐渐向 Web 趋势演进,而 Web 应用从程序模式到部署模式都完全不同,以至于当年着实跌了不少跟头。

记得刚涉足 Web 开发时,即使是拿着一本类似 “21 天精通” 这样的入门书,也是走得跌跌撞撞。啥 IIS、Apache 应用服务器、请求 / 响应、Cookie/Session、Servlet...... 陌生到一度让我怀疑人生。

这个阶段也许一个月才能写出一个聊天 HelloWorld 程序,心境往往起伏得厉害。但万事开头难,这个阶段一定是要坚持、坚持再坚持,而且尽量沉下心学会控制情绪,千万不要怨自己基础不够、脑袋不灵光。你咬牙坚持个一段时光,相信就可以进入 “发展期”。优秀的人在这个阶段:“不贪进度,稳扎稳打,愿意打破砂锅寻到底”

  第二阶段:发展期

在 “打破砂锅寻到底” 的模式下,随着之前的障碍逐个被击破,我觉得啃一部入门书确实越来越轻松了,这个阶段学得快也学得多,而且过程中冒出的问题越来越多,比如 “要添加一个图表咋办?”、“想整个带编辑、删除功能的翻页列表咋整?” 之类的问题。这时候我往往是把这些点记录下来,但不打断自己(跟书或跟计划)学习的节奏,好比 “没学会走之前不要试图学飞”。

这个阶段让我想到小时候刚学会骑自行车,心里欢喜得不得了,有一次竟然忘乎所以,豪情万丈般地撒开手把子想让车子自己保持平衡,结果一下子连人带车就扎到路边土沟里去了。此时其实就是个 “半桶水” 阶段,摸着了门槛但切勿得意忘形,还是扎扎实实跟着书本或计划学基础为妙。

第三阶段:瓶颈期

基础的内容掌握了,积累的困惑又呈现出了越来越多的趋势。因为我已经不满足温饱,想做得更好了。这就是往更高层次发展过程中会遇到的障碍,一种 “书我都读完了也理解了,但就是在实践中感到无从下手” 的感觉。想要进一步提升自己,基本也就是靠 “继续学习深入的知识” 跟 “不断尝试 / 实践去解决问题” 这两个方式并重了。如果你完成了第一个翻页控件,是会有不小的成就感的。随着一方面博览群书、另一方面不断勇于解决问题,这个瓶颈期就会在不知不觉中慢慢地度过去。

这个瓶颈期是比较磨人的,因为周期比较长,没个几年功夫过不去,三五年一小成,十年八年一大成。但这个过程又是最关键的阶段,在这里学到的、掌握到的都是行走江湖的真功夫。而且经历了这个过程,就基本能把程序员分出个三六九等来。

第四阶段:自由期

苦尽甘来后发现自己已经到了一个相当高度了。一方面经验积累得很丰富,另一方面能做到触类旁通。在这个阶段你再学新知识、探索新方向,其实都能进展得比较顺利。此时的你厚积薄发,打通任督二脉,原力生生不息。

这个阶段基本不会有什么困惑,而且也更能主动式学习及洞察事物趋势。一年学个两门语言不在话下。爱学啥学啥。但如果要深度运用新知识,则仍有一个小周期:进展期 -> 瓶颈期 -> 自由期,只是周期缩短了不少,再也不会像第一次蜕变过程那般痛苦不堪了。

到达这个阶段可不容易,可能之前你早已摔得遍体鳞伤了......

其他

阶段和过程摆在那儿,但要成就一名杰出的程序员、工程师、架构师甚至管理者、创业者,都需要个人具备一些优秀特质:

  1. 能够沉浸其中,“做一行爱一行”,也就是通俗意义上的 “兴趣”;

  2. 熟稔总结之道。我一般喜欢联想,比如这个内容书上是这么讲的,但再延伸一下问题应该怎么解决呢?或者把模糊之处,自己用文字和代码把它展开,甚至封装起来进一步抽象。把这些方方面面的问题点、难点逐个突破,一点一滴地抽象成自己的知识库、工具库,一定程度之后各种现实问题几乎都能从中挑出答案;

  3. 不满足现状。程序能跑了,但能跑得更好吗?代码实现能更简洁优雅些吗?就算是生产环境你不能随意更改,你也应该在自己的环境或测试环境中去尝试改进代码——得出的经验教训都是你自己的收获。而且只有不满足现状,你才更可能去主动式思考与学习;

  4. 周边知识的探索,算法、架构模式、设计模式、语言 / 技术新版本、新概念 / 新架构等等,不要觉得累。一旦你觉得累你就差不多走不远了;

  5. 充分认识到英语的重要性——这个已经不想多说了;

  6. 锻炼身体——比如我现在学习武当太极拳;有一门其他爱好——比如我现在学习武当太极拳。

感觉自己其实也有蛮多欠缺之处,还需要继续加油努力。但无论多么模糊,我都始终坚信一点:“无他,但手熟尔”。要坚持这点之前,你还得时刻提醒自己:“你一个砍柴的,他是放羊的,你和他聊了一天,他的羊全吃饱了,你的柴呢?”

作者的知乎专栏:2gua 的编程生活,超级棒,里面有很多高质量的,有关程序员的文章,有兴趣的朋友可以关注一下,地址:https://zhuanlan.zhihu.com/guagua

强烈推荐:程序员遇到瓶颈期该怎么解决?相关推荐

  1. 面试官角度观察到的程序员技能瓶颈,同时给出突破瓶颈的建议 ...

    我在做技术面试官的时候,面试对象大多数是初级开发和高级开发,偶尔也会面试架构师.我发现,IT人的工资固然和相关技术的使用年限有关,但如果候选人的技能无法跨越到更高层次的话,他们的收入也就会停留在当前级 ...

  2. 从面试官角度观察到的程序员技能瓶颈,同时给出突破瓶颈的建议

    (本文已发布到GitChat上) 我在做技术面试官的时候,面试对象大多数是初级开发和高级开发,偶尔也会面试架构师.我发现,IT人的工资固然和相关技术的使用年限有关,但如果候选人的技能无法跨越到更高层次 ...

  3. 从面试官角度观察到的程序员工资瓶颈,同时给出突破瓶颈的建议

    原文链接: https://gitbook.cn/books/5d98575e0f43867cba9d84a0/index.html 我在做技术面试官的时候,大多数面试的是初级开发和高级开发,偶尔也会 ...

  4. 程序员多数性功能不行_从面试官角度观察到的程序员技能瓶颈,同时给出突破瓶颈的建议...

    我在做技术面试官的时候,面试对象大多数是初级开发和高级开发,偶尔也会面试架构师.我发现,IT人的工资固然和相关技术的使用年限有关,但如果候选人的技能无法跨越到更高层次的话,他们的收入也就会停留在当前级 ...

  5. 经典推荐--程序员之打油诗

    经典推荐--程序员之打油诗 写字楼里写字间,写字间里程序员:程序人员写程序,又拿程序换酒钱. 酒醒只在网上坐,酒醉还来网下眠:酒醉酒醒日复日,网上网下年复年. -- 宁愿老死程序间,只要老板多发钱:小 ...

  6. 面试被问项目上线没_从面试官角度谈观察到的程序员技能瓶颈

    Hi-新朋友,记得点 蓝字 关注我们哟 我在做技术面试官的时候,面试对象大多数是初级开发和高级开发,偶尔也会面试架构师.我发现,IT人的工资固然和相关技术的使用年限有关,但如果候选人的技能无法跨越到更 ...

  7. 程序员soul 012期|妹子|重庆

    程序员soul 012期|妹子|重庆 我们的愿景是打造全国最大的程序员社群生态圈!我们的使命是为所有程序员都找到另一半! 出生年月: 1998年6月 籍贯: 重庆 所在城市: 重庆 学历:专科 身高: ...

  8. 《程序员》06期最新上市:2008开源在中国

        本期封面故事:2008开源在中国   开源,已经成为当今世界软件产业无法逆转的趋势.而中国的开源运动,却处在一个尴尬境地.本期封面报道,以超过30多页的大篇幅,全面纪实开源在中国的真实状况.文 ...

  9. 《程序员》11期最新上市:互联网架构集结号

    本期封面报道:互联网架构集结号 互联网从诞生到现在,网站的规模不断扩大,存储和处理的数据量也远远超出了人们的想象,近年来又出现了对信息实时性.多媒体需求大幅增长的现象,互联网架构面临越来越大的挑战.本 ...

最新文章

  1. CDN监控系统(一)
  2. 韩国遭到日本制裁,三星被打回原形,原来是个组装工厂?
  3. mac on linux,Mac- on- Linux
  4. 进程资源限制(rlimit)
  5. server sql 分组 去重 字符串拼接_SQL必知必会
  6. windows下mysql5.6安装
  7. 转:全卷积网络(FCN)与图像分割
  8. magento模板中XML与phtml关系 [四]
  9. JAVA实现的小程序
  10. IE 11 浏览器兼容性视图设置
  11. 1.5 深入理解常见类
  12. 新版 CAD 2017 阵列怎么控制角度
  13. BitBlt C++中BitBlt如何使用详解
  14. 聪明点 比较购物网站SEO分析
  15. 安卓开发 | 将Vue项目打包为app
  16. 安装并使用Panoply (netCDF, HDF and GRIB Data Viewer)
  17. forms oracle runtime_Oracle Forms Server 疑难排解
  18. 红旗linux修改时间,RedFlag官方公布红旗Linux V11版最早的下载体验时间
  19. 117页数字化转型与产业互联网发展趋势及机会分析报告(PPT)
  20. 人类与微生物的关系的起起伏伏

热门文章

  1. 从零开始学习cocoStudio(8)--商城
  2. initWithNib init initWithCoder initWithFrame
  3. 网络安全实验一 Part 2 Windows环境下的扫描器程序
  4. C++实现一个ASCII码表
  5. 高等数学在计算机方面的应用论文2000字,数学生活应用论文范文
  6. 元器件正反(极性)检测案例
  7. python简单实用案例_分享10个给Python小白看的实用案例,入门Python就在这里了
  8. 国产GBase数据库(南大通用)官方学习笔记大全
  9. 谷歌获取货币汇率代码
  10. python计算球坐标系的积分_Python实现将n个点均匀地分布在球面上的方法