微软研发致胜策略读书笔记

小蔺的米哈游数据分析师之路——MYSQL篇 作为新人,记录自己mysql学习历程 阅读详情

项目的讨论

 

 

 

精确的项目目标

 

  作为主管,值得你好好花时间去设定你的项目目标。目标定下来之后,你就会清楚哪些工作该做,那些工作不该做。例如你是基础函数库的主管,如果你确定了“只有所有模块都使用的函数才是要开发的函数”的原则,那么某个模块要求你开发的工作,就不是你的目标了。

  每天花10-15分钟想想目标,并且想些解决的小窍门。例如作者某天是这样想的:

Diego负责该函数的开发,有可能需要一本技术手册。

  于是他马上去买了一本。

  就这样,明确项目目标,提前把影响程序员专心工作的障碍(包括不必要的会议,email,电话等)一一去除。主管才能把项目做好。

 

 

开会与报告

  有些会是不得不开的。例如:

  1 当某个人必须把信息传送给很多人时。

  2 信息需要双向或多向交流,人们必须立即反问才能了解信息。

  3 必须亲眼目睹或亲身经历,信息才能传达给接受者,如产品示例。

  4 有些事情须通过讨论才能进行。

  但开会中断许多人的工作。所以在开会之前,你必须动脑筋想想,你开会的目的是什么,有没有更好的方法达到同样目的。

  会议时间应选择工作效率比较低的时段,并且不会打扰程序员顺序连续工作时间的时段为宜,例如早上刚开始上班,下午刚开始上班,快下班时。特别的,如果可以选择的话,在星期一早上或星期五下午开会。这是最没效率的两个时段。

  如果会议确实召开了。一定要达到目的。即使是假设性的,有条件的结论。例如,如果其他小组的工作依赖于Diego的工作成果,那么你可以问Diego:“两个星期能完成你的工作吧?”如果他同意了,那么以此假定作为基础和其他小组讨论工作,例如进度安排等。

  作为主管,避免在会后让与会者递交一份长长的发言报告。这是双重浪费时间。如果你觉得他们的发言值得记,那么你自己记下来。再次强调,写无用的报告浪费开发人员时间。如果你确实要报告,最好单独进行,并且尽量短。

 

 

进度

  微软曾有过惨痛的教训,以进度作为项目完成的指导。任何进度落后都是不允许的,bug的不断增加不算严重问题,但只要工作没在排定的时间内完成,就是罪孽深重的。进度取代了项目目标和软件质量,变成了首要任务,每一个人都在疯狂的赶进度。

  以Mac Excel项目为例,每周的进度检讨加上报告,是微软用来控制进度的主要手段。除了这些,开发人员害得每周和测试文件人员共同检讨原因和落后状况。可想而知,只要进度落后,文件小组和测试人员只好暂时没事做,所有目光和谈话,都集中在你的程序进度落后上了。

  每周经理们会用更新的项目进度报告来更新项目总进度表,然后分发给组员。于是你一眼就会看到本周落后了多少,整个项目因此落后了多少。心痛之余,你翻到后页看看还有多少未完成的工作,上周是几百项,现在还是几百项,拼命做事,结果似乎毫无进展。就像一个笑话:如果你每次咬一小口,多久才能啃完一只大象?这张进度表就是一只大象,我们一辈子也无法吃完。

  实在是太过分强调进度了。以至于无论我们做了多少了不起的事情,都没有半点成就感。我们被落后的威胁淹没了,再怎么努力,也看不到成功的彼岸。这不是工作本身的问题,实在是那种绝望无力的感觉所致。

  更荒唐的是,进度表是基于如下原则设定的:

  1 为期两年的项目所有该做的事情都在进度表中,没有任何遗漏。

  2 每人每周实际工作时间40小时。

  3 对于每件工作的时间估计完全准确。

  4 所有程序第一次出来就是完美状态,没有bug,不需修改。

  这真是天方夜谈。

  教训:不要利用进程表来驱使项目前进,这实在太伤害小组士气了。

 

 

  在这里,作者提出了他自己的观点:不应该deadline快到了才开始紧张,平时就应该保持适当的紧张状态。多想想如何聪明的工作,不要把时间浪费在没有价值的工作上,不要浪费别人的时间,用积极的态度推动项目。总之,不应该在dealine快到来时,才动脑筋去想解决办法。平时就应该养成良好的工作习惯。

  如果你觉得时间紧迫,那么你开会总结一定不会说:“这个问题,我们留待以后再讨论……”你和组员一定无法容忍事情的拖拉,要不删除这项工作,要不立刻把它完成。

  进度的急迫多数是由于不正确的考虑,不正确的工作方式所导致。如果你定的日程表让组员产生了落后恐惧症,为了赶上期限而牺牲了产品质量,那么该检讨的是这个进度表而不是组员。如果你定出的日程表是个无法完成的目标,那只不过是打击团队士气。一旦组员发觉已深陷绝境,那你就永远无法让他们表现出最佳状态。他们就会另某高就,找个是人做的工作。

 

 

