一位匠人的中州韵——专访Rime输入法做者佛振

摘自 http://www.ituring.com.cn/article/118072前端

对一个匠人来讲,创做一件有情调的做品,必定是出于对精湛技艺的追求。若是仅仅是为了现实目的,当然能够写出高质量的软件,代码自己却容易缺少灵 气。代码的艺术和美,与文学略有共通之处,在于强大的表现力。缺少灵气的代码只顾平铺直叙,是没有生命力的机械;好的代码越是简单明了,越是作获得更多事 情。面试

编程的乐趣在于享受这份创造的快感:他不仅是在敲代码,而是在开动脑筋调教程序,增益其所不能。甚至会有一刻在心中大呼:终于再也不像菜鸟同样写程序了!谁愿作只会搬砖的码农?定要像设计师那样思考,才称得上有手艺的编码匠。算法

二〇〇八年我辞去搬砖的工做,立志练好技术,未来上Google、Facebook谋职,作个有技巧的码农。修炼的方式,就是完成一个有挑战、来源于真实需求的软件做品。编程

 

对前端工程师很好的评价和将来展望:

http://www.ituring.com.cn/article/133104后端

 

节选:浏览器

于Web应用和原生应用争论,你有什么见解?前端工程师

如今整个前端圈子里面有一小撮人,有点像原教旨主义者,他就以为Web是一个神圣不可侵犯的既有体系,“客户端已死,Web永生”,他们以为在移动 设备上面,Web终有一天会赶超原生应用。但我以为这不是目的,Web只是一个技术手段,为何必定要在移动设备上赶超原生技术呢?数据结构

全部的工程师仍是首先应该把用户放在第一位,你要解决的是用户的问题,而不是用一个特定的技术手段去解决用户的问题。我见过不少人,他们处处去跟人 争辩,说Web如今发展得很快,必定会在移动设备上大有所为的。可是没有办法回避的是,Web确实性能没有原生应用好。也有人反过来讲,过几年随着硬件的 发展,手机CPU变得更快,内存更大,那Web技术可能就会变得更快了,可是他们忽略了一点,Web变得更快的同时,原生技术也更快了。性能

问:为何Web前端工程师会感受转行很困难呢?学习

我遇到过不少人之前多是作Windows客户端开发或者是作Server端开发的,作Windows的可能转Server了,作Server的可 能转去作Andriod,或者转去作iOS,并不会有特别大的困难,由于他们的基础知识是没有问题的,就像我刚刚说的数据结构、操做系统原理这些知识体系 的基础。但为何Web前端工程师如今会以为转行很困难呢?缘由在这:他们的基础知识有缺口。

咱们如今的实践经验就是:若是一个颇有经验的Web前端工程师去作Andriod或者iOS,可能在用户体验这块的感受会比较强,但技术上并无任 何优点,由于Web平台的复杂度比iOS和Andriod低得多。不少公司招Windows客户端工程师的用人标准是非五年经验的我不招,为何?由于 Windows平台复杂度很高。若是你C++代码写得再好,可是没有作过Windows平台开发,没有那三五年的时间去摸索Windows平台的API和 特性,你是不可能作好Windows客户端开发的。Web前端也是客户端开发的一种,只不过是限制在浏览器这个技术平台里面,而浏览器这个平台的复杂度是 远低于Andriod和iOS的。这就是为何不少前端工程师会以为本身转岗很困难的缘由,本质上仍是由于基础知识的缺口。而反过来Andriod和 iOS的工程师转Web,并不会以为很困难,他可能不知道浏览器有什么API,可是不可能连Javascript这个语言都学不会。

Web技术最主要的编程范式是声明式,所谓声明式,就是我写个HTML的标记,声明我要什么,可是这个东西在浏览器里怎么渲染,我控制不了。另一 个比较典型的声明式范式的语言是SQL,我只描述我要什么,可是后面会有个很复杂的体系来按照个人描述去实现。它的好处是你很容易抽象你的需求,学习成本 会比较低,可是代价就是牺牲了运行时的效率。若是你开发又简单,运行时又快,那原生技术就没有存在的必要了。原生技术不是声明式的,好比界面是怎么渲染 的,你要用代码去控制渲染的过程,你不能简单地说我要一个表格,它就给你个表格。而Web是这样的,Web说我要一个表格,浏览器就给它个表格,你再告诉 浏览器说我要一个5像素的阴影,那浏览器就给你一个5像素的阴影,前端工程师根本控制不了这5像素的阴影怎么画上去,或者说只能在很小的范围内控制。这其 实和时间换空间,空间换时间这个简单的哲学原理很类似,不可能二者兼得。

问:对你来讲一个优秀的前端工程师须要具有什么样的技能?或者什么样的知识结构?

前端工程师应该首先是个工程师。如今不少前端工程师,包括我面试的,可能会在基础知识上有所欠缺,基础的数据结构、基础的算法、操做系统原理,这些 对一个软件工程师来说很是基础的内容仍是要知道的。若是不知道的话,你可能会成长得很快,可是很容易进入到一个瓶颈,而且这个瓶颈是没法突破的,由于你的 知识结构是有残缺的。

其次是我的素质,好比说对细节的注意力。前端工程师作的东西,不管是本身实现的,仍是按照设计师的设计稿实现的,差1像素就是差。那这1像素你能不 能看得出来,而且把它纠正过来,这其实不少状况下取决于我的的素质和对细节的注意力和追求。由于我也接触过不少前端工程师,他以为差1像素就差吧,可是 UI质量可能差异就在这一像素上,你差了这1像素,就不是100分了。

第三部分是你要对用户体验有一些基本的了解和判断,什么样的东西体验是好的,什么样的东西是体验流畅的,怎样可以让用户更有效地去接受你想传达的信息。一些交互设计上的最佳实践是必定要知道的,这不彻底是设计师的事,前端工程师也要参与进来。

问:你在面试的时候,除了这些技能以外,你还看重别的什么吗?

其实我我的会比较看重一我的的视野。不少部门说我也看重视野,可是前端工程师应该尤为看重,由于前端技术更新迭代太快了,Web技术自己就很是不稳 定,你今天会的东西,明天睡一觉可能就已经发生变化了。前端工程师若是视野不够开阔,你所了解的东西广度不够的话,就很难跟得上这种进步速度。

另外,前端是最接近用户的这一端,你不只要能从工程的角度,从站在你背后的产品设计师、后端工程师的角度去跟用户交流,同时你要能站在用户的角度, 反向地跟你后面的这些设计师和后端工程师交流。好比后端工程师给我一个API,我做为使用者来讲必须能判断什么是好用的,我才能把后端想要传达的信息有效 地传达给用户,再把用户的交互反馈给系统。前端工程师要站在两个角度去沟通,要可以从很是不同的角度去看待同一件事情。

 

(一千个读者一千个哈姆雷特 也许吧 总要有些坚持的)

不少时候若是你真的潜心在工做里面,什么也无论,可能过了一段时间后你会发现你比本身想象的走得更远。在互联网这个外部环境变化比较快的行业里面,超过三 年的规划我以为意义都不大,由于一年之后可能整个外部环境就彻底不同了。我本身如今可能会作一些团队管理,包括产品的研发管理上面的事情,这也是我两三 年前彻底想不到的。之前我以为本身会一直作工程师,前端作不了,我会去作别的,但如今看来,“作事”对我来说可能更重要,技术只是一个手段,是支撑之一, 还有其余的东西须要保障。

相关文章
相关标签/搜索