●家具警察(Furniture Police)
家具警察(Furniture Police)是《人件》提出的第一个观点。我认为现在研发团队都实现了Agile,最小团队是一个一个Feature Team。对于同一个Feature Team的成员,建议集中在同一个区域内办公,最好不要分在两个或多个Room,甚至不在同一楼层或者办公楼。但是要保证Feature Team的成员有独立的工作空间,最高的办法是增加隔断的高度,建议把隔断的高度设置在180cm~200 cm最好。为了保证心流(《人件》中的观念,其实就是专心工作的状态),我鼓励研发团队人员可以学学现在比较时髦的“正念冥想”,这对于身体、生活和工作都有好处。
另外尽可能统一Team开会的时间,比如Standup Meeting统一在每天上午9:15~9:30。对于企业内部的会议也应该尽量事先以Email的形式通知到每一个员工。这样团队成员可以合理安排自己的工作时间,使得每天有更多的时间处于“心流”的工作状态。
另外对于“心流”,我当时在爱立信工作时候,企业有一个做法我非常推荐。就是多设置几间Quite Room,如果你需要一个绝对安静的环境去完成一个特别重要的工作你可以到Quite Room,锁上门关掉手机去完成。如果你与你的几个同事有工作内容需要讨论,可能讨论会比较激烈,为了不影响其他员工的工作,你们也可以将这个动作Move到Quite Room去进行。最后特别注意你在Quite Room可以关闭手机,但是一定要打开企业邮箱或者公司级别的通信工具,使得其他同事在紧急情况下可以马上联系到你。
● 提高E因子(E-Factor)
E因子(E-Factor)=不被打断的时间 / 出勤时间。
我曾经在意法半导体(中国)有限公司和爱立信(中国)通信有限公司工作过。在这两个公司工作,不用记考勤。上下班的时间是自由的,比如在爱立信期间,我们几个住在一个小区,但是工作上处于不同部门同事通过拼车上下班。所以有时17:30就下班了,而有时19:30才下班;上班也一样,通常在8:30~10:00,从来不用担心迟到或者早退扣工资。甚至请假只要通知直接老板,到公司准假,公司内部都不太有人“关心”你。在这种情况下绝大部分的员工都不会因为难的几天的请假、迟到、早退而影响平常工作的(当然请长假领导会自动调节工作计划)。当大家意识到工作完成不了,都会把电脑拿回家里,通过公司内部的VPN或主动在公司加班,把工作及时完成。中国到家讲究无为而治,我认为这就是真正的不治之治。
而以前在国内工作期间,公司把考勤时间卡得很紧,有一家公司规定工作时间为9:00~18:00,如果上班打卡晚于9:10,或下班时间早于17:50,算作半天旷工。那个时候我记得16:30干完活了,都一定要熬到17:50才敢下班。甚至请假也比较难,偶尔有个头疼脑热也不敢请假。
另外,在中兴通信的时候,也不记考情,但是大家每天都干到21:00以后,每周六都主动来供公司工作。所以你不996,心里都过意不去。
所以,提高E因子(E-Factor)意味一味提高出勤时间不一定就代表你工作努力。毕竟工作仅是生活的一部分。
● 抗拒企业熵(corporate entropy)
热力学第二定律告诉我们熵总是在增加的,企业熵也是增加的。所谓企业熵增加就是指在没有外部的干扰,企业会变得越来越固化,技术越来越单一,员工就像流水线上的机器人重复干着同样的事情,这是受鸟笼逻辑的影响。抗拒企业熵的最好方式有两种,一种是方法引入鲶鱼,让鲶鱼来搅动这摊静水,给企业重新带来活力,引入新的技术和理念,产生企业的变革。另一种方法是主动学习现在的先进知识,形成新的变革。可见第一种是外力牵引的;第二种是内力驱动的。外力牵引比内力驱动实现起来更容易成功。所以企业可以通过招聘新员工和聘外来教练来实现企业的变革,从而抗拒企业熵。
● 挽回团队自毁(teamicidal)
团队自毁包括防御式管理、加班等。什么是一个好的管理?我的答案是让一个员工放到他所擅长的岗位上去。天生我才必有用,我是很相信天赋的人。世上没有一个没有用的人,只是这个人是否在他的适合岗位上。一个优秀的管理者首先是一个好的伯乐,他能够将每一个人都把他放到其适合的位子上,所以管理者需要掌握良好的心理学知识。
现在随着人们生活水平的提高,工作已越来越不是养家糊口的作为,人们通过工作寻找自己的存在价值所在,所以一个领导不能给下属带来快乐,员工是很难为你服务的。因此现在的领导者应该比以前难干得多。
● 更关注质量
质量是企业的灵魂。我认为一个能够成活久的公司必定是一个注重质量的企业,现在有好些公司,甚至一些现在是比较有名气的公司都在说,现在变化太快了,我们没时间关心质量,必须要实现0->1,以后在慢慢实现1>2、2>3…。在公司刚刚成立的时候这种做法可能有些正确,但是一年甚至多年之后还持有这种观点,就有问题了。想想我们的邻国日本为什么二战之后以失败国的身份快速发展起来,关键原因在于他们总是质量。想想质量鼻祖戴明博士。Agile的Scrum等都与日本有关。
我生长在上海,我特别崇拜上海以前的产业工人,做事情真的是一丝不苟的工匠精神,他们的工作作风实在是让我佩服。每每抬起上海工人老师傅,我都特别敬佩。
● 废除帕金森定律
帕金森定律(Parkinson's Law):是官僚主义或官僚主义现象的一种别称,被称为二十世纪西方文化三大发现之一。最能体现帕金森定律的故事就是大家都应该知道的三个和尚的故事。“一个和尚挑水喝、两个和尚抬水喝、三个和尚没水喝”。有些企业为了考虑到某某亲戚、0朋友的关系,设立一些虚职,这个对于一个企业来说是非常有害的。
…
除了以上说的几点,《人件》这本书还提及其他的观点,我在这里不再讨论。总之《人件》一本作为管理人员很好床头书,非常值得经常翻翻。
本书第1章与第2章介绍软件单元测试的概念和基础知识。
第1章简单介绍软件单元测试所包含的概念,包括桩对象和测试驱动函数、测试驱动开发、软件测试贯彻始终、软件测试金字塔、单元测试在传统/敏捷开发模式中的地位、精准测试、单元测试和白盒测试,以及单元测试的FIRST原则和AIR原则。
第2章介绍软件单元测试基础知识,包括动态自动化/手工单元测试、静态自动化/手工单元测试。在动态自动化单元测试中介绍了语句覆盖、分支覆盖、条件覆盖、条件/分支覆盖、MC/DC、路径覆盖和控制流覆盖。
第3章到第5章介绍C语言、Java语言和Python语言的单元测试框架。
第3章介绍C语言动态自动化单元测试框架,包括在Windows下安装C语言运行环境、在Windows和Linux下安装编译CUnit、查看测试报告、CUnit介绍和案例。
第4章介绍Java语言动态自动化单元测试框架,包括在Eclipse中创建Maven项目和配置JUnit与TestNG运行环境、JUnit 4测试框架、JUnit 5测试框架、TestNG测试框架、测试替身、变异测试、利用EvoSuite自动生成测试用例,以及在Jenkins中配置JUnit 4、JUnit 5、TestNG和Allure。
第5章介绍Python语言动态自动化单元测试框架,包括unittest、Pytest及Python的模拟对象和变异测试工具mutpy。
第6章与第7章介绍代码覆盖率工具和代码语法规范检查工具。
第6章介绍代码覆盖率工具,包括C语言覆盖率工具gcov和lcov、Java语言覆盖率工具JaCoCo,以及Python语言覆盖率工具Coverage和pytest-cov。
第7章介绍代码语法规范检查工具,包括Java语言静态分析工具PMD、Python语言静态分析工具flake8和pylint,以及多代码语法规范检查平台SonarQube。
第8章通过两个案例详细介绍TDD。
读者可以根据自己的需求对以上内容进行选择性阅读或者全部阅读。另外,为了巩固大家的学习效果,每一章结尾都有相应的习题。
顾翔凡言:在LLM与AIGC时代,产品、研发、运维工程师是永远不会失业的。