对软件开发道路的一点思考

上个周末软件学院组织学生去北京参观一些IT公司,我也在赴京的队伍中。我们一共去了三天,其中路上消耗了一天,所以实际在京时间只有两天。而在这短短两天时间里,我们先后参观了中国软件与技术服务股份有限公司、文思创新软件技术有限公司以及中国科学院计算技术研究所三所单位。

回来以后结合这次的参观和我之前一些零碎的想法,整理以后决定写这篇文章,也算是对之前的一些感悟作个总结吧。另外要强调的是,下文并不一定适合其它行业的同学。

一、对软件专业学生自身的要求

1、不要执着于高报酬

诚然,每个人都希望能有一份好工作,而衡量工作好不好的一个重要指标就是薪水的高低。现在正读大三的我们即将面临找工作的问题,什么样的工作才是好的,可能很多人心里并没有一个标杆,但是有一点相信是大家所认同的:薪水高的工作一定差不到哪去。

这话并不完全正确,首先如果给刚入职的新员工很高的薪水,那么对公司本身的发展是不利的,很难想象这样的公司能有巨大的发展潜力。我们追求高薪没错,但是与此同时必须认识到,至少在一段时间内,个人利益和公司利益是挂钩的,这种关系尤其体现在当你持有公司股票的时候。

每个人都应该清楚地认识到自己的能力范围,自己究竟处于一个什么样的水平之上。

这个行业相比其它行业好的一个地方就在于,你可以不是官二代,你也可以不是富二代,你可以什么后门都不走,只要你有能力,你就能获得自己应得的东西。

能力,这个行业比其它任何地方都更强调能力。

所以在衡量报酬的时候,应该仔细想想,我的能力有多少,这份薪酬是否跟我的能力相匹配。我相信不仅是过低的报酬不好,如果过高的报酬给了你也未必是好事。有些企业的确提供了很高的薪资,但是入职以后你会发现领导安排你完成的任务根本不可能在规定的时间内完成,你必定要加班,而且往往一加就是半夜,更没有加班费,领导也可以非常有底气地告诉你,我支付你这么多薪水就是让你干活的,何况是你自己没能在规定的时间里完成任务,怨不得别人。的确有这样的企业存在。

所以钱不在多,符合和自己能力对等的数目就好。我曾读过一篇文章,题目叫《Don’t Plan to Get Rich from Your Startup》,就是讲了刚起步时对薪水的态度。

在去文思创新的时候那位经理问我们,如果你去一家公司实习,但是却不给你工资,你去不去。我看着他很果断地说,去。

这根本不用思考,首先我既然申请了去某家公司实习,必定是有较强的愿望去那里,就算不支付实习工资,也就当是体验知名企业的工作,积累经验了,这可是金钱换不来的。对我来说,在这个年纪里,不应该计较太多金钱的问题,注重能力的锻炼才是最重要的。有人看到一些国际知名认证上千的考试费用觉得太贵,其实如果真的拿到了,它为你自己创造的价值又何止区区几千呢?

盛大网络董事长兼首席执行官陈天桥说过一句话:一切的商业模式,本质上只有一个,最高的工资给最优秀的人才,最优秀的人才创造最大的价值!

所以,想要拿高薪?很简单,让自己成为高素质人才,一切接踵而来。

2、修炼自身

修炼自身的含义非常朴实,但是很难做到,特别是年轻人,总是希望能得到他人的肯定,或者是被笼罩着某种闪耀的光环。

但是这种肯定,这种光环是否真实,含金量是不是真的高,我想只有当事人自己最清楚。

不论是国内国外,都强调专注,强调不要浮夸,脚踏实地。这的的确确是有道理的,对一个即将从事软件开发的学生来说,提升自己的专业能力比什么都更迫切。公司要的不是你能夸夸其谈,口中各种专业术语(甚至连你自己都未必能深刻明白这些术语的含义),事实上在我的观察中,浮夸的人最忌碰到专业人士,特别是专业面试的时候,口若悬河乱讲一通,专业的人一眼就能看出来被面试者有几斤几两,甚至比一般的情况下更容易识破。

专注意味着把大多数的精力集中于一个领域。这一点非常重要,要在社会上立足,首先要有一项强过别人的手艺。

很多人瞧不起百度,但是百度的老总李彦宏的确是一个杰出的人物,当所有人表示百度应该扩大业务范围时,李彦宏却说,我们的搜索做得还不够好,我们应该继续把搜索这块做好,提出了“框计算”概念,人家的成功不是光凭运气就能走出来的。

