专访朱雷:昔日的游戏少年,如今的Python工匠 Posted 2022-03-23 图灵教育
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了专访朱雷:昔日的游戏少年,如今的Python工匠相关的知识,希望对你有一定的参考价值。
第二段代码相比第一段,就要更Pythonic一点。对于Python程序员 来说,追求Pythonic不是「茴字的四种写法」那种浮于表面的形式需求。Pythonic的代码实质上与许多语言底层概念息息相关,比如你可能得掌握:自定义可迭代对象、使用上下文管理器、创建数据模型等知识点,才能在写代码时游刃有余。 作为回报, Pythonic通常会给程序员们带来这些好处:代码更短、速度更快、可读性更强。 说Python难于精通的第二点原因,在于将其应用到规模较大的工程上时。 我常听到人们说:「Python只适合做小项目,不适合做大工程。」——虽然片面,但确实有一定道理。因为当你用Python开发大工程时,的确会遇到不少令人恼火的问题。 举个例子,开发小项目时,你可能极少关注Python的类型系统,现写现用。但参与大项目时,为了提升代码的可读性,为了引入静态检查提升程序的可靠性,你可能就得掌握类型注解、泛型、结构化子类等更复杂的类型系统概念,才能让工程质量更上一层楼。 此外,在开发大型项目时,如何用Python做好自动化测试、如何管理项目依赖(包管理工具一只手都数不过来)等,都需要不断学习,从错误中积累经验,着实算得上「难于精通」。 关于代码,有一句话常被人们引用:「程序必须先是写给人读的,然后顺带着让机器执行。(Programs must be written for people to read, and only incidentally for machines to execute.)」,它精准地表达出了「让代码保持可读」的重要性。
评价代码好坏有很多维度,比如可读性、易修改性、编写成本、执行效率等。这里重点谈谈前两个。
好代码一定是比较好读的。 也就是说,当读到一段好代码时,我们能比较容易地理解代码的意图,搞清楚它到底做了什么。而烂代码在可读性上则各有各的问题。有的抽象过度,做一件简单的事封装了四层,让人头晕眼花;有的缺乏抽象,相似的代码成片出现,也很难读。 如何写出可读性高的代码,不同编程语言各有各的门道,而有一些准则是通用的: 评价代码的好坏,除了「可读性」之外,还有另一个着眼于未来的维度—— 易修改性 。现实世界里的软件需求是不断变化着的,「易修改性」提出的问题是:「当需求变更时,你的代码改起来麻烦吗?」要知道,有些代码虽然读起来简单直白,但假如需求发生了一点细微的变化,所有代码都得推翻重写,这当然也是不可接受的。
为了让代码易于修改,程序员们又会引入很多技术来让代码变得更「好」,比如使用恰当的设计模式、设计精准的抽象模型、编写完备的单元测试等等,这些办法都很有用。 谈及如何成为一名优秀的软件工程师,
朱雷认为硬实力固然重要,
首先,一名优秀的软件工程师,一定要有过硬的专业能力。拿后端开发举例,他不光能写出高质量的后端代码、高效地排查各类问题(debug能力),还能设计出良好的软件架构。除此之外,他也得对各类数据库、缓存系统以及高可用方案的优缺点有所积累,能提出自己的见解。这些东西,网上许多文章都讲透了,我就不再赘述。 第一个「软能力」无关代码和软件,而是和「人」息息相关。具体来说,就是 换位思考、高效沟通的能力。 「换位思考」乍听上去是个生活能力,常用于吵架后的自我反省,与程序员的工作似乎没啥联系。但其实并非如此,我来给你举个例子。 在开发一个功能时,除了编写代码完成需求外,你是否试过站在「使用方」的角度做一些思考呢?如果你试过,便会发现许多代码之外的问题一一浮现:「REST API调用起来怎么这么麻烦?它的参数设计真的合理吗?」「这条报错信息这么模糊,其他人看到知道如何处理吗?」 把这些基于「换位思考」发现的细节做到位,对你的职业生涯百利而无一害。 而 「高效沟通」 的用处就更多了。在与同事讨论技术方案时,在沟通代码审查意见时,你是否能做到:既有效表达了自身观点,又不至于搞僵整个讨论氛围呢?良好的沟通技巧,会在无形之中让许多工作变得更简单,当然也会给你带来更好的人际关系。现代职场中,谁又不想要一份好的人际关系呢? 第二个「软能力」是我最近时常想到的一点:「拥抱苦差事」的能力。 程序员们是一个崇尚自动化、极度厌恶重复工作的群体。但在现实世界中,枯燥与重复有时是不可避免的。我去年在博客翻译过一篇文章《拥抱苦差事》,作者在里面就提到:曾连续花了三个星期,将2000多份缺陷报告归类并排好优先级,才把整个团队从bug的泥沼中拉出来,让开发回到正轨。 在你的工作中,相信也少不了这类「苦差事」。它也许是几千份杂乱无章的缺陷报告,也许是上万行质量糟糕但运行着核心系统的遗留代码。面对这类「苦差事」,其他人或许唯恐避之不及。但你如果能调整心态,一步一个脚印,「愚公移山」似的埋头将问题搞定,最后不光能改善你的工作环境,打磨你的工作技能,也一定能帮你赢得许多来自其他人的尊敬和信任。 写书,回答「如何写出好的Python代码」这个问题 2016年起,朱雷写了一系列技术文章,
逐渐找到合适的表达,收获诸多好评,
后来以这些文章为骨架写成《Python工匠》一书。 写「Python工匠」的前几篇文章时,我的流程是这样的:挑一个大主题,写一些各自独立的知识点,按「最佳实践」「常见技巧」「常见陷阱」分好类,最后组织成一篇文章。但这样写了四五篇以后,就有点儿腻了,于是我就开始尝试其他形式,比如把一类知识点揉进一个完整的故事里 。 在故事的选材方面,我会尽量挑选所谓「接地气」的那种。比如在写 SOLID 设计原则时,我突然想到有很多人喜欢用 Python 写爬虫(我自己也写过不少),于是就杜撰了一个爬虫小项目,把那些复杂的设计原则融了进去。事后发现,读者读起来还挺容易代入的,效果不错。
我写书和写文章都是在业余时间,一般习惯在工作日的早晨(七点左右起床)写一个小时左右,到了周末,如果有精力、没什么别的事儿的话,也会连续写上几个钟。这样算下来,一篇文章大概会花 1~2 周左右。当然,我写东西也不是连轴转,有时写了一篇以后,会「摸鱼」好几个月再写下一篇。
通过写一本书,把自己掌握的知识点重新组织一遍,提升肯定不小。 但要是说具体哪里有提升,我还真说不上来。能想起来的是,我在写某些章节时,为了保证内容准确无误,特意去读了一本相关的技术书,补齐了几个知识盲点,感觉还挺好。 后来跟帮忙审稿的技术大佬们沟通时,也从他们的审稿意见里学到了不少东西。 除了技术能力外,在写作技巧层面上,写书这事儿对我的帮助也挺大。还记得几年前,我在公司内网发表第一篇「Python工匠」文章时,有一位同事留言道:「这篇文章是翻译过来的吗?」他说这话肯定没恶意,但我当时就意识到:我的文字「翻译腔」太重了——用词别扭,结构也不自然,总之就不像是一个中文母语的人写出来的东西。 在刻意做了许多阅读和学习后,借助写书这个机会,我彻底调整了自己的写作风格,让自己的文字尽量贴近地道的中文表达。这事儿读者买不买账我不知道,但自己还挺开心的。 如我在前言中所说:《Python工匠》并非一本为零编程经验的新手写的入门书。假如你是一位编程新手,那么我建议你最好先学一些 Python 的基础语法,写上几百行Python代码,找到一些感觉之后再来翻阅本书。 假如那时,你满脑子想的都是:「为啥我的代码就是不如其他人的好?」那么恭喜你,《Python工匠》整本书几乎可以说是为你量身定做的。 插图:Konami、Bacancy Technology
简介:本书基于广受好评的“Python工匠”系列开源文章。全书从工程实践角度出发,通过剖析核心知识、展示典型案例与总结实用技巧,帮助大家系统进阶Python,写好工程代码,做好实践项目。
新工匠
题引:两个菜刀品牌如今的发展状态对比:
张小泉创建于1663年,当年用龙泉之钢铸造,六十六道工序,曾被列为贡品,1915年在巴拿马万国博览会上得过银奖,还是唯一被评为国家驰名商标的刀剪类商品,是名副其实的中国百年品牌;
双立人创建于1731年,它所在的索林根小城地处德国西部,是欧洲不锈钢技术的发源地,也是1915年,双立人在旧金山世界博览会上独揽四项大奖,是如假包换的德国百年品牌;
如今的张小泉亦步亦趋地走在先人开拓的路上,材料不变,工序不变,款式不变,视之为“百年传承的工匠精神”;而双立人则百般求变,不锈钢技术不断迭代,生产工艺全面创新,款式、门类更是层出不穷。
在今天的商店里,张小泉菜刀的价格是双立人菜刀的二十分之一,至于销量和销售区域,则差距可能更大。
我们要找的“新工匠”,应该是双立人,而不是张小泉。
中国不乏匠人,但却缺乏新工匠
全国老字号品牌超过1.2万个,摊开来,家家都有一个与传承和工匠精神有关的“神话”,可是有的苟延残喘,有的容光焕发,究之根源,正是有新旧之别。
譬如张小泉和双立人,它们在百年前能各自崛起,都因为它们的工匠对当时的锻铸技术实现了突破,他们所生产的菜刀锋利轻快、造型时尚,他们的风格被固化为传统而得以流传。
但是,时间会消磨一切的价值,随着时代的演进,技术被再次突破,审美被迭代,甚至使用的场景也发生了根本性的变化, 如果后世的匠人抱守古人而不思进取,则传统成为枷锁,古人成为沉重的十字架。
云南白药由云南伤骨名医曲焕章发明于1902年,被视为止血神药,其配方、工艺列入国家绝密。早年的白药,为粉末状的小瓶封装,一姓单传,百年不变。
也是从十多年前开始,这家企业在王明辉的带领下大开大阖,先后从散剂开发出胶囊剂、酊剂、硬膏剂、气雾剂、创可贴等新品类,甚至还进入牙膏、洗发剂等快消品领域,成为老字号企业中第一家年销售额突破百亿的公司。
真正的工匠精神不是回到传统,一味地向前辈致敬,而是从传统出发,让上帝先“死掉”再复活,在当代的审美和生活中重新寻找存在的理由。
当今中国,一切商品都过剩,每个行业都是“红海”,可是同时,消费升级的大潮又为“创造之人”提供了无数的可能性,个性与创新成为市场竞争的最强软能力,“奇葩匠人”的时代已经到来。
谁是“新工匠”
新工匠的第一个特质是手艺人精神。 他专注于产品本身,尊重制造的基本规律,对技术及细节的雕琢,是非常古典的,产品是他的人格投射,是专业精神的一次物质性呈现;
新工匠的第二个特质是现代性。 即与当代有关,与当代的一切新技术、新思维、新生活方式有关,百年前的厨房一定与当代的厨房不同,百年前的饮用趣味一定与当代的饮用趣味不同,甚至,百年前我们对伤痛的理解也一定与当代不同,与当代有关,才可能存在于当代;
新工匠的第三个特质是颠覆能力。 他必须与众不同,必须足够“奇葩”,能够在最普通的商品中重构审美,最极致的,他能够重新定义一个商品。
美国社会学家理查德·桑内特出过一本名为《匠人》的专著,他对匠人的解读是“通过制造的物品去了解自身,体现时代的生活品质和审美特征”,在他看来,“制造就是思考”。
一个人从事于某一行业而能够脱颖而出,其决定性的能力来自于他的思考力,即他对本专业的专注、对技术的敏感以及对当代审美趣味的掌握和扬弃。
文章来源:吴晓波:什么是“新工匠”
以上是关于专访朱雷:昔日的游戏少年,如今的Python工匠的主要内容,如果未能解决你的问题,请参考以下文章
13 年 Python 编程经验,编写成书,是一种什么体验?
软工读书笔记 week2
新工匠
软工作业: 硬币游戏—— 代码分析与改进
软工作业2:硬币游戏——代码的分析与改进
专访张路斌:从HTML5到Unity的游戏开发之路