今年现已是我从事软件开发工作的第七个年初,我觉得现在是一个好的时机向一些新入行的软件工程师共享一些我以为越早知道越好的常识。期望能对您有所启示。

1. 需求总是会变

也许您现已和团队成员评价了需求的合理性,而且达成了一致。您胸有成竹的以为产品需求不会再产生改变。但本相是严酷的,需求总是会因为各种各样的原因产生变化,例如:

  • 您或您的上司有了一个新的想法;
  • 产品的目标群体产生了变化;
  • 攻克某项技能的本钱超出了预期;

您需求意识到,正是因为这严酷的本相,咱们才会有一个对于软件工程师重要的专业性评判规范:您是否能够编写有更好安排性的代码

这就引出了咱们下一个主题。

2. 一直以编写更好安排性代码为目标

新手工程师有时分会执着于快速的完成功用,从而编写出「面条式」的代码,面条式代码是指代码一段段衔接在一起,然后当代码规模到达一定程度后,会忽然发现无法移动任何代码。任何对代码的改动,都将是一场噩梦。

因此新手工程师要比有经历的工程师更加讨厌需求变化,因为他们需求花更多时间了解和修正代码,有时甚至是需求重写整个模块。

所以,为了节约名贵的时间,所有的工程师都应该站在更高的层次上,在编写代码前思考代码安排问题,我知道一些优秀的框架现已在语法层面上处理这个问题,但您应该在此基础上做的更好。

更好的代码安排意味着:

  • 更稳定的应用;
  • 更少的 Bug;
  • 更明晰的代码结构;
  • 代码能够更加灵活的变通与扩展;

您能够学习一些 MVC 思想,并将其应用在您的软件开发中。要知道「谋定而后动」在软件开发领域也是适用的。

3. 代码有保质期

信任我,您的代码总会过时,随着您技能水平的增长,功用的不断迭代,总有一天,您会发现有更好的方法能够安排您现有的代码。对于需求长时间迭代的产品,听任代码过期,就是咱们常说的「技能债务」。

优秀的工程师不会给未来的自己或接手的下一任作业者留下太多债务,这事关开发者的责任心和名誉,需求引起注重。

而且铲除技能债务并非只是对产品有好处,在此过程中,您的技能水平也会不断提高。当您意识到代码接近过期,需求改动时,阐明您的技能水平相较于曾经现已大大提高了。

处理过期代码有两种方法:

  1. 重构:即保证功用接口输入/输出稳定,但内部结构优化的更加易读,易保护;
  2. 彻底删了,重头写:您很少有机会这么做,不过当一段代码现已没有人能够了解,保护本钱过于高昂时,这么做是必要的;

大多数工程师不注重代码重构作业,他们不了解或不肯意为代码添加单元测试并定时重构代码,这使得他们失去了名贵的进步机会。作为新手工程师,您应该尽早意识到代码重构的重要性,并极力劝说您的上级和合作伙伴,在开发计划中预留代码重构的时间。

4. 不要重复造轮子

新手工程师因为在作业初期招领不到有挑战性的作业,所以倾向于在完成功用模块时,即便有第三方库或框架能够运用,也会选择自己去完成。

这一行为的出发点值得肯定,作为工程师,咱们都想证明自己的实力,可是优秀工程师的中心能力之一是在于充分调动现有的老练资源。

很多时分,自己 DIY 的功用模块在健壮性和可靠性上都无法比美社区老练的功用模块,轻率运用自己 DIY 的功用模块会为产品添加风险,老练的开发者应该极力防止。

我主张新手工程师无妨换一种思路,咱们都是站在巨人的肩膀上才能看的更远,与其在作业中花大把时间重复造轮子,不如利用业余时间研究老练轮子的优势,并在作业中发现新的挑战。

5. 文档是非常重要的

这包含了两层意思:

  1. 查阅文档非常重要
  2. 编撰文档非常重要

新手工程师有时会出于种种原因不肯意查阅官方文档,但事实是,查阅官方文档是工程师常常要做的作业。优秀工程师的中心职责是构思怎么安排代码完成目标功用,并将其付诸实践,而查阅文档的过程,使咱们精确选择适宜「建材」的必备途径。经过常常查阅文档,某个 API 最终会成为您的长时间回忆,您的作业效率也会大大提高。

与查阅文档同样重要的是编撰文档,很可惜大多数工程师要么是注重缺乏,要么是无法编撰易读的文档。而这两者对于一份好文档而言是十分重要的。

文档的阅览者将会是所有对您当下作业感兴趣的人,包含未来的自己。对于一个没有文档或文档没有及时更新的大型项目而言,下场只要死亡。

请积极编撰产品或技能文档吧!

6. 怎么面对生疏代码库

无论是刚入职一家公司,仍是换了一个项目组,咱们总是无法防止接手一个生疏的代码库,新手程序员往往在此时不知所措,不知道怎么开始。

对此我的主张是:

  1. 运行该应用,尝试修正一些代码,看看程序是怎么运作的;
  2. 剖析目录结构,了解代码的安排方法;
  3. 查看项目引入的第三方库,了解它们的作用是什么;
  4. 对于要修正的中心逻辑,试着画一个流程图,搞清楚整个程序的逻辑是什么;

请必须保证您现已基本掌握了代码逻辑,再着手进行改动,不然无疑将增加代码的坏滋味,您很有或许会在将来某个意料之外的时间不得不偿还债务。

当您打算进入一个代码库,着手添加代码时,请必须保证您与原代码库的编码风格保持一致,即便您以为您的代码风格更加合理和优雅。

这么做的好处在于:

  1. 您的代码风格或许并非是最佳的,您在未来或许会对代码风格有新的想法;
  2. 当每个项目的参与者都把自己个性化的代码风格带入代码中时,代码就会变得越发难以阅览,也容易让下一个接手的开发者感到迷惑;

具备一定规模的开发团队,都会考虑一致代码风格,请您必须保证与团队要求的代码风格保持一致。如果您的团队没有一致的代码风格,那么就由您来主导建设吧,这正是您表现的好机会!

除此之外,新手开发者应该坚定「我一定能做到」的信仰,我能够坦率的告诉您,在 Web 开发世界里,没有什么神秘的魔法,所有的问题最终都能够被处理,无论是软件开发的新手仍是老手,区别只在于处理问题的思路和时间。

这正是软件开发工作的魅力所在,经过自己的努力处理一个扎手的问题,不仅会为所服务的企业处理问题,还能提高自己的专业水平,让心灵得到满足。所以请享用您当下的作业,并勇于处理任何问题。

7. 一直学习,永不停步

软件开发工作的特色之一就是,您需求经过不断学习提高自己在市场的竞争力,而编程世界也总是会有学不完的思想,技能和产品。

您需求清楚地认识到一个严酷的事实,在大多数作业环境中,您获得进步的动力只能来源于自己。很多团队都没有完善的培训机制,也不会为您制定工作发展规划,团队成员疲于奔命完成自己的业绩或是不感兴趣与您评论前沿的技能论题,所以您更需求保持警惕,寻求不断进步。

请保证您的技能水平总是高于,至少是配的上您的作业年限。不然作业的时间越久,您的市场竞争力会越低。请英勇的踏出当前的舒适圈。

8. 总结

在本篇文章中,我向您共享了我以为值得刚步入软件开发工作的新手们需求注意的 7 件事。这些事一些是我期望我在刚入行时有人告诉我的,一些是我从事本工作以来的一些经历之谈,感谢您的阅览,也期待您在评论区补充您的经历,让更多人获益。