工作中总是被问到程序员如何积累编程技术或编程经验?首先我认为编程是一门实践性的很强的艺术,所以貌似唯有实践才能积累。然而把它当作一个个人软件过程(PSP)的问题,总感觉是有一些规律、规则或建议可以解答。思索良久,结合自己的工作经历,尝试给出一个自己对这个问题的解答。

经验是什么?

程序写多了,总会发现有一些东西是不怎么变的,就是说你写一万遍也是这么个写法,而这就是所谓的经验。当然这些不变的东西有大有小,如果我们能给它分一下类,并取个好听的名字,然后在后续的编程实践中得以运用,那么这个过程就是所谓的积累。

经验分类

我们将小一些的不变的东西叫习惯用法(idiom),大一些的叫模式(pattern),再大一些叫框架(framework),再大一些就是技术栈(technology stack)了。

Idiom(习惯用法)

习惯用法更多的停留在语言层面上,与语言特性密切相关,通常是一些API的经典用法。如文件拷贝的经典写法、网络状态的判断、临时文件的创建及删除等。

一般我们会将这个经典的写法整理到笔记本中,方便查阅。对于使用Eclipse的用户,可以将这些抽取成代码片段,分类保存起来,方便应用。

Pattern(模式)

模式更多的描述一类问题的解决方案,比较抽象适用于任何语言。如经典的23种设计模式、并发编程模式等。对于模式要理解解决的问题域及实现方式,所以就要求在编程实践中有意的训练,然后从实践中积累自己的编程模式。

例如关于网络并发编程模式主要有:Reactor模式和Proactor模式。在Linux中使用epoll,当IO可读写的时候通知你,你再去同步读写,这就是所谓Reactor模式。而windows下的iocp或者Linux下的ZeroMQ则是数据发送完了或者接收完了再通知你,这就是所谓Proactor模式。其实说白了就是,Reactor给你的是读写权,Proactor给你的是数据。

Framework(框架)

Framework就是对Pattern的实现,目的是简化应用编程和重用代码。如Struts、Spring、Mina、Netty等框架。对于框架的积累,一般在编程中多以快速原型发布,持续演进方式推进,最终形成稳定的框架实现。

Technology Stack(技术栈)

积累自己的技术栈是架构师必备素养之一。这就要求我们在编程实践中要以架构师的视角看问题,运用技术,积累技术。

我觉得如果能做好上面的这几个方面,从小到大,反复迭代的实践,编程技术或编程经验的积累又有何难呢?

程序员如何积累编程技术或编程经验?相关推荐

  1. 一位从业20年的程序员分享积累的20条编程经验

    编者按:原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务.生物技术.房地产.医疗.保险和公用事业.正如乔纳森在文 ...

  2. 程序员为什么非得参加一场编程竞赛?

    对于程序员来说,没有参加过编号竞赛的人生是不完整的? 作者 | Codersera 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 众所周知,编程竞赛是在比 ...

  3. 成为优秀程序员需要具备的15种编程技巧

    来源 | https://www.linuxmi.com/chengxuyuan-15-jiqiao.htm 编程是一个告诉计算机如何工作的术语.通过编程,我们可以轻松操作任何技术.就像所有人在特定地 ...

  4. 【雷军】给程序员的五点建议--如何成为编程高手并以此创业

    除非特别注明,鸡啄米文章均为原创 转载请标明本文地址:http://www.jizhuomi.com/career/286.html 写在前面:此篇文章出自雷军之手,是他为软件开发2.0技术大会准备的 ...

  5. 程序员面试、算法研究、编程艺术、红黑树4大系列集锦与总结

    程序员面试.算法研究.编程艺术.红黑树4大经典原创系列集锦与总结 作者:July--结构之法算法之道blog之博主. 时间:2010年10月-2011年6月. 出处:http://blog.csdn. ...

  6. unix入门经典_程序员大神们的经典编程语录

    作为程序员的你,下面这些程序员经典语录请您认真来读一读,也许此时此刻会有不一样的心得体会与收获. "大多数优秀的程序员从事编程工作,不是因为期望获得报酬或得到公众的称赞,而是因为编程是件有趣 ...

  7. 程序员面试、算法研究、编程艺术、红黑树、机器学习5大经典原创系列集锦与总结

    程序员面试.算法研究.编程艺术.红黑树.机器学习5大经典原创系列集锦与总结 (七月在线:https://www.julyedu.com/,面试 & 算法 & 机器学习在线课程) 作者: ...

  8. 神级:程序员面试、算法研究、编程艺术、红黑树、机器学习5大经典原创系列集锦与总结

    https://blog.csdn.net/v_JULY_v/article/details/6543438 https://blog.csdn.net/v_JULY_v/article/detail ...

  9. 【转自JULY大佬】程序员面试、算法研究、编程艺术、红黑树、机器学习5大系列集锦

    感谢原作者分享,转载自   https://blog.csdn.net/v_JULY_v/article/details/6543438 程序员面试.算法研究.编程艺术.红黑树.机器学习5大经典原创系 ...

最新文章

  1. 使用VMware虚拟机安装Windows8系统
  2. 对于高并发短连接造成Cannot assign requested address解决方法
  3. 'MomentumSGD' 'zero_grads'
  4. 搞定Linux只要半年
  5. 从开源自治,到微服务云化,阿里云的这款产品给了一剂提升微服务幸福感的良药
  6. POJ 1979 Red and Black (简单dfs)
  7. Linux LCD 驱动实验
  8. 二维数组各行分别求和_【PyTorch入门】之十分钟看懂二维卷积层的运算、实现及应用...
  9. mysql 读取properties_JDBC中使用Properties读取配置文件有什么用
  10. [UE4] 通过 Git 进行版本控制时的报错 No assets to check in! 的解决方法:重新更改本地代码
  11. PowerShell监控——监控共享打印机 获取打印记录、打印人员、打印文件等详细信息
  12. 为何3Dmax渲染的图偏暗?跟伽马有影响吗?
  13. Unity3D Editor Undo回退效果实现3 Odin相关
  14. Java案例:实现九九乘法表
  15. calib matlab,使用Matlab Toolbox_calib进行摄像机标定
  16. android 开源fc模拟器_安卓FC模拟器NESemu
  17. vite:vue中引入图片报错require is not defined
  18. 笔记本联想(Lenovo)G40-70M加装内存和SSD固态硬盘
  19. 小程序通过摄像头拍摄个人身份证
  20. java 红绿灯_java -- GUI 红绿灯

热门文章

  1. 企业破产重整网_企业破产重整的基本流程是怎样的?
  2. 罗振宇2022“时间的朋友”跨年演讲 思维导图
  3. 常用算法的算法思想以及基本特征
  4. 学习正则表达式的简单方法
  5. 想要学习Java,没有英语基础可以学吗?
  6. The malloc maleficarum之The House of Spirit漏洞
  7. 全备份、增量备份与差量备份
  8. Java length() 方法、length 属性和 size() 方法有什么区别?
  9. 首届实时渲染3D动画创作大赛结果公布,看大奖英伟达A6000花落谁家
  10. Java树形结构模糊搜索,模糊匹配