软件工人还是软件工匠?
有人给我提了这么一个问题:
如何提高软件开发的效率、同时提高质量,sun总是有层出不穷的方法。然而,利其器,也要正其心。我总认为是存在适合从事软件开发的某些性格的。具备这些性格的,就是天生的程序员。性格可能很难改变,但心态是可以改变的。当你需要成为一个职业的程序员时,即使性格不合,那也要端正心态。什么是程序员应有的心态?
说实在的,这个问题太大了,一时间不知道如何说起。凌乱有些想法,就凌乱着说吧。
记得在《程序开发心理学》那本书里面,就提到了程序员特有的一些性格特质,好像确实是这样的,优秀的程序员们好像在性格上都有很多相同点,比如偏执甚至孤僻等等。但我确实知道有些人不是这样。
记得我好像很多次在不同的场合,提到过一个观点,就是我很不喜欢“软件蓝领”这种说法。极端的说,我觉得这是那些根本就不知道软件开发是什么一回事的一般家伙,不负责的将制造业的术语照搬到软件领域之中,非常随意的提出来的一个名词。更甚之,我觉得这个称呼潜意识中有着一种轻蔑的成分。
我一直都觉得软件工程师这种称呼比较贴切。在《软件工艺》中,提出了一个新名词“软件工匠”,这个说法很不错。工人,工匠,一字之差,却正好道出了我所要表达的意思。程序员不是干体力活的,写代码也不是挖土方。他们应该是艺术家,或者说是工匠,写程序本身是一件非常有创造性的活动。
很不幸的是,我发现很多程序员自己都非常认可“软件蓝领”或者“软件工人”这种说法。
可能,这就是不同的心态,决定了两种程序员不一样的结果。认可自己是“工人”的那一部分,是如何看待开发这个事情的,我不可能说的很清楚,因为我从来都不属于哪一部分。但是自认为是“工匠”的这一部分,则很清楚。
作为一个匠人,自己所写的每一行代码,每个模块,每个系统,都是自己的一件作品。就像所有艺术家对待自己的作品一样,每到要把它们拿出去示人之时,总是战战兢兢如履薄冰,唯恐其中的瑕疵给自己的名声抹上污点。
正是因为有了这种惶恐,所以他们才会不断的改进自己的作品(即使被冠以“代码洁癖”的帽子也无怨无悔),一段代码或者一个系统,总是改了又改,重写了又重写,不到自己觉得满意绝不轻易示人。为此所付出的时间、心血、精力,在他们来说,只是为了得到一种内在的自我肯定,往往无法获得任何外在的利益或者奖励,但他们依然乐此不疲。
正是因为这种内在动力,所以他们往往在从事这种工作的时候,往往能够体验到旁人所难以理解的那种自我满足的快乐。也正是这种内在的动力,能够更长时间的驱使他们保持这种让旁人无法理解的兴奋状态。所以,另一个区别是,优秀的程序员往往都是快乐的程序员,不优秀的则往往不是。
如何提高软件开发的效率、同时提高质量,sun总是有层出不穷的方法。然而,利其器,也要正其心。我总认为是存在适合从事软件开发的某些性格的。具备这些性格的,就是天生的程序员。性格可能很难改变,但心态是可以改变的。当你需要成为一个职业的程序员时,即使性格不合,那也要端正心态。什么是程序员应有的心态?
说实在的,这个问题太大了,一时间不知道如何说起。凌乱有些想法,就凌乱着说吧。
记得在《程序开发心理学》那本书里面,就提到了程序员特有的一些性格特质,好像确实是这样的,优秀的程序员们好像在性格上都有很多相同点,比如偏执甚至孤僻等等。但我确实知道有些人不是这样。
记得我好像很多次在不同的场合,提到过一个观点,就是我很不喜欢“软件蓝领”这种说法。极端的说,我觉得这是那些根本就不知道软件开发是什么一回事的一般家伙,不负责的将制造业的术语照搬到软件领域之中,非常随意的提出来的一个名词。更甚之,我觉得这个称呼潜意识中有着一种轻蔑的成分。
我一直都觉得软件工程师这种称呼比较贴切。在《软件工艺》中,提出了一个新名词“软件工匠”,这个说法很不错。工人,工匠,一字之差,却正好道出了我所要表达的意思。程序员不是干体力活的,写代码也不是挖土方。他们应该是艺术家,或者说是工匠,写程序本身是一件非常有创造性的活动。
很不幸的是,我发现很多程序员自己都非常认可“软件蓝领”或者“软件工人”这种说法。
可能,这就是不同的心态,决定了两种程序员不一样的结果。认可自己是“工人”的那一部分,是如何看待开发这个事情的,我不可能说的很清楚,因为我从来都不属于哪一部分。但是自认为是“工匠”的这一部分,则很清楚。
作为一个匠人,自己所写的每一行代码,每个模块,每个系统,都是自己的一件作品。就像所有艺术家对待自己的作品一样,每到要把它们拿出去示人之时,总是战战兢兢如履薄冰,唯恐其中的瑕疵给自己的名声抹上污点。
正是因为有了这种惶恐,所以他们才会不断的改进自己的作品(即使被冠以“代码洁癖”的帽子也无怨无悔),一段代码或者一个系统,总是改了又改,重写了又重写,不到自己觉得满意绝不轻易示人。为此所付出的时间、心血、精力,在他们来说,只是为了得到一种内在的自我肯定,往往无法获得任何外在的利益或者奖励,但他们依然乐此不疲。
正是因为这种内在动力,所以他们往往在从事这种工作的时候,往往能够体验到旁人所难以理解的那种自我满足的快乐。也正是这种内在的动力,能够更长时间的驱使他们保持这种让旁人无法理解的兴奋状态。所以,另一个区别是,优秀的程序员往往都是快乐的程序员,不优秀的则往往不是。