首页 > 其他分享 >代码整洁之道--读书笔记(2)

代码整洁之道--读书笔记(2)

时间:2024-09-05 22:38:27浏览次数:8  
标签:尝试 登录 读书笔记 -- 经理 代码 完成 整洁 页面

代码整洁之道

image-20240904225436374

简介:

本书是编程大师“Bob 大叔”40余年编程生涯的心得体会的总结,讲解要成为真正专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来者引路,助其职业生涯迈上更高台阶。

本书适合所有程序员阅读,也可供所有想成为具备职业素养的职场人士参考。

第二章:说“不”

image-20240905213322692

专业人士敢于说明真相而不屈从于权势。

专业人士有勇气对他们的经理说“不”。

2.1 对抗角色

不论是项目经理还是程序员,都有其工作职责所在。你的经理要求你在明天之前完成登录页面,这是他在准求和捍卫的一个目标,是在尽他的工作职责。可是如果你明知道第二天之前不可能完成登录页面,而嘴上还说着“好的,我会试试的”,那么便是你失职了。

这时候,尽职的唯一选择就是去说“不,着不可能”。

来看几段对话:

对话一:

P经理:“你在明天之前要完成那个登录页面,”

小M(程序员):“噢,喔!要那么快啊?那好吧,我会尽量试试。”

P经理:“好极了!谢谢。”

看似很和谐的对话,其实双方都不够专业。P经理以为你明天会完成,而你也许会真的尝试去完成预判一天时间根本无法完成的任务。

这样谈话避免了爆发冲突,但对解决问题没有丝毫帮助。

对话二:

P经理:“你在明天之前要完成那个登录页面,”

小M(程序员):“噢,抱歉经理,这么短时间完成不了的。”

P经理:“那你觉得什么时候能完成呢?”。

小M(程序员):“再过两周怎么样?”

P经理:(在他的本子上记了几笔)“好的,谢谢。”

这样对话确实轻松,但其中的问题也很严重,大家表现得极不专业。

双方都没尝试寻求最佳的可能结果

对话三:

P经理:“小M,你在明天之前要完成那个登录页面。

”小M:“不,P经理,这个活要两周才能完成。”

P经理:“两周?架构师估计这只要3天,而你已经花了5天时间了!”

小M:“架构师们错了,P经理。他们是在接到产品销售需求前做的预估。我至少还需要10天才能做完。你没看到我在wiki上更新的预估吗?”

P经理:(表情严肃、沮丧得发抖)“小M,这可不行。客户明天就要来看demo了,我必须向他们展示个能用的登录页面。”

小M:“明天你需要登录页面的哪部分能用?”

P经理:“我要整个登录页面!必须要能登录。”

小M:“P经理,我可以给你做一个能登录的假页面。这个现在就已经可以。但是页面不会检查用户名和密码。如果你把密码忘记了,也还没办法发邮件告诉你。页面顶部也还不能像时代广场的大屏幕那样有新闻栏在滚动,帮助按钮和浮出说明都还不能用,它没法为你保存cookie以便下次登录,也不会设定任何权限限制。但你确实可以登录。你看这样可以吗?”

P经理:“我可以登录?”小M:“是的,可以登录。”

P经理:“好极了,小M,你真是个大救星。”(松了口气,说了声“太棒了!”,走开了。)

在这个例子里,他们达成了最佳的可能结果。他们各表异议相互说“不”,然后找到了双方都能接受的解决方案。

他们的表现是专业的。对话中虽稍有冲突,也有片刻不愉快发生,但如果双方坚持追求的目标不能完美切合时,这是比较理想的情况。

“为什么”没有事实重要。

为什么登录页面要那么长时间才能完成面对事实重要。

2.2高风险时刻

最要说“不”的是那些高风险的关键时刻。越是关键时刻,“不”字就越具价值。

作者在这里讲述一个故事,面临期限一定的项目任务,要在开始时候明确表示当前能否完成,如果不能完成要坚定地说“不”。

哪怕是一个关系生死存亡的项目,更要尊重事实说不。

2.3 要有团队精神

2.3.1 试试看

许诺“尝试”,就意味着你承认自己之前未尽全力,承认自己还有余力可施。

许诺“尝试”,意味着只要你再加把劲还是可以达成目标的;而且,这也是一种表示你将再接再厉去实现目标的承诺。因此,只要你许诺自己会去“尝试”,你其实是在承诺你会确保成功。这样,压力就要由你自己来扛了。如果你的“尝试”没有达成预期的结果,那就表示你失败了。

如果你既没有新方案,又不准备改变自己的行为,如果事事仍然都按你承诺“尝试”之前的方法去做,那么,所谓的“尝试”指的又是什么呢?如果你此前并未有所保留,如果你没有新方案,如果你不会改变你的行为,如果你对自己原先的估计有充分的自信,那么,从本质上讲,承诺“尝试”就是一种不诚实的表现。你在说谎。你这么做的原因,可能是为了护住面子和避免冲突。

2.3.2 消极对抗

如果一列载货列车向大家冲来,而只有你一人有所察觉,你可以轻轻抽身退到轨道外,眼看其他人被车碾过,也可以大喊:“车!车来了!快离开!”

