CodeGym /Java 博客 /随机的 /新手程序员常见错误分析,pt。2
John Squirrels
第 41 级
San Francisco

新手程序员常见错误分析,pt。2

已在 随机的 群组中发布
大家好!我们将继续考虑年轻且不成熟的程序员在他或她的第一份工作中可能面临的问题。第一部分可以在这里 找到。新手程序员常见错误分析,pt。 2 - 1我们继续吧。

13. 不遵守编码风格指南。

开发团队通常坚持单一的编码风格。也就是说,个体开发人员遵循某些书面或不成文的规则,以确保他们的编码风格与其他人没有不同。不要试图用独特的编码风格让自己与众不同:这不会让你看起来很好。如果您是该项目的新手,您应该立即查找是否有任何定义通用编码风格指南的文档。您的特定项目可能有一些样式文件,您需要请求并将其导入到 IDE(例如 IntelliJ IDEA)中,以便 IDE 可以提供正确的编码样式提示。例如,样式可能需要尽可能使用 Final 修饰符。样式文件允许 IntelliJ IDEA 以黄色突出显示任何不遵守此规定的变量。

14.因错误而灰心丧气

新手程序员常见错误分析,pt。 2 - 2错误是你必须习惯的事情。他们过去是、现在是、将来也是。无论您是初学者还是认真的建筑师,您总是会犯错误。你犯的错误的数量和严重程度可能会改变,但它们将伴随你整个职业生涯。有时候,你整个星期都在努力让某件事发挥作用,你犯了一个错误,然后到了周五晚上,你像一只被打败的狗一样溜回家,却无法纠正那个该死的错误。这是一种难以形容的感觉,但不应该让你气馁。毕竟,经验丰富的开发人员和新手之间的另一个重要区别是他们如何处理错误。有经验的开发者不会把它们放在心上,而是把它们当作经验。没有人会因为你犯了错误而责骂你。这是正常的——每个人有时都会陷入混乱。同样,你可以向同事寻求帮助。并且不要忘记像项目经理 (PM) 这样的人。如果你遇到困难,你应该立即联系 PM。他或她可以帮助您找到问题领域的专家。无论如何,PM 需要随时了解您在项目中遇到的任何问题。PM的工作是帮助解决各种问题,包括团队成员之间的沟通和互动。总结一下:错误发生了,不要让它们杀死你。相反,接受它们作为对你和你的技能的挑战。最后,这只是工作的一部分。

15. 未能实现线程安全。

没有什么好事是轻易创造出来的。每个开发人员都需要了解,编写特定的功能,无论是模块还是方法,都需要制定关于要做什么和如何做的计划。通常,在开发任何复杂的功能时,您都需要遵循以下过程:
思考->分析->制定计划->写代码->测试代码->重构
新手程序员编写的代码中出现的许多错误都与此过程中的步骤有关。当然,你不能排除有些时候你需要一看到任务就毫不犹豫地快速编写代码。但这通常只适用于某些次要任务和方法,其实现是显而易见的,不需要太多思考。上面提到的开发过程更适合复杂且可分为子任务的大型任务。在没有清楚地了解要编写的内容的情况下开始编写代码并不是一个好主意。首先,你需要仔细思考和计划一切。抓起一张纸和一支铅笔并尝试勾勒出您的实施想法也很有帮助。在规划复杂的功能时我总是这样做。程序员的大部分时间不是在编写代码,而是在思考如何构建所需的功能。事实上,一旦你计划并考虑了一切,编写代码就变成了一个无忧无虑的纯机械过程。

16.过度劳累

新手程序员常见错误分析,pt。 2 - 3
选自电影《搏击俱乐部》(1999)
也许每个初学者都认为,通过工作到深夜,他或她将开始完成更多的任务,并被赋予更多的责任。我以前也这么认为,但现在不这么认为了。我注意到,当你达到极限时,就会达到一个临界点,此时你将无法充分思考。你开始变得相当迟钝并经历精神迷雾。如果你的头脑清醒的话,你可以在 10 分钟内完成的事情需要一个小时才能完成。几乎无一例外,当你跨过这条疲劳线之后,你就会遇到一些看似无法克服的问题。但第二天早上来上班的时候,眨眼间就解决了。所以当你觉得自己已经到了这一步的时候,就不要熬夜了。回家好好休息吧。毕竟,如果你在办公桌前待到深夜,你不仅不会在这段时间的煎熬中取得特别出色的成果,同时你还会面临在下一个工作日之前休息不佳(不足)的风险。会再次搞砸的。想想你的健康:在你职业生涯的初期就这样破坏它值得吗?我想不是。这是一个生病的昂贵时间。想想你的雇主。如果你自己过度劳累,不仅会让你自己的情况变得更糟,也会让你的雇主变得更糟。谁需要一个永远昏昏欲睡、因精疲力竭而无法实现最简单的排序算法的员工?是的,毫无疑问,有时候你会遇到紧迫的截止日期,有时候一切都会出错,有时候——这是我个人最喜欢的——“我们昨天就需要这个”。但这些情况通常很少见,一旦你经历了这些情况,你需要坐下来仔细考虑它们是如何发生的以及将来如何避免它们。

