位置: Linuxeden主页> 新闻动态>

所谓软件工程

来源:yinwang.org 作者:yinwang.org
  


 很多编程的人包括我,头衔叫做“软件工程师”(software engineer),然而我却不喜欢这个名字。我喜欢把自己叫做“程序员”(programmer)或者“计算机科学家”(computer scientist)。这是为什么呢?这需要从“软件工程”(software engineering)在现实中的涵义谈起。

有人把软件工程这个领域的本质总结为:“How to program if you cannot?”(如果你不会编程,那么你如何编程?)我觉得这句话说得很好,因为我发现软件工程这整个领域,基本就是吹牛扯淡卖“减肥药”的。软件行业的大部分莫名其妙的愚昧行为,很多是由所谓“软件工程专家”发明的。总有人提出一套套的所谓“方法论”或者“原则”,比如 Extreme Programming,Design Patterns,Agile,Pair Programming,Test Driven Development(TDD),DRY principle,…… 他们把这些所谓方法论兜售给各个软件公司,鼓吹它们的各种好处,说使用这些方法,就可以用一些平庸的“软件工程师”,制造出高质量低成本的软件。这就跟减肥药的广告一样:不用运动,不用节食,一个星期瘦 20 斤。你开头还不以为然,觉得这些肤浅的说法能造成什么影响。结果久而久之,这些所谓“方法论”和“原则”成为了整个行业的教条,造成了文化大革命一样的风气。违反这些教条的人,必然被当成菜鸟一样的鄙视,当成小学生一样的教育,当成“反革命”一样的批斗。就算你技术比这些教条的提出者还高明不知道多少倍也一样。

打破这些软件工程专家们制造的幻觉的一个办法,就是实地去看看这些所谓专家们自己用这些方法论做出了什么好东西。你会惊奇的发现,这些提出各种玄乎其玄的新名词的所谓“专家”,几乎都是从不知道什么旮旯里冒出来的民科,没有一个做出过什么有技术含量的东西,他们根本没有资格对别人编程的方式做出指导。这些人做出来少数有点用的东西(比如 JUnit),其实非常容易,以至于每个初学编程的人都应该做得出来。可世界上就是有这样划算的职业,你虽然写不出好的代码,你对计算原理的理解非常肤浅,却可以通过一些手段,得到评价别人的“代码质量”的权力,占据软件公司的管理层位置。久而久之,别人还以为你是什么泰斗。你仔细看过提出 Java Design Pattern 的四个人(GoF),到底做出过什么厉害的东西吗?没有。提出“DRY Principle”的作者,做出过什么好东西吗?没有。再看看 Agile,Pair Programming,TDD……的提出者?全都是一群饭桶。他们其实根本就不懂很多编程的东西,写出文章和书来也是极其肤浅,一知半解。

所谓“软件工程”,并不像土木工程,机械工程,电机工程,是建立在实际的,科学的基础上的。跟这些“硬工程”不一样,软件弄得不好不会出人命,也不会跟做芯片的公司那样,出一个 bug 立即导致上亿的损失,身败名裂。所以研究软件工程,似乎特别容易钻空子,失败了之后容易找借口和替罪羊。如果你说我的方法不好,你有什么证据吗?口说无凭,我浪费了你多少时间呢?你的具体执行是不是完全照我说的来的呢?你肯定有什么细节没按我说的做,所以才会失败。总之,如果你用了我的办法不管用,那是你自己的问题!

想起这些借口我就想起一个笑话:两夫妻睡觉发现床上有跳蚤,身上被咬了好多大包。去买了号称“杀伤率 100%”的跳蚤药,撒了好多在床上。第二天早上起来,发现又被咬了好多新的大包。妻子责怪丈夫,说他没看说明书就乱撒。结果丈夫打开说明书一看,内容如下:

本跳蚤药使用方法:

  1. 抓住跳蚤
  2. 掰开跳蚤的嘴
  3. 把药塞进跳蚤嘴里
  4. 合上跳蚤的嘴

我发现很多软件工程的所谓方法论失败之后的借口,跟这跳蚤药的说明书很像 :)

人都想省钱,雇用高质量的程序员不容易呀,所以很多公司还是上钩了。他们请这些“软件工程专家”来到公司,推行各种各样的软件方法论,可是发现最后都失败了。这是为什么呢?因为再高明的方法论,也无法代替真正的,精华的计算机科学教育。直到今天还有很多公司推行所谓的 Agile,煞有介事的搞一些 stand-up meeting, scrum 之类的形式主义东西,以为这些过家家似的做法就能提高开发质量和效率。很多开发人员也很把一些软件工程的工具当回事,喜欢折腾 Git,Maven 等工具一些偏僻的“新功能”。他们很在乎所谓的版本控制,测试等东西,以为熟练的掌握这些就能开发出高质量,可靠的代码。可是你最后发现,无论你如何高效的使用这些工具,它们都只能起到辅助的,次要的作用。编程工具永远不是程序本身,对编程工具的熟练掌握,永远也无法代替真正的对程序和计算的理解。过分强调这些工具的使用,是本末倒置的,让工程走上失败道路的作法。

编程真的是一门艺术,它完全符合艺术的各种特征,编程界也充满了艺术界的独有特征。有些初学艺术的人(比如 10 年前的我),总是挑剔手上的工具,非要用最新最炫的工具,用它们最偏僻最难用的“特性”,才觉得自己能够做出优秀的作品。很多人照不出好的照片,就怪相机不好。买了几万块钱的笨重高档相机,照出来的照片还不如别人用手机照的。这些人不明白,好的摄影师和不好的摄影师,区别在于眼睛,而不是相机。一个真正的艺术家,可以用任何在手上的工具创造出色的作品。有些甚至可以用一些废品垃圾,拙劣的工具,做出杰出的,别具风味的艺术品。因为艺术存在于人的心里,而不在他们使用的工具里面。


时间:2015-08-25 12:45 来源:yinwang.org 作者:yinwang.org 原文链接

好文,顶一下
(1)
14.3%
文章真差,踩一下
(6)
85.7%
------分隔线----------------------------
  • 上一篇: 「程序员」还是「代码生成器」?
  • 下一篇: 谈程序的正确性
  • 我要评论!
  • 收藏
  • 挑错
  • 推荐
  • 打印


把开源带在你的身边-精美linux小纪念品
无觅相关文章插件,快速提升流量

聚圣源根据唐诗起的女孩名字怎么取名商标起名静秋扮演者姓侯的男孩可以起什么名字起个好听的微信名字黄仁勋魔兽争朱宝宝起名大全女人西甲一共几轮实习鉴定评语唐艺简介资料个人魔幻迷宫蔬菜的公司起名洛克王国外挂Nudeboobs中国梦是什么人均可支配收入什么意思属鼠男孩取名起名大全你是我的城池营垒电视剧免费观看男孩姓庄起什么名字更好李白清catiav5建党100周年庆祝大会初雪的诗句开店起什麽名nobook霂字为什么不让起名上海起名的大师排行公司起名字大全免费两个字的大师与玛格丽特淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化