一个老码农的技术理想

小时候,老师问我,你的理想是什么?我不假思索说是工程师,于是长大之后果然成了工程师。

工作这么多年,一直在思考工程师这三个字的意义,终于有一天恍然大悟,原来就是:用技术手段改进世界。

那么,在软件方面,目前的世界有哪些问题需要解决呢?有这么一些问题可以思考:

现在整个世界的信息化程度是偏高还是偏低?

程序员的人数够用吗?

软件行业的生产力是偏高还是偏低?

大部分软件系统都可靠吗?

我想说说自己对这几个问题的理解。

虽然现在我们的生活与十年前相比,已经发生了巨大变化,比如智能手持设备已经非常普及,可穿戴设备也在蓬勃发展。十年前我们用手机收发短信或者邮件,浏览非常简单而老土的wap页面,但现在,绝大部分人的手机已经取代了电脑,成为日常生活中不可缺少的工具。

我们用手机交流,购物,欣赏影视,阅读书籍,玩各类游戏,尤其是飞速发展的移动购物和支付体系,使得我们能在任意场合购买心仪的物品,订购旅游服务和宾馆,叫快餐,打车等等,生活非常美好,那么,整个世界的信息化程度处于什么级别呢?

我觉得,才刚刚相当于小学二年级,整个世界的信息化程度仍然严重偏低。从现在算起,往前10年,往后10年,这20年时间中,面向个人的信息化服务处于高速发展期,这个领域非常吸引眼球,因为它与每个人的生活息息相关。可是,另外有一些领域,却非常需要发展,那就是传统行业的信息化。

之前有不少传统行业,进行了一定程度的信息化,但这个信息化仅仅能满足自身运作的基本要求,当它与整个社会的潮流相对接的时候,就显得非常落后,迟缓。比如说在网购这个大体系中,普通用户所能看到的是商品展示,比价,下单的过程,但背后的核心环节却是配货与物流。

我还在上学的时候,有老师这么说过,现在计算机行业非常火热,很可能要饱和了,你们不一定非要从事这方面的工作。现在回头看这句话,觉得很有趣,人真的很难有眼光看到未来。去年我入职苏宁培训的时候,孙为民副总讲了当年一个决策失误的例子。90年代末,公司统计发现全国空调的年销售量达到数百万台,觉得很可怕,这个行业可能要饱和,估计要再想办法拓展别的商品经营了,但现在,全国空调的保有量为七亿台,即使完全没有新增,十年换一轮,每年也卖得出去七千万台,当年凭什么说这就饱和了?

所以我现在看程序员的状况,仍然是供不应求,尤其是高端程序员,十分抢手。这个问题的背景就是全社会的信息化进程在加速,之前的程序员人数远远跟不上需求量。

那么,如何解决这个问题呢?一方面是继续培训,促使更多新人来到这个行业,并且认真做下去,另外还有一些别的手段需要考虑。

我想追问一个问题:世界上懂业务的人多,还是懂技术的人多?很明显,懂业务的人要多很多,什么叫业务?其实就是行业常识,生活经验。

比如说,一个有经验的仓库保管员,可能文化程度不高,理解不了软件的运行原理之类,但一定对产品出库入库的流程非常熟悉,包括各种审批过程和异常状况,但这些,程序员是不懂的。那如果要促进这个领域的信息化,必然要在两者之间寻找一个结合点,程序员可以学业务,业务人员也可以尝试参与软件研发过程,目前来说,都是前者比较多,因为程序员相对来说还是比较年轻,学东西快些。但从整体社会效益来说,这其实是不利的,因为程序员是更稀缺资源,而传统业务人员非常多。

之前见过一个问题:如何让业务人员更好地参与软件研发过程。这个问题的根本解决方法是DSL(Domain Specific Language),核心解决方案是二次开发平台。

什么是DSL和二次开发平台呢,这两个词听上去很高端,但其实大家有很常用的东西就属于这个范畴,比如Excel,它提供了各种各样的公式,还有VBA,使用这些东西的人绝大部分不是软件行业的,Excel就是一种很成功的二次开发平台,公式和VBA就可以算DSL了。

很多时候这些东西还不够直观,我们可以看到一些图形化的编程语言,比如Scratch,现在很多小学生的兴趣班就会学,这些东西相对学起来就比较容易了,我们也可以做一些类似的抽象,以图形化的方式让业务人员能够参与,比如流程配置等等。图形化的东西,是最适合非技术人员理解的。

所以,要促进社会的信息化程度,最好是能够想办法把各行业的业务人员都拖进来一起搞。具体的分工大致是:技术人员和业务人员一起定义DSL,技术人员负责DSL的底层平台实现,业务人员负责使用它来构建业务模型和业务流程,甚至业务界面。

那么,软件行业的生产力是偏高还是偏低呢?我认为严重偏低。什么叫严重偏低?如果以机械力量的变革来对比,软件行业目前的生产力水平处于蒸汽机发明之前。也就是说,生产力远远没有被解放,大家做的大部分东西将来是会被机械化的,不再需要这么多人来做这么重复的劳动。可能很多人会对这段话不满,怎么就重复劳动了,你说说我做的什么是可以被机器替代的?