前两天看到一群人在网上围观一份简历,其中有一句:精通php、asp、java、mysql、mssql、javascript、css、j2ee体系、mvc架构。众多从事软件行业多年的人纷纷表示膜拜。如果你是企业招聘官,这样的毕业生,你敢不敢要?

再者,如果你是看简历的人,有个人在大学期间特牛逼,什么学生会主席、社团主席、优秀班干部、某某唱歌比赛第一名……一看应聘职位:研发工程师,这样的毕业生,你又敢不敢要呢?

在中科院计算所的那位博士生导师非常坦率:我不管你是什么学生干部或者拿过什么奖,我只关心你的算法能力。

也许有人觉得这样的评价标准过于偏颇,但这就是现状,而且我认为这种判断比一般的评价更契合实际,要你干吗,要你做事。

像北京这样的大城市,机会多,人才也多,如何从众多人才中脱颖而出?我想每个人都应该好好想一想,甚至花若干天的时间去思考这个问题。

3、开拓眼界

问一问自己,平时上网都在做什么。当一线城市院校的学生们能够随时随地获得第一手信息,参与最前沿讨论的时候,我们在做些什么?

我想环境的原因不应该成为借口,现在是互联网时代,特别是对于软件行业而言,信息都是公开流动的,几乎不存在某个网页对某些人敞开,却对另一些人关闭的事情(我忽然觉得这个“几乎”用得太帅了!——编后语)。既然如此,如何把握信息应该是每个人自身的必修课,这一点没有人可以帮助你,只有你自己去发现,去揣摩。

我有一个朋友,他本人不是计算机专业的,当年他有个同学很牛逼,我这个朋友系统坏了都拜托他这位同学去装,但是过了这些年,他现在会使用LaTex、Emacs等软件去完成许多事情,而他那位同学,仍然只会装系统。

4、充实自己

大学里的闲暇时间很多,大家可以尽情参与一些活动或是比赛来充实自己。但是有一点我非常反对,就是参加不干事的比赛。所谓不干事的比赛专指那些你几乎什么都不用做,拿奖了可以给你个名额。这样的比赛名义上可以给你证书和荣誉,但实际上对能力的提高没有丝毫帮助,反而浪费了太多的时间在无谓的奔走上。

前面说过,只要有能力,不用担心别的什么,证书这个事情大抵也差不多,如果你打算考研或是出国,证书必不可少,但是如果打算工作,那么,还是现实点吧。说实话,在软件行业有价值的证书几乎都不是一个应届毕业生可以考取的,其实想想就明白了,一个没有工作经验的大学生都可以拿到的证书,含金量能有多高呢?有计算机专业的学生去考国家计算机等级考试,但是该考试明确指明了是给非计算机专业学生准备的。我曾打算参加国家软件考试,考一个中级职称,于是我问了两个已经取得中级职称的朋友,一个有软件设计师证书,一个有网络工程师证书,问他们值不值得考试,给我的答复很简单:在企业里没人看这玩意儿。在国家颁发的证书中,这个算是质量不那么差的了,可以想见其它的各种证书的价值。

至于什么普通话证书、教师资格证,我想这些同学应该是打算另谋出路吧。

5、富有创造力,敢想敢做

我们常说我们这个国家没有创新力,什么新产品都是外国人做了以后中国再去山寨若干个。YouTube、Facebook、Twitter、Foursquare、Groupon等等莫不是如此。

中国人真的没有创新力吗?不见得,很多时候我们有个想法,但是又不敢去实施,或者是想了想没有可行性,也就作罢了。所以那天我看完记录Facebook创始人Mark Zuckerberg的电影《The Social Network》之后我就想,Facebook的经历在中国是很难成功的。首先如果是中国的大学生,他能不能有闲情逸致去想到这个点子,想到以后能不能马上兴奋地坐下来画图纸、敲代码,做出产品以后有没有人愿意去尝试这种前所未有的社交手段。

每一步都是一个槛,而在学生的头脑里设下这些坎的,不是其它,正是教育。

我们的生活远远没有达到令人称心如意的程度,生活中还有很多不便等着去解决。作为本专业的学生,是不是只有老师布置了作业或是等到有课程设计、毕业设计的任务时,才打开窗口敲击代码呢。如此被动,我想除非有大改变,否则30岁以后仍然难以摆脱代码民工的命运。

当你以后带领一个团队时,如何让你的产品得到用户的青睐,如何做出特色,做得跟别人不一样,敢想敢做是一种必备的品质。

而事实上,只要我们不那么纵容自己的慵懒,很多事情做起来其实没那么困难。

