自我提升

老是犯同种错误!初阶工程师如何对自己的程序码负责?

经常会看到工程师是用「自己的想像」完成工作,导致成品交出时与客户想法有落差,其实客户想要做的东西并不复杂也并非完全做不到,在呐喊「不可能完成」之前,要先回头检视一下客户想要的「规格」究竟是什么? 本篇来自五倍红宝石资深工程师 RUBY 大叔投稿,INSIDE 经编审刊出。 为了在工作上得以生存,大家都曾经做过哪些努力呢? 前阵子笔者才刚结束一个与外包厂商的合作,执行过程感触良多,每个人在职场上或多或少都有犯错过,但回头检视自己为何做不好,且力求改善的人并不多,很多时候不去做新的尝试,就不会找到新的方法。 今天跟大家聊聊初阶工程师如何提高自己的经验值以及工程师的当责之道是什么? 初阶工程师可能都碰过的问题 我想一定很多人都曾有过在工作上反复犯下同一种错误,或没理解到客户想法而做白工的经历,种种的恶性循环导致自己很疲惫,平常与同事们开会时,也会看到一些现象,如果你是初出茅庐的工程师,可以看看自己是否有这样的问题,如果你只是一般公司员工,这篇文章也有一些想法可以参考。 1. 总是让客户帮你检查错误 当我在面试新工程师时,都会请面试者针对自己写的代码(或作品)做出讲解,但很多面试者解释不出来,甚至没有想过自己为何这样做,只是应付面试基本需求。 作为一名工程师,必须训练自己站在更全观的角度思考自己经手的项目,在递交给客户之前反复确认,而非让客户扮演除错的角色。 有些人或许对自己交出的东西很放心,万一犯错了,如果后果不太严重就会轻忽它,记住,如果想提高自己的工作敏锐度,第一步必须先保持对所有事物的怀疑,包含自己写的代码。 2. 交的东西跟客户想象有落差 经常会看到工程师是用「自己的想像」完成工作,导致成品交出时与客户想法有落差,其实客户想要做的东西并不复杂也并非完全做不到,在呐喊「不可能完成」之前,要先回头检视一下客户想要的「规格」究竟是什么? 大部分人都只想把工作做完而非做好,更别说是花时间与客户做沟通,其实,只要一步步确认好客户要的需求「规格」,善用所学的程序技术测试项目,持续确认、持续验证,就有机会破解难题。 换句话说,想达成客户的需求并不用很高深的技巧而是要用正确的方式实现。 该如何持续累积自己的经验值? 这边想先说一下,现在很多人想投入工程师领域,因此坊间也开了蛮多三个月工程师速成这种课程,并不是说上这种课不好,而是当每三个月就多出上百名工程师的情况之下,个人经验值的累积就更为重要了! 无论你是透过哪一种方式当上工程师,以下这两点希望可以带来一点帮助。 1. 厘清核心与非核心工作是哪些 当接收到工作任务时,很多人会希望一步到位做完再呈现给客户看,除非是对客户的规格相当清楚有把握,否则可能会造成自己花费过多时间在错误的理解上,一开始可以先从最基本的需求「确认」做起,当完成一部分后先让客户验证,以达成迅速对焦及修正。 并非每项任务都要达到自己内心要求的标准才算及格,得认知到核心与非核心功能分别是哪些,再进一步做工作上的轻重比例分配,降低自己心理门槛及压力。 2. 学习难度别调太高,慢慢来比较快 每个人都想在工作岗位上尽早上手,为此,积极的工程师们也愿意多看一些书充实技术,这是非常好的事,不过,有时网络上推荐的书自己当下的状态不一定能看懂,或是作者书写方式跟自己理解事物的方式差异很大,造成难以吸收,网络上也有很多「经典」书籍是适合有经验(或想更进阶)的人去读,初期读的话很容易变成似懂非懂的状态,因此一个好的技术书,应是选择 「适合自己」的。 平常在工作时,也要让自己边做边学,毕竟很多状况没有实际做过就无法了解,逐步找出答案,才能累积对的经验值,就像减肥,也不是直接选择高强度方式就能瞬间瘦身,总是得配合自己的状态行进才能长远有效。 工程师的当责之道即是「职人精神」 所谓的「当责」是指为自己的承诺负责并完成落实,如同我一开始抛出的问句:「为了在工作上得以生存,大家都曾经做过哪些努力呢?」 很多年后,当你回头检视自己,你会成为怎样的工程师,这都可能取决于你的当责之道是什么。 我认为工程师的当责之道就是「职人精神」,就像专业咖啡师磨练自己的技术,专注完成一杯咖啡的态度,工程师也是如此,必须培养让自己在工作上成为职人的境界,进而圆满自己的人生价值。

