杰出软件工程师具备的能力
来源:才华咖 本文已影响2.04W人
来源:才华咖 本文已影响2.04W人
硅谷是所有软件工程师向往的天堂,硅谷杰出软件工程师具备哪些能力呢?一起和yjbys小编来了解一下吧!
一、不害怕探索陌生程序语言
接触新专案或是转换工作跑道时,都有可能需要学习全然陌生的程序语言,许多人对此感到害怕,甚至未尝试就先放弃。其中,跳脱舒适圈的恐惧往往多于学习程序,会担心是否无法重现过去工作的好表现,甚至因此怀疑自身能力。
不论是多厉害的工程师,一定都有起点,就像打造Microsoft Windows基础的微软资深工程师Dave Cutler为文组出身,没受过正式电脑科学教育,比起同辈花更多时间在错误中学习。在这之中,最重要的两个关键为具备「成长心态」(growth-mindset)而非「固守心态」(fixed-mindset),以及「乐于学习」(optimize for learning)的态度。
学习陌生程序语言这项关键能力会越练越上手,并让你在学习过程中成为更好的程序设计师。
二、精通Debug
「为什么程序跑出来和我预期的不一样?」是许多工程师会遇到的问题。Debug能力往往是影响工程师是否能顺利完成专案的关键因素,却被大部分人低估。Debug的系统性思考如下:
先假设造成bug的可能原因。
若假设为真,界定此假设可能导致的结果。
试著检视是否有和这些结果冲突的现象。
若有冲突表示假设错误,要重复上述思考过程。
由此可知,想加快Debug速度,要提升「提出假设」和「检视假设」的能力。假设能力可随著Debug经验的累积而提升,检视能力则需加强善用检测工具的技能。在此过程,必须先假设所有东西都是可检视的,并找出可用来检测或加快检测速度的工具或机制,千万不要只用自己熟悉的工具。
三、开发节省时间的工具
减少时间做那些电脑就可做的工作,例如开发节省时间的工具和使工作流程自动化。
曾负责Facebook软件基础建设团队的软件工程师Bobby Johnson,带领该团队从6人成长至超过1百人。他观察到,团队中表现出色的`人多数写了许多工具,这些看似和绩效无直接相关的工具开发时间可能占三分之一的工作时间,却因此大大提升工作效率,其中包含用来部署程序、监测系统,以及其他可节省时间的工具。
四、优化重复性工作的速度
软件工程师每天可能要搜寻、浏览函数定义很多次,善用键盘快捷键可省下可观的时间。例如,每次搜寻需花12秒,类似的步骤每天要重複20次,若用快捷键可将搜寻时间缩短到2秒,一年下来即省了40个小时。其他状况如每次Debug都需要在不同装置测试,除了要分别打开app,还要设定测试情境,这时候就可以思考如何加快这类重复性工作的速度。
五、发展系统性思考模式
写完程序码、让程序可运作仅是冰山一角,要产出真正有价值的程序,必须从程序本身提升到整个系统来思考。
你的程序和其他程序库以及其他人写的功能是否相容?
程序是否测试完成,并确保其他成员可执行你写的这些功能?
部署你的程序需要改变哪些生产环境?
新程序对其他正在运作的系统是否有负面影响?
客户和使用者的新程序使用情况是否如预期?
新程序是否达到公司期待的效果?
从宏观的角度思考问题,可让你更懂得如何调配时间和精力以让程序达到最佳效果。
软件工程师的自我评价
建筑师要具备哪些能力
去日本留学需要具备哪些条件能力
采购师必须具备的能力素质
系统架构师应该具备的能力
城市规划师应具备的能力
造价工程师必备的五项能力
软件工程师
一个合格的电气工程师应当具备哪些技能?
高级软件工程师需要的条件
营销师必须具备的能力
软件工程师软件工程师
优秀的造价师具备哪些能力
造价师要具备哪些能力
杰出软件工程师具备的能力
计算机四级软件测试工程师备考试题
形象设计师应当具备的能力
形象设计师需具备的能力
高级人力资源管理师需要具备什么能力
形象设计师需具备的能力
形象设计师要具备的能力
一名出色的质量工程师需要具备的知识
HR必须具备的软实力
茶艺师应具备的能力
室内设计师该具备的能力