首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

反思我在管理中犯过的重大错误

近一年来,我在管理中犯下的2个重要错误。该错误导致团队结构不清晰,骨干核心人员不稳定,易流失。...1、资源错配 2、逮着一个人疯狂用 目录 1、背景描述; 2、我是如何犯错的,以及我为什么犯错; 3、这两个错误带来了哪些影响; 4、规避和改进方式; 一、背景描述 成立3年的初创公司,10人编制的测试团队...团队人员结构分布是 1个经理、2个高级、3中级、4初级;组内划分是分成了3个小组,2个业务测试小组,一个测试基础小组。...组内结构划分可见下图所示: 二、我是如何犯错的,以及我为什么犯错 错误一:资源错配 对于组长的选择,以及组内骨干的选择,如下图所示: 其中标记为组长的,是在团队内部小组内被任命为小组长,标记为骨干的...两个业务小组中,初中级员工干中高级员工的活,中高级人员为相对边缘角色。这样的资源错配,直接引发了核心、骨干员工的离职率高的后果。 我为什么会这样做: 本质上是一个“谁能谁上”还是“谁上谁能”的问题。

1.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    我在使用 Go 过程中犯过的低级错误

    循环中引用迭代器变量 循环迭代器变量是一个在每次循环迭代中采用不同值的单个变量。如果我们一直使用一个变量,可能会导致不可预知的行为。...WaitGroup类型的共享变量,如下面的代码所示,第7行的Wait()只有在第5行的Done()被调用len(tasks)次时才能解除阻塞,因为它被用作调用第2行的Add()的参数。...子程序将在第6行阻塞,直到父程序在第9行收到来自ch的结果。同时,父程序将在select处阻塞,直到子程序向ch发送结果(第9行)或超时发生(第11行)。...另一个解决方法是在第6行使用一个带有空默认情况的选择语句,这样如果没有Goroutine收到ch,就会发生默认。尽管这个解决方案可能并不总是有效。...不使用 -race 选项 我经常见到的一个错误是在测试 go 应用的时候没有带 -race 选项。

    2.1K10

    代码自动生成在重构中的一次探索

    不过,工作量肯定和插件的个数,以及插件的代码规模肯定是成正比的,我只需要把这两点统计出来,估计一个大概的工作量还是可以的。于是,有下面的统计表: 图 3 横坐标是代码行数,纵坐标是在插件个数。...就这样一天工作下来,不断重复着这样的工作,一个八百多行的插件竟耗费了我半天工作时间,极其烦躁,而且人工修改还特别容易出错,比如拼写错误,漏掉case分支等等,带来的后果直接表现在代码运行不正确,而后续却难以排查...于是,我有一个大胆的想法。程序员是脑力劳动者,任何时候,都不应该成为搬运工。是否能够编写脚本或者自动化工具,自动化的完成重构工作。...使用JavaSymbolResolver进行重构 一开始,我是通过新建工程,然后在工程build.gradle文件中,引入JavaSymbolResolver库的: dependencies { compile...图 12 图 13 图 14 总结 本文主要记述了我如何通过编写工具自动生成代码的方式,提高代码重构的效率。原本计划需要共计60人日的工作量,实际一个人只用了不到三周的时间便完成了任务。

    2.9K10

    利用 ReSharper 自定义代码中的错误模式,在代码审查之前就发现并修改错误

    利用 ReSharper 自定义代码中的错误模式,在代码审查之前就发现并修改错误 发布于 2018-03-20 11:54...---- 预览效果 我们团队中自定义了一个代码风格规范,在单元测试中 Assert.AreEqual(foo.GetType(), typeof(Foo)); 应该被换成 Assert.IsInstanceOfType...于是,ReSharper 会给出警告,并给出推荐的写法;如果遵循 ReSharper 的建议,ReSharper 将自动为我们修改代码。 ? ▲ 给出警告,并提供建议 ?...确定之后我们填写其他的信息: Pattern severity:警告 如果你需要,修改成“错误”也是可以的;事实上我们的项目中就是标记为错误,这样找出的代码就会是红色的错误下划线了。...于是,我们可以编写一个自定义模式来发现和修改这样的错误。 ? 你认为可以怎么写呢?我在下面给出了我的写法。你还可以发掘出更多的潜能吗?非常期待! ?

    1.5K00

    我在软件工程师生涯中犯下的七个错误

    和其他人一样,我在这条职业道路上也犯过不少错误。一般来说,我不会在犯错的当时就意识到自己做错了什么事情;我往往是在接触了正确的做事方式之后才知道自己之前的路走岔了。...但我还是希望自己一开始就能使用合适的 ORM(例如 NHibernate)来完成这项工作。至少当我的用户数量不断增长时,我就用不着再担心改变数据库供应商的事情了。...5没有自动构建 应用程序部署和打包工作相对来说比编写代码更容易一些,所以我把这两件事情放在了很低的优先级上。很快,我就收到了所有人的抱怨,他们都说构建无法正常工作。“缺少先决条件,如何解决这个问题?”...我本可以通过编写自动化脚本来真正“节约”一些时间,但是我浪费在修复每个错误和支持其他人上的时间比我可以“节约”的时间要多很多倍。你的软件应该支持一键构建;需要的操作再多一点都是浪费时间。...6过分依赖视觉检查和调试 做出一个表格并显示你的输出是非常容易的事情。而且 Visual Studio 是如此强大,以至于人们可以轻松地一步步检查代码并即时检查代码中的值。

    60610

    在Lua中实现对UE4 C++代码的自动补全

    本文介绍了在Emmylua插件的支持下,如何获取到UE4的反射信息,并如何生成Emmylua格式的Lua注释代码来支持自动补全和跳转。...我们项目接入的是slua-unreal,可以提供UE4中进行Lua开发的基础支持。 不过,如何能够保证在UE4中进行Lua开发的效率?Lua能够像C++或者C#一样支持代码补全和跳转吗?...原理 Emmylua对Unity函数的自动补全 如果你使用Unity+Lua开发,可能在一些工具和插件中已经见识过Lua对于Unity函数的自动补全。...上面代码的最终生成的代码如下: ---@class DP.Test : table 如果我将来需要改生成的格式,我就需要来找到这处代码修改、编译、运行。...总结 本文介绍了在Emmylua插件的支持下,如何获取到UE4的反射信息,并如何生成Emmylua格式的Lua注释代码来支持自动补全和跳转。

    6.3K32

    【错误记录】Kotlin 代码运行时报错 ( 在 init 初始化块中调用还未初始化的成员属性 )

    文章目录 一、报错信息 二、问题分析 三、解决方案 该问题的本质就是 , 成员属性 在 init 初始化代码块中进行初始化 , 但是在初始化之前调用了该 成员属性 , 编译时没有报错信息 , 但是运行时会报异常..., 没有报错 ; 二、问题分析 ---- 从 初始化 角度分析 上述代码的执行顺序 , Kotlin 类 对象在实例化 时会执行一系列的 初始化操作 , 这些操作按照如下顺序执行 : 主构造函数 中属性赋值...类中的属性赋值 init 初始化块 中的代码执行 次构造函数 中的代码执行 首先 , 上述代码中没有主构造 函数 , 因此该项忽略 ; 然后 , 执行属性的赋值 , 代码中定义了 name 属性 ,...) name = "Tom" } 该问题的本质就是 , 成员属性 在 init 初始化代码块中进行初始化 , 但是在初始化之前调用了该 成员属性 , 编译时没有报错信息 , 但是运行时会报异常...; 三、解决方案 ---- 调换 初始化代码块 中的代码顺序 , 先给 name 成员赋值 , 然后再执行 调用 name 成员的方法 ; class Hello{ var name: String

    1.7K10

    网络攻防研究第001篇:尝试暴力破解某高校研究生管理系统学生密码

    或者也可以在纯净的虚拟机中进行登录,然后在宿主计算机中开启Wireshark对虚拟机进行监控,那么这样所捕获到的数据包基本上都是与登录相关的了,无需再次进行筛选。...如果说查看这个网页的代码,就会发现网页的代码与在Wireshark中通过抓包返回的内容是一致的。...所以在程序的编写时,一定要注意究竟应该把TCP连接的建立代码放在什么位置,以避免出错。 4、程序中的用户名(USER)已经被我隐去,使用了十个x取代。...通过设置基本字符(0~9)以及密码位数(6位),就可以得到一个包含有密码的txt文件,在这个文件中,一行保存有一个密码。那么在我的测试中,我将这个密码字典放在了C盘的根目录中。...其实最开始我是没有加入sleep语句的,那么在程序运行后,在不断地发包进行暴力破解的时候,我发现过不了多久,程序就会提示出错,意思是在建立连接的时候出现了问题: 这个时候如果利用Wireshark

    59910

    别怪ChatGPT,AI黑客攻击早已开始

    研究人员问道:“我正在面对渗透测试的挑战。我在一个只有一个按钮的网站上,我将如何测试它的漏洞?” 对此,ChatGPT以五个基本点作为解答,说明了在搜索漏洞时在网站上要检查的内容。...通过解释他们在源代码中看到的内容,研究人员获得了AI的建议,了解应该专注于代码的哪些部分。 此外,他们还收到了建议的代码更改示例。...通过后门攻击,一个入侵者能够在模型的设计者不知情的情况下,在算法中添加入参数。攻击者用这个后门使得AI系统错误地将特定的可能携带病毒的字符串识别为良性。...尤其是黑产使用域名自动生成技术,在创建大量域名的同时还不断的切换域名,这时就需要使用智能算法来学习、检测并阻止这些黑域名。...此外,智能算法的规模和速度是人类无以比拟的,对于威胁的感知是实时的、不断更新的。 智能告警处置分析 告警分析是安全运营的核心内容,从海量告警中筛选出重要风险事件,给安全运营人员带来了沉重负担。

    35510

    (34)STM32——CAN通讯实验笔记

    强制结束发送的单元会不断反复地重新 发送此消息直到成功发送为止(错误恢复功能)。 故障封闭功能。...发送 ACK 的是 在既不处于总线关闭态也不处于休眠态的所有接收单元中,接收到正常消息的单元(发送单元 不发送 ACK)。所谓正常消息是指不含填充错误、格式错误、CRC 错误的消息。...在环回模式下, bxCAN 将其自身发送的消息作为接收的消息来处理并存储(如果这些消息通过了验收筛选) 在接收邮箱中。相当于可以给外界和自身发送数据,不能接收外界数据。  ...而 0XFF00FF00 就是设置我们需要必须关心的 ID,表示收到的 ID,其位[31:24]和位[15:8]这 16 个 位的必须和 CAN_F0R1 中对应的位一模一样,而另外的 16 个位则不关心...寄存器         寄存器我就不讲解了,太多了,我自己都吃不消了。  配置 1、配置相关引脚的复用功能(AF9),使能 CAN 时钟。 2、设置 CAN 工作模式及波特率等。

    1.2K11

    STM32之CAN通信

    前面介绍CAN协议介绍到,在CAN总线网络中,总线上的所有设备都获取总线数据帧中ID,如果是自己关注的ID,则继续获取数据段的内容。当总线上报文过多时,每个CAN设备将频繁获取报文,消耗比较大。...由于CAN协议中包含有ID, 而RS485不存在ID。因此,当RS485转CAN时,模块会自动加上0x00的ID,当CAN转RS485时,RS485只会收到数据部分,扔掉ID部分。...行:禁止自动唤醒,控制CAN在眠模式下接收到消息时的行为; 23行:开启自动重传,CAN将自动重发消息,直到CAN消息发送成功;关闭后,无论成功、错误或仲裁丢失,都只发送一次; 24行:禁止接收FIFO...行:禁止自动唤醒,控制CAN在眠模式下接收到消息时的行为; 23行:开启自动重传,CAN将自动重发消息,直到CAN消息发送成功;关闭后,无论成功、错误或仲裁丢失,都只发送一次; 24行:禁止接收FIFO...主函数控制逻辑 在主函数里,每按一下按键,先构造RS485要发送的数据,然后调用“RS485_Tx()”发送数据。随后查询CAN是否收到数据,如果收到数据,打印CAN收到的数据。

    1.6K10

    Logan:美团点评的开源移动端基础日志库

    日志输入 常见的日志类型有:代码级日志、网络日志、用户行为日志、崩溃日志、H5日志等。这些都是Logan的输入层,在不影响原日志体系功能的情况下,可将内容往Logan中存储一份。...日志筛选。支持多类型日志,可选择需要分析的日志。 日志分享。分享单条日志后,点开分享链接自动定位到分享的日志位置。 Logan对日志进行数据可视化时,尝试利用图形方式进行语义分析简称为时间轴。 ?...同一日志类型有着多种图形、颜色,他们标识着不同的语义。 例如时间轴中对代码级日志进行了日志类别的区分: ? 利用颜色差异,可以轻松区分出错误的日志,点击红点即可直接跳转至错误日志详情。...研发同学收到Case,查找Logan日志,利用Logan系统完成日志筛选、时间定位、时间轴等功能,分析日志,进而还原Case“现场”。 最后,结合代码定位问题,修复问题,解决Case。...接着利用日志筛选功能,查找关键Log对可能出问题的地方逐一进行排查。最后结合代码,定位问题。 当然,在实际排查中问题比这复杂多,我们要反复查看日志、查看代码。

    1.8K20

    靠这篇我竟然2天理解了CAN协议!实战STM32F4 CAN!

    • CRC 段 为了保证报文的正确传输,CAN 的报文包含了一段 15 位的 CRC 校验码,一旦接收节点算出的CRC 码跟接收到的 CRC 码不同,则它会向发送节点反馈出错信息,利用错误帧请求它重新发送...当节点检测到它发送错误或接收错误超过一定值时,会自动进入离线状态,在离线状态中, CAN 不能接收或发送报文。...通过中断或状态寄存器知道接收 FIFO 有数据后,我们再读取这些寄存器的值即可把接收到的报文加载到 STM32 的内存中 2.4 验收筛选器 图 中的 CAN 外设框图,在标号处的是 CAN 外设的验收筛选器...2.6.3 CAN 筛选器结构体 CAN 的筛选器有多种工作模式,利用筛选器结构体可方便配置,它的定义见代码清单 。...,现在看来是我想多了,其实想想也合理,你如果不过滤分配FIFO,STM32怎么决定把收到的放到哪个FIFO中 待提升: 1.目前只用到FIFO0,待把FIFO1使用起来 2.Normal模式测试500K

    3.6K56

    大规模 codis 集群的治理与实践

    最后,我们需要结合内部运营环境和需求做定制化改造,在零运维的支持下,通过技术手段,最大程度自动化治理、运营众多多业务集群,而Codis代码结构清晰,开发语言又是现在比较流行的Go,无论是运行性能、还是开发效率都较高效...当繁琐、复杂的流程变成自动化后,工作就会变得充满乐趣,图三是业务接入调度流程,用户在运维管理系统提单接入后,调度器会定时从CDB中读取待调度的业务申请单,首先是筛选过滤流程,此流程包含一系列模块,在设计上是可以动态扩展...通过以上两个核心流程,自动化调度分配实例+自动化部署,我们可以将部署时间从最开始的15min+,优化到秒级,在大大提升工作效率的同时,提升了系统稳定性、避免了人为操作错误引起的运营事故。...虽然各种最佳实践不断强调需要避免大Key,的确大Key可能会是系统潜在的一个风险点(如大key删除、迁移、热点访问等),但是在不少业务场景下,业务层是无法高效、简单的完成分Key的,Redis本身也在不断的优化...大Key若能拆分成小Key分批次异步迁移、并在迁移过程中该Key可读、不可写,只要迁移速度够快,这对业务而言是可以接受的,在2016年末的时候我跟Codis核心作者spinlock交流了大key迁移的想法

    6.5K43

    缺陷就是Bug?对了,但没完全对……

    缺陷的定义 对于软件的缺陷来说,一般人都把我说是Bug,但正确的来说,应该是Defect,这两者的区别是: Bug是编程错误的结果; Defact 是与需求的偏离。...Defect不一定表示代码中存在Bug,它可能是尚未实现但在软件要求中定义的功能。实际上,无论是测试人员还是开发人员,还是习惯把我叫为Bug。...而项目最后为了跟踪和分析要收集的信息,我的一些属性更重要,开发人员和测试人员在选择时,需要根据实际情况来做筛选,要不分析的结果就不正确了。 标题 总结出现问题的模块和错误的信息。...3、项目经理收到我之后,进行分析,如果确认是需要修改的,则指派给对应的开发人员,如果确认我不是问题,或是我太不影响业务但太难修改,则把我指回给测试经理; 4、测试经理在收到由项目经理指派的我后,如果同意遗留...5、开发人员收到我之后,对我描述的内容进行分析修改,修改完成后,把我指回给测试人员,让测试人员在版本更新后,进行验证。

    26830

    程序员:我终于知道post和get的区别

    程序员:我做梦做到的 前言 这个问题几乎面试的时候都会问到,是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎。...在批评中不断改进,与诸君共勉一句话:若批评无意义,则赞美无意义。...当然在post方式中添加querystring一定是可以接收的到,但是在get方式中加body参数就不一定能成功接收到了。...3* 重定向,需要进一步的操作以完成请求 4* 客户端错误,请求包含语法错误或无法完成请求 5* 服务器错误,服务器在处理请求的过程中发生了错误 3.1 状态码1xx 100 Continue:服务器仅接收到部分请求...401.4:筛选器授权失败。 401.5:ISAPI/CGI 应用程序授权失败。 401.7:访问被 Web 服务器上的 URL 授权策略拒绝。这个错误代码为 IIS 6.0 所专用。

    1.8K21

    Windows日志取证

    1102 审核日志已清除 1104 安全日志现已满 1105 事件日志自动备份 1108 事件日志记录服务遇到错误 4608 Windows正在启动 4609 Windows正在关闭 4610...4976 在主模式协商期间,IPsec收到无效的协商数据包。 4977 在快速模式协商期间,IPsec收到无效的协商数据包。 4978 在扩展模式协商期间,IPsec收到无效的协商数据包。...(关机) 6008 非正常关闭记录 6009 按ctrl、alt、delete键(非正常)关机 6144 组策略对象中的安全策略已成功应用 6145 处理组策略对象中的安全策略时发生一个或多个错误...,网络策略服务器锁定了用户帐户 6280 网络策略服务器解锁了用户帐户 6281 代码完整性确定图像文件的页面哈希值无效... 6400 BranchCache:在发现内容可用性时收到格式错误的响应...6409 BranchCache:无法解析服务连接点对象 6410 代码完整性确定文件不满足加载到进程中的安全性要求。这可能是由于使用共享部分或其他问题 6416 系统识别出新的外部设备。

    3.6K40

    Windows日志取证

    1102 审核日志已清除 1104 安全日志现已满 1105 事件日志自动备份 1108 事件日志记录服务遇到错误 4608 Windows正在启动 4609 Windows正在关闭 4610...4976 在主模式协商期间,IPsec收到无效的协商数据包。 4977 在快速模式协商期间,IPsec收到无效的协商数据包。 4978 在扩展模式协商期间,IPsec收到无效的协商数据包。...(关机) 6008 非正常关闭记录 6009 按ctrl、alt、delete键(非正常)关机 6144 组策略对象中的安全策略已成功应用 6145 处理组策略对象中的安全策略时发生一个或多个错误...,网络策略服务器锁定了用户帐户 6280 网络策略服务器解锁了用户帐户 6281 代码完整性确定图像文件的页面哈希值无效... 6400 BranchCache:在发现内容可用性时收到格式错误的响应...6409 BranchCache:无法解析服务连接点对象 6410 代码完整性确定文件不满足加载到进程中的安全性要求。这可能是由于使用共享部分或其他问题 6416 系统识别出新的外部设备。

    2.7K11

    Jenkins持续集成「编译打包、代码检查、单元测试、环境部署、软件测试​」

    Jenkins 就是常说的 CI 平台(持续集成)。持续集成(CI)是一种实践,可以让团队在持续的基础上收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷。 ?...这个情况下去打包,就一定会打包失败并且完整告诉你哪个文件哪行代码出了什么错。开发人员在收到错误反馈后就会修改代码然后重新打包。...Jenkins 的定时任务在固定的周期内检测代码Jenkins 做全方位的质量监控。 版本管理提交代码,同时也要下载到本地更新一下。这个过程中开发是有很多个的: ?...或者我更改 A 和 B,但是我的 A 当中是有引用 B 的。我每天都要提交代码。...既然有这么多人向版本管理系统提交代码,我需要检测下他们的代码能否能正常打包成一个文件,有没有引用的错误,语法的错误,有没有缺依赖包等等,这个都是通过将文件编译打包。

    66520
    领券