给初级开发人员的职业建议
今天早上,我和我们新来的实习生聊得很愉快,他将于今年夏天开始在我们这里工作。他问我的一个问题是,我能否给他一些建议,告诉他应该学习哪些东西才能在编程领域取得进步。我开始在脑海里列出一份编程语言、Web 框架、库和技术的清单。然后我突然想到,清单上的大部分内容在 5 到 10 年后都会过时。我思考着,了解一门特定语言的复杂性,或者了解一个框架的构建方式,或者了解 MVC 范式的工作原理,是否能为在软件开发领域获得成功的职业生涯奠定坚实的基础。我的答案显然是否定的,所有这些都是短暂的。它们今天还在,明天就消失了。
我突然想起一句古老的谚语:“授人以鱼,一日之计,授人以渔。”
所以我告诉他:“学习任何吸引你、让你兴奋、让你感到舒服的东西。但无论你做什么,都要记住以下几点”
1. 享受你所做的事情
你人生中最重要的部分之一将会在工作中度过(另一个重要的部分是睡眠,但这我们无能为力)。如果你的工作工具或同事让你感到沮丧、阻碍或压抑,那就换掉它们吧。有时,这可能需要你换工作。这没关系,你没有义务为了金钱或某种不切实际的忠诚而承受痛苦。享受工作,你将会做得更好,效率也会更高。享受与同事相处的时光会让你更具协作精神,并帮助你学习新事物。最重要的是,在一个愉快的环境中工作也能维护你的心理健康,而心理健康是人生中最宝贵的财富。
2. 编码还不够
要成为一名优秀的开发人员,你需要能够编写代码。要成为一名优秀的开发人员,你需要能够:
- 向他人传达您的假设和期望。
- 同情他人并理解他们的观点。
- 深思熟虑并谨慎行事,提前做好计划。
- 管理其他人对你的期望。
遗憾的是,目前还没有专门针对这些技能的训练营。这些技能需要你亲自磨练和培养。它们需要时间和精力,并非每个人都能掌握。但掌握这些技能,就好比你只是个普通的程序员,却能成为一名高效的软件开发人员。
3. 你读的代码比你写的代码多
你可能不这么认为,但相信我,你确实这么认为。那么这意味着什么呢?这意味着,当你编写代码时,你必须牢记,其他人(或者更糟的是,12 个月后的你自己)会阅读它。因此,请确保你的代码可读性强、文档齐全,并且精简到只提供预期功能所需的程度。确保你的代码库没有充斥着巧妙的代码技巧或复杂的设计模式和架构,这些只会助长人们的自负,或遵循某些教条的模式或方法。保持代码简洁、模块化且易读。你的同事和未来的自己都会感谢你。
4. 将变化的事物与保持不变的事物区分开来
一切都会随着时间而变化,但有些东西会在可预测的时机或固定的频率发生变化。确保将这些内容与不经常变化的内容分开。因此,请将 UI 代码与业务逻辑代码分开。将数据读取代码与数据格式化代码分开。如果您正在处理外部 API,请将其隐藏在适配器或外观之后。API 的变化频率将远高于您内部使用它们的频率,即外观。请将此原则贯穿于您的代码和设计之中。
5. 迭代增量开发
切勿试图一次性构建一个完整完美的系统。首先关注最需要、最清晰的功能,并提供最简单的可行解决方案。然后,通过多次迭代构建项目,每次迭代都完善现有功能并交付新功能。
如果您不确定什么是迭代和增量方法,那么这应该有助于澄清它。
6.过早优化会扼杀项目
在没有确凿证据表明未来需求可能出现的情况下,不要试图预测这些需求。如果你的网站每分钟需要处理千万亿次请求,也不用担心,到那时你的收入已经足够让你在自己的私人岛屿上舒适地退休了,所以还是专注于此吧 ;) 。关键在于,不要为了“以防万一”而过早地进行优化。不要基于“假设”来做事。这样做只会增加代码不必要的复杂性,增加出现错误的可能性,并降低代码的可读性。因此,请选择那些具有灵活性和易于修改的语言和框架。
7. 没有灵丹妙药
引用布鲁克斯先生的话
无论是技术还是管理技术,没有任何一项单一的发展能够保证在十年内使生产力、可靠性和简单性提高哪怕一个数量级(十倍)。
在你的职业生涯中,你会看到许多“热门”事物来来去去。你会听到人们滔滔不绝地谈论最快的 Web 框架、最酷的设计范式、最好的编程语言等等。所有这些事情在那些为之呐喊的人们眼中或许是真的,但在你的现实生活中却未必如此。复杂的问题,比如我们在软件开发中遇到的问题,永远无法通过简单的解决方案(例如使用单一的编程语言或 Web 框架)来解决。永远不要误以为你找到了一个可以解决所有编程问题的方法。
8. 泛化,不要专化
在自然界中,更有可能生存下来的动物是通才物种,即能够利用不同环境和食物来源的物种。相反,更有可能灭绝的物种是专才物种,即依赖单一食物来源或只能在单一环境中生存的物种。软件开发也是如此。俗话说,不要把所有鸡蛋都放在一个篮子里。能够做好许多事情,比只擅长一件事,更能让你走得更远。
结语
好了,我肯定还有一些内容我忘了补充,但我认为这些内容概括了我多年来作为软件开发者所学到的基本原则。真希望有人在我刚开始的时候就告诉我这些。希望这些内容能对其他人有所帮助,感谢您的阅读,也欢迎在评论区分享您自己的建议。
文章来源:https://dev.to/redfred7/career-advice-for-junior-developers-4kmg