这是一个普通中级软件开发者的故事。
作为一个中级开发者,我非常关心我的代码。我花了相当多的时间权衡解决问题的方法的利弊。这段代码是不是太聪明以至于难以理解?是否有隐藏的不变量没有被解释清楚?代码在未来如何容易被修改?代码的美观度如何,主观上来说?
作为一个中级开发者,我非常同情我的代码审查者。我花了时间在 git rebase --interactive 模式下组织 Git 历史记录,使其从头到尾讲述一个吸引人的故事。我在 Magit 中选择和选择代码块,以使提交更加集中,避免意外包含不必要的更改。上移、下移、重写、修复和压缩提交都很有用。审查者在需要更多上下文时,如何容易地理解我正在解决的问题?我可以提供更多的视觉辅助工具,如图表或 GIF 动画,以更好地传达我的工作吗?
作为一个中级开发者,我阅读了很多代码和技术文档。库代码是学习更有经验的开发者的好地方。公共技术文档,如 RFC,是很好的资源。在修改遗留代码时,总是要在尝试被理解之前先理解代码。深入 Git 历史记录以了解为什么某段代码被编写,并找到尽可能多的文档是必要的。不要在理解代码历史之前轻易驳斥代码。
作为一个中级开发者,我记录了与同事分享的知识。不仅我编写技术文档或提交 bug 票,还花时间精心编写 Git 提交、文档字符串或甚至代码注释。这些都是记录代码背后“为什么”的好地方。干净的代码可以很好地传达“代码做什么”。“代码为什么这样做”更好地通过其他形式传达。代码注释在精确使用时不是代码臭味。
作为一个中级开发者,我不怕学习我们的整个应用程序栈。应用程序前端、后端、异步作业调度器和作业工作者都是显而易见的。当需要时,使用 EXPLAIN ANALYZE 优化 PostgreSQL 查询可以完成。熟悉足够的 DevOps 工具,以便我可以在 Jenkins 流水线中断时支持团队。偶尔深入 ClojureScript 编译器代码,以便我可以排除晦涩的高级编译错误。我读了很多,学到了很多。
作为一个中级开发者,我编写测试以提高覆盖率。“一个问题被很好地陈述就是半个解决方案。”我不做非常严格的 TDD,但提前编写测试给我提供了很好的目标。我可以随时进行交互式的 rebase 来通过修改测试来修复 Git 历史记录。好的测试可以比其他形式的文档更好地讲述故事。
作为一个中级开发者,我非常关心我的团队的成功。我审查他人的代码,给予他们反馈,并提供帮助以解除他们的阻塞。尽管偶尔会有关于他人工作的非阻塞性挑剔,但我的工作是理解他们的工作,而不是成为一个人类编译器来发现 bug,也不是一个门槛守卫,阻止不遵循任何肤浅的代码风格指南的代码。作为一个审查者,我从团队成员的代码中学习,并确保知识被传递下去。
作为一个中级开发者,我帮助我的团队入职新人。我分享我的工作流程、REPL 开发技巧、Emacs Lisp 代码(特定于我们的工作环境)、文档和以前几代开发者工作过的项目中没有很好地记录的东西。
作为一个中级开发者,我将我的帮助扩展到其他团队。我与设计师和质量工程师密切合作,回答关于功能的问题,并帮助他们解决 UI/UX 不一致性。我花了几个小时深入研究 DevOps 流水线,以便熟悉工具并帮助 DevOps 团队调查涉及 Clojure 领域和运营领域的问题。
作为一个中级开发者,我关注更广泛的编程社区,以便从思想领袖和伟大的开源项目中学习,并将我所知道的带到我们的代码库和技术讨论中。Common Lisp 是一个非常活跃的社区,拥有很多伟大的想法。Fennel 是一个有趣的语言,帮助我更好地学习 Lua。Janet 和 CHICKEN Scheme 教会了我更多关于 C 和低级编程的知识。
这是一个关于一个普通中级 Clojure 开发者的故事。
—
今年标志着我作为专业软件工程师/开发者的第 10 年。我这些年来成长了很多。回顾我的经历并观察我的同事,我有很多想法要写关于什么对我来说意味着高级性。我是一个相当全面的 Clojure 程序员。然而,成为一个有效的软件开发者远不止于编程。“程序是为人类阅读的,仅偶尔为计算机执行。”沟通是编程的精髓。这也适用于我作为中级开发者的日常工作的其他部分——阅读/编写文档、审查 PR、与设计师和质量工程师讨论 UI/UX、将问题分解为可预测的工作块、帮助客户支持团队提供客户问题等。
我认为这篇文章是 90% 记录我作为中级开发者所成为的东西,10% 是对 Clojure 语言和社区的赞扬。直到今天,我仍然很高兴我 5 年前自学了 Clojure。我将今天的很多成功归功于 Clojure,因为它让我保持专注,所以我可以更好地发展其他领域。此外,我在 Kira Systems 工作的过去 3.5 年的团队非常支持我,我加入团队以来也成长了很多。
这篇文章是对我未来的提醒,关于我作为中级开发者所取得的成就。我希望当我将来回顾这篇文章时,我已经成长了更多。