工作中总是被问到程序员如何积累编程技术或编程经验?首先我认为编程是一门实践性的很强的艺术,所以貌似唯有实践才能积累。然而把它当作一个个人软件过程(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(技术栈)
积累自己的技术栈是架构师必备素养之一。这就要求我们在编程实践中要以架构师的视角看问题,运用技术,积累技术。
我觉得如果能做好上面的这几个方面,从小到大,反复迭代的实践,编程技术或编程经验的积累又有何难呢?
如果你想学好JAVA这门技术,也想在IT行业拿高薪,可以参加我们的训练营课程,选择最适合自己的课程学习,技术大牛亲授,8个月后,进入名企拿高薪。我们的课程内容有:Java工程化、高性能及分布式、高性能、深入浅出。高架构。性能调优、Spring,MyBatis,Netty源码分析和大数据等多个知识点。如果你想拿高薪的,想学习的,想就业前景好的,想跟别人竞争能取得优势的,想进阿里面试但担心面试不过的,你都可以来,q群号为:180705916 进群免费领取学习资料。
网友评论