会写程序还不够,硅谷优秀软件工程师具备的5种能力谷歌等知名互联网公司资深软件工程师总结了他们眼中高生产力的优秀软件工程师具备的5种能力.1.不要害怕探索不熟悉的编程语言。在接手一个新项目或改变工作轨道时,您可能需要学习一门完全陌生的编程语言。许多人对此感到恐惧,甚至在尝试之前就放弃了。其中,对跳出舒适区的恐惧往往超过学习过程,担心自己是否无法重现以往作品的良好表现,甚至因此怀疑自己的能力。再优秀的工程师,也要有起点。就像构建微软Windows基础的微软高级工程师DaveCutler一样,他出身于文学圈,没有受过正规的计算机科学教育,比同龄人花更多时间从错误中学习。其中,最重要的两个关键是拥有“成长心态”而不是“固定心态”和“优化学习”的态度。学习一门不熟悉的编程语言的关键能力会越来越好,并让你一路成为更好的程序员。2.精通Debug“为什么程序运行的和我预想的不一样?”是很多工程师都会遇到的问题。调试能力往往是影响工程师能否顺利完成项目的关键因素,却被大多数人低估了。Debug的系统思路是:首先假设bug的可能原因。如果假设为真,请定义该假设的可能后果。尝试查看是否与这些结果有任何冲突。如果冲突表明假设错误,则重复上述思考过程。由此可见,要想加快调试速度,就必须提高“提出假设”和“检验假设”的能力。假设能力可以随着调试经验的积累而提高,而检验能力则需要加强善用检测工具的技巧。在这个过程中,你首先要假设一切都是可检查的,并找出可以用来检测或加速检测的工具或机制,不要只使用你熟悉的工具。3.开发省时工具减少时间来完成计算机可以完成的任务,例如开发省时工具和自动化工作流程。负责Facebook软件基础设施团队的软件工程师BobbyJohnson带领团队从6人发展到100多人。他观察到,团队中表现突出的大部分都写了很多工具。这些看似无关紧要的工具的开发时间可能占了工作时间的三分之一,但这大大提高了工作效率,包括用于部署的工具。程序、监控系统和其他节省时间的工具。4.优化重复性工作的速度软件工程师可能一天要多次搜索和浏览函数定义,善用键盘快捷键可以节省可观的时间。例如,每次搜索需要12秒,类似的步骤每天重复20次。如果使用快捷键将搜索时间缩短到2秒,一年可以节省40个小时。在其他情况下,例如,每个调试都需要在不同的设备上进行测试。除了单独打开app,还需要设置测试情境。这时候,你可以想想如何加快这种重复性的工作。5.养成系统的思维模式。编写程序代码并使程序运行只是冰山一角。要制作出真正有价值的程序,必须从程序本身到整个系统来思考。您的程序是否与其他人编写的其他库和函数兼容?程序是否经过全面测试以确保其他成员可以执行您编写的功能?部署您的应用程序需要更改哪些生产环境?新程序会对其他操作系统产生负面影响吗?客户和用户对新程序的使用情况是否符合预期?新计划是否达到了公司的预期?从宏观的角度思考问题,可以让你更好地理解如何分配时间和精力,使程序达到最佳效果。
