优秀软件开发者必须具备的能力

上传人:艾力 文档编号:36427222 上传时间:2018-03-28 格式:PDF 页数:9 大小:186.37KB
返回 下载 相关 举报
优秀软件开发者必须具备的能力_第1页
第1页 / 共9页
优秀软件开发者必须具备的能力_第2页
第2页 / 共9页
优秀软件开发者必须具备的能力_第3页
第3页 / 共9页
优秀软件开发者必须具备的能力_第4页
第4页 / 共9页
优秀软件开发者必须具备的能力_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《优秀软件开发者必须具备的能力》由会员分享,可在线阅读,更多相关《优秀软件开发者必须具备的能力(9页珍藏版)》请在金锄头文库上搜索。

1、优秀软件开发者必须具备的能力优秀软件开发者必须具备的能力(2009-10-10 05:39:45) 选择从事软件开发, 就选择了与挑战为伍。 时下这个年代的软件开发已经不再是上个世 纪的软件开发了,那时候基本上你选择一种开发语言和一个开发环境,就可以吃饱饭,而且 还可以吃得很好。 然而在软件行业发展到今天, 我们有无数种开发语言, 有无数种开发理念, 有无数个框架,这些东西为软件开发的各个领域带来了便利,这是积极的一方面。但是也有 消极的一方法,往往在众多的选择面前,会让你手足无措。如今,单单靠使用一种编程语言,即便你炉火纯青、登峰造极,也算不上是一个优秀的 软件开发者。那么到底怎样才可以在日

2、新月异的软件开发技术面前,可以立于不败之地, 做 一个软件开发的常青树呢?1 1、至少掌握两种开发语言、至少掌握两种开发语言 毕竟软件开发还是要靠开发语言的, 这是立足之本。 那么为什么至少要掌握两种以上呢, 因为每种开发语言都具备它的优势和不足, 并且都有自己的一套理念。 掌握多种语言的目的, 一是为了综合各家之长处, 二是要融汇贯通。 如果这两种语言不是一个派系的语言那就更好 了(如 C+和 Java)。2 2、至少掌握两种程序设计思想、至少掌握两种程序设计思想 时下是面向对象设计思想的天下, 很多人认为凡事都面向对象那就万事大吉了。 程序设 计思想就如同文化历史一般, 几千年的历史就是在

3、改朝换代的模式中不断前进的。 程序的设 计思想也同样是百花齐放,只不过当前是面向对象比较主流而已。要知道,即便是面向对象 占绝对主流的今天,很多软件也并不是采用这种思想来开发的,比如 Windows 本身。任何一 种设计理念最终有一天都将成为过去和历史,我们只要通过两种以上的设计思想的掌握, 达 到掌握了软件设计的本质,那才可以永垂不朽_。3 3、至少掌握两个领域专长的知识、至少掌握两个领域专长的知识 软件本身并不能创造价值,它需要为别的领域服务才可以体现其价值。我预期在将来, 领域软件才是真正的高回报软件。 作为一个优秀的软件开发者, 不应该依赖于需求分析人员 对特定领域的分析, 不应该依赖

4、于市场分析人员对特定市场的分析。 而要培养自己的领域专 长,这样才不会让自己沦为写代码的机器。一个只会写代码的程序员当然不会永远被重视, 但一个有思维有活力有领域专长和市场洞察力的开发者,那就大大不同了。4 4、至少懂得跟两类人进行沟通、至少懂得跟两类人进行沟通 人是社会人,所以离不开社会,离不开沟通。软件开发又是多人合作的行当,单枪匹马 总会显得势单力薄, 难成大事。 因此软件开发中最重要的技能之一就是能够与其他开发者一 起高效工作程序员,测试员,架构师等等。另外还必须跟软件的受众进行充分的沟通 客户,用户,老板等等。如果你能够很好地处理这些关系,那么成功的大路也就离你不远 了。5 5、要博

5、客、写文章、与人交流、要博客、写文章、与人交流 有谁能够记住每件事?我不能,所以我把它们记下来。当需要的时候,可以回头翻阅参 考。除此之外,可以借此从读者那里获得反馈,让我对同样的问题收获更多的解决方法。 事 实上,我已经获得了许多与我工作有关的反馈,虽然有好有坏,但我会一一验证,这个过程 也让我受益匪浅。其实还有很多很多, 比如: 要保持自我学习和完善的习惯、 停止无休止的抱怨、 等等. 在此就不逐一罗列了。最后,请记住不要永远只做个程序员。一旦自我满足并觉得自己是个 优秀的程序员,就得重新规划你自己,扩展兴趣。搞开发只是这个过程的一部分,了解用户 和商业,那才是真正的艺术,每个人应当以此为

