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

简介:

上个周末软件学院组织学生去北京参观一些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是谁呢?

目录
相关文章
|
1月前
|
数据可视化 API 数据库
低代码/无代码运动:软件开发的未来还是乌托邦?
低代码/无代码(LCNC)平台近年来在软件开发领域引起广泛关注,通过简化界面和预构建模块,使非技术用户也能快速构建应用。本文探讨其潜在影响、优势与挑战,以及对传统开发的影响。核心优势包括快速开发、易于使用和成本效益;主要挑战则涉及定制化限制、性能问题和技术锁定。LCNC平台促使开发者角色转变,促进业务与IT融合,并加速创新。尽管优势明显,但其局限性意味着不会完全取代传统开发,而是成为重要工具之一。
|
10天前
|
机器学习/深度学习 人工智能 安全
2024年软件开发新趋势
【10月更文挑战第1天】2024年的软件开发领域正迎来诸多革新趋势。本篇文章深入探讨了这些变化,包括人工智能与机器学习的深度集成、区块链技术的应用、多运行时微服务的兴起,以及AR/VR技术在各行业的广泛采用。同时,网络安全成为焦点,从被动防御转向主动防护,如DevSecOps和零信任架构的普及。此外,文章还强调了可持续软件开发的重要性,提倡绿色计算以应对日益严峻的环境挑战。
|
2月前
|
机器学习/深度学习 边缘计算 人工智能
软件测试的演化之路:从手动到智能化
【8月更文挑战第6天】在数字化浪潮不断推进的今天,软件测试作为保障软件质量的重要环节,经历了从原始的手动测试到现在的智能化测试的转变。本文将探讨这一演变过程,分析其背后的驱动力和未来趋势,以及这些变化给软件产业带来的深远影响。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
探索软件测试的未来:自动化与智能化的交汇点
随着技术的迅猛发展,软件测试领域正站在一个崭新的十字路口。本文将深入探讨自动化测试和人工智能(AI)如何共同塑造软件测试的未来,提升测试效率与准确性。通过分析当前趋势和未来预测,我们将揭示这些技术如何影响测试策略、工具选择以及质量保证流程,进而推动软件开发的整体进步。
65 1
|
3月前
|
人工智能 安全 算法
程序员的护城河:技术、创新与沟通的艺术
程序员的护城河:技术、创新与沟通的艺术
56 0
|
5月前
|
传感器 机器学习/深度学习 人工智能
【专栏】机器人技术符合人类价值观,促进社会和谐发展,共创美好未来
【4月更文挑战第27天】机器人技术自20世纪起飞速发展,从早期工业领域的简单任务执行到如今的智能多元化应用。随着机械结构优化、感知技术提升及人工智能的融合,机器人已在工业、医疗、服务和特种领域广泛应用,提高效率、安全和生活质量。然而,技术进步也带来失业、伦理法律和安全挑战。未来,我们需要在应对挑战的同时,确保机器人技术符合人类价值观,促进社会和谐发展,共创美好未来。
77 1
|
5月前
|
敏捷开发 测试技术 持续交付
拥抱不确定性:软件开发中的混沌与秩序
【5月更文挑战第20天】在软件工程的领域,不确定性是一种常态。本文探讨了如何在看似混乱的开发过程中寻找秩序,通过具体实践和技术方法来管理和利用不确定性。我们将分析敏捷开发、持续集成、自动化测试等技术如何帮助开发者在快速变化的环境中保持灵活和响应性。同时,我们也将讨论混沌工程的原则,它教会我们如何在不可预测的系统行为面前构建更加健壮的软件架构。
|
程序员 测试技术 开发者
「程序员转型技术管理」必修的 10 个能力提升方向
对许多开发者而言,深耕技术,然后成为技术专家或许是职业发展的唯一答案。但如果你赞同「软件开发只是我众多职业目标中的一个」,也许你可以试试「技术管理之路」。 我原来觉得和计算机打交道比跟人打交道轻松得多,所以我成了一名软件开发者。一段时间后,我发现自己越来越多地在给别人提供帮助;我喜欢领导项目,热衷于推动更好的代码标准。于是,我几乎毫无挣扎地成为了一名技术管理者。
97 0
|
传感器 机器学习/深度学习 安全
汽车电子行业开发者的内功心法:汽车软件开发V模型
汽车软件开发过程中的V模型对行业内开发者早已是司空见惯的模型,是由瀑布模型演变而来的,也是目前汽车行业运用最广的软件开发模型。由于该模型的构图形似字母V,所以俗称V模型。V模型核心思想是通过A-SPICE流程(汽车产业的软件流程改进和能力测定标准)来支持和管理整个开发流程,从需求到源代码的每个过程都有相应的测试。
|
安全 架构师 测试技术
软件测试发展路线
软件测试发展路线
144 0