“如果你无所作为,那么拥有再多资历也毫无意义。”对于初级开发来说,哪些是必须知道的道理呢?
作者 |Ravi Shankar Rajan
译者 | 弯月,责编 | 郭芮
出品 | CSDN(ID:CSDNnews)
以下为译文:
明年将是我从事编程职业的第15年。我的天,不知不觉已经15年了!
回想起来,我仍然记得我成为一名初级开发人员的第一天,我走过一间间灯火通明的小隔间,脑海中想的全是SAP、算法、数据结构、SQL和C++,还有知识管理和项目管理等更广泛的主题。当时的我具备所有的知识,只不过我没有信心在需要的地方使用这些知识。
很多年后,我才找到了这种自信,直到那时我才意识到实际上成功只需要做好两件事情。
学习新事物的态度;
将所学知识付诸实践的能力。
两者都是需要培养的技能,我们不仅需要努力工作,而且还需要保持谦虚,承认自己的无知,并向合适的人靠拢以消除这种无知。这就好像三个砌墙工人的故事。
你问第一个工人他在做什么。他说,他在一块又一块地垒砖。他不关心也不在乎他做的是对还是错。第二个工人说他正在砌墙,但他不清楚建造这堵墙的目的。第三位工人的眼睛中闪烁着热情的光芒,他说他正在建造一座大教堂。他为自己在大教堂的建设中所贡献的力量而感到骄傲。
优秀的初级开发人员就应该像第三个工人。他们会在不断学习成长的过程中为全局考虑。他们清楚自己的工作在解决什么问题,而且他们会为自己参与建设这样的大教堂(软件开发)项目而感到自豪。最重要的是,你必须保持谦虚,埋头苦干。只有这样才能实现自己的目标。
这也是我在初级开发时期学到的经验教训。
坦诚自己的无知
阿尔伯特·哈伯德(《致加西亚的信》的作者)曾说过:
追求永久的愚昧的诀窍是:对你的见解感到满意,对你的知识感到满足。
你只是一名初级开发人员,所以没人会期待你掌握了所有知识。即使在该领域工作了很多年的开发人员也并非无所不知。知之为知之,不知为不知,是知也。问题不在于你的无知,而在于你试图掩盖自己的无知。
在开会、讨论和代码走查的时候,如果你听到不明白的地方,不要点头假装自己明白,你应该大胆地提问。如果你不开口,那么就会错过绝佳的学习机会,这最终会危及到自己的职业生涯。
即使我在这个领域工作了这么多年,每天仍然会提出很多问题。请记住,世上没有愚蠢的问题,即便问了一个愚蠢的问题,但能够得到解答,总好过一整天坐在电脑屏幕前发呆。
抓住每一次机会暴露自己的无知是加速积累知识的最佳途径。
在编写代码之前先阅读代码
Rasheed Ogunlaru有一句话非常在理:
“阅读代码的方式决定了理解代码的方式。”
我还记得我的第一个编程作业。我需要为已有的功能编写代码,最后我在这项工作上花了50个小时。结果,星期一的时候,当我自豪地向技术主管展示我的代码时,她却淡淡地说:
“对于这类的功能,我们有一个现成的类。你本可以利用这个类更快地完成你的工作。”
这是我的错吗?我没有阅读已有的代码就迫不及待地开始了编程工作。在现实世界中,与实际的编写代码相比,开发人员在阅读代码上花费的时间更多。无论是添加新功能还是改bug,你都需要了解已有的代码。此处并没有捷径,唯有再三阅读!
此外,阅读代码还可以让你了解其他人编写代码的方式,以及可以重用哪些代码库。你需要注意:
编程标准
命名约定
设计模式
注释
测试脚本、测试用例等的使用
你需要记住,聪明的开发人员不会重复编写已有的代码。他们会尽可能地重用和利用已有的功能。这不仅可以节约时间,而且还可以通过共享代码促进开发人员之间的友情。
在遇到需要解决的问题时,应该在第一时间内寻找已有的答案。在努力完成一项任务时,请检查是否已有人解决了该问题。这不是偷工减料,而是省时省力的做法。
寻求建设性的批评
Elbert Hubbard曾说避免被人批评的最佳方式是:
“如果想避免被人批评,那么你可以什么都不说,什么都不做,什么都不想。”
人人都希望得到别人的赞美,如果有人欣赏你的工作,那么你会非常高兴。但是,作为初级开发人员,除了赞美之外,你还需要建设性的批评才能继续前进。良药苦口利于病,在提升自我的过程中这是必需的。
我记得担任我的第一次代码审查工作的是一位高级开发人员。我在惴惴不安中度过了那段40分钟的会议,亲眼目睹了他将我的代码撕得粉碎,最终他的评语甚至比我的代码还要多。付出了那么多的努力,最终却落得这样的下场,我感到非常难过。然而,那次会议的确让我发现了很多自己的缺点,以及需要提升的方面,为我前进的道路指明了方向。
即便如此,为了获得建设性的批评,我们还需要主动提出请求。我曾与许多高级开发人员一起工作,但迄今为止,无论工作多么繁忙,他们都不会拒绝我的请求。当然,你需要根据他们的工作安排来计划时间,才能方便他们抽空与你交谈。
请记住,如果某位高级开发人员愿意花时间审查你的代码,并为你提供一些改进的意见,那么就意味着他真的关心你的进度。所以千万不要错过这样的良机,现在就开始祈祷吧。
Andy Marks曾说过:
“如果你为自己的代码而感到自豪,那么你的代码就会表现出来。反之亦然。只有能够感受到你的自豪感的人才是你的最佳搭档。”
为大局考虑
Murat Ildan曾说过:
“为大局考虑,不要坐井观天。会当凌绝顶,一览众山小!”
还记得我在本文开头介绍的三个砌墙工人的故事吗?只有第三位工人知道他正在建造一座大教堂。在工作中,我们需要为大局考虑。作为初级开发人员,大多数时候,你的工作只是编写一小段代码,或者解决现有代码中的某些生产问题。你只需要做好别人分配给你的工作,这固然没错,但是,如果你想真正参与到项目的核心,那么就需要花点时间掌握大局。
你需要把眼光放远一点,从整个系统的角度出发考虑你的代码。
为什么我们要使用特定的设计模式?
为什么我们要使用特定的语言编写?
这些抉择有什么缺点?能够顺利地与当前代码库结合起来吗?
这些代码将来是否易于维护?
等等……
最简单的方法是找到一位导师,指导你的学习过程。技术导师可以帮助你加快提升自己的技术力,而且还能让你紧紧围绕项目的远大前景。至于如何寻找技术导师,并没有固定的方式,不妨试试看用一杯咖啡打破僵局!
大多数初级开发人员都会因为对功能的误解或对项目目标的错误认识而犯错。花点时间了解现实状况,有助于你成长为一名更出色的开发人员。
优秀的高级开发人员所掌握的技术不仅限于编程
在很长一段时间里,我一直以为优秀的开发人员的优势就在于多年的技术经验(5年的Java开发经验,7年的Python开发经验等等)。掌握的技术越多,开发人员就越优秀。
然而,我错了。优秀的高级开发人员所掌握的技术不仅限于编程。他们极富好奇心。他们是伟大的导师。而且最重要的是,在一些必须避免的事宜上,他们有着不可思议的直觉。例如,他们明白重写某个库只是为了增加可阅读性,他们还知道在团队以前选择过旧框架的情况,直接切换到最新框架并不是明智的决定。并不是他们不愿承担风险,只是他们懂得如何谨慎地选择正确的方向。
并非每个人都能成为一名真正的高级开发。优秀的高级开发人员不仅积累了大量的经验,而且他们还拥有正确的态度和能力,将这些经验运用到实际项目中。“高级”与否只与个人的能力有关,而无关乎年龄。
Kevin de Leon曾说过:
“如果你无所作为,那么拥有再多资历也毫无意义。”
原文:https://medium.com/swlh/how-to-be-a-good-junior-developer-cd86b77086fc
本文为 CSDN 翻译,转载请注明来源出处。
【END】
热 文推 荐
谁来结束 GUI 程序?| CSDN 博文精选
领取专属 10元无门槛券
私享最新 技术干货