6、目标并努力掌握它。基本素质一,是具有良好的编码能力,编码能力直接决定了项目开发的效率。这就要求软件工程师至少精通一门编程语言,比如当前国内企业常用的 CC、VB 和国际上最流行的 Java 语言,熟悉它的基本语法、技术特点和 API(应用程序接口)。基本素质二,自觉的规范意识和团队精神。企业希望招聘到的程序员编程不一定很快,但是需要非常规范,个人能力不一定很强,但需要合作意识很好。基本素质三,是认识和运用数据库的能力,即会使用目前常用的数据库软件,如甲骨文公司和微软公司的数据库等。基本素质四,较强的英语阅读和写作能力。程序世界的主导语言是英文,编写程序开发文档和开发工具帮助文件离不开英文。 作

7、为基础软件工程师, 具有一定的英语基础对于提升自身的学习和工作能力极有帮助。基本素质五,是具有软件工程的概念。从项目需求分析开始到安装调试完毕,基础软件工程师都必须能清楚地理解和把握这些过程,并能胜任各种环节的具体工作。基本素质六,是求知欲和进取心。软件业是一个不断变化和不断创新的行业,软件人才的求知欲和进取心就显得尤为重要,它是在这个激烈竞争的行业中立足的基本条件。程序员是一种技术工作,在 IT 的发展中有相当重要的地位,从底层硬件通讯协 议的建立, 到数据传输层的处理,到操作系统的建设,到数据库平台的建设, 一直到应用层上各种数 据营销平台的搭建,程序员在里面都扮演着举足轻重的 角色并为

8、IT 事业的发展做出了巨大 的贡献。 中国有很多精于编码的人,但是中国软件行业,尤其是网络应用开发方面误区很 大,很难 形成有规模的软件开发力量和产品能力,不但比美国差距甚远,和印 度相比也是颇有不 如。这些问题不是在于中国程序员的智商和工作努力状况, 也不是在于国家和民间对开发 的投入程度,而是很大程度上,有一些对技术, 对程序开发,对项目设计方面的思想误 区,这些误区,导致了软件行业的产品化能力不足,缺乏规模化和大型复用系统研发能 力,可以说,改变认识误区, 是解决软件行业小作坊模式和个体英雄模式所带来的局限性 的重要工作。 中国有很多小朋友,他们 18,9 岁或 21,2 岁,通过自学也

9、写了不少代码,他们有 的代码写的 很漂亮,一些技术细节相当出众,也很有钻研精神,但是他们被一 些错误的认识和观点左 右,缺乏对系统,对程序的整体理解能力,这些人,一 个网上的朋友说得很好, 他们实际 上只是一些 Coding fans,压根没有资格称为 程序员,但是据我所知,不少小网络公司的 CTO 就是这样的 coding fans,拿着 吓人的工资,做着吓人的项目,项目的结局通常也很吓 人。 程序员基本素质: 作一个真正合格的程序员,或者说就是可以真正合格完成一些代码工作的程序 员,应该具 有的素质。 1:团队精神和协作能力 把它作为基本素质, 并不是不重要, 恰恰相反, 这是程序员应该具

10、备的最基本的, 也是最 重要的安身立命之本。把高水平程序员说成独行侠的都是在呓语,任何 个人的力量都是有 限的, 即便如 linus 这样的天才,也需要通过组成强大的团队 来创造奇迹, 那些遍布全球 的为 linux 写核心的高手们,没有协作精神是不可想 象的。独行侠可以作一些赚钱的小软 件发点小财,但是一旦进入一些大系统的 研发团队,进入商业化和产品化的开发任务,缺 乏这种素质的人就完全不合格 了。 2:文档习惯 说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子, 良好的文档是正规研 发流程中 非常重要的环节,作为代码程序员,30的工作时间写技术文档是很 正常的,而作为高级 程序员和系统分

11、析员,这个比例还要高很多。 缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时 就都会遇 到极大的麻烦。 3:规范化,标准化的代码编写习惯 作为一些外国知名软件公司的规矩,代码的变量命名,代码内注释格式,甚至嵌 套中行缩 进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但 有助于代码的移植和 纠错,也有助于不同技术人员之间的协作。 有些 coding fans 叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证 明他们自 己压根不配自称程序员。代码具有良好的可读性,是程序员基本的素 质需求。 再看看整个 linux 的搭建,没有规范化和标准化的代码习惯,全球的

