你离优秀的开发者还有多远?
一位技艺精湛的铁匠可以教会程序员的事。
作者 | Malte Bucksch
译者 | 弯月
责编 | 屠敏
出品 | CSDN(ID:CSDNnews)
1602 年,Gordon 是这个国家最好的铁匠。各地的领主都长途跋涉到他的铁匠铺里订做最好的刀剑。
今天,我们来看看 Gordon 是如何成为最好的铁匠的,而且更重要的是,怎样才能学习 Gordon 成为更好的开发者。有句老话说,优秀的程序员比普通的程序员好 10 倍。
Gordon 不是程序员,所以这篇文章不会讨论编程技能的细节,而是关注一个优秀的工匠最基本的素质。但即使 400 年已经过去了,这些基本素质依然没有变化。
铁匠和程序员
那么,优秀的铁匠是如何炼成的?而优秀的开发者呢?
热爱本职工作
一个真正热爱自己工作的人是很难被打败的。Gordon 的邻居 Edmond 也是个铁匠,他也一心一意地想成为最好的铁匠,但他对打铁没有兴趣。所以他缺乏创造力、好奇心,正是这些东西促使 Gordon 长期坚持下去。Edmund 打的刀剑还不错,但并不能像 Gordon 的作品那样让客户心满意足。热爱自己的本职工作能促成工匠的三个重要素质:好奇心,创造力和长期动力。
好奇心
如果一名工匠不喜欢他的职业,那么他通常是在为金钱或声望工作。因此,不能在短期内带来金钱或声望的决定通常会被无视。一个只为了由金钱或声望的人很少会发掘他缺乏知识的新领域,毕竟,探索新事物意味着在初期会减少金钱和声望。
相反,热爱工作的人会迫不及待地探索新领域。他们会尝试各种新鲜事物,不断尝试、失败,尝试一切可能的方法。长期来看,这些行为使得他们一直保持行业内的领先位置。
优秀的铁匠和优秀的开发者对于事物的原理很好奇,永远都在问“为什么”。他们会根据对工作的理解,推动行业的进步,并做出创新。
创造力
像任何创造性的工作一样,如果你不热爱,就不会像热爱的人那样愉悦。好的想法会在你回家路上跳出来,因为你的大脑会情不自禁地思考你正在解决的问题。
Gordon 和 Edmond:热爱工作 vs. 为金钱和声望工作
长期的动力
一名热情的工匠的动力并不是老板的怒吼,也不是金钱或声望。他的动力完全来自于打造新东西本身。因此,即使经历了多年的沉浮,他依然能保持动力。
保持谦虚
Gordon 是个谦虚的人。他告诫自己远远不是最好的(很讽刺的是,这使得他成了最好的铁匠)。因此,他从未停止过学习和探索。每周他都会外出问其他铁匠的秘诀。Gordon 也欢迎其他铁匠对他的工作指手画脚,因为这可以提高自己的手艺。
如果你开始骄傲,你就会停止学习。你相信你已经知道了一切,就不会再关注自己领域的新趋势和新想法。因此,保持谦虚不仅是让别人喜欢你的品格,而且实际上是与最优秀的人进行竞争时最关键的品质。
保持勇气和诚实
有时候,高阶领主或国王订购刀剑时会附加非常紧迫的期限。战争一触即发,年底之前就要交付 1000 把剑。Gordon 最让人喜欢的品质之一就是他永远会坦白说出自己的想法。如果年底之前完不成 1000 把剑,他就会直接对国王说:
“陛下,我很抱歉,但在那个期限之前我们只能给您 500 把剑。”
当然一些领主会感到失望。但你知道吗?等到了战争迫近时才知道有 500 把剑打造不出来,是让他们更失望的事情。许多人甚至会因此丧命。
当你无法按期交付时客户的感觉
诚实包括承认自己的错误并为客户负责。如果搞砸了,就要诚实地告诉他们,并从中汲取教训。如果你有像 Gordon 那样优秀的团队,那么客户不会因此而贬低你,反而会感谢你的诚实和勇气。
对客户和团队成员保持开放和诚实,是长期成功的关键因素。这需要勇气。有时还会损害短期的利益。但它能为你赢得长期的信任和尊重。这种信任和尊重能为你带来忠实的客户、团队成员,甚至朋友。
他是优秀的团队成员
Gordon 永远知道自己在铁匠上的成就只不过是团队努力的结果。因此,他会花很多时间把自己所学教给新的铁匠。他希望他们有一天能成为比他更优秀的铁匠。
新的铁匠很看重 Gordon 能用最简单的语言解释清楚一切。他永远欢迎提问,也不会因为别人的错误而贬低别人。
相反,Edmund 更喜欢一个人工作。他不喜欢跟别人解释东西,因为反正别人也听不明白。因此,Edmund 的铁匠铺只能接 10 把刀剑以下的小订单。
Gordon 的团队在同样时间内能毫不费力地完成 100 把剑。人们喜欢与 Gordon 合作,这使得 Gordon 完成客户的订单更容易。
他非常专注于客户
最后但并非不重要的一点是,Gordon 非常专注于客户。他喜欢他的工作,他热爱学习新事物,但他也知道,如果不能在期限内把最好的刀剑交付给领主,这一切都没有意义。如果你的刀剑到战争开始后才做出来,就为时已晚。
Gordon 在满足客户的期限方面非常严格。一方面,这需要在一开始就跟客户沟通好现实的完成时间。另一方面,这意味着有时候必须做出妥协。在程序员群体中,完美主义非常普遍,铁匠也是一样。但最终,你的目标是交付。一件完美但只有 80% 完成度的剑或软件都是没用的。
完美主义的危险——最终,你的目标是交付
Gordon 还会一直牢记:
“不要重复发明铁匠锤”
除非必要,否则 Gordon 不会自己打造自己用来铸剑的锤子和工具。他只知道这些工具应该怎么使用。在制造工具方面,他的朋友 Humphrey 做得更好。所以 Gordon 很乐意去他的店里购买工具。Gordon 的客户才不会对 Gordon 的锤子发表任何看法,他们只关心 Gordon 做的刀剑。
有时候有的领主不会指定严格的期限。他们只想要漂亮的金色剑用来装饰阳台,而不在乎什么时候能做完。那也没问题。这种情况下的关键点不再是满足期限,而是要弄清楚客户的需求。虽然大多数客户都有重要的期限。
在工作时随时想着客户的需求。一些国王需要金色的剑装饰阳台,一些领主要在本周内打造 100 把普通的剑,一些角斗士只需要一把优秀的剑在斗技场中打败对手。
知道客户的需求,倾听客户的需求,然后尽一切可能满足。
结论
成为优秀的工匠的这些经验适用于所有开发者。这些品质在你需要交付优秀的产品时都是必须的。
很多为开发者写的文章都在关注技术知识。这当然很重要,但在我们看来,上面说的这些价值和原则,就算不比技术知识更重要,也至少同样重要。一名热爱工作、谦虚谨慎、有勇气、能团队合作并且非常关注客户的开发者,才是能成就大事的开发者。
作为工匠的铁匠 vs. 作为工匠的软件开发者
原文:https://quickbirdstudios.com/blog/the-best-blacksmith-developer/
本文为 CSDN 翻译,如需转载,请注明来源出处。
推荐阅读:
print_r('点个赞吧');
var_dump('点个赞吧');
NSLog(@"点个赞吧!");
System.out.println("点个赞吧!");
console.log("点个赞吧!");
print("点个赞吧!");
printf("点个赞吧!\n");
cout << "点个赞吧!" << endl;
Console.WriteLine("点个赞吧!");
fmt.Println("点个赞吧!");
Response.Write("点个赞吧");
alert(’点个赞吧’)
echo(’点个赞吧’)