推荐序
小时候,老师问大家长大的理想是什么。我记得曾自豪地说——工程师。后来,真的走进了计算机领域,成为一名软件工程师。在学校里学的都是基础课,记忆犹新的有计算机原理、操作系统、编译原理、数据结构和算法等,感觉是终身受益,就像练武功,都要练好弓、马、仆、虚、歇5种基本步型一样。
那时并没有前端的说法。人机界面开始主要以程序员使用为主,通过黑洞洞的Terminal来编程,程序员还乐此不疲。后来出现了第一波突破——各种图形界面,PC变得亲民。而以iPhone带领的移动终端的第二波革新让用户能够通过触摸、视觉和声音真正自然地与设备交互。将来必然拥有超越触摸、视觉和声音识别的技术,属于传感器和物联网的时代。这种技术使用传感器和人工智能识别身体运动、温度变化和其他环境要素,并据此做出回应,使得设备看起来可以读懂内心的想法一样。在不久的将来,一个传感器阵列能够提供高度的情境感知,并且协同工作,收集和处理关于周边环境的信息,通过人工智能预测需求并做出完全个性化的安排。前端工程师的使命也随着人机交互的显著进步而不断拓展。
时光回到刚工作时的2000年,正值互联网的发展初期,作为一名软件工程师,解决问题就是关键,对于前后端编程都需要熟悉。当时,前端编程的核心技能有HTML、CSS、JavaScript,对于习惯逻辑思维的工程师,学起来并不算难。随着互联网的发展,特别是2010年后,移动设备成为主流,前端工程师角色被行业认可,并且越来越重要,涵盖多终端的视觉和交互的实现,面对的是软件工程的一个持久的挑战——人机交互。首先,人机交互是软件产品里变化最频繁的部分,同时是非常关键的一环。其次,兼容各种浏览器、Web的标准,以及适配多种终端,都是很大的挑战。另外,前端领域的技术发展也越来越快,各种新的思想、设计模式、工具和平台不断出现,怎样快速学习、在不同场景下做出恰当的选择是成为一位优秀前端工程师必备的素质。许多人机交互问题有非常巧妙的思路和精彩的解决办法。不得不说,前端工程师在工程师群体里属于非常有创造力、想象力的一群人。
前端领域各种新技术、新思想不断涌现,AngularJS、React、Vue.js、Node.js、ES 6、ES 7、CoffeeScript、TypeScript,令人眼花缭乱。对于许多开发者,估计还没学明白一样技术,就发现其已被另一些新的技术取代而“过时”了。但是,如果退一步来看,前端的基本功仍然是HTML、CSS、JavaScript,还有算法、数据结构、编译原理。这一点,有点像《笑傲江湖》里,令狐冲一旦领悟了独孤九剑,永远能够无招胜有招。
除了具备扎实的基本功之外,一个优秀的前端工程师必须要有自己擅长的领域,并且钻研得足够深入,只有花时间学习成体系的知识才能从中总结出规律并形成方法论,从而最大化学习的价值。同时要有广泛的视野,不能局限于前端本身,因为有很多东西只有站在前端之外才能看得更清晰、更透彻。例如,React集成了许多后端的优秀理念,包括采用声明范式轻松描述应用、通过抽象DOM来达到高效的编程。围绕React还出现了许多工具和框架,形成了React生态。React逐渐从最早的UI引擎变成了前后通吃的Web App解决方案,衍生出来的React Native又实现了用Web App的方式去写Native App。这样,同一组人写一次UI就能运行在浏览器、移动终端和服务器上。
作为智能物联网先锋的远景智能,一直崇尚工程师文化和工匠精神,非常强调基本功、专业深度以及跨界创新。前端团队徐超写的《React进阶之路》,内容由浅入深,再结合实战,很像我读大一时的Java 101课程的教材,对于需要学习React的读者是一部非常好的参考书。读这本书,最好的方法是领悟其精髓,掌握软件设计之路,灵活使用以解决问题。工程师不能因为太细的学科限制了自己的思维,也不能像大公司一个工作一个螺丝钉,在很窄的领域里重复劳动。工程师天生是发现问题、解决问题、优化问题的。达·芬奇、特斯拉之所以是完美的工程师,因为他们会掌握各种学科,融合并创新,在解决问题的同时开创先河。未来的信息化世界就是要不断地聪明学习,融合各种学科,通过实践解决问题,奇思妙想地创造技术的进步。
计算机的不同语言、不同技术和算法就好比一堆便宜或者昂贵的工具(如锥子和刨子),其实这些都不重要,因为大家都忽略了,做出漂亮器具的是那个工匠,而不是工具。脑子里的经验积累、天赋、执着与认真的态度、不停尝试、追求完美的态度,加起来才能创造好的作品与产品。计算机语言就像赛车场上的跑车,换了车队和跑车,舒马赫还是F1车神,观众还是会为其欢呼雀跃,正因为车神掌握了与跑车和赛道的沟通之道!
远景智能技术副总裁、前阿里巴巴集团淘宝CTO
余海峰