换个角度看,为什么几乎所有外行都觉得软件贵呢?因为人力成本太高了,他们觉得,做出这么多东西,应该是不需要这么多时间。为什么双方的反差这么大呢?

我觉得其中的关键点在于绝大部分工作的抽象程度严重不足,另外有很大一部分效率损失在编程平台或编程语言的不完善,比如Web前端。

从第一代到第四代编程语言,每一代都是损失一定运行效率,而大幅提升编写效率。随着硬件技术的发展,软件编程必然越来越粗放,大的趋势是不特别重视细节效率,只要没有数量级的性能损耗。

所以我们可以预期,会有越来越多的人使用一些运行效率相对不怎么高的语言或框架,只是为了提高单位时间的生产力。从老板们角度想,也会明白,提升运行机器的性能,要比多雇几个程序员便宜多了。因此,从整体趋势看,追求细节性能的程序员们恐怕会离自己的理想越来越远了,除非是在某些特定领域。

那么,绝大部分软件系统都可靠吗?我换一句话来问:各位程序员朋友,如果你们住的房子质量跟你们正在做的软件一样,你敢住吗?感觉大家都在笑,笑是什么意思,我们都懂的。

那为什么软件系统的质量不容易高呢?我觉得主要原因是流程不完善。那为什么不完善?需求容易变。为什么容易变?是因为不论程序员自己,还是需求方,其实潜意识都认为自己做的东西是变更成本较低的。

试想一下,为什么没人在盖高楼盖一半变更需求?为什么没人修大桥修一半变更需求?甚至做衣服做一半的时候变更需求,理发到一半变更需求,都会被人认为是不讲理。但是在软件领域,好像这倒成了普遍现象。

因为整个软件系统的实现,都是虚拟的,看不见摸不着,并不消耗什么物料,所以从这个角度想,变起来当然是容易的。但软件系统的架构,其实也跟实体的没本质区别,变更时候要考虑很多关联因素,并不是就那么孤立的看一小块地方,当然,也会有一些不影响全局的变更。打个比方说,如果你在盖房子盖到一半,那变更外墙颜色肯定是要比变更窗户大小容易的。要是想变得太多,估计只好拆了重来。

我见过不少公司是通过加强测试的方式来试图控制质量,但个人觉得这种方式不划算,而且收效不高。要想很好地应对需求变更,很重要的一点就是不要有这个软件一定不会改的想法,然后,从架构上做拆分,隔离,组件化等等,力争做到即使要改,也只改某一块的内部,不影响别的地方。

很多软件公司,一方面不注重架构的设计与宣贯,导致变更的时候问题多多,程序员也不能很好领会架构意图,一方面忽视整个过程中对架构的管控,认为架构只是最初那张静态图。

任何一种架构方案,都需要一个良好的管控机制。没有哪个盖大楼的只认真管设计图纸,不控制施工过程。架构其实是跟施工过程严格相关的,架构并不是一张扁平的图,而是一个立体的东西,作为整个系统工程的骨架。如果能在开发的时候看到这个骨架逐渐建立,血肉充盈的过程,对整个系统的成功把握一定会大

得多,这也就是开发过程中架构管控的理念,具体实现要依赖于不同场景。

所以,将来的软件开发方案,一定是会朝着几个方向发展:

高生产力,单位时间生产效率更高,普通人员也可以参与

高可控性,整个生产过程更加完备可靠

有时候看现在的小孩子,会觉得他们很幸福,因为等他们这代长大,就不需要像我们现在这样编写程序了,那时候,编程已经成了一种令人习以为常的通用技能,就像现在的人用Office软件一样,所谓的编程,很可能已经不需要敲代码了,而是图形化,设置几个参数就完事了。