项目控制

  在完成对进度的讨论之后,作者提出了他对项目控制的见解:

  1 进度是基于某些因素上软件的大致完成日期。不要迷信它。不要草率定出不可能的期限,导致组员为了赶进度而不顾一切。

  2 把长期的大项目,分成几个完整而独立的小项目,各小项目必须有一个主题。这样既能营造适当的紧迫气氛,也让大家有完成目标的成就感。

  3 制定测试和质量监控规范,这些规范可能涉及产品的速度,健壮性,安全性等,你必须考虑并定出标准。通过质量检测规范的小项目,才算真正完成。警惕,不要把小项目写成hello world之类毫无意义的测试程序。该有的功能绝对要有,该达到的要求绝对要达到。

  4 产品的质量远比期限要重要。发现bug立刻清除。你不会知道一个bug到底有多严重,存在bug的软件产品,会让项目的完成比例被严重高估。更坏的情况下,由于bug的存在,你会不知道项目究竟什么时候能完成。

 

 

加班

  如果进度落后,那表示有个地方出错了。在没有找到问题并解决之前,不要粗暴的要求组员加班。这种加班是没有用的。

  如果你以进度落后为由,强迫组员每天工作12小时。那么他们很可能把私人活动也安排到工作时间里,并且在可能轻松的时刻尽可能偷懒。因为他知道每天必定工作12小时,不妨把私人活动如看新闻等也在上班时完成。加班,通常是浪费时间的面具。

  事实上,拼命工作并不是成功的关键,成功的关键是有一个明确的目标,具体而切合实际的计划,以及每天不断的向这个目标迈进。

 

  (微软不强制员工的上班时间,所以作者如此讨论。但事实上,在中国,加班一样是最没有效率的控制项目的方式。即使你强迫员工每天12小时坐在电脑前,他也很有可能面对屏幕发楞。疲倦的头脑是不可能产生任何创造性活动的。)

  加班的目的只是为了赶上进度而已。为了改善我们的工作,还有许多手段可以达到这个目的:

  1 明确工作目标:程序员是不是被太多的杂务打乱了开发工作?例如不必要的email,不必要的电话、讨论、会议。作为主管,你有责任把这些障碍找到并一一清除,还程序员一个专心开发的环境。

  2 合理安排工作:例如,看email应该在早上,中午,快下班时看,不要在开发过程中让它打乱了你的思路。早上是最有效率的时候,让头脑完成有创意的工作,而其他时间用来编码等等。

  再一次强调,你必须牢记自己的目标:按进度完成项目并让组员成长。只要你开动脑筋,你一定能想到更好的代替加班的方法来达到目的。加班并不是完成这个目标的唯一手段,事实上它是最差的,能不能赶上进度且不说,肯定妨碍了组员的成长。它并不是你的救命稻草,如果你依靠加班来完成你的管理工作,或者你该考虑走人了。 

 

 

项目检讨

  对项目进行检讨总结的意义不言而喻。但要避免大而无当的总结。检讨应该能做到:

  1 指出项目的问题所在

  2 根据问题,考虑防范措施和实际的解决办法(虽然有可能只是建议)

  3 总结经验心得。将来如何利用。

  以下是一个例子,给出了两个项目检讨的对比:

  第一个:

  问题:某软件包的Beta版使用者觉得他们的测试报告好像没人注意。因为bug在每一版都出现,这主要是因为我们没有建立一套系统的方法去追踪外部的Beta测试报告。所以我们将来应更小心的追踪外部的Beta测试报告,并加强后续处理。

  第二个:

  由于对β测试报告的疏忽。不仅影响了项目,也影响了关联的其他项目。经理已经同意重新考虑三个追踪Bug的系统,我们将在三者中择一使用,以便追踪项目的测试报告,我们还要把bug和清除bug的行动记录下来。

  这个报告是很有效的。他提出了清楚的解决方案,详细的执行步骤,由谁负责,什么时候该完成,应用在哪几个项目。还建议了bug的查找方式。

  值得一提的是,不要等项目结束了才想什么是值得一写的。应该养成平时经常记录的好习惯,积累是随时的。

 

 

