实话说,原本是没有打算写三的,其实最初只打算写个一,因此,当时博客文章命名为《资深程序员看12306铁路售票系统》,初衷也只是想站在一个多年程序员的角度,以多年的开发经验,概要的评价一下这个系统的价值和失误之处,不加褒贬的评价一下这个系统。可没想到事与愿违,引来了一些争论, 于是就又有了第二篇,想概要的说明一下平台技术,从平台的角度来概要分析说明一下一个平台的不容易,无非还是想让大家正确看待一个系统,依旧想让大家从技术的角度来看问题,因为只是想概要说明一下。所以,只是沿用了标题,但内容基本与12306没有太多关系了,这也正是留言中很多人说与12306没有太大关系的原因。但不曾想引起了更多的争论,甚至被认为是5毛党,无奈之余,仔细分析留言,发现问题主要集中在三个方面。
1、我真的是资深程序员么?
2、平台架构就那么牛么。
3、12306真的那么复杂么?
围绕这三个问题,谩骂者有之,支持者有之,鄙视者有之,拍手叫好者也有之。以至于把楼层都垒到了80层有余,足见大家是仁者见仁,智者见智,其实第三个问题应该说是平台间融合的复杂度。既然这样,那干脆,我就继续拿标题引用,针对三种言论,尽量从各个角度,来一一阐述一下我的个人见解吧,这一篇,我就先说最简单的东西,就说我对资深程序员的定位和定义吧,后续有时间和精力了,再通过平台的一两个技术点和融合平台的复杂度来写一些东西,要知道,工作得放在第一位,何况我的工作压力相当大呢,因此,即便久等了,也请大家见谅吧。
资深程序员
怎样才算资深程序员呢?我对资深程序员的定位标准如下:
在某个领域有一定的经验,有自己的知识沉淀和积累
我的一个朋友,在音视频这一领域干了十几年,他对音频视频内容的提取,音质和视频质量的处理,音频视频的压缩和解压缩,有了相当的造诣,以至于公司的所有音视频研究,新的算法等,都有他带队去做,而为了更好的提高音视频质量,他经常和中科院、清华、北大等专门搞音视频领域理论研究的博士们来探讨这些算法,以期达到他想要的效果,那么这就是资深。但可能很多人甚至在这一领域干过一些年的人会认为:这有啥?音频视频无非就是压缩解压缩罢了,现在很多资源可以用,一样达到很好的效果,还需要找什么中科院、清华、北大的音视频理论研究领域的人,现在的专家是一文不值,只会骗钱等等的话。那我只能说这些人说话很外行,或者远没有在这方面达到一定的积累,那我就没必要和这些人计较,甚至连辩论的话都不想多说一句。
换个例子说,我有一个搞数据库的朋友,在该领域扎根了将近20年了,他平时很少说话,但只要一说到数据库,他就侃侃而谈,他的一些术语说法,别说我听不懂,甚至一些搞了七八年数据库的人都听不懂,在这些人的眼里,一个看似简单的增删改查,就能给你说上几天,这更是资深,以至于大家碰到他,尽量的不去和他谈数据库方面的东西,那他也就没话可说了,当然,和他打交道,为了避免他成为局外人,我们会说一些老歌曲,这也是他的兴趣。
再举个例子,还是我一个朋友,在用C++做界面方面,已有七年的积累,我认为很难的界面问题,在他那里就是喝凉水,在我想做任何界面相关的东西或者谈论界面的时候,我都首先会找他讨论,他关于界面的简介,我甚至会一字不漏的要求贯彻执行。在我看来,他也已经达到了资深。
而如上三个人,对网络通讯和传输,以及后台稳定和安全方面,并不了解很深,甚至可以说,他们的思考就相对简单,但一旦投入到实际使用中,就会出现各种问题,于是会经常问我原因,比如说:做音视频的会问我,为啥他的音视频数据传输到对方的时候,会出现那么长时间的延迟、或者对方看不到本应该看到的内容呢?或者并发查看到的音视频信息为啥只有四路甚至更少呢?
搞数据库的会问我你为啥非要把原本可以直接到达数据库的业务处理复杂化呢?为什么你要在我的分布式数据库事务上又加上那么多处理信息呢?为什么你非要把和数据库连接的模块封装的能适应多种数据库呢?
做界面的会问我,这些数据怎么加密才有效呢?怎么才能放置别人对传输数据的提取和破密呢?
因为,十年来,我几乎一直都在搞通信通讯,平台架构。对于一个涉及到通信通讯的问题的考虑,我要想的比他们多,我必须要考虑单点服务器宕机风险、分布式服务器数据一致性问题、性能拐点问题、动态扩展后各个服务器协调和通知处理问题、平台融合问题等等。这些不是说仅仅是一两句话的问题。你得能设计出一些公共接口,私有结构,协调同步接口等的具体代码来,还要对每个服务器之间的关联方案和业务处理给出指导性说明文档来,架构师一个东西,不是仅画画图,说两句了之的,架构一个系统平台,你必须是考虑需求而又要跳出需求。用户需求都是一些具体的业务逻辑,而平台要一半精力关注与业务,一半精力甚至更多精力关注与稳定、性能、安全、可拓展。而这些考虑,在外人看来也无非是封装、继承、多态、重载,分布式+缓存+异步等基本圈子,又有何难?难不难,只有经验积累到一定程度或者你在这一领域一直做,摔打痛了才能体会。
正所谓不当家不知道柴米油盐贵。只要你知道了柴米油盐贵,那么你就是一个资深当家的了。当然,就平台架构方面,有比我牛逼很多的人,我也碰到过一两个,我甚至知道的任何东西,对他来说都是他的子集,那么这种人发表言论,我不会用资深来形容,我会用“大师”来形容。
本篇来说,和12306没有半毛钱关系。只是跳出一个圈,进入领一个圈来说问题罢了。另外强调一下,发帖归发帖,评论归评论,各位兄弟尽可能以技术为为出发点。