65.9K
CodeProject 正在变化。 阅读更多。
Home

如何使用宫本武藏的哲学成为更好的软件工匠

starIconstarIconstarIconstarIconstarIcon

5.00/5 (4投票s)

2018 年 5 月 28 日

CPOL

8分钟阅读

viewsIcon

3795

我们都有自己未完成的项目和想法的“墓地”。那是因为要制作出好的软件需要付出艰辛的努力。

动力是有限的。还记得你对某个应用程序有一个绝妙的想法吗?也许你甚至已经开始着手开发它了。那个应用程序曾是你通往自由的门票,是摆脱朝九晚五“老鼠赛跑”生活的途径,也是让你成为百万富翁的手段。那个应用程序现在怎么样了?也许你一开始努力工作,甚至完成了你想法中的几个功能。但你完成它了吗?你是否实现了所有你想做的事情?

我们都有自己未完成的项目和想法的“墓地”。那是因为要制作出好的软件需要付出艰辛的努力。制作一个“Hello World”和完成那个101课程从来都不是问题,但是制作一个完整的功能性应用程序,并且在市场上具有竞争力,需要大量的工作、知识和规划。所有这些活动都需要动力。然而,这并不是那种“我今天跑步半小时,以后再也不跑了”的动力。对于这个项目,我们需要马拉松式的动力,一种能持续很长时间的动力。

总的来说,这是我们在每一次努力中都需要拥有的动力。如果我们想在当前的工作场所取得成功,成为一名优秀的团队领导,开发一个新的应用程序,或者创办自己的公司,我们需要长期的动力来帮助我们度过艰难时期。我们需要达到那种坚韧不拔的专业心态,然后保持在这个水平,而不是筋疲力尽。我发现这与我需要学习和做的所有技术性工作是完全不同的挑战。我试图通过哲学来解决这个任务。我每天都在更新这种动力,汲取过去智者的教诲。

关于宫本武藏

过去,我写过关于孙子、尼采和马可·奥勒留的文章。宫本武藏做了什么才能成为这个群体的一员呢?嗯,他是日本最伟大的剑客之一。除此之外,他还是哲学家、作家、画家和浪人。他以从未输掉任何一场决斗(共六十场)而闻名,并创造了独特的双刀技术。当然,还有他关于策略哲学的著作——《五轮书》

宫本武藏出生于播磨国宫本村的一个武士家庭。他的全名是新免武藏守藤原玄信。后来,武藏以他的家乡——宫本村——作为自己的名字。他的父亲对他非常严厉,在他九岁或十岁时离开了他或去世了。他十三岁时就进行了第一次决斗。

此后,他又赢得了六十多场决斗,成为赢得决斗数量最多的武士。从另一个角度来看,榜上排名第二的是武士伊藤一刀斋,他赢得了三十一场决斗。他还创造了一种名为二天一流(两把剑合二为一)的技术,在这种技术中,武士同时使用一把大剑和一把“伴生剑”。通过更艰苦的训练方法,他能够用双手控制两把剑,这在今天的电影中很常见,但在当时却是非传统的。

在他的著作——《五轮书》中,他以哲学的角度探讨了剑术和战争。他暗示武士之道远不止表面所见。他用“真正战略家”来形容那些掌握了许多与剑术和战斗无关的技艺和领域的人,例如饮茶、写作、劳动和绘画。

武藏语录及应用

最后,让我们探讨一些武藏的最佳语录,看看我们如何将它们应用到日常工作中。

做无用之事。

