在软件开发的世界里,时间如流水般匆匆而逝,七年对于一个项目而言,既是漫长的等待,也是历练的沉淀。2025年6月7日,Sandpolis项目迎来了七周年纪念。这个旨在打造一款极致远程管理工具的项目,从最初的设想到如今仍未达到最低可行产品(MVP)阶段,其漫长的开发历程承载了丰富的教训与感悟。七年的时间里,作者经历了人生多件大事,如学习、工作、成家立业,甚至技术栈的全盘重建,从Java转向了当下炙手可热的Rust语言。虽然这些看似合理的原因有助于解释进度缓慢,但项目真正受阻的根源却在于一个核心品质——自律。 自律,这个词在软件工程领域尤为关键,却又常被轻视。
动力、兴趣和好奇心虽然是驱动项目启动的重要因素,但仅靠这些激情驱动的项目难以达到100%的完成度。正如作者所言,软件开发中有时会出现“先建屋顶再造墙”的情况,更甚者,这些构建的部分可能永远无法完美对接,项目也因此无法整体成型。软件工程不像传统手工艺,开发过程中每个模块的逻辑关系复杂且紧密,缺乏自律的管理往往会导致模块之间割裂,最终难以实现预期功能。 曾几何时,项目曾有一个完整且可运行的版本。彼时,后端采用Java实现,规模约五万行代码,前端是一个约一万行Swift语言写成的iOS应用。对于当时的作者而言,Java是一门具有现代化特性的“相当不错”的语言。
然而,出于对新技术的渴望与好奇,作者决定重写整个项目,用Rust这门被视为未来趋势的语言重新打造应用。虽然尝试新事物值得鼓励,但重写代价巨大,且往往不是解决问题的最佳方案。在有足够经验的情况下,作者本可以选择更战略性的路径,但在好奇心主导下,选择了让项目暂时失去可用性的冒险。 作为侧项目,开发更多倾向于轻松有趣的部分,难题往往被搁置一旁。这种选择看似合理,实际却埋下了项目无法统一落实的隐患。项目中虽有部分代码实现精致,但二者之间缺乏统一的整体规划,导致项目停留在“起飞架”阶段,难以起航。
软件开发的生存之道在于自律——严格执行时间管理,专注解决关键问题,坚持每日推进,不被诱惑干扰。 进入人工智能工具大行其道的时代,自律的重要性愈加凸显。AI工具虽然极大地提高了生产力与开发体验,但过于依赖这些工具可能导致浅层理解甚至技能退化。正如学习数学不能仅靠计算器,掌握方向感不应只依赖GPS辅助,软件开发者也不能仅靠AI辅助完成代码,而忽略了对底层原理的深入理解。拥有自律就意味着即使面前有快捷方式,也会坚持走理解和积累的正道,促进长期技能成长,而这正是AI无法替代的核心价值。 那么,在日常编码过程中如何实践自律?最重要的是坚持将当前最高优先级的任务完成到百分之百,哪怕这部分工作并不令人愉快。
以Sandpolis为例,其核心数据模型是整个架构的基石,任何功能均依赖于此。可惜,遇到数据模型难题时,作者常常转移注意力,去处理次要的安全机制,导致核心问题停滞甚至被遗忘。当思考某个关键问题时,人的大脑需要保持持续关注,跳出意识层面地无意识“酝酿”解决方案。如果将关键难题从工作记忆中剔除(即失去“L1缓存”),不仅不能前进,反而会因逐渐遗忘上下文陷入更深的困境。专注主线,避免频繁跑题,才是守住开发节奏的不二法门。 此外,尽可能缩短软件“破碎”时间至关重要。
实现关键改进往往需要打破现有系统,进行调试重构,但如果复原运行状态的时间过长,将极大提高维护成本,甚至引发反复重构的恶性循环。作者坦言深谙此理,但仍屡犯此错,往往在底层做出根本性修改后,因未及时全面同步而导致持久不稳定。重写代码虽有诱惑,但正如著名软件工程思考者Joel Spolsky所言,重写是一条充满风险的道路,往往得不偿失。经验告诉我们,更优策略是持续完善现有代码,避免推倒重来的极端代价。 软件开发中奉行“先付出,再避免付出”的原则尤为重要。在代码功能尚处于少数调用点时,就严格定义接口和规范,而不是等到功能被大量调用后再修改,这样修改成本会猛增数倍。
虽说要避免过度设计、遵守YAGNI原则,但合理预见未来的需求,将时间投入到真正重要的地方,才是科学的时间管理。这种智慧的平衡需要通过经验沉淀而来。随意推迟关键决策有可能让代码逐渐僵化,变得像混凝土一样难以推倒重建,付出更高的维护成本。 回望过去七年,失败不可避免,但最大的失败是失败后推卸责任。认识到只有自身能改变现状,这是自律之根基,而这份自律恰恰是推动项目迈进的力量。在软件工程路上,激情和好奇心照亮开端,自律则铺垫前路,确保项目能够走得更远更稳。
前方依旧充满挑战,但秉持自律的信念,未来的每一步都将更加扎实而有价值。 在新时代背景下,软件工程师更应将自律视为职业生命线。通过专注解决关键问题,限制重写次数,快速修复系统,合理规划时间和质量权衡,避免“在做有趣的事情而非重要的事情”陷阱,最终实现项目的持续运行与价值体现。七年的沉淀告诉我们,十大秘诀莫若自律。只有让自律成为习惯,软件工程的迷雾才能逐渐消散,通往成功的桥梁才能越筑越宽。未来的软件世界需要更多具备这种精神的工程师,持续专注,坚定前行,迎接技术革命带来的无限可能。
。