管理艺术

 

 

评估方式

  年终评估是最没用的评估。对员工的评估应该随时的进行。员工有什么不足应该立即指出,并为他尽量想个改善的方法,让他能立刻成长。不要单纯在年终评估记录员工的不足。

 

 

沟通技巧

  有些员工看起来很依赖主管解决问题,其实不过是他们的沟通方式有问题。碰到这种员工,你可以要求他们:

  1 清晰表达他们待解决问题是什么

  2 有什么解决方法,包括他赞同的和否决的

  3 陈述赞同和否决的理由。

  这样下来,通过和员工多次沟通,或者你会发现你的员工并不笨,他们只是不懂得沟通技巧而已。

  一句话,你和员工的一起成长是你的目标之一,所以不要采用生硬粗暴的方式去对待员工。动脑筋想些更好的法子。

 

 

人员培养

 

 

态度正确

  你必须让你的组员态度正确。

  1 发现bug立刻清除。越晚抓bug越难抓,并且能让程序员总结经验。还有,如果bug太多,那么程序员的功力高下立现。

  2 除非我已经完全测试过了,没有bug了,否则程序不算完工。

  3 以用户的观点来看待软件,尽善尽美。

  4 改正“这不可能”的态度。最好的方法是明确目标,然后找出正确的解决方案。

  5 鼓励提问。他可能不知道答案,但他有权提出问题。

  6 未完成的功能,绝对不要给用户。

  7 善于利用别人的成果。写好的测试过的代码,只要符合自己要求,就应该用。重复就是浪费。

  8 注意提高自己代码的复用性。

 

 

提高技术

  如果某个程序员在你的项目已经毫无进步,并且他渴望提高,那么让他到其他项目去吧,让其他接他的班。短期来看你损失了一个得力干将,长期来看,你为公司培养了两个人才。

 

  新兵训练:先让新人学会一些通用性技术,这样他到其他项目组也能用。然后才让他们学会项目专有的技能。训练他们多思考。在设计阶段,他们要想得很缜密,确定这样的设计没有纰漏,写程序时要动脑筋,要懂得怎么思考怎么测试这个程序才确保没有bug;遇到bug时,不要乱猜,要思考如何有系统的搜寻bug藏身之处,要学会判断是否有相关bug没有现身;不但要学习如何对付bug,还要思考如何在一开始写程序时就避免它的发生。同时要了解这一行业新知识不断而至,他必须不断学习提高,才能跟上产业的步伐。

 

 

工作价值

  让组员明白,单纯的工作时间是不能衡量员工价值的,程序员对项目的贡献在于:

  1 指出我们在哪里浪费了人力?

  2 有什么地方可以引用别组的程序代码?

  3 有什么自动测试程序的好主意?

  4 想到一个符合用户使用习惯的界面?

  等等诸如此类。简而言之,你必须开动脑筋定下规则,鼓励员工学习新的技术,养成好的工作习惯,做事更有效率,从而加快项目的进程。而不是用单纯工作时间来判断员工价值。

hwasan实例分析踩内存之七:CamX进程chifeature2base怪异的Cause: use-after-free 摘要:本文分析了高通camx进程中的指针异常crash问题,通过构建hwasan版本确认存在内存踩踏现象。日志显示为"use-after-free"类型错误,具体为线程T175672在已释放内存区域执行写入操作。堆栈分析表明ChiFeature2Base::PipelineDestroyCb()函数访问了已被ChiFeature2Base::DestroyFeatureData()释放的pPipelineData对象。该问题源于多线程环境下内存管理不同步,导致释放后仍被引用。解决方案通过 阅读详情

相关推荐

STC8G1K08A 实战应用:从配置到功能实现

本文详细介绍了STC8G1K08A单片机的实战应用,从开发环境搭建、GPIO配置、ADC模块使用到定时器中断处理和PWM输出等核心功能。重点讲解了外设模块的协同工作配置技巧,并分享了实际项目开发中的经验教训,帮助开发者快速掌握STC8G1K08A的高效应用。

n4o5p6q7r的博客 391

微软研发致胜策略读书笔记(转)

创建人:X公司程序员 yunshichen   这篇是我读《微软研发致胜策略》后整理的笔记。   身为一个软件开发部门的主管,你的职责是什么?单单完成项目是不足够的,如果你的目标是这样,那么你会做错很多事。我认为准确的表述应该是: 带领程序员按进度完成项目,并且让他们能通过项目中在技术,工资,团队归属感等方面成长。 本文作者用轻松愉快的笔调讨论了作为一个主管,应该怎样管理项目,并且列出了他

