软件从业者需要应对来自两方面的挑战:
1. IT 行业的知识、技术更新很快, 如何去应对 ?
2. 软件开发主要包括什么样的工作和任务, 需要拥有怎样的专业技能和素养?
必须认真去思考这些问题,而不是一味埋头于学技术, 这样, 才能事半功倍。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
我的答案是: 精准的问题理解能力、使用专业工具分析问题的能力、快速自学的能力、灵活的头脑、敏捷的思维能力以及谦和的品格与修养。
理由如下:
1. 因为从事软件开发从根本来说就是解决问题的一种形式,因此, 培养娴熟的的沟通交流技能和良好的问题理解能力,准确理解客户的需求以及领导的意图, 把握问题本质,是非常重要的;
2. 在充分理解问题及需求的前提下,接下来就需要使用专业工具来分析问题, 获得求解方案。这里,专业工具的涵义其实可以很广泛, 小到一个概念(比如I/0流,信号量) , 一个编程技巧(比如 数组中的“哨兵”元素), 一个数据结构(比如数组、链表、散列表)、一种算法技术(比如分治法、动态规划法),中到一种具体技术(比如高速缓存、虚拟存储技术),大到系统建模工具、数据库、应用架构的选用。程序员应当自觉地意识到并系统地运用这些有力的工具利器。
3. 自学能力也是相当重要的。工作中需要一个人能够迅速理解和掌握实际中用到的复杂而综合的技术,需要扎实的专业功底和一套适合自己的自学方法。
4. 光有勤奋用功的精神, 若没有一个灵活的头脑和敏捷的思维, 在这个“聪明人的行业”里也会举步维艰; 应当花功夫来磨练自己的头脑和思维,使自己思考问题能够更加周全、成熟和敏捷, 这样才能真正地胜任更高层次的任务。不得不说,这确实是一个智力行业,无论这种智力用薪水衡量起来是否廉价。
5. 程序设计内功修炼。 这种内功可从计算机基础课程中获得。核心的计算机专业课程主要有:离散数学、 计算机组成原理、操作系统、数据库、数据结构、算法分析与设计、计算机网络、编译原理。 重点并不在于学到了多少具体专业知识,而在于通过这些课程的学习,培养良好的问题理解能力,使用专业工具分析问题的能力,快速自学的能力, 以及锻炼灵活的头脑和敏捷的思维能力。 此外,广泛涉猎软件开发书籍,比如 《Unix 编程艺术》,《程序设计与实践》, 《编程珠玑》, 《程序员修炼之道》等, 也是对提高编程开发功底的大有助益的途径。
6. 丰富的经验资质。 通过细致地观察与适应真实的工作环境, 理解所要从事的工作类型及任务,从而可以有的放矢地学习和总结,通过长期的积累使自己成为该领域中一名有资历的从业人员。
7. 品格与修养。 任何时候都不要忽略了个人的品格与修养的修行。做人为本,行事有准。
最后,什么也取代不了多加研习, 勤于思考、实践和总结。