1.1 引言 当今世界,“程序员”这么一个职业名称可分为很多类型,比如SI程序员、数据库程序员、网页设计程序员、游戏设计程序员,等等。这些程序员在不同的开发环境下,利用不同的程序语言和工具编写程序,解决各自面临的问题。那么,要成为跨领域的优秀程序员需要具备什么样的条件呢? 程序设计就是解决问题 程序设计需要丰富的知识。可能程序员只是看起来在漫无目的地敲打键盘,其实他们脑海中对程序设计语言的特性、程序运行的硬件平台和操作系统、对所使用的库的注意事项等进行着综合性的思考。在满足程序运行可占用内存空间的要求和限定的运算时间内,尽可能编写简洁而可重复利用的代码。 了解这些限制条件和要求后找到最佳解决方法,这种能力就是成为跨领域程序员的必要条件,本书称这种能力为“解决问题的能力”。程序员掌握的程序语言、库、算法等方面的知识就好比一个个拼图块,“解决问题”就是将这些拼图块放入合适位置,最终完成整幅图案。 但解决问题的能力是十分抽象的,所以训练起来相当困难。想自学成才的程序员虽然可以一直学习新的程序语言和程序框架、开发方法,但无处可学如何对其进行整合。 那么,想成为优秀程序员有没有更好的途径呢?