你曾有多少次试图预测客户的需求,却完全过度设计了你的解决方案?对我来说,这种情况发生了数百次。举个例子,最终我不得不长时间工作来移除我预测客户会需要的“功能”,因为它们搞砸了整个解决方案。我们有一个很好的原则,作为极限编程实践的一部分,叫做——YAGNI。这是一个缩写,代表“你不需要它”(You Aren't Gonna Need It)。记住这一点是很好的。

XP(极限编程)中另一个可以转化为这一点的优秀原则是“做最简单可行的事”。我们在实践TDD、持续集成和重构时应用这一原则。对我来说,这是一个很好的例子,说明了哲学书中的简单一句话如何提醒我们不应该过度复杂化我们的解决方案,我们应该对其进行测试,并且我们应该谨慎地进行集成。

轻视自己,深思世界。

前段时间,Simple Programmer 的 John Sonmez 提请人们注意我们行业中存在的一个问题。简而言之,许多软件开发人员都是混蛋。我理解,我们是薪水丰厚的书呆子。我们聪明、有创意,而且我们很多人都勤奋工作。然而,事实是,我们很多人都自负过高,并且表现出自以为是。尤其是在我们年轻的时候,我们往往傲慢自大,看不起同事和其他职业。当别人犯一点点错误或缺陷时就指责,而当我们自己犯同样错误时,却摆出一副“比你圣洁”的态度。

我们必须记住,这种情况是可以改变的。很快,我们可能就不再是顶尖人物了,随着年龄的增长,我们如此依赖的脑细胞可能会背叛我们。记住迈克·泰森在赌光了他所有的成功和财富后所说的话:“如果你不谦逊,生活会让你变得谦逊。”记住,你可能没有那么重要。

你只能按照你练习的方式去战斗。

正如我们前面提到的,宫本武藏发明了用两把剑战斗的技术。武士通常有两把剑,一把长剑——较重、较长的剑用于长距离战斗,以及一把用于近距离决斗的伴生剑。为了能够同时使用它们,武藏用两把长剑进行练习,每只手握一把。这样,如果他在真正的战斗中需要使用伴生剑,他会更容易做到。

书中有句很好的话——《开发者的代码》:“最终,无论你在开发层级的哪个位置,都要坚持编码。这是你最有价值的地方。”如果你在你工作的公司中有所进步,你是一名团队领导,或者你的事业正在腾飞,这固然很好,但永远不要忘记这些是从何而来。不要忘记,如果时局艰难,不像现在这样光明,你也要做好准备。

今日战胜昨日之我;明日战胜不如我之人。

这有点像前一句引言的续篇。不断提升自我应该是你生活中最重要的事情之一。总有你需要学习的新东西;技术发展迅速。每天你都需要平息你的自我,意识到你并非无所不知,还有很多东西需要学习。记住,你无法学习你认为自己已经知道的东西。

你不应对特定武器,或任何其他事物,抱有特殊偏爱。过多与不足等同。无需模仿他人,你应该拥有足够适合你的武器。

尽管许多软件大师,包括我之前提到的 John Sonmez,都建议你专注于某一领域,但我对此持反对意见。这句话提醒我们应该了解很多事情,我指的不仅仅是技术方面。引用罗伯特·A·海因莱因的另一句话:“一个人应该能够换尿布、计划入侵、屠宰一头猪、驾驶一艘船、设计一栋建筑、写一首十四行诗、平衡账目、砌墙、接骨、安慰临终者、接受命令、下达命令、合作、单独行动、解方程、分析新问题、铲粪、编程、烹饪美味佳肴、高效战斗、英勇赴死。专业化是昆虫的特权。”

作为一名软件开发人员,你应该了解良好的工程原则、几种语言、架构模式等等。你也应该能够将这些应用于客户的需求。当我们谈论客户时,你应该知道如何为你的服务收费,以及经济如何运作。更不用说,你应该将所有这些与你的个人生活和家庭平衡。这复杂吗?是的,很复杂。幸运的是,你不是昆虫。

结论

宫本武藏是一位伟大的武士。他的教诲提醒我们要脚踏实地,勤于练习,并做好准备。当然,这里的真正目标是让自己拥有正确的心态并制作出好的软件。你可以使用任何你喜欢的东西。这篇文章,技术书籍或非技术书籍。富有创造力并富有成效,这才是梦想。

天啊,写这篇文章真有趣。希望你也喜欢。
感谢阅读!
© . All rights reserved.