软件从业者需要应对来自两方面的挑战:
1. IT 行业的知识、技术更新很快, 如何去应对 ?
2. 软件开发主要包括什么样的工作和任务, 需要拥有怎样的专业技能和素养?
必须认真去思考这些问题,而不是一味埋头于学技术, 这样, 才能事半功倍。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
我的答案是: 扎实的专业功底、精准的问题理解能力、使用专业工具分析问题的能力、快速自学的能力、灵活的头脑、敏捷的思维能力以及谦和的品格与修养。理由如下:
1. 因为从事软件开发从根本来说就是解决问题的一种形式,因此, 培养娴熟的的沟通交流技能和良好的问题理解能力,准确理解客户的需求以及领导的意图,是非常重要的;
2. 在充分理解问题及需求的前提下,接下来就需要使用专业工具来分析问题, 获得求解方案。这里,专业工具的涵义其实可以很广泛, 小到一个概念(比如I/0流,信号量) , 一个编程技巧(比如 数组中的“哨兵”元素), 一个数据结构(比如数组、链表、散列表)、一种算法技术(比如分治法、动态规划法),中到一种具体技术(比如高速缓存、虚拟存储技术),大到系统建模工具、数据库、应用架构的选用。程序员应当自觉地意识到并系统地运用这些有力的工具利器。
3. 自学能力也是相当重要的。工作中需要一个人能够迅速理解和掌握实际中用到的复杂而综合的技术,需要扎实的专业功底和一套适合自己的自学方法。
4. 光有勤奋用功的精神, 若没有一个灵活的头脑和敏捷的思维, 在这个“聪明人的行业”里也会举步维艰; 应当花功夫来磨练自己的头脑和思维,使自己思考问题能够更加周全、成熟和敏捷, 这样才能真正地胜任更高层次的任务。不得不说,这确实是一个智力行业,无论这种智力用薪水衡量起来是否廉价。
5. 程序设计内功修炼。 这种内功可从计算机基础课程中获得。核心的计算机专业课程主要有:离散数学、 计算机组成原理、操作系统、数据库、数据结构、算法分析与设计、计算机网络、编译原理。 重点并不在于学到了多少具体专业知识,而在于通过这些课程的学习,培养良好的问题理解能力,使用专业工具分析问题的能力,快速自学的能力, 以及锻炼灵活的头脑和敏捷的思维能力。 此外,广泛涉猎软件开发书籍,比如 《Unix 编程艺术》,《程序设计与实践》, 《编程珠玑》, 《程序员修炼之道》等, 也是对提高编程开发功底的大有助益的途径。
6. 丰富的经验资质。 通过细致地观察与适应真实的工作环境, 理解所要从事的工作类型及任务,从而可以有的放矢地学习和总结,通过长期的积累使自己成为该领域中一名有资历的从业人员。
7. 品格与修养。 任何时候都不要忽略了个人的品格与修养的修行。做人为本,行事有准。
最后,什么也取代不了多加研习, 勤于思考、实践和总结。
进行软件开发的能力与素养
时间: 2024-10-08 00:10:01
进行软件开发的能力与素养的相关文章
关于软件开发,你老板不知道的7件事
英文原文:7 Things Your Boss Doesn’t Understand About Software Development 你的老板是否不理解你的工作?本文将有助于你更好地理解为什么你的老板不理解软件开发. 你的老板可能真的很棒.我在我自己的编程生涯中就遇到过几个真心棒的老板,但即使是最棒的老板似乎也常常总是不能理解软件开发. 事实上,我想说的是当涉及到不止编程的几个元素时,大多数软件开发经理都有点目光短浅. 所以,我编译了一个简短的清单,用来说明关于编程一些最让你老板.开发经理
成为一个优秀的软件开发工程师应该具备的能力
很多人都希望成为一个优秀的软件开发工程师,那么,成为一个优秀的软件开发工程师应该具备哪些能力呢? 下面是我个人的见解,有不同想法的欢迎提出讨论. 在学习之初,我们往往强调的是开发技术,对于软件开发者而言,这是最初级也是最简单的要求. 我们想要把我们学到的知识运用到工作生活中,就需要了解行业知识了. 遇到问题如何解决就需要我们的思维能力了. 只有把这三者有效的结合起来,我们才可能成为一个优秀的软件开发工程师.
软件开发的核心基本能力是理解和表达事物的能力
? 软件开发的核心基本能力是理解和表达事物的能力. 为什么这么说呢? 从与主管.客户.产品经理和项目经理沟通的角度来说,你需要能够理解他们说话的语境和背景,从而推敲其真正的意图:需要真正理解他人的需要和意图:表达只有在真正理解的基础上进行才是有效和有份量的:这里的理解指“自然语言层面的”. 从熟悉业务和产品的角度来说,你需要能够理解现实中的事物.事务以及相互的关联,并简明扼要地绘制出来:这里的理解指“分析语言层面的”. 从开发程序的角度而言,需要对所要处理的事物的性质和规则有深入的了解,能够理解
如何评估个人的软件开发能力
如何评估个人的软件开发能力 基础: 1.读程序的能力 很多的软件开发工作不一定会从头开始,这就需要开发人员有良好的阅读程序的能力,能在尽可能短的时间里了解软件整体的架构,理解该软件初始的开发思想,能迅速并有效地参与到项目开发中去. 2.编码能力 这点会涉及到开发人员对所用语言的熟练程度,和该开发人员的编程风格.是否拥有良好的编程习惯,能遵循通用的编程规范,并作好注释,对该开发人员所开发代码的易读性和易维护性有很大的影响. 3.调试和测试能力 现代的软件行业中,代码的调试和测试时间并不比编码时间短
让你提前认识软件开发(46):首先是为人编写程序,其次才是计算机
第3部分 软件研发工作总结 首先是为人编写程序,其次才是计算机 "首先是为人编写程序,其次才是计算机",这是软件开发的基本要点,软件的生命周期贯穿于产品的开发.测试.生产.发布.用户使用.版本升级和后期维护等长期过程中,只有易读.易维护的软件代码才具有生命力. 在实际的软件开发过程中,可能是由于工作很忙的原因,很多开发人员只注重实现程序的基本功能,而忘记了编程规范,因此写出来的代码只能让计算机看懂,人要看懂很不容易.更有甚者,有些项目组为了赶进度,明确要求组员以实现产品功能为主,代码能
对于软件开发中开发人员与测试人员关系的理解
在软件开发中都会有开发人员(以下简称开发)和测试人员(以下简称测试),在一些小型公司可能并没有测试,仅仅是开发兼任测试.在这里我仅针对于有专业的测试和专业的开发的项目. 每个公司应该都有考核机制,对于开发和测试的考核实际上很难量化,通常来讲大的方向就是开发所负责模块的bug数,对于测试来讲就是测出来的bug数,但这真的有效吗?这也许对开发有约束力,理论上开发是能够自己控制bug数的,如果从产生的bug数来评判开发的绩效还算有效,这样开发自然就会把代码写得更加认真.但如果根据测试测出来的bug数来
让你提前认识软件开发(39):软件研发之殇
第3部分 软件研发工作总结 软件研发之殇 在经典著作<人月神话>中,作者提出了一个观点:绝大部分的软件研发项目都不能按期完毕.我工作也有一段时间了,发现这确实是一个不争的事实.我所从事的项目中,能按期按质完毕的还真的非常少.这是什么原因呢?我工作不够努力吗?非也.为了完毕任务,我也是常常加班加点地工作,生怕惹恼了上司而饭碗不保. 软件研发是一个系统的project,是由非常多环节组成的.你一个人把自己那部分工作做好了,还不足以保证整个系统能正常运转.在本文中,我依照软件的生命周期(例如以下图所
敏捷软件开发---闲话敏捷
第一篇状态模式,其实比本文更先发表.但是我终觉得要写点什么,来开始我的敏捷的旅程.知道看了bob大叔这本书 以后,我才知道敏捷到底是怎么回事,纯属个人东拉西扯,所以就叫闲话敏捷. <敏捷软件开发>问世与2003年,距今已有13个年头了,能够历久长盛不衰,必然有其光辉的一面. 以下都是个人的经验结合<敏捷>讲解和分享一些东西. 敏捷软件开发 乍一看有点摸不着头脑,不知道是什么东西. 软件开发从计算机问世直接快60个年头了.软件也从非常简单的机器语言,到现在的面向对象. 在这个过程中,
敏捷软件开发和极限编程介绍
转自:http://www.uml.org.cn/SoftWareProcess/201108154.asp 0. 软件开发的本质 先让我们看看一般的产品生产: 例一,汽车生产.原材料.配件等采购完毕(我这里说到了采购配件,这相当于把部分功能的生产转交给其他职能公司.对应到软件生产的(子)项目外包.这个话题在本文就不扩展了),进入生产.组装.测试车间,进行一系列规定的工作流程.正常情况下,如果不发生不可抗拒的事件,那么可以按时完成合同规定的交付.这中间不会有什么变动性和不可预测性. 例二,再来看