2.4 说“是”的成本

  • 客户所要的任何一项功能,一旦写起来,总是远比它开始时所说的要复杂许多。
  • 我们理解的好代码应该是什么样的呢?好代码应该可扩展,易于维护,应该易于修改,读起来应该有散文的韵味
  • 这个故事得出的教训是,你的利益干系人,不论是外部客户还是内部管理层,知道如何让开发人员快快写出代码。但是,是高效地写出代码吗?不见得。是快速地写出代码吗?是的。他们是这么办到的。

2.5 如何写出好代码

专业人士常常会成为英雄人物,但这样的荣誉并非是他们所刻意追求的。他们之所以成为英雄人物,是因为他们出色地完成了任务,不但按时,而且符合预算。

而这不应该牺牲说“不”的机会而疯狂地写代码,完成任务,但是这样几乎没有时间去提升代码的质量,疯狂写代码仅仅是为了完成开发任务而已!如是,根本不可能写出好代码。

“有可能写出好代码吗?有可能坚守专业主义精神吗?”

我的回答是:“是的。但你要学会如何说‘不’。”

标签:尝试,登录,读书笔记,--,经理,代码,完成,整洁,页面
From: https://www.cnblogs.com/TonyCode/p/18399331

相关文章

  • 找质数完整版?(小白的练习)
    目的很简单,学到哪就稍微用一下刚学的知识,下面是我的代码(其中有些步骤可以简化,就比如在search函数中用指针没什么意义,因为我只需要return“tureorfalse”如果用指针其实是杀鸡用牛刀,不过只是练习一下学的,所以目的不同代码自然不同,欢迎指教#include#includevoidsearch(int......
  • CSS盒模型
    文档流网页是一个多层的结构,设置样式也是一层一层的设置,最终我们看到的最上面的一层。文档流是网页最底层​我们创建的元素默认情况下,都在文档流中​元素分为两种状态:在文档流中,脱离文档流元素在文档流中的特点​块元素​1:会独占一行​2:......
  • STM32学习笔记——Keil uVision5建项目
    新建文件夹——用于存放工程及工程管理新建文件夹用于存放整个工程打开“stm32-project”文件夹,新建一些文件夹用于工程源代码的分类这些文件夹都是自己建的用于不同类型代码存放,文件夹个数,命名都因人而异。(后续所有文件放在“stm32-project”中也行,不嫌乱的话)Hardware——......
  • Jenkins - 触发器
    触发方式jenkins自带的job触发方式GenericWebhookTrigger插件在需要外界其他系统触发Jenkins任务的场景,通常使用GenericWebhookTrigger插件来配置Jenkins触发器GenericWebhookTrigger插件允许使用Webhook将外部系统与Jenkins集成。通过配置Webhook,在特定事件发......
  • 高中数学 线性递推
    一阶线性递推定义\(a_{n+1}=pa_n+q,p\neq1\)不动点想法是上面这个式子跟等比数列有点像,那么我们想办法把它转化过去。取\(r\operatorname{s.t.}a_{n+1}-r=p\left(a_n-r\right)\),则\(\left\{a_n-r\right\}\)就是公比为\(p\)的等比数列。化开来,\(a_{n+1}=pa_n+r-pr=p_an+......
  • Test
    测试一下能不能用标题反正是折腾博客有点破防了。不想折腾了。就先写吧。专注于内容。\(1+1=2\)\(aaa\)加粗一下abc#include<bits/stdc++.h>#defineNOSYNCios::sync_with_stdio(false);cin.tie(0);cout.tie(0)#defineall(x)x.begin(),x.end()#defineendl'......
  • 旅行商问题 | Matlab基于混合粒子群算法GA-PSO的旅行商问题TSP
    目录效果一览基本介绍建模步骤程序设计参考资料效果一览基本介绍混合粒子群算法GA-PSO是一种结合了遗传算法(GeneticAlgorithm,GA)和粒子群优化算法(ParticleSwarmOptimization,PSO)的优化算法。在解决旅行商问题(TravelingSalesmanProblem,TSP)时,这种混合算法可......
  • A160-springboot协同过滤鲜花商城推荐系统
    (======查看博主个人介绍,源码不易,有偿获取,联系方式-个人简介========)介绍基于Springboot+vue+协同过滤+前后端分离+鲜花商城推荐系统(用户,多商户,管理员)【运行环境】IdeaJDK1.8MavenMySQLNginxVscode【技术栈】SpringBoot,SSM,MYSQL,Vue,Layui,JQUERY,HTML,CSS,J......
  • mysql主备环境同机搭建
    社区版下载地址:downloads.mysql.com/archives/community/原包 ##解压[root@prdb19u01]#tar-xvfmysql-8.4.0-linux-glibc2.28-x86_64.tar.xzmysql-8.4.0-linux-glibc2.28-x86_64/bin/mysql-8.4.0-linux-glibc2.28-x86_64/bin/myisam_ftdumpmysql-8.4.0-linux-glibc......
  • centos yum源配置
    yum源配置1.删除centos自带的yum源[root@cloud~]#rm-rf/etc/yum.repos.d/*2.创建挂载点并挂载镜像[root@cloud~]#mkdir/opt/centos[root@cloud~]#mount/dev/cdrom/opt/centos/mount:/dev/sr0写保护,将以只读方式挂载3.创建本地yum源[root@cloud~]#vi/e......