招聘程序员,招聘一个程序员需要多少工资( 七 )


扎实的历史知识可以为你提供一个非常好的工具包,在面临新技术时可以想想:这次有什么不同?该问题的答案通常会决定一个新技术的成败 。
02人、文化和社区都很重要
人们往往以为工具和科技可以自行发展 。例如,面向对象编程演变成了函数式编程,文本编辑器发展成了完全成熟的集成开发环境(IDE),还有动态语言转变成了静态类型语言 。然而,新技术和框架不仅仅沿着自身的道路发展 。它们是由人、组织和社区发明、构建并传播的 。
当一种新型的工具或技术涌现时,其背后的技术基础(它有什么不同?构建的基础模式是什么?)和动机(为什么有人选择现在创建这个?哪些人会对此感兴趣?这项技术可以为公司解决哪些问题?)非常重要 。
我最喜欢的一篇关于为什么有些工具可以获胜而有些被淘汰的文章是 Richard P. Gabriel 于 1989 年写的《The Rise of Worse is Better》[1] 。文章描述了为什么 Unix 和 C 战胜了基于 LISP 的技术(其原因与两种解决方案内在的品质无关) 。
在文章中,Gabriel 描述了“糟糕的设计却有更好的发展”,他比较了新泽西学校和麻省理工与斯坦福大学的设计,表明实现的简单性比终端界面的简单性或正确性更重要 。正是这一点使得 C 和 Unix 在市场上击败了 LISP 。C 编译器比 LISP 编译器更加容易实现、移植和优化,这使得 Unix 的实现人员可以更快地向用户交付软件 。这导致这项技术被迅速采纳,并最终意味着更多人(和公司)向 C 和 Unix 生态系统的发展和完善投资 。
在学习新技术时,不仅要理解它们的目标,以及在技术上的实现方法,还要了解它们的传播方式,以及社区的发展 。通常变成重要的主流编程社区的技术正是那些能投为后续问题提供最佳解决方法的技术,即使有时它们看似是在旧技术的基础上发展起来的 。
但真正的秘密是:
有时候领先于技术的工具注定无法得到广泛的采用(我敢打赌很快我们就不会用 Idris 语言编写 Web 应用了) 。LISP 从未成为主流,但是当今很多主流框架、语言、代码库和技术都源自 LISP 的发明和探索的创意,即使在今天学习 LISP 也可以让我们更好地了解未来的技术 。
如果你发现有的工具正处在这样的交叉路口,那么掌握这些情况可能会让你成为下一个超级开发 。
03知其然,更要知其所以然
在我做开发的时候,与 StackOverflow 非常接近的是带有源代码的计算机杂志,你可以手动将这些代码输入到你的机器上并运行程序 。
我是一个粗心大意的打字员,我从来做不到输入完整的程序而不会有任何错误 。与复制和粘贴 Stack Overflow 的代码段相比,这实际上是印在纸上的计算机程序的一个好处(无可否认的仅有的几个!),因为为了跑通代码,你需要真正理解代码 。
作为开发人员,我们常常面临最后期限迫在眉睫的情况,我们需要背负压力尽快将新功能和改好的 Bug 交付到客户手中 。我见过那些急于求成的开发人员,他们只是将代码库和代码片段放在一起,根本没有时间去理解其中的工作原理 。或者,他们发现有什么不对的地方,然后只是尝试不同的解决方案,而不是首先花时间了解为什么系统出了问题 。
不要学他们 。记住,永远不要无脑地借用 Stack Overflow 或其他地方的解决方案,你需要花时间掌握解决方案可行的原因 。更进一步挑战自己,弄清楚为了找到你自己的解决方案,你需要花费多少时间,需要哪些资源等 。
有时你会发现一个小的改动(也许只是使用了另一个库,调用了不同的函数等)就能改好一个 Bug,但是你并不明白其中的原因 。不能就此打住,你需要深入研究,搞清楚为什么原来那个解决方案失败了,而现在这个可行 。这种深入研究常常可以让你找到一些蛛丝马迹,并发现潜伏在系统其他地方的 bug 。

推荐阅读