17. 忽视英语技能

许多有抱负的开发人员优先考虑学习技术,而推迟学习英语。这是一个严重的错误,因为程序员通常非常适合初级职位(或实习),但由于英语技能薄弱而得不到这份工作。是的,当然,有些情况下你不需要英语也能过得去。通常,这些人在非英语国家的项目中受雇于当地。但本地公司支付的工资与外国公司不同。即使随着时间的推移,获得体面的薪水也将非常非常困难。这就是为什么你不应该忽视英语。您需要学习英语才能立即专注于英语项目,而不是把英语放在次要地位。事实上,想一想——英语目前是国际商务语言。无论你去哪个国家,如果你懂英语,你就能找到与他人的共同语言。开发项目也是如此。无论项目位于何处:德国、澳大利亚、法国或其他地方,所有沟通、所有任务、文档等都将使用英语。如果您想一想,您就会同意这非常方便,对吧?

18.追求潮流科技

当开发人员开始他们的道路时,他们经常尝试跟上最新的技术。这是正确的做法吗?一方面,是的:最新的技术、项目……但是值得将其作为重中之重吗?也许为您所在领域的专家寻求“经典工具包”更好?新固然好,但你不能忘记你所在领域的基础技术。只有这样,在您获得了一些基础知识的经验和深入的了解之后,您才可以尝试新的东西。还要考虑到新技术可能在某些微妙的方面表现出色,但它们可能会在其他方面失去优势。在新手开发人员理解这些权衡之前,最好坚持使用经过时间考验的解决方案。例如,如果程序员正在开发与某些数据交互的应用程序,那么不要仅仅因为最新的 NoSQL 解决方案很流行就急于使用它。一个普通的、经过验证的 SQL 数据库(MySQL、PostrgreSQL 等)很可能在 StackOverFlow 上有针对任何潜在问题的详细文档和解决方案:)

19. 同时学习几种不同的技术和/或语言

我们上面谈到了初学者尝试学习流行技术的情况。那么,同时学习多种技术或语言怎么样?显然,您听说过了解不止一种编程语言并掌握多种技术的程序员。但我很快就会指出,这些人对编程来说远非新手。这些人背后都有多年的经验。他们掌握了自己原有的技术,然后越走越远。想要同时掌握所有内容的初学者应该记住这句优秀的谚语:“追两只野兔,一只也抓不到。” 结果可能是你不能很好地掌握任何科目,而只是学到了表面知识。与对所有语言都了解一点的专家相比,对精通一种语言的专家的需求将会更多。因此,如果您想了解多种语言和技术,您需要明智地接触它们。首先,您需要选择一种必须深入学习的基本核心语言。只有这样你才可以开始研究其他领域。例如,成为 Java 大师,然后学习 Python 作为第二语言。之后,您可能会了解一些有关前端的 React/Angular 的知识。在这种情况下,我们讨论的是不可互换的技术,例如 C# 和 Java,而是互补的技术,可以扩展您的职业机会。但我再次重申:你不应该尝试一次学习所有内容。您需要按顺序进行。可以这么说,一次捕捉一只兔子。

20. 目标制定不正确

你如何为自己设定目标?成为一名出色的开发人员?永远记住这一点:你需要设定具体的目标,或者换句话说——可实现的目标。我在说什么?例如,你给自己设定了目标:“我想变得富有”。但你怎么知道你是否已经实现了这个目标呢?或者你如何衡量你距离实现这一目标还有多远?好吧,如果你设定目标“我想赚一百万美元”,那就更清楚了,不是吗?一旦您赚到了 10,000 美元,您就离目标又近了 10,000 美元——只剩下 990,000 美元了。还有很多事情需要实现,但是您可以感受到自己的进步并了解终点线在哪里,因此您将有动力继续前进。就你的职业生涯而言,为自己设定一个更具体的目标怎么样?例如:我想成为团队领导。或者是高级开发人员。或者最终成为一名建筑师。好吧,每个大任务都需要分成小子任务。您不会在职业生涯之初就成为团队领导。如果可能且适当的话,设定最后期限,并专注于当前阶段。
  1. 如果我们谈论成为一名高级开发人员,那么第一个小目标就是在公司找到实习或初级开发人员的工作。
  2. 接下来,您可以设定目标来加深对某些技术的了解。对于Java,您可以准备Oracle的1级认证。我们为准备和实现目标制定了时间表。
  3. 然后,例如,您可以设定一个目标,将您的英语提高一个级别(例如,从 B1 到 B2)。我们制定学习计划,安排时间,朝着目标前进。