Continue reading

怎样成为一名更优秀的程序员?

有几个人在 React 大会上向我请教一个问题——如何成为一名更优秀的程序员。人们将我视为一名非常资深的程序员,因此值得听听我的建议。我觉得可以分享一下,自己多年来在编程方面的“思维模式”。 先简要自我介绍一下:我叫 James Long,今年 32 岁,有超过 10 年的丰富工作经验。不过,直到近几年,我才对自己的工作越来越有信心。即使现在,我还是不断怀疑自己。关键是这种感觉不会消失,所以试着忽略它,继续深究技术知识,继续积累经验。 我再次提醒一下,这些只是提高你技能的几点建议。最终,你需要弄清楚自己适合的方式是什么。 1. 找到能激励你的人,但不要崇拜他们 过去许多年,我仰慕过许多人,并且通过他们关注新技术。我相信他们是正确的,并且对他们所做的事情深入研究,因此学到很多。 这些人往往非常高效、才华横溢,并且能鼓舞人心。你要想尽办法找到他们,让他们激励和指导你。 不过,别崇拜他们。如果仅看 twitter 上的贴子,你会觉得他们遥不可及。但是,如果走近他们的真实工作中,你会发现自己与他们相比没什么不同。只不过在到处摸索尝试而已,我们都只是在进行试验。 最后,不要盲目地相信他们。如果你有不同意见,就请他们参与进来,并从观点碰撞的过程中汲取经验。 我的一些最有成效的对话就是这样发生的。曾经,我的 Emacs 配置一团糟。不知道为什么,我的 OCaml autocompletion 不能用了(它坏了一个多月)。我没有自动化的东西,有时必须在 shell 历史中寻找所需的命令。为修复问题,我一开始写 ugliest 代码。我将东西写成全局对象,直到最后才明白我到底做了什么。 最有经验的程序员一直在破解和钻研;最重要的是,你能完成任务,达成目标。 2. 不要贬低自己的工作 程序员小白往往认为他们的工作价值不大,因为他们是新手。或者你可能是一名有经验的程序员,但是在一个新领域工作,这会让你感到不爽。但在我看来,最好的想法往往来自于新程序员,他们可以看到现有技术的改进点,而思维固化的人却看不见。 不管怎样,你的工作都是值得的。最坏的情况是,即使你的想法没有成功,社区也可以从中了解到为什么这种方法行不通。 (给社区的一个提示:这要取决于我们是怎么做的,并让新人很容易融入进来。) 3. 不要因为害怕落伍而不停工作 每天都会有新技术问世,如果你一晚上不碰技术,可能就会感觉跟不上这个世界。这不是真的。事实上,如果经常放下手头工作,你会做得更好,因为你会有新想法。 我发现,当不工作的时候,我总会有新想法不断产生。 实际上,网络上每天发布的内容大多是“新瓶装旧酒”,真正具有革命性的技术每隔几年才会出现一次。关于这个问题,你可以看看这个视频—— Hammock Driven Development 。 4. 忽略 fluff 客观上说,你能取得更快进步的主要方法之一是忽略那些并不能提高技能的“fluff”。换句话说,要“聪明的利用时间”。一天的时间有限,你需要将时间花在钻研更深层次的事情上。随着时间的发展,你会发现自己有很大进步。 那什么是“fluff”?这取决于你自身的具体情况。但是,我可以给你一些我认为是“fluff” 的例子:语言语法、库 API 和配置构建工具。例如,学习一个新的 ES7 JS

Continue reading

Categories

Please Like Us