赞
踩
技术管理学习笔记,总结,复盘,思考,优化,不断前行
程序员不单单只有技术的深度,更应该有广度的提升,比如产品思维,项目管理,运营,时间管理,沟通,领导力,.压力管理,冲突管理,目标管理,经济学,博弈论,商业模式,财报入门等等.
先思考两点:
1). 要不要转回去专心做技术?
2). 到底适合不适合做技术Leader?
看看 程序员,技术主管(Leader),架构师 有什么区别:
技术管理最重要的两个任务:
在我眼中,我认为技术管理并不是真正的纯管理人员,只是一个懂技术的服务人员与领路人,有时候可以说是你成就了大家,倒不如说大家成就了你,也可以说是大家双赢.
技术管理者需要为团队成员服务,有人需要资源就给协调资源,有人不明白目标就帮助他明确目标并制定其个人目标,
不同的模块间接口无法确认就组织相关人员讨论,xxx任务完成的好就给予明确肯定,
xxx所从事的技术方向迷茫就协助找到发展方向,
有人突然情绪低落效率低下及时发现背后的原因并在必要时提供支持… …(感觉是不是像保姆)
影响力的六大原则也是应该知晓的:互惠原则,承诺一致,社会认同,喜好,权威,稀缺
激励别人无非就两个因素(基础因素与动力因素):
技术管理者还需要几点,以身作则,勇于承担责任,共情能力,时刻牢记公司,团队,项目目标,情绪控制,不传递负能量,不耻于下问 ,复盘 等等.(慢慢改变吧!!!)
团队leader 负责工作罗列:
团队Leader一定要明确两点:
那些工作今早分出去给具体的开发人员呢?比如 Android项目的打包,代码混淆,设计 Lib 框架,技术调研,Monkey日志分析;
保持内心强大
技术管理者的核心能力是什么?
CodeReview(代码评审)
每周技术分享 每周一次,每次1个小时,单周(技术Leader),双周团队成员轮流。Leader 主要偏内核修炼(比如设计模式,架构设计,等等),团队成员偏实战中的经验和心得体会,具体到代码和项目层面.(比如优化,重构用到的东西等等);题材可以不限制,当然也可以按照大家掌握的技术点打分,进行有效的技术短板提升;
每天进步一点或者看一会书,1个月,1年,坚持下来,慢慢就提升了,时间复利就是我们最好的朋友
程序员的主流成长发展路线,是明显的“T”形路线,纵深是技术的深度,横向上,是广度方面的,当然也包括技术专业之外的领域。
建议看看《认知天性》中说的后刻意练习时代:
1.学习的东西需要进行检索
2.穿插练习,有助长期记忆.
3.反思是检索的一种
结论:平时可以尝试技术分享,讲解给别人听,重构代码,严格要求自己,写DEMO,或者自己写一个小项目等等来检索或者练习 自己学习的设计模式,性能优化,自定义view,动画等等知识点,有问题的再重点去学习,掌握. 后续也可以进行一些总结,反思,优化.
OKR目标管理学习:
平时很忙如何学习,建议做好年计划(列出目标与关键结果),分解为月计划,再细致分解到周计划,然后每周或者每个月检查成果.
** 产品思维提升**
人人都是产品经理
运营了解
习惯养成指南:
提升的途径有几种方式:
阅读优秀源码,不只是单单阅读,要理解别人为何这么做,要是你做会如何做,最后可以尝试自己写一个类似的检索与练习下.
用指标严格要求自己: 代码风格,内存,CPU,APP大小等等优化,交付时间,BUG率,冒烟测试通过率等等
讲给别人听,就是可以做一些分享,或者平时解决问题,能不能说明白原理,眼睛过的,不代表你真的懂.
业余时间:
高质量文章编写
首先,如果你写文章的目的是为了给自己看,那怎么写都无所谓,如果,你写的文章是给别人看的,那么感觉应该是这样的:
1.针对简单概念,你要介绍的全面,理论配合demo,能够让一个不懂的人看了之后懂了
2.针对有点难度的概念,你要一步一步地详细介绍,让刚入门的小伙伴们能够仿照你的例子做出来
3.针对底层的东西,比如源码,你要能把大致流程说清楚,并且能够结合源码分析出上层的东西。
这是写一篇好的文章所应该达到的,总之,我们要明白,写出来的文章主要是给别人看的,写的时候要考虑这么一个问题:如何写才能让别人更好地理解,这样,好文章自然就出来了。
技术人员的会议如何高效开
高效会议
怎么提高英语水平呢?
避免能力陷阱
做的越多就越擅长,越擅长就越愿意去做。这就容易被你当前的状态所局限。
这样的一个循环能让我们在这方面获得更多的经验,但却容易陷入能力陷阱,在其他方面无法突破。
学会延时满足
第一个原因:做事从不分你我。做完自己的工作后,对于大部分同事的问题,只要能帮助解决,尽量都去做。所以成长得非常快。 第二个原因是,做事从不设边界。负责技术,但遇到产品上的问题,也可以积极参与方案的讨论。很多人说,这个不是我该做的事情,但做这些事情让我得到了各种锻炼,这对个人之后转型做什么有很大帮助。
哪些事情尽量少做(鸡汤)
个人影响力提升
建立个人的影响力并不是为了凸显你自己有多重要,或者让别人更加认可你,而是通过影响力把事情做成。
在一个技术团队里,影响力很多时候与你的贡献紧密相关。
如果你的存在能够让别人的工作更好地推进,让别人更容易取得成就,久而久之,伙伴们就会很自然地认可你,信服你,有问题的时候,也会想到要咨询你的意见。
帮助别人成功,帮助别人成就梦想,你就会具备积极正向的影响力。
优秀的技术管理者
至少需要涵盖3个重点。
作为一位管理者,你应该做哪些思考呢?
当然了,因为不同的成员性格、背景各不相同,所以帮助其成长的侧重点也不同,但是很多时候,如果能够做到下面四点,你就有很大机率成为一个优秀的管理者。
一个技术管理者的成功并不在于自己代码多好、能力多强,他的成功一定建立在团队成功的基础之上。只有团队成员不断成长,这个团队才可以做成更大的事情,而你才可以在团队的基础上,
站得更高、看得更远。
补充:
搞清楚关系,你和下属肯定不是家人,你见过谁家因为某种原因,将家人踢(优化或者开除)出去的??
当然工作上也不是朋友,需要公私分明,只论结果与事实的对错.
管理者和下属,只有一种关系,叫做合作伙伴。
你们因为有共同的目标,所以交换彼此的价值。
可以把感情当作纽带,但本质上,你们的关系,是合作伙伴,是并肩作战的战友。
如何分配任务,跟踪进度,沟通,等等,是一个刚进入 技术管理者 应该必备的技能.
项目有三大目标:时间、成本和质量
项目几个要点:以目标为导向,以计划为基础,以控制为手段
后来在工作中我每天都尝试着问自己这些问题。
时间:项目计划在什么时候完成?有哪些工作,分别在什么时候完成?是否发生了偏差?如果有偏差,怎么处理?
质量:软件功能完整吗?软件操作方便吗?运行结果正确吗?运行效率够快吗?软件代码符合规范吗?客户用起来满意吗?
按照公司,团队 实际情况,合理应用项目管理手段(比如敏捷,瀑布等等).
在开发前,建议项目的团队成员需要知道任务的优先级,尤其是多任务并行的时候.
也可以善用清单 对于项目各个环节进行把控检查.
避免被动管理
这里需要避免进入被动管理(消极管理),任务分配不代表就结束了;
被动管理 就是 一开始不做计划,也没有风险评估和备案,开发过程中也没有定期跟踪任务状态,更没有根据成员的工作状态调整计划,验收的时候出现延期或者各种问题 又或者 导致被动的赶进度加班;被动管理对个人,团队,公司,被害而无一利;
所以 需要 做好计划,风险评估,备案,定期跟踪任务状态,调整计划;
建议拿到或者讨论 项目或者需求,第一件需要做的事情就是技术可行性评估.
项目或者需求,我感觉执行应该符合 Smart原则.
各个项目需要分清 轻重缓急.
先不要急着给出承诺以及开发计划,先了解几个方面:
根据我多年的了解,项目失控往往有几个原因:
1.需求不到位
问题主要表现几个方面:
(1) 需求/原型/设计图 评审太随意,导致后续改来改去
(2) 产品需求与技术人员脱节
2.没有指定完整的项目目标
问题主要集中在需求方面:
(1)需求过多,系统过于庞大、复杂;
(2)需求不稳定,用户无法决定他们真正想要解决的问题;
(3)需求模棱两可;
(4)需求不完整。
3.拙劣的计划和评估
对项目的难度和工作量评估不准确,导致项目的进度永远达不到进度表的要求,并且被无限期地拖延下去。
4.采用新技术
新技术的采用,有时的确可以极大地提高生产效率,并解决一些棘手的问题,帮助项目最终成功。但同样可能会引出新问题,给项目的失败埋下祸根:
(1)项目组成员对新技术掌握有限,并且迫于项目进度的压力,很少有机会去深入地研究和实践这些技术;
(2)新技术不一定成熟。
(3)成本问题。
5.缺乏或根本不具备项目管理方法
项目经理不懂管理,没有“章法”。这种情况下项目经理有两种做法,一是想到什么做什么,胡乱出招;二是等事情做,有问题才觉得工作很充实。这两种做法的最终结果都是一样的:项目问题不停冒头,成为了“打地鼠式管理”方式。
6.团队中缺少资深人员
资深人员通过其丰富的经验(特别是失败的经验),可以给项目组提供成熟的解决方案,帮助项目组识别风险、解决突发事件等,如果缺少资深人员,项目陷入失控的概率就会大大增加。
7.硬件/软件供应商的低劣表现
将项目中的部分工作或产品外包,是很常见的事情。如果供应商不给力,有时只有干着急的份。特别是国内层层转包的情况,导致真正干活的人费用非常低廉,根本无法保证进度和质量。
8.质量无法满足要求
质量达不到要求,导致项目失控也是很常见的。功能做了一遍又一遍,每次接近一点,却始终不能达到。如果性能或可靠性存在问题,还有可能给客户造成重大损失,带来更加严重的后果。
项目受控
技术预研与调研
技术调研:
针对粗粒度需求实现方案进行的研究,可能所有需求不太清楚,需要通过调研项目来完成技术了解,技术选型,技术可行性分析,技术方案设计等工作。
技术预研:
针对细粒度需求的实现方案进行预先尝试,技术结合产品时的实际需求,对实现存在的不确定性因素,细节等进行预先研究,尝试,减小产品过程化中的技术实现风险。
任务分解需要搞清楚几件事情:
顾名思义,就是将一个项目分解成N个小任务,参考敏捷开发的需求池概念。
开发任务分解(将一个或者多个需求分解成几个开发任务),定人,定时间(开发周期)。
技术选型(适配分辨率,Rxjava,网络请求库等等),架构,技术难点,风险 需要暴露出来,包括选用新技术也需要考虑几个方面(学习,招聘,时间,机会成本,风险也需要考虑).
比如,开发一款影视工具,有影视搜索,影视详情等等. 影视详情可以分解出很多小任务或者实际的开发任务(API接口 2天,界面 3天,逻辑代码1天,设计资源 等等)
1.对于需要使用的新技术,要估算学习和调研的时间。(新技术引入的成本)
2.我们需要编写什么样的接口?
3.我们需要创建什么样的架构?
4.我们需要更新哪些表?
5.我们需要更新或是编写哪些组件?
6.根据统计,每个程序员每天的有效工作时间是5个小时左右,其他时间都被沟通,喝水,休息,上洗手间等占据,所以如果某个任务估算超过5个小时,那就代表了这个任务完成需要超过一天的时间。
7.对于开发任务,估算尽可能的细,一般来说,每个任务的估算不应该超过5个小时,如果超过5个小时,就应该再把这个任务细分。只有尽可能细的估算任务,总的时间是大概精确地,因为估算时间是一个正态分布,有的任务估算的时间偏大了,有的时间任务估算的时间偏小了,估算越细,总体下来估算还是准确了。
注意几点:
也可以尝试改善分配工作的方式:所有任务列出来,然后进行分配(每个人从任务池挑选适合自己的,自己想做的)
不是安排了开发任务就放任不管了,需要进行进度跟踪。
可以 每天的站会 也 可以单独的沟通,主要是为了 提前发现问题,对 进度,风险把控。
站会需要关注的3个问题:
站会注意事项:
站会只是提了一个方式,根据实际情况而定,如果大家都加班到了10点,你还一大早9点开站会或者开会同步问题,我想大家心里一定是TMD的,换位思考,共情下.
将所有的需求列入需求池,按照每周的开发计划来,不急就排到下周或者下下周,排期.
如果真的很急,那就找上上级以及相关人员商讨,任务的优先级,看看那些需要扔出来的.
比如 有需求 A1, A2, B1, B2 正常弄,中间插入 C1,说的很急,必须这周完成,那么找上上级以及相关人员商讨,如果B2优先级不高,那就排到下周去.
多任务并行需要考虑优先级,人力资源等等问题.
作为技术管理,一定要确保团队目标与公司目标一致、个人目标与团队目标一致,只有这样,才能产生协力,有效实现预期。
让每个人都有参与感(共同制定团队目标和个人目标. 让员工参与到上层目标分解到团队目标,团队目标分解到个人目标的过程)
三种目标(公司目标,团队目标,个人目标)[必须符合Smart原则]
团队,公司,个人目标一致,才能产生协力,有效实现预期.
要将团队成员的个人目标与团队相结合,就必须理解下属的痛苦,快乐,为何在这里工作等,
针对每个具体的个人来考虑团队目标对于他个人的意义.
Smart原则:
OKR(“O”就是目标,—Objectives,“kr”即关键结果——Key Results)
比如定了目标,提升团队的10%效率,关键结果 有 公共库,统一开发环境等等.
还有 从你做了 Leader 以后,需要对目标负责,哪怕是下面的人没有将任务做好,也是你负全责。
四象限法则:
从一个程序员走向技术管理岗位,压力真的很大,原来只是管好自己就OK拉,现在不仅要管好自己,还要管理下属,还有和其它部门沟通,还要面对领导以及更高级的管理,更悲惨的是,你还要对整个团队的结果以及成长,状态 负责任到底;
新任 技术管理 会担心 自己不称职,担忧别人对自己的看法,评价,这些心理和情绪活动,会带来连绵不断的压力;
情绪控制很重要,如果情绪失控,受到压力大喊大叫,推卸责任,逃避,沮丧,团队的成员也会慢慢变成你的样子,可怕,可怕;所以,要尽量避免用消极的行为应对压力,要努力积极的面对压力,用于承担责任,一起以解决问题为目标。
学会暂停:当领导批评你,同事指责你,下属埋怨你,产品经理怼你,… …先暂停10秒再来反应,避免被打或者逃的本能控制;可以建立仪式化帮助控制自己的情绪(比如默念三声“解决问题”或深呼吸三次或闭眼10秒钟)
问问自己下列问题:
宣泄情况应当以不伤害他人为原则
常见的宣泄方式:倾诉(家人,朋友,同事,心里咨询师,陌生人 倾诉,书面倾诉—压力日记),声音(比如大笑等),哭,运动(健身,散步,跑步,爬山,羽毛球等),睡觉,冥想
竞争
:高度坚持不合作(强迫政策),牺牲一部分的利益,换取自己的利益或团队整体的利益,特征是正面冲突,直接发生争吵,争论 或 其它对抗方式,为了取胜不惜任何代价;
回避
:不坚持与不合作,双方意识到冲突存在,试图忽略和放弃冲突,不采取任何措施,也不维护自身利益;
妥协
:中等程度的合作;冲突双方都让出一部分 要求 和 利益;特征 就是 没有明显的 输家 和 赢家;
沟通 是 无论技术人员,还是技术管理者,都应该必备的被动技能
沟通一般有两个目的:1. 获取 或 同步信息
;2.达成共识,得到承诺
;
有效的反馈机制:
自我评估
:项目评估,关键目标分析.下属的反馈
:一对一沟通,周期性会议同级的反馈
:一对一谈话,邮件等.(同级可以是其它部门负责人,比如测试,产品等)上级的反馈
: 主动,持续,周期性的让上级给你反馈.结论
:向他人收集反馈,事先准备话题列表,提高沟通效率. 收集反馈信息后,进一笔分析,分出正面,负面. 只有将反馈与经历结合,炼化成经验和教训,才能指导后续的行动,不断进步.
1.沟通应该形成闭环
2.沟通最重要的环节,倾听
,第一,体现对对方的尊重;第二,通过聆听别人把话讲完、讲透,更容易理解别人所要表达的真正含义。有效聆听才是沟通中最为重要的。
3.还有最后一个,需要注意,情绪的控制
,一切的沟通是围绕解决问题的,不是争吵,更不是抵触情绪,会给别人留下不好合作的印象.
首先是倾听
,澄清
倾听后的理解
,提出自己的观点
,最后确认
对方是否了解我们的观点.
不要进行‘信息过滤’,对上要如实报告,对下要如实传达
向上管理以及沟通搞清楚几个问题:
表现
符合上司的期待吗?信任
你吗?管理风格
吗?优点
吗?需求
与期待
吗?职业生涯规划
吗?上司的文化背景
吗?多为上司共事
吗?需要做到的几件事情:
喜欢
你的上级,不要抱怨
或者恨
他,至少要理解
他。积极配合
老板完成工作。处境
,为他排除万难
,助他一臂之力
,让你的老板工作更有成效。工作习惯
,向老板的习惯靠拢
。强项
和弱点
,代替老板完成他不擅长的,无法照顾到的或者不愿意做的工作。时间和资源
,不要用琐事耗尽老板的时间和经历。预期和目标
。上级每年,每季度都会对你又期望。主动沟通,及时反馈,避免造成上级对你的期望和你自己的期望有偏差。
主动,持续,周期性的让上级给你反馈,定期和上级沟通,了解他对你的评价,聆听他的建议(一方面汇报自己的工作,让他知道你的状态,另一方面管理过程遇到的困惑抛出来,请他指点下).
其实,对待技术人员最要紧的两个字就是——尊重。
如果我们能给他们足够的尊重,他们就一定会配合我们的工作.(其实无论是技术人员,还是其它人,我们都应该尊重别人)
多和下属沟通交流,了解他的生活,工作,真正地关注,关心,倾听对方。(比如聊房子,车子,房贷,喜欢的球星,游戏等等)
可以定期进行一对一的沟通,回避与下属的沟通,就是放弃了彼此了解,建议信任的机会,团队会越来越消极… …
一对一沟通,首先对话前问自己(来自关键对话):
参考谈话过程:
1.开始时阐明目的,为沟通定调:比如,“今天想请你帮忙我,我这段时间管理上做的事情有什么效果”。“和你谈谈最近的工作结果,一起讨论下一步工作安排”。等等
2.分享事实经过和你的想法:比如,“月初引入每日站会… …担心给大家带来负担,因此想…” 。
3.征询对方的观点,鼓励对方做出尝试:比如,“我想知道你对这件事的看法”。“我希望听你坦诚地讲讲发生了什么事情”。征询对方观点,多用开放式问题。
PDCA循环:计划,行动,检查,纠正
复盘:回顾目标,评估结果,分析原因,总结规律
5W2H方法:Why为什么?What做什么?Who 谁做?when 什么时候做?where 哪里做?how 怎么做?how much 做多少?
Why为什么:为什么做这个需求?
What 做什么:需要做哪些事情?
Who 谁:需要哪些人参与?
When什么时候:事件范围和具体日期?事件表?
Where什么地点:在哪里做?
How怎样做:用什么方法完成?计划是怎样的?怎样做完成好?
How much:质量如何?做多少数量?做到什么程度?耗费成本?
横向思维,纵向思维
所有一切的价值,取决于你能给它人带来如何的价值.
自我品牌风格,写博客(高质量文章),开源社区,开源库,写书 等等.
品牌符号(统一的logo熊猫,网名 冰雪情缘).
品牌是干什么的?TV开源爱好者.
承担责任:更多金钱还是更多责任,长远看,正确选择应该是更多责任
引人注目:记录活动日志 提供演讲或培训,分享 发表意见 保证“曝光率”
自学:增加技能和知识,培训课程,相应的资质证书,学会分享
成为问题的解决者:解决别人无法解决或不愿意解决的问题
关于办公室政治:不与同事讨论公司与其它同事不好.
持续学习,复盘,优化,进步;
设计:蓝湖,产品:Axure
需求/任务 管理
代码静态检查
Commit规范
CodeReview规范
Nexus 搭建 Maven 私有仓库,项目 build.gradle 引入 仓库;知名maven服务器 JCenter(https://bintray.com/)
持续集成 ,持续交付,持续部署;Jenkins,Travis
主干分支开发模式(要求commit原子性,描述清晰等)
开发过程管理:版本归档,版本发布,打包提测,研发周报,进度追踪,仓库管理,版本管理,需求评审,开发环节
APK发布规范:全量发布,灰度发布
共享/编辑/文档/知识管理平台
腾讯文档,Confluence
开发/BUG跟踪工具,平台
禅道,JIRA,TAPD
技术提升方法论思维导图:https://pan.baidu.com/s/1sQA7A3fvzQ_xPoiPnRHzSA
技术管理思维导图:https://pan.baidu.com/s/16U8ZMIr6t_cbGZNRYPdnNw
美团技术团队推荐的一些书籍:https://tech.meituan.com/2020/04/23/read-book-2020-04-23.html
推荐使用微信读书
《人人都是产品经理2.0》,《从零开始做运营》,《技术领导力:程序员如何才能带团队》,《程序员进阶心法:快速突破成长瓶颈》,《程序员的三门课:技术精进,架构修炼,管理探秘》,《程序员的成长课》,《解忧程序员》,《卓有成效的管理者》,《从技术走向管理——李元芳履职记》,《沟通圣经:听说读写全方位沟通技巧》,《关键对话》,《非暴力沟通》,《向上管理》,《商业模式》,《一本书读懂财报》,《经济学》,《行为经济学》,《影响力》,《敏捷相关书籍》,**《能力陷阱》**等等
《技术领导力》,《程序员进阶心法》,《技术人员的管理之路》,《格鲁夫给经理人的第一课》,《领导梯队》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。