678

KUKA .RSI 软件包

KUKA RSI软件包通过XML文件使得机器人与外部设备(传感器通讯)通讯成为了可能,但仍存在诸多限制,该模块最多允许9台设备进行连接,有限的IO口,匮乏的功能,并且需要投入大量精力琢磨相关说明文档。为此开发人员针对KUKA实时通讯,做了一些开源的接口使得上位机与机械臂的通讯更为简单。

huhu7777的博客 3293

读书笔记-《微软研发:致胜策略》

“卓越的领导者从不同的角度看世界。若公司被大火烧个精光,他非但不为丢饭碗而惊慌,反而利用火焰来烧烤一顿大餐。当每个人都摇头离去,卓越的领导者仍有充分的信心保持乐观,对每件事都从正面角度来思考。就因为凡事都看到光明面,卓越的领导者并不把失败当失败,反将其当作学习克服障碍的经验。“在我看来,一个思维正常的作者,一个MICROSOFT资深的程序设计师。说其思维正常,因其把每个人都知道的简单道理,执行

消息队列的专栏 910

【CUT&TAG分析-加了spike in的样品】

使用 Bowtie2 或 Subread (subjunc) 来构建大肠杆菌的索引。bowtie2比对时设置参数–local, 局部比对。

weixin_57975238的博客 1400

Teams会议翻译对比测试:Copilot同传 vs 人工翻译,结果出乎意料

本文通过对比测试Microsoft 365 Copilot的实时翻译与专业人工翻译在Teams会议中的表现,揭示了AI同传技术在准确率、响应速度和多语言切换方面的优势与局限。实验数据显示,Copilot在常规商务场景下接近人工翻译水平,且成本效益显著,但在专业术语和文化特定表达上仍需人工辅助。

weixin_29054195的博客 224

读书笔记:《微软研发致胜策略》

 今天花了一下午看了这本书,作者是史蒂夫.马魁尔,我无需对作者作任何评价,我看到的是这本书发在优快云资源区的一个PDF中译本,而这个PDF里居然没有写作者,而我看到一半以后就觉得以这种思维写出的这本书不像是国内的一个开发经理写的书(没有贬低的意思,本来我一位是亚洲研究员的某位中国主管写的呢,这里不讨论中外思维的问题),后来上网查了一下作者,果然,是一位外国项目经理。谈谈读后的收获吧。这本

825

头歌操作系统2.3系统调用命令ls执行的系统调用

设置版本0内核为分析对象。然后一直c直到虚拟机出现。然后一直c就是答案了。

m0_74128952的博客 1万+

微软研发致胜策略 07:这完全取决于态度

通过积极学习,提高团队成员的技术水平是很好的。团队领导者还需要做的一件事情是:纠正错误态度,促进有益态度。

朱工的专栏 2374

基于SVD矩阵分解的用户购物篮预测分析实战

基于SVD矩阵分解的用户购物篮预测分析实战

360

Linux故障排查和性能优化面试题及参考答案

在 Linux 系统中,负载(Load Average)是衡量系统繁忙程度的一个重要指标,它表示系统在特定时间间隔内运行队列中的平均进程数。负载值反映了系统当前的工作压力,主要包括 CPU 等待运行的进程数量和处于不可中断睡眠状态(通常是等待 I/O 操作完成)的进程数量。负载平均值通常有三个数值,分别代表过去 1 分钟、5 分钟和 15 分钟内的系统平均负载。例如,在使用uptime命令或查看文件时,会看到类似这样的输出,这三个数值依次表示过去 1 分钟、5 分钟和 15 分钟的负载平均值。

大模型大数据攻城狮的专栏 1082

读书笔记之《ChatGPT原理与架构》

大模型领域技术专家和布道者,作为两项科技部国家重点研发子课题的负责人,与成都数之联等多家企业合作推动人工智能在司法领域的落地,带领团队开发了JusticeGPT司法大模型,不同于其他的以提升司法领域知识问答能力为核心的司法大模型,该大模型致力于提升司法文献检索增强生成以及司法文档的多跳信息聚合能力,并通过特定的多任务表征与控制指令生成框架重构司法信息化系统的业务中台,实现司法业务编排以及工作流自动化。介绍ChatGPT及同类大模型的发展历程,包括技术演化路径(如从统计模型到神经语言模型、预训练模型等)。

