在ThoughtWorks工作12年的技术主管,所总结的12条技术人经验

原文: 12 years, 12 lessons working at ThoughtWorks 

作者: Patrick,ThoughtWorks的技术主管兼敏捷顾问 

编译: 孙薇 

本文作者在ThoughtWorks工作了12年之久, 回顾了往昔工作之后,他得出了12条经验心得,下面会具体说明。


1. 工具无法取代思考

在我多年的咨询生涯中,每当坐下来与管理者合作解决问题时,经常会遇到这样的情况:管理者认为某个工具能“解决”指定的问题。如果这个问题所涉及的领域很好理解、特例不多,同时每个人都能按照同样的方式来工作,管理者的这种想法是能够成功的。不幸的是,大多情况下事实并非如此。

我目睹了太多次这样的失败:管理者在公司里推行某款工具,而这个工具有特定的运作方式,结果不但没能解决问题,还妨碍了其他解决问题的努力。工具应当是有所帮助的:帮助人们防止已知的错误产生,帮助我们记忆重复性的任务,而不是取代思考本身。

2. 如果公司的管理者团队不懂其价值,那么敏捷“转换”就很难奏效

很多管理者都会犯这样的错误——只要求相关人员“采用敏捷”,但实际上公司里的其他人也是需要向敏捷转变的。在企业中进行这方面的协调会花费大量的时间,并要求对公司不同层级的人员进行同步转变有着丰富的技巧经验。

只在一部分人群中采用敏捷的公司将会面临实际的威胁,正如Martin Fowler所说:“要么改变你的公司,要么换家公司”。

3. 学习需要安全感

学习需要犯错,在技能获取模型中,尤其是新手进阶级的人群需要通过犯错来学习,但如果大家觉得自己会做错事,失去同事的信任,或者还可能祸及进程中的其他人,就不会冒险去犯错。

我是一个热爱教学和学习的人,因此我为人们留出了犯错的空间,让他们可以犯些必要的错误,从而学到经验。

4. 所有人都能成为领导

这个话题我曾经触及过,不过它值得再次重申。常见的心理模型陷阱在于:人们只有在觉得自己想做领导时,才会表现出领导的行止。无论头衔为何,事实证明人们是有潜力成为领导者的,只要他们肯对某项没有明确要求或期望的任务付出行动。

5. 架构师在编写代码时作出最好的决策

在我主持的Tech Lead课程中,我会建议所有技术主管将30%的时间用来编程。将时间花在编程上有助于构建信任、尊重与对当前系统的理解。无视当前的系统来做架构方面的决策,往往只能作出差劲的决策。

6. 需要有改变的勇气

极限编程其中一点就是勇气。在担当领导职责的时候,冒着犯错风险的时候,尝试某样新事物的时候都需要勇气。如果没有风险,通常也没什么回报。

7. 对构建信任而言,言行一致非常重要

有句老话说得好:“依其言而行事,勿观其行而仿之。”事实上无论你说什么,人们首先记住的是你怎么做的,保持言行一致就是确保你的行为与言辞一致,言行不一致会破坏信任。回答“不”或者“现在不行”要比承诺一些做不到的事情好太多。

8. 结对编程的成功与优秀的合作息息相关

尽管并非所有的结对编程环境都很健康,我确信在进展顺利时,团队的合作文化会更佳。许多开发者偏爱基于(长期)分支开发的反面模式,这样一来包括反馈以及与来源潜在冲突在内的一切就会被推迟。

我认为(可导航的)冲突正是团队合作的健康标志,在对长期分支进行代码审查时,如果推迟反馈,则会因交付过迟而造成更多不满。

9. 多样化思考会产出更强大的成果

我在读大学时最喜欢的学科是“哲学导论”,那个学期我们每周都要研究不同的哲学家。在我的职业生涯中,我逐渐懂得欣赏多样化的价值,并通过多个角度来看待问题。系统思维也承认,事实有多种诠释方式,可以引出新的概念或解决方案,也许能带来更好的效果。

10. 欣赏每个人的不同优点

每个人都是独一无二的,所有人都有自己的优缺点。尽管我们倾向于寻求志同道合者,但有着各类不同优势人才的团队更为优秀。在某个领域的优势,在特定情况下也许会成为劣势,而结合各类人才优势的团队则会更加强大。尽管不同的优势会带来冲突,但健康的团队能够欣赏彼此间的差异,而不是互相憎恨。

