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

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

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

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

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

    循环中引用迭代器变量 循环迭代器变量是一个在每次循环迭代中采用不同值的单个变量。如果我们一直使用一个变量,可能会导致不可预知的行为。...4行创建了一个子Goroutine来处理一个请求,这是Go服务器程序中的一个常见做法。...不使用 -race 选项 我经常见到的一个错误是在测试 go 应用的时候没有带 -race 选项。...显然,Go 的竞争检查 (race detector) 无法解决每一个并发问题,然而它依然是一个有价值的工具,我们应当确保在做测试的时候(go test) 始终使用它。...build -race // to build the package $ go install -race pkg // to install the package 启用竞争检测器后,编译器将记录在代码中访问内存的时间和方式

    2.1K10

    我居然在Github上找到了一个完整的停车系统

    最近,Github热榜冲上来一个名叫--的项目,这应该是猿妹见过的取名最随意的项目,也是目前看过的最完整的停车场系统。...停车场系统的运行流程也是比较直观的,具体如下: 这个停车系统具有以下功能特性: 兼容市面上主流的多家相机,理论上兼容所有硬件,可灵活扩展,②相机识别后数据自动上传到云端并记录,校验相机唯一id和硬件序列号...,防止非法数据录入 用户手机查询停车记录详情可自主缴费(支持微信,支付宝,银行接口支付,支持每个停车场指定不同的商户进行收款),支付后出场在免费时间内会自动抬杆。...断电断网支持岗亭人员使用app可接管硬件进行停车记录的录入。...,技术过于陈旧,没有一个规范,故个人用来接近1年的时间在业余时间开发出这种系统,现代化标准的互联网应用,定位大型物联网大数据云平台系统 该项目代码完全开源,完全自主原创,创建者已经在Linux环境中测试过

    1.2K40

    我在 GitHub 上看到了一个丧心病狂的开源项目!

    当初信誓旦旦喊着一天一篇文章,后面降到 3 天一篇,一周一篇,到了最后,恐怕连打开编辑器胡乱敲几个字的欲望都没了。当然了,我不是那种人?。...因此,在创作者打开编辑器开始写作的时候,每一分一秒都可以说是黄金时间。 那么,现在我们来思考一个问题: "通过什么方法,可以让创作者在最短时间内,效率最大化输出文字内容呢?"。...是的,这位小哥所提供的建议就是:一旦你开始写作,那就不要停,必须时刻不停的打字。一旦停下,便立刻把先前写的所有内容删得一干二净。 如此丧心病狂,你就说怕不怕吧 ? !...看到这里,相信你也跟我想的一样:有没有这么夸张啊。 因此我抱着试一试的心态打开了这个项目,体验了一下。 在进行了简单的初步体验后,我内心的真实感受是: 这样的写作方式也太 TM 刺激了吧!...这里比较重要的一点是,你能否在短时间内快速进入到写作状态。 此外,这个项目还可以通过设置创作时间和词汇数,来指定一个创作目标。只要你在指定目标内完成任务,创作的内容便不会被删除: ?

    44230

    我在 GitHub 上看到了一个丧心病狂的开源项目!

    当初信誓旦旦喊着一天一篇文章,后面降到 3 天一篇,一周一篇,到了最后,恐怕连打开编辑器胡乱敲几个字的欲望都没了。当然了,我不是那种人?。...因此,在创作者打开编辑器开始写作的时候,每一分一秒都可以说是黄金时间。 那么,现在我们来思考一个问题: "通过什么方法,可以让创作者在最短时间内,效率最大化输出文字内容呢?"。...是的,这位小哥所提供的建议就是:一旦你开始写作,那就不要停,必须时刻不停的打字。一旦停下,便立刻把先前写的所有内容删得一干二净。 如此丧心病狂,你就说怕不怕吧 !...看到这里,相信你也跟我想的一样:有没有这么夸张啊。 因此我抱着试一试的心态打开了这个项目,体验了一下。 在进行了简单的初步体验后,我内心的真实感受是: 这样的写作方式也太 TM 刺激了吧!...这里比较重要的一点是,你能否在短时间内快速进入到写作状态。 此外,这个项目还可以通过设置创作时间和词汇数,来指定一个创作目标。只要你在指定目标内完成任务,创作的内容便不会被删除: ?

    55420

    我在 GitHub 上看到了一个丧心病狂的开源项目!

    当初信誓旦旦喊着一天一篇文章,后面降到 3 天一篇,一周一篇,到了最后,恐怕连打开编辑器胡乱敲几个字的欲望都没了。当然了,我不是那种人?。...因此,在创作者打开编辑器开始写作的时候,每一分一秒都可以说是黄金时间。 那么,现在我们来思考一个问题: "通过什么方法,可以让创作者在最短时间内,效率最大化输出文字内容呢?"。...是的,这位小哥所提供的建议就是:一旦你开始写作,那就不要停,必须时刻不停的打字。一旦停下,便立刻把先前写的所有内容删得一干二净。 如此丧心病狂,你就说怕不怕吧 ? !...看到这里,相信你也跟我想的一样:有没有这么夸张啊。 因此我抱着试一试的心态打开了这个项目,体验了一下。 在进行了简单的初步体验后,我内心的真实感受是: 这样的写作方式也太 TM 刺激了吧!...这里比较重要的一点是,你能否在短时间内快速进入到写作状态。 此外,这个项目还可以通过设置创作时间和词汇数,来指定一个创作目标。只要你在指定目标内完成任务,创作的内容便不会被删除: ?

    70720

    如何编排你的异步任务并发数量,在Webpack5中我找到了答案

    所谓调度器即是充当同一时间内对于多个任务进行分配,从而将任务有序列的调用执行。 我画了一张草图来辅助大家理解它的概念,假设此时 AsyncQueue 调度器同时最多支持处理两个并发任务。...= undefined; // 保存当前任务处理后的错误 this.error = undefined; } } 在 new AsyncEntry(item,callback) 中我们实例化了一个...接下里做的事情就非常简单了,我们将处理后的结果以及对应的错误保存在 entry 中,同时让 this....'); }); 检查控制台的输出如愿以偿的得到了我们想要的结果。...我希望的是当存在重复的 key 值时,我会用上一个相同 key 的处理结果来调用重复的 callback 即可,完全没有必要重新在进入队列处理一次。

    1.2K20

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

    和其他人一样,我在这条职业道路上也犯过不少错误。一般来说,我不会在犯错的当时就意识到自己做错了什么事情;我往往是在接触了正确的做事方式之后才知道自己之前的路走岔了。...但是随着代码库的增长,那些自制的列表本身就变成了一个个怪物。因为我可以很容易地修改代码,所以我会经常介入并改变一个方法的行为以适应我的需求,这又导致了后来的诸多混乱和错误。...5没有自动构建 应用程序部署和打包工作相对来说比编写代码更容易一些,所以我把这两件事情放在了很低的优先级上。很快,我就收到了所有人的抱怨,他们都说构建无法正常工作。“缺少先决条件,如何解决这个问题?”...6过分依赖视觉检查和调试 做出一个表格并显示你的输出是非常容易的事情。而且 Visual Studio 是如此强大,以至于人们可以轻松地一步步检查代码并即时检查代码中的值。...这样做的结果是我的应用程序变成了一个怪物(没有关注点分离、难以重构和完全无法维护的代码库)。 曾经有一段时间,我害怕对我的代码进行哪怕是最轻微的修改,因为任何更改都可能会,也可能不会导致破坏性更改。

    60610

    对话邓小铁:在首届IJTCS中,我看到了中国计算理论的成长

    作者 | 青暮 编辑 | 陈彩娴 “我认为现在是一个很好的时期,中国的计算理论已经有了很好的基础,在许多方向上站在了世界前沿。”...“计算理论的受众是很小的,在某种意义上,很多重要的研究方向都是小众课题。”邓老师提到,他们在这次会议中了解到,中国在计算理论方面做了很多优秀的工作,因此受到了鼓舞。...邓老师表示,“我们从对方那里找到了不少可以学习和借鉴的地方,我认为,不同的会议之间要有一个相互支持的关系。”...尽管有人说,现在的计算理论领域处于一个瓶颈状态,但邓老师不那么认为,“我认为现在是一个很好的时期。我们已经有了基础,而且与实际应用的相互推动上出现了很大的空间。”...作为一个理论计算机科学研究者,他说道,“我们也从国内重要的科技企业得到了在他们发展关键时刻开展合作研究的很好机会。其他一些团队也得到了这样的宝贵合作机会,使得我们的理论研究有了独特思路。

    86630

    很开心,在使用mybatis的过程中我踩到一个坑。

    在实际开发过程中我踩到了mybatis的一个坑,我觉得值得记录、分享一下。 先说说这个坑是什么吧。如果你踩过这个坑,并且知道具体的原因,那这篇文章可以加深你的印象。...常规的方法是加断点进行追踪,但是我想分享一个我当时排查的"骚"操作,定位问题非常快。那就是逆向排查。 逆向排查法 现在我们确定了是sql拼接的问题,我通过日志,也拿到了完整的sql。...在这个地方,我整个sql都拿到了,如果往回走,就能很快的找到sql是在哪里产生的。 那我在BaseJdbcLogger的143行,打上断点,并运行起来。...是的,我无脑的使用了CV大法。导致我在欢声笑语中写出了bug。我orderStatus传入的类型是一个Byte,和""做判断有任何意义吗?...最后说一句 在解决这个问题之后,我还是在网上查了一圈,发现也有人遇到了这样的问题,但是我点开搜索出来的第一篇就是一个错误的描述,他说在mybatis中会把0当做null来处理?哥们你看源码了吗?

    1K10

    很开心,在使用mybatis的过程中我踩到一个坑。

    这是why技术的第14篇原创文章 在实际开发过程中我踩到了mybatis的一个坑,我觉得值得记录、分享一下。 先说说这个坑是什么吧。...常规的方法是加断点进行追踪,但是我想分享一个我当时排查的"骚"操作,定位问题非常快。那就是逆向排查。 逆向排查法 现在我们确定了是sql拼接的问题,我通过日志,也拿到了完整的sql。...在这个地方,我整个sql都拿到了,如果往回走,就能很快的找到sql是在哪里产生的。 那我在BaseJdbcLogger的143行,打上断点,并运行起来。...是的,我无脑的使用了CV大法。导致我在欢声笑语中写出了bug。我orderStatus传入的类型是一个Byte,和""做判断有任何意义吗?...最后说几句 在解决这个问题之后,我还是在网上查了一圈,发现也有人遇到了这样的问题,但是我点开搜索出来的第一篇就是一个错误的描述,他说在mybatis中会把0当做null来处理?哥们你看源码了吗?

    1.7K10

    【C++】踏上C++的学习之旅(二):缺省参数和函数重载(内含函数重载的底层原理)

    前言 在我们学习C++的命名空间之后 ,我们知道这是一个解决C语言中无法解决的问题,这个问题被我们称之为“命名冲突”。...那么在本章中 ,我们继续讲解一些在C语言中无法解决的问题,来看看本贾尼大佬(C++的创造者)是怎么解决这些问题的。 1. 缺省参数 1.1 为什么要有缺省函数?...突然有一天,我不想再给这个函数传递需要开辟的空间大小的那个实参了,但是如果不将参数全部传完的话,在C语言的视角中你这个就是一个语法错误了。...兑现承诺就相当于把地址填入到这个表格中!!! 好了,讲了这么多,回归我们的主体:为什么C++支持函数重载,而C语言却不支持呢? 如果你对我上述的讲法理解的话,那么我接下来的这段话就十分的关键了。...也就是在符号表中可以填入不同的函数标记,这个特性就是得C++能够支持函数重载。 接下来我来证明给大家看看,由于VS的编译器将编译链接这个过程给集成化了,所以我用g++编译器给大家显示。

    10410

    inline: 我的理解还停留在20年前

    你好,我是雨乐~ 在上篇文章访问私有变量——从技术实现的角度破坏"封装"性一文中,在第二个实现示例中,用到了inline 变量,一开始,是懵逼的,因为在我的印象中inline 仅仅函数,而在此处却用于声明变量...不过,为了研究那段代码,还是仔细研究了下,不看不要紧,一看吓一跳,原来我对inline的理解停留在n年前。于是赶紧恶补这方面的知识,而这篇文章呢,就是我最近研究的一个知识点总结。...以上,就是我对inline的理解,也就是说在之前,我的错误理解是inline作用仅限于inline function,即编译时进行指令替换。...C++程序通常由多个C++源文件组成(.cc/.cpp等),编译器在进行编译的时候,通常是将这些文件单独编译成模块或者目标文件,然后通过链接器将所有模块/目标文件链接到一个可执行文件或共享/静态库中。...编译器在编译的时候,只针对当前Translation Unit,也就是说编译器无法访问本翻译单元之外的目标文件(也就是说在编译当前文件的时候,不能查找之前的已经编译完成的目标文件是否有该函数定义),因此这种错误往往暴露在链接阶段

    41910

    Rust vs C++:2024,谁更懂错误处理?

    他们在命令行窗口,看到了程序的输出 First line: hello, Rust 3 C++代码讲解 见贾克强讲完了Rust代码,席双嘉转向自己的C++代码,并开始讲解。...席双嘉创建了一个有两行文字的hello.txt文件,然后运行程序。他们在屏幕上看到了输出。...异常,在main()函数中,没有显式捕获,难道C++编译器不报错吗?」...在 Rust 中,错误处理的机制与 C++ 的异常处理机制是不同的。」 「Rust 使用 Result 和 Option 类型来处理可能出现的错误和空值,而不是抛出异常。」...或许,是时候拓宽我的技术视野了。我得承认,Rust 在帮助避免这类错误上真的做得更棒。我开始考虑,是不是该花点时间深入了解下 Rust 了。」

    46553

    vs2017中C2440错误:“初始化”:无法从const char转换为char*问题解决

    本文摘要:本文已解决 Python FileNotFoundError 的相关报错问题,并总结提出了几种可用解决方案。同时结合人工智能GPT排除可能得隐患及错误。...一、Bug描述 C2440错误表示编译器无法隐式地将一个const char数组转换为一个char类型的指针。...在C++中,const char[]表示一个常量字符数组,而char是一个字符指针,指向可以修改的字符。编译器不允许这种转换,以防止对常量数据的潜在修改。...但是很多朋友说 vs2016中代码可以用,但是到了vs2017就不行了,这该怎么办呢。 二、定位报错原因 类型不匹配:尝试将一个常量字符数组赋值给一个非const的字符指针。...意图不明确:代码可能需要一个指向可修改字符的指针,但却错误地声明了一个常量字符数组。 编码习惯:在某些情况下,开发者可能习惯性地使用字符数组而没有意识到const的约束。

    25810

    连1.0版本都没有,Uber为什么会采用这样一项新技术?

    Abhinav Gupta 是我们的来自 Go 平台团队的同事,其实他描述得比我好:我理解我们只是在使用 Zig 的 C 工具链,而不是将其作为语言使用。...在 Bazel 中创建一个封闭式的 C++ 工具链是一项很大的工作(对于我们的 Go Monorepo 来说,需要花费数月时间),没有迫切的需求,也没有足够的痛苦,我们还无法接受做这样一件事。...我花了几个晚上基于 musl.cc 创建了一个 Bazel 工具链,但没走多远,因为当时我无法深入理解 Bazel 的工具链文档,而且也没有找到一个好的示例可以参照。...由于我们大部分的底层基础设施都在 Go Monorepo 中,我首先需要一个交叉编译器。 我终于有了一个实现交叉编译器的商业理由。现在,时间和金钱都可以投入了。...依赖开发者笔记本电脑上的系统编译器是不可取的,Go 平台团队亲身感受到了这一点,尤其是在 macOS 升级期间。

    1.5K20

    面试官:什么是宏定义和内联函数?

    大家好,距离上一次更新已经过去一个多月了。前段时间是秋招时期,所以本人也是在忙着找工作、笔试、面试什么的,所幸有之前学习的内容做支撑,还算比较顺利找到了一份软件开发的工作。...在多次的面试和笔试当中也收获了许多的经验,日后如果有时间,我也将分享一些有意思的东西。 好了,废话少说,回归到今天的主题。今天想要分享的是内联函数和宏定义。在我的某次笔试中也出现过一次。...内联函数是在函数前加上inline关键字,这样的函数就被声明为内联函数,inline是C++的关键字,C语言本身是不支持内联函数的,但是后来在C99标准中支持了内联函数,当然,具体在C语言中能不能用和编译器也有关系...因为使用宏定义有时会产生意想不到的错误,这也是笔试题中经常考的地方。 什么错误呢?来看下面的例子,只是在上面的例子上多乘一个2....1、inline函数在第一次被调用前必须进行完整的定义,否则编译器无法知道应该插入什么代码。

    1.5K20

    透过 Rust 探索系统的本原:编程语言

    所有权和借用机制虽然优雅且很容易理解,但它和我们所熟知的编程范式大为不同,让程序员无法随心所欲写出错误的代码,再加上 Rust 有意地在编译时就把这些错误暴露给开发者,使得 Rust 初期的学习曲线变得非常陡峭...既然提到了 async/await,容我再多说一句,我认为 Rust 在 async/await 的零成本抽象上带给整个编程语言世界的影响是巨大而长远的,它就像那个打破了「四分钟一英里」魔咒的 Roger...」访问是独占的 编译器并不强迫你遵循这些规范,所以,一个不理解并发安全的程序员很可能写出编译通过但导致 race condition 的代码。...只不过,Rust 把这些规则变得更明确,并且在编译器里强制执行。如果开发者的代码违反了任何一条规则,代码将无法编译通过。 这成为 Rust 带给开发者极大痛苦的一个根源。...默认情况下,闭包中使用的闭包外的值使用了引用,但当这个闭包是在另一个线程运行时,我们需要显式移动所有权,否则,会出现借用的生存期超过所有者的生存期的编译错误。

    87470

    C 与 C++ 40 年的爱恨情仇

    在这种历史背景下,在C语言的基础上开发C++也是有道理的。 40年后,C和C++都在行业中得到了广泛使用。...在C看来,这些惯用写法可能问题不大,但在C++中可不行。C++具有更强大的类型系统,不幸的是,C的惯用写法在这个类型系统中凿了一个洞,因此实现C的兼容性需要在安全性方面付出代价。...在C++20中,指定的初始化器就受到了C的启发,但采取了略微不同的规则,因为如果完全一样的话就不符合C++的初始化规则。 对于这个问题,我也有责任。C有VLA。...如果当时我在,我一定会反对在标准C++中采用它,因为它导致了太多安全性问题。我也会坚决反对将_Generic添加到C++中的提议。...两种语言的设计支柱可能都不协调。我会努力建议提供一个模板。但是首先我得吐槽C语言没有模块、没有命名空间,以及整个宏是什么玩意儿。 也许可以将C++能接受的C子集约束在C99上?

    27720
    领券