程序员|程序员的八个级别,来看看你是第几级~( 二 )
要成为\"大牛\"并不是一件简单的事情 , 需要付出比牛人们多得多的努力 , 一般来说 , 至少要看过200~400本左右的专业书籍并好好掌握它 , 除此之外 , 还得经常关注网络和期刊杂志上的各种最新信息 。
专家当大牛们真正动手做一个操作系统或者类似的其他软件时 , 他们就会发现自己的基本功仍然有很多的不足 。 这个时候就要求他们会进行基础研究 , 主要的内容就是研究非数值\"计算\" 。
非数值计算可是一个非常庞大的领域 , 不仅时下热门的\"多核计算\"与\"云计算\"属于非数值计算范畴 , 就是软件需求、设计、测试、调试、评估、质量控制、软件工程等本质上也属于非数值计算的范畴 , 甚至芯片硬件设计也同样牵涉到非数值计算 。 如果你还没有真正领悟\"计算\"二字的含义 , 那么你就没有机会进到这层楼来 。
在这个时候 , 牛人和大牛都要仰望你 , 但是到这里 , 你的知识来源都是别人的 , 是在别人知识的基础上改写 。 你自己并没有多少自己的知识和思想分享给别人 , 如果想要进入另一个阶段 , 还需要继续往上爬 。
学者当\"专家\"们想继续往上一层楼爬时 , 他们会发现专业性的学习对于他们来说是很简单的 , 拦路虎是“创新” 。 像上面提到的 , 想要在专家的基础上更近一步 , 就需要产生自己的知识和思想 。
但学习的都是一样的东西 , 怎么去创新呢?古人有一句话“温故而知新” , 也就是工作当中说到的“复盘” 。
以查找为例 , 并不是去天天盯着那些复杂的查找结构和算法进行研究 , 你需要做的是将二分查找、哈希查找、普通二叉树查找等基础性的知识好好地复习几遍 。
对任何一种简单的东西 , 你需要考虑各种各样的需求 , 以需求来驱动研究 。 最后你将各种最基础性的查找结构和算法都了然于胸后 , 或许某天你再看其他更复杂的查找算法 , 或者你在散步时 , 脑袋里灵光一现 , 突然间就发现了更好的方法 , 也就从专家晋升为\"学者\"了 。
学者所做的事情 , 通常都是在前人的基础上 , 进行一些小的优化和改进 。
这层楼里所说的创新 , 是指学术层面的创新 , 是基础研究方面的创新 。
大师成为大师必须要有较大的贡献 。 首先解决问题必须是比较重要的 , 其次你要比前辈们在某方面有一个较大的提高 , 或者你解决的是一个全新的以前没有解决过的问题;最重要的是 , 主要的思路和方法必须是你自己提供的 , 不再是在别人的思路基础上进行的优化和改进 。
如 , 像Hoare一样设计出一个快速排序的算法;或者像Eugene W. Myers一样设计出了一个用编辑图的最短路径模型来解决diff问题的算法;或者像M.J.D. Powell一样提出了一个能够处理非线性规划问题的SQP方法;甚至设计出一个像C++或Java一样的语言......
以前在单核时代开发的各种算法 , 现在都需要改写成并行的 。 数据结构与算法、图像处理、数值计算、操作系统、编译器、测试调试等各个领域 , 都存在大量的机会 , 可以让你进到这层楼来 , 甚至有可能让你进到更高一层楼去 。
科学家科学家向来都是一个神圣的称号 , 要成为科学家 , 你的贡献必须超越大师 , 不妨举一些例子 。
如Dijkstra设计了ALGOL语言 , 提出了程序设计的三种基本结构:顺序、选择、循环 , 他是可以被称为科学家的 。
类似的还有:
Don Knuth , 奠定数据结构与算法这门学科的基础;
巴科斯 , 发明Fortran语言 , 提出了巴科斯范式 , 对高级程序语言的发展起了重要作用;
Ken Thompson、Dennis Ritchie , 发明Unix操作系统和功能强大、高效、灵活、表达力强的C语言 , 对操作系统理论和高级编程语言均作出重大贡献 。
......
看了上面列出的科学家的成就 , 你会发现 , 要成为“科学家” , 通常要开创一门分支学科 , 或者是这个分支学科的奠基者 , 或者在某个分支学科里作出里程碑式的重大贡献 。
推荐阅读
- 脑极体|百度之星正在出圈,用十六年打造程序员版“天才请就位”
- 程序员|我国超重型火箭核心设备亮相,载重超“胖五”5倍,还用上了3D打印
- 程序员|码农新机会!2019-2020这个领域程序员缺口很大!
- 程序员|烟草局事业编朝九晚五年入20万,羡慕阿里年薪70万的程序员
- 程序员|支付宝、微信迎来劲敌!这家移动支付巨头已崛起,3年斩获3亿用户
- 程序员|年薪50万开发者相亲失败:程序员,别输在不会说话上
- 爱摄影的程序员|米家耳温计1秒给宝宝测温,测温不用等
- 裁员|程序员在深圳买下600万房子,转眼间就被裁员,失声痛哭
- 程序员|罕见!国家博物馆收藏了一行代码,出自阿里程序员之手
- 伯乐在线|程序员提高编程能力万无一失的办法