程序员如何积累编程技术或编程经验?
工作中总是被问到程序员如何积累编程技术或编程经验?首先我认为编程是一门实践性的很强的艺术,所以貌似唯有实践才能积累。然而把它当作一个个人软件过程(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(技术栈)
积累自己的技术栈是架构师必备素养之一。这就要求我们在编程实践中要以架构师的视角看问题,运用技术,积累技术。
我觉得如果能做好上面的这几个方面,从小到大,反复迭代的实践,编程技术或编程经验的积累又有何难呢?
程序员如何积累编程技术或编程经验?相关推荐
- 一位从业20年的程序员分享积累的20条编程经验
编者按:原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务.生物技术.房地产.医疗.保险和公用事业.正如乔纳森在文 ...
- 程序员为什么非得参加一场编程竞赛?
对于程序员来说,没有参加过编号竞赛的人生是不完整的? 作者 | Codersera 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 众所周知,编程竞赛是在比 ...
- 成为优秀程序员需要具备的15种编程技巧
来源 | https://www.linuxmi.com/chengxuyuan-15-jiqiao.htm 编程是一个告诉计算机如何工作的术语.通过编程,我们可以轻松操作任何技术.就像所有人在特定地 ...
- 【雷军】给程序员的五点建议--如何成为编程高手并以此创业
除非特别注明,鸡啄米文章均为原创 转载请标明本文地址:http://www.jizhuomi.com/career/286.html 写在前面:此篇文章出自雷军之手,是他为软件开发2.0技术大会准备的 ...
- 程序员面试、算法研究、编程艺术、红黑树4大系列集锦与总结
程序员面试.算法研究.编程艺术.红黑树4大经典原创系列集锦与总结 作者:July--结构之法算法之道blog之博主. 时间:2010年10月-2011年6月. 出处:http://blog.csdn. ...
- unix入门经典_程序员大神们的经典编程语录
作为程序员的你,下面这些程序员经典语录请您认真来读一读,也许此时此刻会有不一样的心得体会与收获. "大多数优秀的程序员从事编程工作,不是因为期望获得报酬或得到公众的称赞,而是因为编程是件有趣 ...
- 程序员面试、算法研究、编程艺术、红黑树、机器学习5大经典原创系列集锦与总结
程序员面试.算法研究.编程艺术.红黑树.机器学习5大经典原创系列集锦与总结 (七月在线:https://www.julyedu.com/,面试 & 算法 & 机器学习在线课程) 作者: ...
- 神级:程序员面试、算法研究、编程艺术、红黑树、机器学习5大经典原创系列集锦与总结
https://blog.csdn.net/v_JULY_v/article/details/6543438 https://blog.csdn.net/v_JULY_v/article/detail ...
- 【转自JULY大佬】程序员面试、算法研究、编程艺术、红黑树、机器学习5大系列集锦
感谢原作者分享,转载自 https://blog.csdn.net/v_JULY_v/article/details/6543438 程序员面试.算法研究.编程艺术.红黑树.机器学习5大经典原创系 ...
最新文章
- 使用VMware虚拟机安装Windows8系统
- 对于高并发短连接造成Cannot assign requested address解决方法
- 'MomentumSGD' 'zero_grads'
- 搞定Linux只要半年
- 从开源自治,到微服务云化,阿里云的这款产品给了一剂提升微服务幸福感的良药
- POJ 1979 Red and Black (简单dfs)
- Linux LCD 驱动实验
- 二维数组各行分别求和_【PyTorch入门】之十分钟看懂二维卷积层的运算、实现及应用...
- mysql 读取properties_JDBC中使用Properties读取配置文件有什么用
- [UE4] 通过 Git 进行版本控制时的报错 No assets to check in! 的解决方法:重新更改本地代码
- PowerShell监控——监控共享打印机 获取打印记录、打印人员、打印文件等详细信息
- 为何3Dmax渲染的图偏暗?跟伽马有影响吗?
- Unity3D Editor Undo回退效果实现3 Odin相关
- Java案例:实现九九乘法表
- calib matlab,使用Matlab Toolbox_calib进行摄像机标定
- android 开源fc模拟器_安卓FC模拟器NESemu
- vite:vue中引入图片报错require is not defined
- 笔记本联想(Lenovo)G40-70M加装内存和SSD固态硬盘
- 小程序通过摄像头拍摄个人身份证
- java 红绿灯_java -- GUI 红绿灯
热门文章
- 企业破产重整网_企业破产重整的基本流程是怎样的?
- 罗振宇2022“时间的朋友”跨年演讲 思维导图
- 常用算法的算法思想以及基本特征
- 学习正则表达式的简单方法
- 想要学习Java,没有英语基础可以学吗?
- The malloc maleficarum之The House of Spirit漏洞
- 全备份、增量备份与差量备份
- Java length() 方法、length 属性和 size() 方法有什么区别?
- 首届实时渲染3D动画创作大赛结果公布,看大奖英伟达A6000花落谁家
- Java树形结构模糊搜索,模糊匹配