具身机器人和通用AI 747

Cesium中级开发教程之五十二:气泡弹窗

支持多种交互方式触发气泡弹窗显示,如鼠标悬停、点击地图上的特定元素(像实体、标注、模型等)。例如,当用户鼠标悬停在一个表示城市的点上时,弹出显示该城市名称、人口等信息的气泡。:依据特定的数据条件或业务逻辑触发。比如,当某个区域的气象数据达到一定阈值时,自动弹出显示相关气象预警信息的气泡。

664

使用Ant配置Weblogic环境

  使用Ant配置Weblogic环境,使开发者可以尽快投入工作。1。建立domain 和 server。使用 wlserver  task2。配置连接池和Datasource3。deploy 使用 wldeploy原文:http://dev2dev.bea.com.cn/bbs/jishudata/ArticleShow.jsp?Id=7参考:http://e-docs.be

WalkingWithJava 1813

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Ant 常用Task

Installation: 1. Set the ANT_HOME environment variable to point to this location. 2. Set the JAVA_HOME environment variable to point to the JDK location. 3. Add ANT_HOME/bin to your

WalkingWithJava 1790

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

配置PointBase

主要文件:只有三个pbclient.jar,pbembedded.jar 和 pbtools.jar    设置pointBase环境变量:   setPBEnv.bat   set PB_HOME=D:/Devs/pointbaseset OLDCP=%CLASSPATH%set CLASSPATH=%PB_HOME%/li

WalkingWithJava 1764

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Duke's Bookstore(Servlet 版本)笔记

1 新增的event模型:通过设定Listener,可以在Servlet的初始化之前和之后做某些事情.这是事件模型在Servlet中的应用.  在访问/bookstore1/enter之后, ContextListener 构造了一个DB,并且把它放到ServletContext中去,这样BookstoreServlet可以从Context中得到这个初始化的DB   核心代码如下:

WalkingWithJava 1671

读写文本的类

AbstractTextOperator.java/* * Package : diegoyun.work * File : AbstractTextOperator.java * Create by : diegoyun * Create on : 2005-1-2 0:44:31 * --------------------------- */package diegoyun.work;

WalkingWithJava 1538

kodojdo指南第九章

第九章  事务  事务用来保证事务完整性.它把操作集中到一个工作组,这个组里的操作要么全部成功,要么全部失败.事务有几个特性  1)原子性:原子性指事务的要么全部成功-要么全部失败的属性.要么事务中的每个更新数据的操作都成功完成,要么全部失败.而不管数据在数据库中的原始状态是怎样.事务不可能部分地成功.  2)一致性.每个事务使数据库的数据从一种连贯状态到另一种连贯状态.  3)隔离性

WalkingWithJava 1509

kodojdo指南第十章

第十章 扩展  扩展是给定的能持久类的所有持久化实例的逻辑视图.扩展可以从PersistenceManager中得到,通常要来指定查询的候选对象.  getCandidateClass 方法返回扩展实例的能持久类.hasSubclasses 指出是否包括子类实例    你可以使用iterator 方法得到一个扩展的含有所有对象的枚举器.使用它通常会消耗数据库资源,所以当你使用完毕之后,

WalkingWithJava 1382

kodojdo指南十一章

第十一章  查询  你可以从PersistenceManager中得到查询实例.查询可以筛选符合某些标准的一批候选对象.这个筛选过程可能在数据库中进行,或者在内存中执行.JDO没有明文规定查询机制.许多JDO实现品会根据情况混合使用内存执行方式和数据库执行方式.  现在开始研究查询接口.你会发现自己对将讨论的东西迷惑不解.这是可预料的.我们会通过一些具体的例子来说明.11.1 必需的查询元

WalkingWithJava 1348

kodojdo指南第十二章

第十二章  结论  本教程对JDO的规范作了个大略的介绍.Kodo JDO 指南会通过step-by-step的建立JDO应用程序来继续你的JDO学习.最后,Kodo JDO 参考指南包含所有SolarMetric Kodo JDO实现细节和开发工具.

WalkingWithJava 1284

训练数据示例

针对“规格书生成测试用例脚本”的任务,在 LLaMA-Factory 中使用即可。关键是把“规格书内容”放进input字段,把“期望的脚本输出”放进output字段。

liuxs2009的专栏 59
上一篇: 解决 Cannot find ActionMappings or ActionFormBeans collection
下一篇: Factory模式
云哥
博客等级 码龄22年 2粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值