这就是我们如何一步步实现我们的最终目标(同时获得软件开发经验)。

21. 没有实践的理论

无可争议的事实是,通过研究新技术并深入研究我们已知的主题,我们可以成为更好的专业人士。但在旅程的开始,开发者很少意识到,如果新知识没有在实践中得到尝试,那么一本又一本地阅读技术书籍并不会带来巨大的好处。我个人不止一次遇到过这种情况。如果你在一本书上投入大量时间,但没有从中练习任何内容,那么几乎所有新获得的知识都会被遗忘:你对一切如何运作只剩下一般模糊的记忆。结果就是浪费了很多时间却没有任何实际成果。我们为什么要浪费时间?生命不会永远持续下去。结论是,当您学习新技术时,您不应该沉迷于理论:在阅读的同时写出给定的示例,尝试新技术。这是让你的大脑记住信息的唯一方法。是的,你会更慢地消耗新材料,但你会吸收更多你所读的内容。更重要的是,如果你很好地掌握了一项技术,那么掌握下一项技术就会更容易(就像学习语言一样)。

22. 过度完美主义

大多数开发人员都是完美主义者:力求完美的人。这意味着他们的代码也必须是完美的。所以你的代码已经被编写、测试、微调,看起来是时候将它提交到主分支了。但您仍然对代码不满意,因此您开始这样那样地修改它,并在这方面花费了大量时间。在这种情况下,时间就是客户的金钱。新手程序员更容易追求完美。经验丰富的开发人员习惯于这样的感觉:代码永远不会完美,他们应该尝试写得更好。但与此同时,他们不会为了接近“理想”而走极端。因此,请记住学习如何实现一种快乐的媒介:不要马虎,也不要试图用代码重新创建蒙娜丽莎。

23. 没有考虑架构

我再说一遍:你不应该写乱七八糟的代码。除了可读性和性能之外,您还需要考虑代码可能如何影响整个应用程序的其余部分。例如,扩展你的代码会有多困难,等等。问题是,新手开发人员由于缺乏经验,可能无法立即意识到他们的新功能将如何影响未来的应用程序。这种远见当然需要大量的实践才能发展。但是新手该怎么办呢?不会写代码?在这些情况下,各种编程范例可以为我们提供帮助。例如,SOLID 原则或各种设计模式可以向您传达有用的实践。这些范式也应该谨慎对待,不要走得太远。但是当你做得太过分时,你如何确定这一点呢?这是由更有经验的同事进行代码审查会对您有所帮助的地方。通过引入新鲜、客观的视角,你的同事可以为你指明正确的方向。

24.冒名顶替综合症

新手程序员常见错误分析,pt。 2 - 4冒充者综合症是一种心理现象,在这种现象中,一个人无法将他或她的成就归因于个人品质、能力和努力。尽管有外部证据表明他们的表现始终如一,但易患这种综合症的人仍然认为自己是骗子,不值得取得他们所取得的成功。 许多开发人员都有这种综合症。也许它给了我们坚持不懈的精神,推动我们向新的知识和技术前进。当你看到更有经验、更有成就的同事时,你会感到不安,好像你配不上你的薪水。相信我,这不是真的。总会有比你更好或更差的开发人员。别人看着你就会感到不安,认为他或她永远不会变得像你一样。这是正常的。来自团队的反馈、代码审查和讨论有助于缓解这种感觉。相信我,局外人的意见会让你感到惊喜,但前提是你真的不忽视你的工作和职业发展。如果你忽视了这些,那么你就选错了职业。在这个职业中,你需要始终学习新的东西并努力做到最好。但我认为聚集在这里的人们远非懒惰。相反,这里的人们正在坚定不移地朝着他们所珍视的目标前进。如果这描述了你,那么你就没什么好害怕的。

25. 很少做出承诺

记住经常执行提交!请注意,不是每半小时一次。如果您花了一周的时间来实现某些功能,那么您不应该在周五晚上执行一次提交,而应该执行五次提交。为了方便起见,几乎任何大型任务都可以分解为较小的任务。所以你完成这些较小的任务并提交。并且不要忘记立即将这些提交发送到远程服务器。否则,您可能整个星期都在进行提交,然后您的计算机在周五午餐时间出现硬件故障,然后您就白白浪费了一整周的时间!但是,如果您将提交上传到远程服务器,那么您只需将上次提交的分支拉到另一台计算机上即可继续工作。还有一件事:不要在周五晚上向实时生产服务器提交新功能。相信我。你不需要那个。很可能会出现意想不到的错误,而您将花费周末的时间来修复它们。这并不好玩。周末你需要休息。我想这就是今天的全部内容。 PS最后一个技巧:编写大量代码。 PPS编写大量代码,因为这是获得急需经验的唯一方法。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION