让知识连接你我
投稿赚钱
当前位置: 首页 > 推荐 > 几千行代码就能搞定,你为什么要写几万行?
  • 101
  • 微信分享

    扫一扫,在手机上查看

几千行代码就能搞定,你为什么要写几万行?

2019.02.01 10:00 414 浏览 举报

  01

  让我们企业的 windows 版软件早已有很多年的时长,历经多个技术工程师的整顿过后,主题内容早已杂乱无序。

  以往三个月,我找时长自个重写了全部安装文件。本来数十万行的应用程序,无意间重写的仅剩数千行,功能性不会改变,工作效能更强,并且构架俨然。

  前几日进行 alpha 版过后,我禁不住捧腹大笑,欢笑声惊扰全部公司办公室。

  02

  在重写这一个应用程序的这一段的时候,前两个月,我每星期花在这一个应用程序上的时长应当并不会超出四个小时。

  随后我借着农历新年不知道干什么,跑到企业上夜班数天,可是天写应用程序的时长也并不会超出四个小时。

  一般而言我白天写两、三个小时的应用程序,遇到瓶颈就去忙别的事,或者干脆回家吃晚饭,晚上睡觉前,躺在床上用手机查下资料,第二天上班走在路上,就会很自然的想到不错的解法。

  写应用程序是种艺术创作,并不是做苦工,不可以每日在电脑前面枯坐十多个小时,要不然超时工作中,总是让自个的脑筋显得更糊里糊涂。

  我所认得的很多写应用程序高手,每日写应用程序的时长都并不会过长。那么,我的职业类型历经是怎么的呢?

  03

  1995 年的情况下,有天在美国盐湖城,我陪着趋势科技的创建人张明正扶着过马路。

  他忽然对你说:“宜敬,我着实弄不懂,在软件这一个制造行业,个出色的技术工程师的创作能够随便抵得上、二十个平凡的技术工程师,可是企业较多只有付他两、三倍的薪水。那为何再有企业想要付钱雇佣那种很平凡的技术工程师呢?”

  那时候我博士刚毕业后,或许不清楚要怎么回应他的难题;而如今已过这些年,我依然不清楚要怎么回应那种难题。

  而那时候张明正会跟我说那种难题,应当是由于我介绍了几个同学跟好朋友到趋势科技工作中。那几个全部都是以当十、以当百的高手。

  趋势科技那时候没有帮他们十倍、百倍的薪水,可是对他们也不薄,给了他们不少的股票。

  随后趋势在上市,我那几个好朋友都成了亿万富翁,财富应当超出般技术工程师的十倍、百倍吧?

  04

  假如是土木工程或是制造业,人越多越好、创作就会越大。假如个计划方案拖延了,就多调些每人进来协助。

  可是在软件工程里,人越多越好,就越想无法协调,写下来的应用程序也因此质量越差、工作效能越糟心。

  这就是说知名的:"the mythical man-month: addinanpower to a late software makes it later"。

  ibm 在 1960 年代 os/360 作业软件时,就发现了这一个独特的状况。

  所以我也搞不懂,大型软体公司雇用了那么多的软体工程师干嘛?

  05

  我在当兵的时候,有阵子在台中十军团的资讯中心担任资讯官。

  那时候我手下有两名资讯科系毕业的大专兵,但是我嫌他们两人写程序写的太慢,而解释给他们听更是费事,还不如我自己动手写比较快。

  所以我就叫他们到边凉快,所有的程序都由我来写就好。而他们两人觉得很不好意思,就泡了很好喝的奶茶给我喝。

  后来我们成了很好的朋友。

  06

  写程序并不是写的越长越好、越厉害。

  后来我去美国大学读电脑科学博士,毕业的时候喜欢跟朋友炫耀:「我的博士论文那个程序,功能那么强大,但是我只用了七、八千行程序就搞定了耶。」

  07

  二流的软体工程师,喜欢把简单的问题弄的复杂,写出别人看不懂的程序。

  流的软体工程师,喜欢把复杂的问题简单化,写出架构清楚明白的程序,让人看了之后,觉得问题好像很简单。

  三流的软体工程师会去崇拜二流的软体工程师,因为他们会觉得二流工程师写的程序都看不懂,定是超级厉害。

  三流的软体工程师不会去崇拜流的软体工程师,因为他们会觉得流工程师所做的事情都很好懂,好像都很简单。

  只有流的的软体工程师才会佩服流的软体工程师,因为只有他们才能看的出来,其他的流软体工程师厉害在哪里?

  中国的软体业如此,美国的软体业也大致如此。

  08

  直到 1980 年代末期,ibm 直是世界上最大的电脑公司。而当时 ibm 找了些原来是做硬体制造的高阶主管来管软体部门。

  那些高阶主管依照他们制造部门的经验,决定用 kloc (thousands linesof code),也就是每位软体工程师每年写出多少行程序来计算软体部门的效率。

  09

  要成为流的软体工程师,必须熟悉了解电脑科学的各种基础理论,也必须累积长时间的实务经验。

  我在大学电脑科学系读博士修课的时候,程序作业的份量非常重。上作业(operating )课的时候,教授要我们每个人独立写个包含 file 与 process 的迷你 unix 作业。

  上编译程序(compiler)课的时候,教授要我们每个人独立写个 compiler,而且每个模组还必须用两个以上的方法写,互相比较。

  而上 andy van dam 教授的电脑图学,那简直就是人间炼狱。当时助教发问卷调查,发现每位学生每周花在写那堂课的程序的平均时间超过四十个小时,学生们几乎要群起。

  但是修过上述那三门课而没有被当掉、又拿高分的,就成了懂理论又懂写程序的高手、高高手。

  10

  当年我在大学读博士的时候,我估计我们系上像我这种等级的写程序高手,大概有十来个吧?

  但是我们系上公认最厉害的写程序高手,还是我的指导教授 prof. steve reiss。他个人大概抵得上五到十个我们这种等级的工程师。

  关于他的传说很多。有次我去他的办公室找他,看到他正在玩接龙游戏。

  他被我发现了,有点不好意思,赶紧跟我说,他觉得 windows 上的接龙游戏很好玩,但是他没有 windows 电脑。

  所以他就花了四、五天,利用零散的时间在他自己的 sun work station 上面写了个类似的接龙游戏,包含彩色的图像接口等等。

  想玩电玩就自己写个?我很想笑,但又差点在我师父面前跪了下来。

  11

  我在大学认识的那些软体高手,后来真正以写程序为志业,写出伟大又广泛被使用的程序的,应该不多。

  因为有些人后来去当大学教授,教授通常是不会自己写程序的。久了之后,我不知道他们的功力剩下多少?

  有些人后来为了拿高薪,去些大公司写些很没营养又很无趣的程序。久了之后,我不知道他们的功力剩下多少?

  有些人后来进入产业界工作,没多久就升上了职,而职人员通常是不会自己写程序的。久了之后,我不知道他们的功力剩下多少?

  所以程序高手原本就不多,而直继续在写程序的程序高手就更是稀有了。

  12

  美国的软体业有个老笑话:如果有两个工程师在同个团队,个很会写程序,另个很不会写程序,那后来升上经理的,定是那个不会写程序的。

  因为团队需要那个会写程序的留下来写程序。

  13

  我写程序的功力最高的时候,应该是二十多年前我刚拿到博士的时候,那时候我又懂理论、又累积了大量的写程序经验。我不敢说自己能以当百,但是以当十应该是绰绰有余的。

  只可惜,没多久之后我就升上了职,而当上了经理、协理、总经理之后,如果还自己写程序的话,那是会被别人笑的。

  所以我就不再写程序了,而且我也学会,要在自己的部门多摆些工程师,否则阵仗不够大,会被别的部门瞧不起,也会被我的上司瞧不起。

  二十年下来,我的功力大概只剩下两三成。

  14

  我现在终于自己当了老板。而当上了老板之后,最大好处之,就是我高兴写程序就可以写程序。就算有人要笑我,我也可以不理他们。

  15

  我趁过年期间重写了我们公司的 windows 主程序,完成之后,自觉功力已经恢复到当年的三、四成,不禁大乐。


本文首次发布于开创者素材 ,转载请注明出处,谢谢合作!

相关文章推荐