专栏首页Java学习网好的程序员做不出好的软件设计

好的程序员做不出好的软件设计

  你不能看到一个程序员还不错,就把他推到系统分析师、软件设计师或软件架构师的位置上。

  如果你在团队或公司里寻找一个能胜任软件架构师或设计师这样重要位置的人时,首先出现在脑子里的想法通常是在程序员中选一个最好的。别这么干。这样的位置不是随意的找个不错的程序员就能胜任的。把你最资深的程序员晋升到这个位置也未必就合适。

  乍一听你可能感觉荒诞。为什么我不能让一个程序员去做系统设计呢?毕竟,他们是设计程序的,不是吗?的确是的,没错。但你要明白的事情是,设计软件相对于编写程序,它需要的是一套完全不同的技能。

  让我们来看看为什么一个好的程序员就未必可以做一个好的软件设计师。但首先,让我们来问问自己一个问题,是什么让一个程序员变的优秀,甚至杰出?要想成为一个好的程序员,你需要有能力实现真实世界里重要的软件。只能够写出一个简单的文本编辑器是远远不够的。

  为了能做到可以解决重大的、复杂的编程问题,一个程序员需要在某个特点的编程语言上进行数年的经验积累。也就是说,为了能熟练的使用这种语言、熟悉这种语言的各种特色,他必须专注于这种语言。问题就在这儿。

对于只有锤子的人,他能解决的问题就是钉钉子

  如果你专注于一种语言,并能做到精通掌握,那你遇到的问题模式很可能就限制于跟这种语言相关的领域。简言之,如果你懂PHP,那所有的问题都基本上是跟Web开发相关。相同的道理,如果你全部的知识都集中在Java上,那你对所有问题的解决思路都会沿着面向对象的方向,即使是使用过程式编程对于解决你的问题会更优的情况下,你也会如此。

  一个程序员,只懂得一、两种编程语言,这会严重的限制他的解决问题的能力。例如,如果你的编程语言是C语言,对于手头出现的问题,你绝对不可能想出一种面向对象的解决思路,因为你的编程语言不提供这样的语言特征。跟Haskell程序员不一样,C++程序员不可能想出函数式解决方案。你的编程语言里提供了结构体和枚举类型与否,会严重的影响你剖析一个问题的方式。如果你使用的语言的能力很弱,或你只知道少数几种语言,你解决问题的能力相应的会被削弱。

语言塑造了我们的思维方式

  有人说,我们的语言塑造了我们的思考和认知这个世界的方式。我基本上认同这个观点。当一个人的母语里的名词都有性别之分时,他一定不会同说其它种母语的人那样一提起“警察”这个词就基本上认为是男的。当一个人的母语里对蓝色和绿色不区分时,他对世界的感知会和那些有区分的人的感知大不一样。

  如果我们回首中世纪学校的三学科,它们被描述为:语法解决概念和对象如何在书写和话语中被表现,用逻辑对它们进行分析,最终以修辞为目的同他人交流。对于我们来说,编程语言也有语法。如果我们的编程语言不够强,我们对事物和概念的认识以及对如何表达它们都不会有完整的视野。

  语言,我们用来跟人们、跟计算机交流的功能,明显的影响着我们的思考方式。我们对语言知道的越丰富、越多,越能帮助我们提高解决问题的能力。

那么,什么样的人更合适?

  那么,一个在某一两种编程语言里具有专长的程序员,在当他解决一个问题时,会存在一定的局限。他会局限于他使用的语言允许他做的事。因此,他不会成为一个好的软件设计师或分析师。

  如果我们不用这些优秀的程序员,谁又能担当软件设计的任务呢?当然不会是那些完全不懂编程的人了。我们需要的是一种通才。一个优秀的软件设计者必须通晓过程式,面向对象式,函数式,以及逻辑式编程语言 —— 还包括各种优秀的软件开发方法论。他不能只熟悉一种方法模式、像一个专业领域人员那样。当然,他自己并不能写出复杂的程序,因为他的知识太宽泛。尽管如此,他却能正确的判断出怎么样的设计才是一个正确的解决方案。如果问题是处理一个钉子,他会找来一个熟练使用锤子的人;如果问题是处理一个巨石,他会叫来爆破部队,而不是让你徒劳的用锤子白费力气。

本文分享自微信公众号 - Java学习网(javalearns),作者:javalearns

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-11-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 兴趣与坚持:程序员从初级到中级10个秘诀

      在一封与TechRepublic会员交流的邮件当中,他提到了面向程序员的博客、文章及杂志分成两类:面向初学者类(“hello world”这种类型的教程)以...

    用户1289394
  • Java面试专题之一:面试官问你,为什么选择做一名程序员?

    首先,要明白面试官问你这个问题的目的是什么,他这么问,无非想了解你的技术功底和对技术热爱程度,想知道你是半路为了谋生不得已才选择呢,还是自己本身喜欢程序员这份工...

    用户1289394
  • 成熟到优秀的瓶颈问题

      很多程序员到了成熟阶段后,就会处于一个停滞状态。技术上已经驾轻就熟,工作上已经按部就班,心里虽然感觉有些不甘,但是何去何从他们显得很茫然很无助。我认为程序员...

    用户1289394
  • python和Java,哪个更适合初学者。

    我个人不是很喜欢讨论这个问题,为什么呢,每个人都学习能力不一样,你要是不行,哪个对于你也不简单。

    7537367
  • Java和Python哪个更适合初学者的问题

    我个人不是很喜欢讨论这个问题,为什么呢,每个人都学习能力不一样,你要是不行,哪个对于你也不简单。

    王炸
  • 为什么C语言屹立不倒?

    近年来,谷歌一直致力于开发出自己的编程语言以取代当今世上最常用的C、C++和JavaScript。在系统语言方向,谷歌的Go语言能够为用户在数据中心内建立大型软...

    程序员互动联盟
  • 用什么语言的程序员最抢手?招聘网站数据告诉你,Python都没进前五

    昨天,美国程序员招聘网站Hired发布的《2019软件工程师状态》报告中指出,基于市场供需来说,Go语言使用者目前最受招聘市场欢迎。

    量子位
  • 有人说软件开发工程师是一个很高大上又高不可攀的职业,你认同吗?

    从事软件开发多年,如果不出什么意外还会继续玩下去,软件开发说白了就是一个混口饭吃的职业,说的高大上一点就是一种兴趣爱好,每天不敲几行代码心里总会感觉欠缺点什么东...

    程序员互动联盟
  • 【程序源代码】《JAVA基础》之程序员不是青春饭

    时令已经过了白露,转眼就快到了中秋佳节,天天渐渐变凉,一派秋天肃杀的景象。2020年注定是一个不平凡的一年。新型肺炎带来的影响还在持续。生活和经济都蒙上了一些不...

    程序源代码
  • Bug不Bug的,今天一起来致敬程序员 节日快乐

    首先说男人都会过什么节日?好多节日都是女性朋友过的,比如妇女节/女生节/情人节/白色情人节/母亲节/圣诞节……更不用说还有各种纪念日之类的。18岁以后的男生朋友...

    港湾人儿

扫码关注云+社区

领取腾讯云代金券