12、研发协作是 绝对不可 想象的。 4:需求理解能力 程序员需要理解一个模块的需求,很多小朋友写程序往往只关注一个功能需求, 他们把性 能指标全部归结到硬件,操作系统和开发环境上,而忽视了本身代码 的性能考虑,有人曾 经放言说写一个广告交换程序很简单,这种人从来不知道 在百万甚至千万数量级的访问情 况下的性能指标是如何实现的,对于这样的程 序员,你给他深蓝那套系统,他也做不出太 极链的并访能力。性能需求指标中, 稳定性,并访支撑能力以及安全性都很重要,作为程 序员需要评估该模块在系 统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险 和恶意攻击的可能性。 就这一点, 一个成熟的程序员至少需要

13、 2 到 3 年的项目研发和跟踪经 验 才有可能有心得。 5:复用性,模块化思维能力 经常可以听到一些程序员有这样的抱怨,写了几年程序,变成了熟练工,每天都 是重复写 一些没有任何新意的代码,这其实是中国软件人才最大浪费的地方, 一些重复性工作变成 了熟练程序员的主要工作,而这些,其实是完全可以避免 的。 复用性设计,模块化思维就是要程序员在完成任何一个功能模块或函数的时候, 要多想一 些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以 脱离这个系统存在, 是否可以通过简单的修改参数的方式在其他系统和应用环 境下直接引用,这样就能极大避 免重复性的开发工作,如果一个软件研发单位 和工

14、作组能够在每一次研发过程中都考虑到 这些问题,那么程序员就不会在重 复性的工作中耽误太多时间,就会有更多时间和精力投 入到创新的代码工作中 去。 一些好的程序模块代码,即便是 70 年代写成的,拿到现在放到一些系统里面作 为功能模块 都能适合的很好,而现在我看到的是,很多小公司软件一升级或改 进就动辄全部代码重 写,大部分重复性工作无谓的浪费了时间和精力。程序员应具备的素质中6:测试习惯 作为一些商业化正规化的开发而言,专职的测试工程师是不可少的,但是并不是 说有了专 职的测试工程师程序员就可以不进行自测;软件研发作为一项工程而 言,一个很重要的特 点就是问题发现的越早,解决的代价就越低,程序

15、员在每 段代码,每个子模块完成后进行 认真的测试,就可以尽量将一些潜在的问题最 早的发现和解决,这样对整体系统建设的效 率和可靠性就有了最大的保证。 测试工作实际上需要考虑两方面,一方面是正常调用的测试,也就是看程序是否 能在正常 调用下完成基本功能,这是最基本的测试职责,可惜在很多公司这成 了唯一的测试任务, 实际上还差的远那;第二方面就是异常调用的测试,比如 高压力负荷下的稳定性测试,用 户潜在的异常输入情况下的测试,整体系统局 部故障情况下该模块受影响状况的测试,频 发的异常请求阻塞资源时的模块稳 定测试等等。 当然并不是程序员要对自己的每段代码都 需要进行这种完整测试, 但是程序员必须

16、清醒认识自己的代码任务在整体项目中的地位和 各种性能需 求, 有针对性的进行相关测试并尽早发现和解决问题, 当然这需要上面提到的 需 求理解能力。 7:学习和总结的能力 程序员是人才很容易被淘汰,很容易落伍的职业,因为一种技术可能仅仅在三两 年内具有 领先性,程序员如果想安身立命,就必须不断跟进新的技术,学习新 的技能。 善于学习,对于任何职业而言,都是前进所必需的动力,对于程序员,这种要求 就更加高 了。但是学习也要找对目标,一些小 coding fans 们,他们也津津乐道于他们的学习 能力,一 会学会了 asp,一会儿学会了 php,一会儿学会了 jsp,他们把这个作 为炫耀的资本,盲目 的追逐一些肤浅的,表面的东西和名词,做网络程序不懂 通讯传输协议,做应用程序不懂 中断向量处理,这样的技术人员,不管掌握了 多少所谓的新语言,永远不会有质的提 高。 善于总结,也是学习能力的一种体现,每次完成一个研发任务,完成一段代码, 都应当有 目的的跟踪该程序的应用状况和用户反馈,随时总结,找到自己的不 足,这样逐步提高, 一个程序员才可能成长起来。 一个不具

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号