软件工程与程序员
为什么要学软件工程?很多人认为软件工程是项目管理的学问。换而言之,就是说对一般程序员而言其意义不大,只是为了理解经理的管理而已(与政治何异?几乎暗中有bs之嫌)。也有很多人便说程序员对于一个成功的人来说只是一个过渡性职业(秀才?),最终还需进入管理层,因此这门课程意义非凡(状元之路?)。这里有个核心问题:程序员可以成为终生职业吗?
这个问题很奇怪,几乎有点中国特色,其中有很重的科举之味,升官发财之心人各有之,本不足为怪,但偏选如此艰难之路,考那么多的证,买那么多的技术书,然后整天想着学这个“钱“途如何?凡是一点风吹草动,立马登高望远,观其风向,而后转道直追。苦不堪言,然后写着几行垃圾,见人必言”年过三十不升,必转行!“。其状真是惨不忍睹。
个人以为如果如上这样,真不如尽早放弃,发财之路多的去了,何苦如此自虐?选终生职业,当问自己,我喜欢这个行业吗?我对他有热情吗? 我原意为他放弃一切休息? 为他放弃和朋友在一起对酒当歌的快乐吗?乃至于可能放弃就在眼前的爱情吗?如果能,那么你就会感觉到这一切都是快乐的,尽管不免于思索之苦,但你乐在其中。除了学习本身你将根本没有时间考虑别的,而在毕业之日,你会意外上帝对你的恩惠,工作的事情已经水到渠成了。而你也将十分热爱这份工作。更可能会发现其实自己个性比起管理更适合于眼前的工作。国外的那些大师们与其让他参与管理,他更原意回到实验室去(比如lippman)。因为那里有难以割舍的,他深深热爱的东西,如果那样你将毫不犹豫的将programmer(不是coder)作为自己的终生职业。
请注意,上面说的是programmer。不是coder,两者是有本质的区别的,大多软件工程的提到那个被动的被压迫的没有地位程序员其实应该指coder。他们没有自己的思想,他们所能做的只是将已经设计好的伪码翻译成某种特定的programming language。这样的工作无疑是痛苦的。软件工程理论对他们来说的确如同政治。不不不,这当然不是我们想要的,如《人月神话》中所说的,编程的乐趣在于设计,在于创造,programmer在软件工程里可以担任很多角色。比如系统分析师、系统架构师等等。软件工程的理论对他们来说则是工作的必须。