程式设计基础讲座(一) |
p> 程式设计之路 对于软体开发, 笔者最近听到两种极端的声音, 其一是程式设计人员没前途, 另一种声音则是软体是有梦的工业, 不禁让笔者想好好地谈一谈软体这一行。 程式设计人员没前途? 有一次收到一位读者来函, 内容是:「最近在网路上看到了一些文章说:他妹妹花八万大洋到资策会学程式设计, 结果她们老师告诉她们在台湾当程式设计师是一件吃力不讨好的工作, 钱少、事多、没地位, 还不如去干网路工程师…写出不算好的程式时, 人家连看都不看, 反之写出很棒的程式不用多久盗版满天飞, 真不知要如何糊口, 看完这些文章后, 挫折感增加不少, 请问这是真的吗?」 笔者暂时不回答这个问题, 先来谈一谈软硬体的发展趋势。 子曰:「圣之时也」也许是笔者特别喜欢软体的关系, 总觉得硬体有一天会走向越来越稳定、越来越成熟、越来越便宜的阶段, 而最终只有软体才能够让电脑变成真的符合使用者的需要, 所以常说:「搞硬体有什么前途?」, 这大约是1985年笔者刚退伍进入资讯界的事情。 记得工作到第二年的时候(1986~1987), 常常到工业研究院「电子所」(现在叫做「电通所」)出差, 当时「台积电」正要成立, 可能是拜股市狂飙之赐, 公司还没成立, 股票一股就喊到12元(一股的面额是10元, 也就是说还没有看到的东西就有20%的涨幅), 以现在的角度来(目前「台积电」的股票大约120元左右), 经过十年, 投资报酬率十倍, 如果再把增资配股计算进去, 投资报酬率就更可观了。 但大部分的人都不知道, 「台积电」的未上市股价在硬体景气欠佳的时候, 曾经跌到5、6元没有人买, 当时听到不少买了「台积电」股票的电子所员工叫苦连天, 买到台积电股票的人算走运, 若是买到无法度过硬体景气低迷的公司, 倒闭了(大家比较而熟能详的例子是「佳佳」科技), 股票拿来当壁纸, 看了还心痛呢! 硬体过去十年的发展, 完全超出笔者的预测, 那么未来的发展呢?笔者依然相信硬体会越来越稳定、越来越成熟、越来越便宜, 当然这并不意味著硬体产业会马上变成夕阳工业, 但可以确定的是硬体越好, 软体能够发展的空间就越大, 也更能创作出符合使用者需求的东西, 可发挥的空间当然要比硬体多得多。 未来硬体还有几年的好光景?子曰:「圣之时也」, 笔者不是孔子说的圣者, 靼椎街赋瞿母鍪焙蛴蔡?(软体)景气好、哪个时候不好, 但坚信未来软体的需求必然远大于硬体。 软体工业初露曙光 -- 友立资讯股票上柜软体的发展潜力在美国已经是无庸置疑的, 但是在国内呢?也许有人觉得盗版软体满天飞是阻碍软体发展的祸首, 笔者倒不这么认为, 笔者觉得盗版软体只是软体发展路途上的几块绊脚石, 而这些石头可以透过立法及执法慢慢将其铲除, 真正影响软体发展的原因是缺少资金及人力的灌溉。 软体与硬体最大的差别在于软体不是一座座的工厂, 而比较像树木, 工厂盖好开始运作之后, 产品就可以不断地生产出来(当然, 之前还有产品的研发), 但树木却需要园丁时时为它除虫、施肥…, 而软体从业人员就好像是照顾树木的园丁, 至于肥料从何而来呢?笔者以为最理想的模式是树木本身能够自给自足, 所谓树木本身能够自给自足, 以一颗果树而言, 如果结的果实很多, 那么果实成熟落地之后又会成为果树本身的肥料, 而达到自给自足的地步, 对软体来说, 若销售情况良好, 则赚来的钱用于加强产品的功能或开发新的产品, 便是自给自足, 将来产品越来越好、越来越多元化, 又能创造出更好的销售成绩。 好的果树会越来越强壮, 反之, 不好的果树最终可能只有枯死一途, 这是所谓的「正面循环」与「负面循环」。 而台湾过去的软体发展却处于「负面循环」状态, 销售影响了产品的改良, 而产品没有进步又影响了销售, 加上软体盗拷, 雪上加霜。 不够最近这几年, 在政府大力推广X百万人上网的情况下, 电脑的使用人口与日遽增, 而这也带来相当可观的软体使用人口, 这是台湾软体生态值得注意的改变之一。 除了软体使用人口增加之外, 另外有一件事也可能为软体带来生态上的改变, 那就是「友立资讯」股票上柜买卖, 「友立资讯」上柜以来股票狂飙两倍多, 使得其本益比高达四、五十倍(注:一般电子股的本益比大约是20~30倍), 紧接著后来上柜的「资通电脑」与「倚天资讯」也出现类似的情况, 于是软体业被许多所谓的「证券分析专家」评为有梦的工业。 笔者指出「友立资讯」上柜的情况, 不在强调购买软体公司的股票会赚钱(实际上, 在股票狂飙时, 大部分的投资人都无法在低价时买到股票), 而想说明的是, 大家已经开始重视软体业, 愿意投入资金到软体业, 而这也表示软体业比以往更容易募集资金用以灌溉软体这颗树木。 套装软体 vs. 专属软体笔者将软体简单地分成两类 -- 套装软体及专属软体, 就「套装软体」来看, 目前全世界只有一个第一名 -- 美国, 相信再过50年, 也没有一个国家能够与美国匹敌, 不过这并不表示台湾已经无法插足于套装软体, 稍后笔者会提出自己的看法。 就「专属软体」来看, 须依地区特性及个别需求而定, 举例来说, 很多单位都有自己的程式设计人员, 就是因为套装软体不能符合需求, 所以才要自己开发, 依电脑发展的情势来看, 专属软体的需求会越来越大。 让我们回到套装软体上面, 笔者又将套装软体分成「通用型」及「利基型」两种类型, 浏览器、文书处理软体、扫毒软体、试算表软体、绘图软体、资料库软体…等, 属于通用型套装软体, 至于利基型则必须具备某一特定专业领域知识所开发出来的软体, 例如法律的检索系统、会计系统…等, 都属于利基型的软体。 比较特殊的软体是游戏软体, 笔者将游戏软体归类于利基型套装软体, 主要是因为不同类型的游戏软体彼此没有共通性, 而只要让玩者觉得好玩, 就会刺激购买欲望, 故将其归类为利基型套装软体。 想要开发通用型套装软体必须考虑两个重要的因素 -- 压倒性及竞争对手。 首先笔者必须说明的是通用型套装软体只有前几名才有生存空间, 甚至只有第一名才有生存空间, 为什么呢?相信大部分的使用者都不愿意选择可能被淘汰的软体, 因此软体的使用者越多, 就越能带来更多的使用者, 最后便形成了第一名的使用者人数压倒性地多于第二、三名的使用者, 此外, 对大部分的使用者来说, 一旦习惯于某一套软体, 要改用其他软体就比较不容易。 开发通用型软体的另一个考虑因素是竞争对手, 关于这一点, 其实笔者不必多说, 大家只要想一想微软如何利用其在作业系统的优势, 大量散播免费而又功能强大的IE, 硬是挤下Netscape在浏览器领域的霸主地位, 就可以知道其竞争之激烈。 因此, 笔者建议大家多往利基型软体来发展。 程式设计师的未来让我们回到「程式设计师是否有前途?」这个话题, 其实就「前途」这个词来说, 每个人的感受并不相同, 有些人觉得有前途必须挤进世界100大富豪, 有些人觉得找到一份「钱多、事少、离家近」的工作就有前途, 有些人觉得找到一份安稳的工作就有前途, 有些人相信只要做自己有兴趣的工作将来一定会有前途…。 如果您想挤进世界100大富豪, 能够给您答案的人应该不是笔者。 根据经济学最基本理论来看, 创造财富最重要的两个要素是资本及劳力(智力也属于劳力的一种), 想要藉助软体来创造极大的财富, 智力是最重要的, 接著要看您能够累积多少资金, 并且让每一份资金辅助智力让资本与智力发挥到最大的乘数效果。 如果您的目标是找到一份「钱多、事少、离家近」的工作(最好再加上「权高、位重、责任轻、睡觉睡到自然醒、打球打到脚抽筋」), 也许真的有这样的工作, 但是笔者工作这么久以来还没遇过, 如果您要的是这种前途, 笔者也还没有答案。 如果您的目标是找一份安稳的工作, 笔者想引用一位参加过资策会短期程式设计课程的读者来函中的一段话:「记得那时开训典礼, 资策会的长官说过, 这种训练只是给大家一块进入资讯业的入门砖, 可不是一张保命灵符;一切的一切, 还是要靠自己努力才成。 」, 没有一种训练可以成为资讯工作者的保命符, 只有不断地自我充实, 才能够确保您有一份安稳的资讯工作。 不过笔者在此要说明一点, 很多人误解了不断自我充实的意义, 以为大量吸收新知就是最好的自我充实, 在笔者所带过的组员中, 遇过有几位组员, 非常热中于追逐所谓的新知, 订阅的杂志至少有五、六种, 什么新名词, 他几乎都知道, 但程式就是写不好, 这是为何呢?举凡知识都可以分成「广」与「深」两个方向, 像刚才笔者所说的这种组员就是属于知识「广」的人, 但广而不深, 把时间花在为了追求广博的知识, 忽略了深入研究的重要。 怎样做到深的程度?其实观念很简单, 只要您心里想著要提升工作效能, 在提升工作效能的过程中, 您会不断吸收与工作有关的知识, 就可以做到深的程度, 而根据笔者过去在资讯界工作的经验来看, 大部分的主管都相信能够把分内工作做到最好的员工, 就能够做好其他工作。 最后一点, 如果您觉得只要做自己有兴趣的工作将来一定有前途, 甚至只要在自己有兴趣的地方一直做下去, 不管有没有「钱」途, 都觉得很快乐, 想必是不需要笔者提供任何意见了。 软体之路的准备工作刚才浅谈了软体及程式设计师的未来, 但不是每个人的在软体这条路的发展都是相同的, 以下是笔者的建议, 仅供参考。 如果您在硬体公司上班: 如果您在软体公司上班: 如果您是在学学生: 如果您想转行进入软体业: 笔者先假设您已经顺利地找到工作了, 因为好不容易找到工作, 相信您一定会战战兢兢面对自己的工作, 但另一方面您也希望在工作中学习更多的技能, 所以很多人都期望自己被指派一份比较有挑战性的工作, 藉以加强自己的技能, 但往往事与愿违, 而被指派了一份比较简单的工作, 结果做起来就不是那么起劲, 而影响了应有的表现。 在此让我们从主管的角度来想一想, 对于一位半路出家的员工来说, 我们并不知道它的实力如何, 比较保守的主管当然会先指派比较简单的工作, 如果简单的工作都做不好, 如何接受比较有挑战性的工作呢?所以笔者的建议是, 如果您觉得主管指派给您的工作太简单了, 就把它做到120分吧! 想要转行进入软体业, 另一个必须面临的问题是如何找到第一份工作, 如何找到第一份工作呢?学历、技能检定证书、程式设计课程结训证书、实力…, 哪一件事情最重要呢?笔者一直都觉得实力最重要, 若无实力, 一面谈就马上破功(当然, 有实力的人还必须具备自我表达的能力, 在面谈中才会有好的表现), 笔者是一位相信从面谈中就可以知道对方有没有实力的人, 笔者在此不是要否定学历、技能检定测验、及程式设计训练课程的意义, 只是想提醒您获得更高学历、参加技能检定测验、或参加程式设计训练课程的目的都是为了提升实力, 而学历证书、技能检定证书、或程式设计结训证书则不能保证让您获得面谈者的青睐。 不是只有软体公司这一条路刚才的话题都一直在软体业上面绕, 但实际上需要程式设计人员的行业不只局限于软体业, 举笔者所知, 所有的公家机关及稍具规模的私人公司都有程式设计人员的编制, 未来程式设计会走入各行各业, 当我们将软体应用于某一个行业时, 除了程式设计的技能之外, 行业别的专业知识(Domain Knowledge)也是不可忽略的。 其实笔者甚至觉得非资讯科系学生投入程式设计领域, 其发展前途反而会比资讯科系学生来得大, 因为只懂得程式设计而不懂行业别的专业知识, 其所设计出来的软体, 可能会让使用者来迁就一般程式的习性, 反之, 如果既懂得行业别的专业知识又懂得程式设计, 会比较容易站在使用者的角度来开发出符合使用者需求的软体。 当然, 对于资讯科系的学生来说, 也不必矫枉过正, 听了笔者一说, 就觉得念资讯科系比较不好, 毕竟资讯科系在资讯方面所受的专业训练比非资讯科系来得多, 将来开发软体时多跟使用者沟通, 了解使用者的需求, 也一样可以让您的软体做什么像什么。
|