XX城市软件行业批评
--当前问题、技术水平、技术意识
1 当前问题
一些公司的软件问题已经存在多年,就是无法解决,例如:
- 疑难BUG多年了一直无法解决,也搞不清楚什么原因,也没有思路去逐步探查。
犹如亚健康人,是活着,但就是不能有很健康的状态。或者像一个在大森林中转个怪圈的人,一直努力,一直转不出大森林。 - 内存异常问题。
例如C++里面的内存泄露和地址访问异常,不止一家公司有;
C#的null referrence就用try catch来隐藏了更可怕的的错误。 - 性能低下无法提高。
例如,数据量大了或者数据处理环节多了就效率低下难以处理;吞吐率上不去。
基本的动态扩容都不能自己处理。 - 代码模块化、复用不够,难以扩展。
不止一家公司说,每隔4年左右,系统要重写一次。
数据库访问要重写么?基本框架要重写么?核心算法要重写么? - 维护不易。
增加新的功能或者修改牵涉面大。 - 问题跟踪代价巨大。
出了问题,牵动全公司,连续加班,也未必有好的效率。
2 技术水平
比北上广低很多,这里的技术水平就决定了这里的产品质量。
- 缺乏真正有内功的架构师。
我在北京工作的第一家公司的老板告诉我:没有10年的开发经验,不可能是一个真正的架构师。可能要求过高,但一定有道理。 - 缺乏技术专家。
例如,有人说,64位的处理器,应该可以处理很多客户端的并发请求。我心想你是不是不懂计算机体系结构。 - 缺乏质量控制。
质量从架构到一行代码,都需要控制。 - 技术人员的自我要求低,一家公司可以做一生。
一个公司的负责人说:你为什么跳槽比较频繁?我说,我要看老板,要是在北京继续干,我会继续跟着邢总。否则,我要学习,我不可能干10年了,技术水平和阅历还是一条水平线。
3 意识缺陷:
理念造就了一切,这里落后,首先是理念上的错误、自以为是、满足:
- 非技术内行管理技术。
除了行政管理和项目协调,疑难技术问题无法提供指导。最后,上下都应付了事。
管理者长居不下,新鲜血液无法补充,技术就原地踏步。
- 不考虑架构和代码质量。
很多人跟我说架构就是CS,BS,多层。我心想架构是一项创造性的工作,这几个词就是架构,外行这么说还行。
代码质量,--这个问题细节太多。
- 认为招一个架构师就可以解决各种框架和复杂问题。
真正有水平的架构师为什么要到这里来找工作?就那么普通的待遇?适应这里的工程师和企业文化?
- 认为只要编码,以及给出业务方案就够了。
一些公司连标准的进程通信都不会,怎么做多应用的产品。
问他:让你做一个webservice,要分几层?没人说清楚。
这些问题怎么解决?就是一套不难的做法:
- 贯彻一组理念,
- 创造性的思维过程,
- 因情而异的操作和实验。
这组理念很简单,但做起来很不容易,是软件工程的基本内容。这些理念也是司空见惯的:跟踪、复用、性能、伸缩、稳定。能够做到这些,就是一名真正的架构师。
- 跟踪:问题如果无法或者不易跟踪,如何快速有效解决产品初期的BUG满足客户需求?
- 复用:有人说每隔4年我们重写一次。原因之一是没有搞好复用。
- 性能:算法和架构,这是软件的核心。
- 扩充:系统不能伸缩,就难以实现新的需求。
- 稳定:不用说了,但是有一组基本要求来保证的。
如果做到这些,公司就不会说技术上有问题,那么就等于肯定了。如果没有做到这些,很多家公司都会表现不同的问题。
软件的复杂在哪里?5个理念的每一个方面,都可以写一个章节,或者写一本书也可以。理论再多也没有用,不把每一个方面贯彻到每一天的工作中,体现在每一行代码中,每一个函数中,每一个类中,就如同你的健康:只有全身所有系统都健康了才是真正的健康。