拿我自身的例子来说,当年我任广播社社长的时候,打算做一个点歌节目,大二上学期采取的是让同学把点歌信息每晚送到广播社来,然后由我们播出,同时收取1元的点歌费作为广播社日常开支的经费。事实证明效果并不理想,并不是因为钱的问题,而是太麻烦了,点一首歌要让你跑到广播社(有的人甚至还不知道在哪),而且一天只有一个小时的时间可以送,同学的积极性肯定不高。于是我想能不能有一种办法,让同学能够随时随地都能点歌。第一个想到的是用Google的SpreadSheets表单,给一个地址就能提供一个点歌的表格,填写内容以后就行了。但是由于某些原因,Google的此项服务并不能正常使用,于是我想干脆自己写一个吧。花了一个下午的时间把东西写了出来,放在服务器上就跑了。下学期的时候我们就采取了网上点歌且免费的方式,结果点歌的人一下子多了起来,我们的点歌节目也渐渐火了。

二、对学校的要求

1、项目的供给

培养学生最好的方式就是给他们做项目,但是目前看来在校内只有一少部分人可以接触到真实的项目。我想项目应该来自两个方面,校外和校内。校外的项目多涉及商业,理所应当交给研究生去做。所以针对本科生的重点应当在于校内项目。

可惜校内项目的书目也很有限,谁会整天去折腾新系统呢。但是很多东西我想还是有空间去提升的,例如:

学院网站在非IE浏览器下糟糕的显示效果问题什么时候可以解决?

四六级报名系统的负载问题如何解决?

有些学校开发了空闲自习室查询系统,方便同学们查看没课的自习室,我们有没有人去做这样的系统?

社团申请教室的时候必须去辅导员和校区办公室老师那里签字盖章,有时会遇到老师不在的情况,那么如果做成在线申请在线审批的系统是不是可以提高双方的效率?

学生提交作业需要交到不同的邮箱,上传到不同的FTP,既然课程是相对固定的,有没有一个系统可以让交作业这件事在一个地方就能完成?

问题不是没有,问题太多了,这些问题恰恰可以制造一个双赢的局面:学生通过项目获得实战经验,学校通过项目提高了生产率。

我建议学校可以采取投标的方式,公告待开发系统的需求,让学生自己去做,谁做得好谁的系统就上线,至于奖励不奖励,那由学校自己决定。

2、增强学生兴趣

兴趣是最好的老师,只有学习者本人有兴趣,才能够完成从外界促使自己学习向自己对于知识渴求的转变。兴趣可以从很多方面去培养,例如前面说的做项目,或者是其它方式,总之有一点,必须让学生学以致用,把学生浸泡其中,否则理论和实际的脱节很难让人感受到究竟自己所学有什么用,“没用”的东西,谁喜欢呢?

更多时候,我们必须从自身角度出发去改变现状,寄希望于别人,那么得到的永远和想象中的有差距。

最后要感谢学长们让我从一个什么都不知道的人开始渐渐了解这个专业,感谢冯大辉先生在我迷茫的时候给予我的点拨,未来的路还长着呢,谁又知道下一个Mark是谁呢?

时间: 2024-11-18 02:48:40

对软件开发道路的一点思考的相关文章

对软件开发的几点思考

1. 运维监控平台的设计 开发的几点思考-软件开发的思考"> 集群的运维监控,需要确保的是将发现问题,记录问题,报告问题,定位问题紧密结合,尤其是对问题的准确定位.在运维监控平台的设计.开发阶段确立准确定位问题的机制,可使系统能够记录问题出现的原始点,不至于在实际运维的过程中,某个问题出现后却很难排查,或者经过扩散传播引发新的问题,增加了运维人员的操作难度. 以目前主营电信增值业务的一些企业,其运维平台的开发人员与运维人员重叠度较高,再者其运维人员与开发人员定义不明确,或者运维人员培训不到

软件开发的哲学思考

软件开发的哲学思考 (2002.01.11)   来自:计算机世界   枣庄张伟 编译 译者注:这篇文章虽然年代久远(1996年写的,对于IT行业来说用'久远'二字应该说还是十分合适的),但读过之后还是为作者的才华所倾倒,这是不可多见的一篇文章.卡内基-梅隆软件开发学院及其它学院的研究人员用尽毕生的精力去定义一个理论学科(即软件开发理论),到后来才发现仍有很多东西比较模糊,他们对此也不隐瞒.软件开发,自从产生以来,它以迷人的风采征服了许许多多有才华的人,一些教授.专家学者及商业管理人士不由提出这