本文来自开源中国社区 [http://www.oschina.net]

时间: 2024-11-05 20:34:49

一个老码农的技术理想的相关文章

徐飞:老码农的技术理想

小时候,老师问我,你的理想是什么?我不假思索说是工程师,于是长大之后果然成了工程师. 工作这么多年,一直在思考工程师这三个字的意义,终于有一天恍然大悟,原来就是:用技术手段改进世界. 那么,在软件方面,目前的世界有哪些问题需要解决呢?有这么一些问题可以思考: 现在整个世界的信息化程度是偏高还是偏低? 程序员的人数够用吗? 软件行业的生产力是偏高还是偏低? 大部分软件系统都可靠吗? 我想说说自己对这几个问题的理解. 虽然现在我们的生活与十年前相比,已经发生了巨大变化,比如智能手持设备已经非常普及,

老码农的技术理想

小时候,老师问我,你的理想是什么?我不假思索说是工程师,于是长大之后果然成了工程师. 工作这么多年,一直在思考工程师这三个字的意义,终于有一天恍然大悟,原来就是:用技术手段改进世界. 那么,在软件方面,目前的世界有哪些问题需要解决呢?有这么一些问题可以思考: 现在整个世界的信息化程度是偏高还是偏低? 程序员的人数够用吗? 软件行业的生产力是偏高还是偏低? 大部分软件系统都可靠吗? 我想说说自己对这几个问题的理解. 虽然现在我们的生活与十年前相比,已经发生了巨大变化,比如智能手持设备已经非常普及,

New issue 老码农的技术理想

小时候,老师问我,你的理想是什么?我不假思索说是工程师,于是长大之后果然成了工程师. 工作这么多年,一直在思考工程师这三个字的意义,终于有一天恍然大悟,原来就是:用技术手段改进世界. 那么,在软件方面,目前的世界有哪些问题需要解决呢?有这么一些问题可以思考: 现在整个世界的信息化程度是偏高还是偏低? 程序员的人数够用吗? 软件行业的生产力是偏高还是偏低? 大部分软件系统都可靠吗? 我想说说自己对这几个问题的理解. 虽然现在我们的生活与十年前相比,已经发生了巨大变化,比如智能手持设备已经非常普及,

老码农:如何写出让自己满意的代码

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 今天有位朋友在微博上问我这样一个问题: "@老码农的自留地 ,最近出于学习目的写一个管理系统,越到后边,越觉得自己前边的代码写得烂.前辈,我想让代码写得更好一点,能不能谈谈你的经验,给我指点一下!" 我在回复里刚写了几句,就意识到140个字很难把我的想法说清楚,本着知无不言言无不尽的好为人师精神,我决定把我的回答写成一篇博

老码农:关于需求分析的几点体会

中介交易 SEO诊断 淘宝客 云主机 技术大厅 在我前面写的一篇博文<如何写出让自己满意的代码>中,有读者在评论中提到了用户需求不确定导致在总体设计阶段总是无的放矢的问题.需求分析当然是非常重要的,甚至在某些情况下比总体设计还更重要.那么,如何理解需求分析呢? Google一下关键字"需求分析",网上已经有很多相关的文章了,有不少已经写得像教科书一样全面准确,还提供了一些最佳实践的分类方法.我这篇就从个人经验方面谈一点自己的体会好了. 首先,最重要的一个问题就是,为什么要做

一个初级码农的测试之旅(一)——初识单元测试

前言 首先说一下我自己--一个码农,准确的讲我是一名在中国最大互联网公司搬砖的初级码农.我不是计算机科班出身,一年前进入公司的时候,从未接触过web开发,没有完整的学习过数据库知识,写不出一条完整的sql语句,甚至不知道js和css到底是怎么控制页面行为和样式的--这样的人为什么可以通过面试?反正不是因为我长得帅. 背景知识 文章最初,先介绍一下我们团队的产品--阿里云持续交付平台(crp.aliyun.com),是一个旨在服务阿里云上众多开发者的持续交付平台(你可能还没听说过,但不妨一试哦),

投资域名还有机会吗?一个老米农的答案

中介交易 SEO诊断 淘宝客 云主机 技术大厅 互联网的高速发展催生了很多的行业,如站长,SEO等等,而其中最活跃的一部分人被人称之为:"米农".此名的由来是由于域名的谐音是玉米,而倒腾域名的也就成了为"米"劳作的"农民". 不知是天意还是巧合,在中国目前的现状来看,农民是一个低收入的群体,而互联网的农民"米农",也未能逃脱这个命运.除了极个别的几个如:蔡大哥之外.几乎都是大量买进,大量囤积.能赚钱的少,赔钱的居多,那么投资域

月薪3000元的码农到首席架构师的经历

"在微博平台,有幸结识了一帮趣味相投资深码农,离开以后很难再有这么一个团队来成长了--想想都是幸运,成天跟一群这么优秀的人在一起,想变差都不容易." 笔者. 我现在负责熊猫 TV 整体基础架构工作,是一个快 9 年工龄的码农.办公地点在 O2O 宇宙中心--望京 SOHO,附近的伙伴们可以随时约起. 我在 2007 年毕业,和很多同行一样,也是从小公司起步,曾做过 ERP,信息安全,互联网社交平台.游戏平台等,现在工作是直播娱乐平台.写过几年的语言有 Java.C/C++.PHP.Go

阿里巴巴六年码农自白

各位亲爱的网友朋友大家好,又到了回顾上周新闻的时候了.上一周热闹的事情比较多,我们把他们拆开来看一下. 首先看一下开发者感兴趣的话题.一提到开发,大家可能都会想到一个形容词,那就是"辛苦".的确,开发人员的工作量非常的大,所以很多开发人员被冠以了"码农"的称号.上周点击量第一的文章,标题就叫"一个阿里巴巴码农的六年回眸"这篇文章讲述了一个码农的六年心路历程,中心思想总结起来就是:"技术耐得住寂寞,低谷积累高峰冲刺,主动改变一切.&quo