11. 学习是终其一生的任务

我们周围的世界时刻不停地改变着,因此我们总有机会学些新的技能、技术或者工具。甚至,我们可以学习如何更好地学习,有很多《软件者开发线路图》(Apprenticeship Patterns)以及《前20个小时:如何如何快速学习新技能》(The First 20 Hours)之类的书籍可以让你了解这方面的经验。

12. 积极的影响造就幸福感

著名的《Drive》一书讨论了人们如何通过朝着特定目标努力,来产生幸福感。在我的体验中,这一点经常能够帮助人们找到办法,对他人产生积极影响,这也是为什么Pillar 2(推动IT变革,追求软件卓越)及Pillar 3(积极提倡社会和经济公正)的价值对于我们来说如此重要。

结论

以上12点总结并非我在ThoughtWorks学到的所有经验,但它们确实是我与客户合作时的法宝。

原文地址:http://geek.csdn.net/news/detail/70026


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329476.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3.条件概率与独立性

【README】 本文总结自《概率论基础教程》 by M.Ross ,墙裂推荐; 【3.2】条件概率 1)条件概率定义: 【补充】条件概率计算示例 【3.3】贝叶斯公式 1)通过第2个事件发生与否计算第1个事件的概率(非常重要…

python安装运行时提示不是内部或外部命令怎么办_如何解决cmd运行python提示不是内部命令...

python安装完成后,直接运行python.exe能够正常执行python程序。但是进入到cmd命令窗口(同时按下winr组合键后输入cmd进入),输入python命令提示“不是内部或外部命令”,遇到这种现象通常是没有将python的安装路径添加到环境变量中。在桌面上右…

Oracle入门(十二D)之表删除与删除表数据

一、删除表 drop table 表名; drop table t_userinfo;二、删除表数据 (1)DML操作deletedelete from 表名;(2)DDL操作truncatetruncate table 表名;三、恢复 (1)恢复删除的表 Oracle 10g提供恢复操作 flashb…

.NET Core VS Code 环境配置

VSCode .NET环境配置 在此之前我一直是使用notepad配置的C/C#环境来写代码,比起打开"笨重"的VS要方便很多.VSCode出来之后,本来也想折腾了一下,但是当时资料太少,配置没成功,也觉notepad就已经够了. 直到前几天在博客园看到园友LineZero分享的<<使用VS Code开发…

4.随机变量

【README】 本文总结自《概率论基础教程》 by M.Ross &#xff0c;墙裂推荐&#xff1b; 【4.1】随机变量 1&#xff09;随机变量&#xff1a; 定义在样本空间上的实值函数&#xff1b;即随机变量是一个函数&#xff08;或者一个映射&#xff0c;把事件映射到数值&#xff0…

Oracle入门(十二E)之视图操作

转载自 Oracle创建视图(View)视图&#xff1a;是基于一个表或多个表或视图的逻辑表&#xff0c;本身不包含数据&#xff0c;通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表&#xff0c;Oracle的数据库对象分为五种&#xff1a;表&#xff0c;视图&#xff0c;序…

renderthread是什么_Android5.0中 hwui 中 RenderThread 工作流程

前言本篇文章是自己的一个学习笔记&#xff0c;记录了 Android 5.0 中 hwui 中的 RenderThread 的简单工作流程。由于是学习笔记&#xff0c;所以其中一些细节不会太详细&#xff0c;我只是将大概的流程走一遍&#xff0c;将其工作流标注出来&#xff0c;下次遇到问题的时候就可…

官方博客明确了 .NET Core RC2/RTM 时间表

.NET Core 经过了将近2年的开发&#xff0c;去年12月份发布的RC1版本&#xff0c;明确来说那只是一个beta版本&#xff0c;自从RC1发布以来&#xff0c;看到github里的RC2分支&#xff0c;整个工具链都发生了很大的变化&#xff0c;大家都在焦急的等待着微软发布.NET Core RC2,…

12.进程同步与信号量

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》&#xff0c;内容非常棒&#xff0c;墙裂推荐&#xff1b; 2.进程同步&#xff1a; 让进程间的合作变得合理有序&#xff1b; 3.通过 信号量 来实现进程同步 &#xff1b; 4.操作系统借助信号量实现进程合作…

如何使 WebAPI 自动生成漂亮又实用在线API文档

1.前言 1.1 SwaggerUI SwaggerUI 是一个简单的Restful API 测试和文档工具。简单、漂亮、易用&#xff08;官方demo&#xff09;。通过读取JSON 配置显示API. 项目本身仅仅也只依赖一些 html,css.js静态文件. 你可以几乎放在任何Web容器上使用。 1.2 Swashbuckle Swashbuckle 是…

springboot超详细教程_SpringBoot五步配置Mybatis超简教程

第一步&#xff1a;Maven里面添加mybatis的引用jar包&#xff1a;org.mybatis.spring.bootmybatis-spring-boot-starter1.3.1com.github.pagehelperpagehelper-spring-boot-starter1.2.3mysqlmysql-connector-javaorg.springframeworkspring-tx第二步&#xff1a;在application…

13.信号量临界区保护

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》&#xff0c;内容非常棒&#xff0c;墙裂推荐&#xff1b; 2.操作系统使用信号量实现进程同步&#xff08;合作&#xff09;&#xff0c;走走停停&#xff0c;推进多进程合理有序向前执行&#xff1b; 3.靠临…

Oracle入门(十二F)之表分区

转载自 oracle的 分表 详解 -----表分区一、分区表基础知识 (1) 表空间及分区表的概念表空间&#xff1a;是一个或多个数据文件的集合&#xff0c;所有的数据对象都存放在指定的表空间中&#xff0c;但主要存放的是表&#xff0c; 所以称作表空间。分区表&#xff1a; 当表中的…

工作展望简短_新一年工作展望短句

1、愿所有人认真告别现实的2020&#xff0c;认真迎接希望的2021。2、新的一年快开始了&#xff0c;年底一总结&#xff0c;发现自己只收获了年龄。3、来年&#xff0c;有趣有盼&#xff0c;福气不减。4、新的一年&#xff0c;心情&#xff0c;生活都像烟花一样灿烂。5、待凛冬离…

关于《在Windows与.NET平台上的持续交付实践》的问答录

《在Windows与.NET平台上的持续交付实践》&#xff08;Continuous Delivery with Windows and .Net&#xff09;&#xff08;免费下载&#xff09;是由Matthew Skelton与Chris ODell所编著的一本简短的书籍。对于在Windows与.NET环境中工作的开发者而言&#xff0c;本书可以说是…

14.信号量的代码实现

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》&#xff0c;内容非常棒&#xff0c;墙裂推荐&#xff1b; 2.信号量基础知识&#xff0c;refer2 posts below. 12.进程同步与信号量_PacosonSWJTU的博客-CSDN博客1.本文内容总结自 B站 《操作系统-哈工大李治…

Oracle入门(十二G1)修改序列(Sequence)起始值的方法

转载自 Oracle修改序列&#xff08;Sequence&#xff09;起始值的方法Oracle 序列&#xff08;Sequence&#xff09;主要用于生成流水号&#xff0c;在应用中经常会用到&#xff0c;特别是作为ID值&#xff0c;拿来做表主键使用较多。 但是&#xff0c;有时需要修改序列初始值&…

weex安装环境_WEEX跨平台开发环境搭建

一、Weex简介大约两年前&#xff0c;为了写一本Weex的入门书籍&#xff0c;我花了几个月的时间学习了下Weex跨平台相关的知识。Weex 是阿里前端技术团队开源的一套跨平台开发方案&#xff0c;能以Web的开发体验构建高性能、可扩展的 Native 应用。简单来说&#xff0c;在集成了…

C#中使用gRPC

由于有NuGet&#xff0c;使得C#在配置项目时非常简单。 1. 在NuGet中添加ProtocolBuffer和gRPC引用 protocol buffer 3.0版本&#xff0c;在NuGet插件界面选择Include Prerelease&#xff0c;查找google protocol buffer。如果不选择include rerelease&#xff0c;查找到的prot…

15.操作系统死锁处理

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》&#xff0c;内容非常棒&#xff0c;墙裂推荐&#xff1b; 【19.1】死锁场景 1&#xff09;死锁&#xff1a; 多个进程由于互相等待对方持有的资源而造成的谁也无法执行的情况&#xff1b; 1.1&#xff09;死…