《精益软件度量——实践者的观察与思考》—第1章1.1节精益软件开发的度量体系

第1章 度量谜题 精益软件度量--实践者的观察与思考 "我们所能拥有的最美好的经历是感受到神秘,它是触发所有真正艺术和科学起源的基本情感." 艾尔伯特·爱因斯坦(1879-1955) 按照IEEE的定义,"软件工程是将系统化.规则,以及可控的体系方法,应用于软件设计.开发.操作和维护:换言之,即工程理念在软件中的贯彻."1看上去很美,不是吗?当我们看到一个又一个软件开发组织,特别是大型的组织,特别是拥有辉煌历史的组织,把过程可控作为主要的管理目标时,一次又一次地惊讶

一个经验尚浅的码农五年软件开发的一点自我总结,对工作五年的反思~

class="post_content" itemprop="articleBody"> 一位就要换城市(离开北京)+ 换职业(不做开发),去新公司报道的程序猿,最近反思了自己毕业后的这五年工作,记录下五年以来软件开发的一点自我总结,也算是给过来人提点建议,少走点弯路吧-- 08年顶着名校硕士的光环加入了一家非常有名的非软件公司做软件开发,刚开始一切其实都很美好.大外企的各种好在头一年给自己带来了很多光环,当然自己也学到了很多(主要是非技术的东西).可是从第二

软件开发项目做需求分析的一点心得

1.需求分析前的准备 在软件开发过程中,需求分析可以说是核心任务之一,就像一支将要远航的船队,要在指定时间内到达目录地,他们需要一条正确的航线,才能到达目的地,如果航线有误,他们将会误时到达,或是不回到原位将永远到达不了,这么重要的东西,但在国内很多团队中缺少,虽然我也做了一些,但在项目完成的时候,回头看看,其实我们做了很多不必要的事,浪费了很多时间.人力和物力,为保证在今后的开发中减少这些错误的发生,现将一些问题记录下来. 为了了解系统需求,先可以从概要式的需求着手,再细化需求,需求分析必须拟

敏捷模型驱动开发(AMDD):攀登敏捷软件开发的关键

Agile Model Driven Development (AMDD): The Key to Scaling Agile Software Development 敏捷模型驱动开发(AMDD):攀登敏捷软件开发的关键   Table of Contents 目录 Overview 概述 Envisioning 展望 Initial agile requirements modeling 初始化敏捷需求建模 Initial agile architecture modeling 初始化敏捷架

提前认识软件开发(1) 序言

序言 正式踏上软件开发岗位已经将近两年了,经历了很多,也学到了很多."万事开头难",学生转变为职业人的过程,恰似茧化成蝶的过程. 1.为什么要写作本系列? 在工作的过程中,我发现我们在学校里面学到的很多东西片面肤浅,根本达不到岗位的要求.像编码规范.研发流程等等学校里几乎不提及的知识,在实际的软件开发项目中却恰恰是异常的重要. 在学校里面,我们欠缺的教育主要包括以下方面: 第一,对编码规范的要求.计算机编程课上,老师只要求学生能够编写程序实现既定的功能即可,几乎不会对编码规范提出要求,

软件开发管理方法论之我见

自打兄弟我成为了一个高大上的码农之后,就难免接触到各种软件开发的方法论.什么CMM啦,敏捷啦,测试驱动啦,不一而足. 咱们码农其实是很单纯的,说白了搬砖怎么搬不是搬啊对不对?所以老板让咋搬咱们就怎么搬,大部分人也没搞明白这些玩意儿背后到底是个什么思路. 但是兄弟我和其他码农不一样,我是个爱思考的人.所以在搬砖之余,我就会去找一些书来看,比如经济学.心理学.业务流程管理.销售管理之类的,一来可以涨涨姿势,二来也尝试站在老板的角度来观察一下咱们搬砖的情况. 一开始吧,我也看不出啥门道.各种方法论看上

让你提前认识软件开发(1):序言

序言           正式踏上软件开发岗位已经将近两年了,经历了很多,也学到了很多."万事开头难",学生转变为职业人的过程,恰似茧化成蝶的过程.          1.为什么要写作本系列?        在工作的过程中,我发现我们在学校里面学到的很多东西片面肤浅,根本达不到岗位的要求.像编码规范.研发流程等等学校里几乎不提及的知识,在实际的软件开发项目中却恰恰是异常的重要.        在学校里面,我们欠缺的教育主要包括以下方面:        第一,对编码规范的要求.计算机编程