在软件开发里高手和新手的区别不在于知道的多少而是在于找的快
大学的课本《数据结构》就是不错的教材。在这里西安软件公司推荐真有兴趣的朋友去学习一下“有限状态自动机”,有了这个基础,所有的算法都可以幻化出来。其次是充分理解面向对象的思想,《设计模式》是一本很好的教材。面向对象不但可以说是软件开发工程领域的一项技术革命,其思想对于许多自然科学、社会科学领域都有启发作用。然后是技术问题的搜索能力,高手和新手的差别不在于知道得多,而在于找得快。绝大部分技术问题都已经有前人的成熟或者不甚成熟的解决方案,找到之后稍加修改就好了。
而在软件开发过程中解决技术问题中的一大类重点问题就是寻找现有的功能控件并运用,整个现代编程的重点就是已有控件的集成。对于一个一般的软件工程项目来说,除非是核心部分的功能,否则根本不可能让你有时间和成本去开发一个完整的功能控件,只能利用现有的资源。最后是成本问题,这里我特别强调的是学习方面的成本。其实第三个问题也可以理解为开发方面的成本问题:如果你掌握了我最上面所说的前两点能力,你将可以亲自解决几乎所有问题,但是出于成本的考虑你必须依靠现有资源来组合,而不是去重建。
当然,软件开发就是这样,你越是了解的多就约有优势,但是每个人在学习、工作的过程中付出的努力程度也是不相同的,而计算机行业变化又是飞速的,用昨天的技术在今天的战场上是不可能打胜仗的。尤其对于新人,你很难知道哪种技术是真正有生命力的,如果你学习了太多没有前途,自己很难用到的技术,不但不会给你带来实际的优势,反而浪费了时间。我无法在一篇文章里告诉你哪种平台,哪种技术值得学习。而且每个人的情况不同,我的见解也不一定对你有用,这只能留给你自己去判断。我想说的是,学什么、不学什么;先学什么、后学什么;用多少时间学习,用多少时间工作;掌握好其中的平衡是一种艺术。心里必须有一个成本概念。