看看你处于哪一层?

2019 年 1 月 15 日 码农翻身

粗略地分一下,程序员的日常工作基本上会被划分到这三层: 系统层, 中间件层,应用层。



我们从下到上,逐层走一下,看看每一层都在做什么。


1




系统层指的是操作系统,数据库,编译器,TCP/IP协议栈,虚拟机等。另外,我把编程语言也归入到这一层。


能在这一层工作的程序员基本上都是大神。比如写Linux的Linus Torvalds,  一边读协议,一边写TCP/IP实现的Bill Joy。


用汇编写Delphi(Object Pascal)编译器的Anders,还有各种编程语言的发明人, 就不一一列举了。


这一层的人大部分都在默默地工作,构建我们赖以生存的世界,他们深藏功与名,很少对外发出的声音,因为即使他们发出了声音,很多人也听不懂,因为太专业,太精深。


这一层的人有两个特点:


(1) 对计算机是真的热爱,否则不会探究到这么深的层次,并且能耐得住寂寞在这一层工作。


(2) 能力超强。因为这一层的工作性质要求高性能,高可靠,需要和硬件打交道,需要处理巨多的细节,一般人真搞不了。




2




中间件层很有趣,有些东西系统层不想管,应用层又管不了,只好交个中间件来做。


传统的中间件是像WebLogic, Websphere, JBoss,Tomcat, MQ这样的东西, 如果我把他泛化一下,也可以把Docker, Elastic Search , Kafka , Spring , Zookeeper,Ngnix,Redis,Dubbo等给包括进来。 还可以包括一些公司的技术平台部门所推出的,供整个公司试用的软件和系统。


在这一层工作的人发出的声音会有很多人侧耳倾听,因为用户众多,大家都能听明白。


程序员对这一层的关注非常多,出了什么新技术?有什么新特性?布道师出来写一些文章,“鼓吹”一番,热闹非凡。


对于程序员来说,能够在这一层工作,也非常有成就感:


(1) 直接参与开发,当你开始做通用的组件和框架的时候,对于技术能力,抽象能力的要求相比应用层就会大大提高。


(2) 对某个领域极为精通,成为专家,例如缓存、搜索、分布式、负载均衡等。



3




最后是应用层,主要使用系统层和中间层的东西来实现业务逻辑,戏称为增删改查。


绝大部分人都在这一层工作,尤其是刚刚培训出来的同学,肯定要在这一层呆上一段时间,也有可能一直呆下去,做一辈子。


千万别小看这一层,它需要把业务需求直接转化成技术实现,是直接产生价值的。


比较“悲催”的是,应用层的同学需要掌握下面两层的知识,不一定精深,但是需要知道原理。


在这一层工作,关注点是如何更好更快地实现业务需求,及后续的变更,所以要有面向对象的设计,设计模式,敏捷开发,持续集成,持续交付,DevOps,领域驱动开发,TDD, Code Review等各种工程实践。


这一层也有大师级别的人物,比如Martin Fowler,他写了《分析模式》,《企业应用架构》,《重构》等经典书籍,特别擅长把业界的实践总结成概念。


再比如Robert Martin,面向对象设计的大牛,他10多年前的书《敏捷软件开发:原则,模式与实践》中提出的SOLID原则,至今仍然是OOD领域的指导原则。


为了把这一层的的事情做好,需要有个特殊的岗位来负责整个系统的设计,这个岗位就是:架构师。


架构师一般是资深的程序员,有丰富的实践经验,知道技术的优缺点,能根据具体的需求,设计合适的技术方案,建立合适的技术组件并连接起来,从而解决问题。



4




系统层,中间件层,应用层并没有高下之分,每一层都有足够多的东西供你去探索,去创造。


如果你喜欢开发一些东西,让很多程序员使用,可以考虑进入中间件层,比如公司的技术平台部。


如果你真的喜欢系统层的东西,那就要选定方向,比如数据库,然后深挖,现在国内已经有公司提供这样的工作机会让你去定制OS,定制数据库,定制JVM。


如果你喜欢在应用层解决实际业务问题,可以考虑向架构师方向发展。


往期 精彩回顾

关于老刘和码农翻身

我是一个线程

我是一个Java Class

面向对象圣经

TCP/IP之大明邮差

CPU阿甘

我是一个网卡

我是一个路由器

一个故事讲完HTTPs

编程语言的巅峰

Java:一个帝国的诞生

JavaScript:一个屌丝的逆袭

登录查看更多
0

相关内容

编译器(Compiler),是一种计算机程序,它会将用某种编程语言写成的源代码(原始语言),转换成另一种编程语言(目标语言)。
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
Python导论,476页pdf,现代Python计算
专知会员服务
260+阅读 · 2020年5月17日
【2020新书】C++20 特性 第二版,A Problem-Solution Approach
专知会员服务
58+阅读 · 2020年4月26日
Python数据分析:过去、现在和未来,52页ppt
专知会员服务
99+阅读 · 2020年3月9日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
我在美团的这两年,想和你分享
大数据技术
3+阅读 · 2019年4月22日
每个架构师都应该培养业务思维
InfoQ
3+阅读 · 2019年4月21日
我在知识星球这一年
码农翻身
10+阅读 · 2019年2月28日
3月份GitHub上最热门的开源项目
大数据技术
3+阅读 · 2018年4月10日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
为什么你应该学 Python ?
计算机与网络安全
4+阅读 · 2018年3月24日
Arxiv
102+阅读 · 2020年3月4日
Heterogeneous Graph Transformer
Arxiv
27+阅读 · 2020年3月3日
Arxiv
6+阅读 · 2018年11月29日
Arxiv
26+阅读 · 2018年9月21日
VIP会员
相关VIP内容
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
Python导论,476页pdf,现代Python计算
专知会员服务
260+阅读 · 2020年5月17日
【2020新书】C++20 特性 第二版,A Problem-Solution Approach
专知会员服务
58+阅读 · 2020年4月26日
Python数据分析:过去、现在和未来,52页ppt
专知会员服务
99+阅读 · 2020年3月9日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
相关资讯
我在美团的这两年,想和你分享
大数据技术
3+阅读 · 2019年4月22日
每个架构师都应该培养业务思维
InfoQ
3+阅读 · 2019年4月21日
我在知识星球这一年
码农翻身
10+阅读 · 2019年2月28日
3月份GitHub上最热门的开源项目
大数据技术
3+阅读 · 2018年4月10日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
为什么你应该学 Python ?
计算机与网络安全
4+阅读 · 2018年3月24日
相关论文
Arxiv
102+阅读 · 2020年3月4日
Heterogeneous Graph Transformer
Arxiv
27+阅读 · 2020年3月3日
Arxiv
6+阅读 · 2018年11月29日
Arxiv
26+阅读 · 2018年9月21日
Top
微信扫码咨询专知VIP会员