分享 怎样成为一个优秀的初级开发者

hui · 2014年05月19日 · 最后由 yumu01 回复于 2014年06月22日 · 7534 次阅读
本帖已被管理员设置为精华贴

这是给小朋友的翻译作业,觉得不错,分享给大家。

原文:http://blog.newrelic.com/2014/04/23/better-junior-developer/

翻译:@mr_sun

在过去的几年中,New Relic 聘请了许多接受过各种编程培训的或者“非传统”编程背景的毕业生,其中就包括我!事实上,在我获得我的学士学位以后,我想要进入一所医药大学做进一步的学习,但是这时我获得了 Google 提供的一份技术支持的工作。在四年多以后我利用一个休假的时间出席了 Hackbright Academy,这是个教女性学员如何编程的学校,课程安排为十周(现在延长到了十二周)。在第一周教学即将结束的时候,我知道我终于找到了我想要专注一生去追求的事业和方向。

不过,我的一个最大的忧虑是,我必须放弃我在其他领域已经积累起来的经验和技巧,去进入到一个全新的领域,在这个新领域里,我将面对的竞争对手都是拥有该领域几十年经验的资深工作者。幸运的是,在我真正进入到这样一个新角色以后,在共同工作的许多优秀的前辈的指导和帮助下,我总结出了一下一些自己的感悟:

  • 不断地学习是成为一个优秀开发者的必备基石
  • 有很多工程,是不是直接就开始写代码的

要清晰的认识到,即便作为一个还有很多东西要学的初级开发者,也有很多方法来利用我已经在其他领域已具备的技能。因为自己已经经历过那样一段对自己很不确定的时期,这里我想要向大家传播以下两条信息:

  • 初级开发者:即使你还在学习关于编程的基本技巧,你也可以有很多方式为你的团队做出自己的贡献。
  • mentor:因材施教,换位思考,让你的指导更加符合初级开发者的学习需要,这样将使他们更有自信,使你的指导更具效率。

有很多要学

作为一个初级开发者,你将面临有太多东西要学的挑战,这时,重要的是不要试图所有东西都靠自己去解决,这里有三种方法可以采用:

  1. 找到想要帮助你的人 通过在你所在的团队或者结识其他编程团队,你可以扩展在你遇到问题时能为你提供帮助的网络人群。为了充分的利用网络资源,有一点很重要,就是面对一个问题,你需要先尽自己努力去探究,如此而不解,再去询问别人,这也是珍惜别人时间的一种表现。对于一个初级开发者,如果你在遇到问题时先自己做很多研究,那么你将会更快的学到更多的东西(这个过程中 Google and StackOverflow 将成为你的好朋友,为你提供很多的帮助)。这也会让你那些经验丰富的同事觉得他们对你的指导更有帮助,让他们更相信在下一次你遇到同样问题时你会充分利用他们给予你的建议和指导。

  2. 让别人更容易帮助到你 当你自己找不到合适的方式来描述你遇到的问题时,将更难于让别人理解你到底困惑在哪里。以下是一些我在遇到问题时喜欢使用的提问格式:
    我在尝试____,这样我就可以____
    我在____遇到了问题
    我已经查看了____并且试过了____
    举个例子,这是我最近一次用以上格式提问:“我试图要理解为什么这个账号登录时会出现这个 banner,这样我就能告诉客户他们是否需要关注该警告。我在查看一个问题时找到了这个记录,我检查过了模型,并试图在本地将问题重现”。

  3. 缩小你要学习的范围 这就像在你解决一个棘手的技术问题时,你应该尽量将可能存在问题的范围缩小,以使的问题不至于过于繁杂。可能你想要弄明白的问题有太多太多,但是有经验的指导者可以告诉你哪些重要哪些不重要,给你分析这些问题的优先顺序(我的个人目标:真正自己独立的创建一个 Rails App)。

帮助你的团队

作为一个初级开发者,你很自然会这样问自己:我本还需要这么多的帮助,又该怎样为我的团队贡献自己的力量呢?要记住,这世界上,开发的岗位永远要比开发人员多。所以并不需要在高效(高级开发人员)和低效(初级开发人员)做出选择,而是在于是否有相应的应用需要开发人员来做。记住以下这些策略将有助于反馈,调整你所写的代码

  1. 提出好的问题 我喜欢站在初级开发者的角度开考虑问题,提出好的问题,比如“我们是否在做一件正确的事?”这样可以帮助团队尽早发现错误的引导和假设。这样将避免在开发后期发现这些问题所将浪费大量的时间,所以要尽早提出好的问题。

  2. 给出好的反馈 将有用的反馈在合适的场合合适的时间给到正确的人,这对很对人来说并非易事。但是所有的公司都有其专门的反馈部门,因而即使初级开发者也有可能有机会获得大量参与反馈工作的机会。你也可以帮助预测来自于销售或者技术支持部门的关于产品新版本或产品更新的一些冲突。

  3. 使你的团队面对其他团队表现的更好 通过对你们所合作的团队投入更多的回应与热情,将使你的团队走的更远。有一种很好的方式来使你的团队在其他合作团队面前表现的更好,就是尽可能的向他们展示你们公司的产品特点。你可以有机会展示你的团队已经充分考虑了一些方面对其他团队的影响,比如可靠性。我几乎总是提前写好脚本并对整个流程作好足够的练习,以此来确保我的演示更加高效同时在演示过程中尽可能少的出错。

指导者要怎样才能更好的帮助初级开发者

以上的建议是专门针对初级开发者的,而对于导师来说,要更好的帮助初级开发者,使他们感觉到自己的价值和意识到自己为团队做出贡献的能力,也有很多事情可做。我很感兴趣于探讨如何让初级开发者的学习风格与有经验者的指导更好的磨合和匹配,以达到更好的效果。以此来保证每个人的时间都能被充分高效的利用,无论开发者还是指导者。举个例子,你可以探讨一个初级开发者希望以怎样的频率收到反馈和指示,以及高级开发者在什么时间什么情况下愿意被问题打断。

同时,作为一个高级开发者也就是 mentor,如果你想让初级开发者在一个问题上自己思考更多以此来让他学习更多东西,那么你需要让他知道你的目的。这样是为了避免初级开发者出现过多不自信的消极情绪,因为他们会误以为他们所提出的是一个很简单的问题,但事实上尽管那本是个很复杂的问题,这种误解会让他们怀疑自己的能力,而变得不自信。

结论

一个初级开发者在第一份工作中就如同一张白纸。有许多机会可以通过共同工作的高级开发者的一些技术指导来使他们可以快速提升并且让他们感觉到从第一天工作就能创造价值。

深表赞同

转行半年了,非常享受做程序员的每一天。

看一下,留个脚印。

谢谢分享 正在实习阶段

说得挺好,团队有些应届生,但只要做好 mentor,他们成长得很快。

我是实习生。。。。。。很好。。。

谦虚的态度是应该必备、

想学习能推荐些教程么

@yoocun 社区的 wiki 部分你可以看下可以给你一个方向

dudu_zzzz Rails 程序员如何进阶? 提及了此话题。 04月09日 15:12
需要 登录 后方可回复, 如果你还没有账号请 注册新账号