首页
学习
活动
专区
工具
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 启用竞争检测器后,编译器将记录在代码访问内存时间和方式

2K10

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

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

94640

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

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

42130

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

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

52720

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

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

68220

如何编排你异步任务并发数量,Webpack5到了答案

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

1.2K20

软件工程师生涯犯下七个错误

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

56810

对话邓小铁:首届IJTCS到了中国计算理论成长

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

80530

很开心,使用mybatis过程踩到一个坑。

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

1.6K10

很开心,使用mybatis过程踩到一个坑。

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

1K10

inline: 理解还停留在20年前

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

26710

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

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

35053

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

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

1.4K20

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

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

1.4K20

Java 学习笔记(1)——java基础语法

后来学到web编程,自己搭建环境总是报错,而且还是jar包错误。从这个时候起,对java就没什么好感。...java强制使用面向对应,一切都定义,但是程序必须要一个入口函数。根据java逻辑,这个main函数也定义到类。但是如果定义成普通函数的话行不行呢。...基于这几点理由,开发出了Java,Java脱胎于C++,但是砍掉了C++复杂指针和多继承内容,现在看来应该是一个比较正确决定。...int,最后进行结果赋值时候将int赋值为short会发生错误。...C/C++如果你写上面的一段代码,release版本,你看不到类似 mov eax, 5 add eax, 10 mov n, eax 这样机器指令,只看得到 mov n, 15 这里编译器进行了优化

46620

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上?

23920

C语言不是最好,却是最爱~

大多数情况下,你都可以预见到编译结果,即对象在内存表示方式,以及如何通过不同方式理解编译后结果(新版 C 标准这一点变得更困难,这都要怪 C++稍后再详细介绍)。...一方面,C++建立 C 之上,从而得到了极大发展;另一方面,如果 C++没有 C 遗留下来大多数功能的话,情况可能会更好(当然,C++曾设法通过淘汰方式逐步放弃某些 C 功能,但对于旧功能支持仍然存在...虽然也没有遵循标准开发程序,但是很确定 C99 及其后版本令人讨厌诸多功能皆来自那些编译器开发人员。他们只从 C++角度出发考虑,而且还将这些功能强加给了 C,还美其名曰简化编译器。...例如,无法使用两个不同类型指针同时操作同一块内存区域。无法想象为什么这种行为被禁止,其原因只可能是编译器优化。这样就不可能利用联合体将整数转换成浮点数。...另一方面,C++强烈不满来自其设计上选择,而且这些设计影响了C标准和编译器

10810

为什么十分喜欢C,却很不喜欢C++

大多数情况下,你都可以预见到编译结果,即对象在内存表示方式,以及如何通过不同方式理解编译后结果(新版 C 标准这一点变得更困难,这都要怪 C++稍后再详细介绍)。...最后,觉得 C++出现反而给 C 带来了约束以及不良影响。不是讨论 C/C++,也不是指 C 与 C++共通之处,讨论是耦合对标准和编译器都有不良影响。...一方面,C++建立 C 之上,从而得到了极大发展;另一方面,如果 C++没有 C 遗留下来大多数功能的话,情况可能会更好(当然,C++曾设法通过淘汰方式逐步放弃某些 C 功能,但对于旧功能支持仍然存在...虽然也没有遵循标准开发程序,但是很确定 C99 及其后版本令人讨厌诸多功能皆来自那些编译器开发人员。他们只从 C++角度出发考虑,而且还将这些功能强加给了 C,还美其名曰简化编译器。...例如,无法使用两个不同类型指针同时操作同一块内存区域。无法想象为什么这种行为被禁止,其原因只可能是编译器优化。这样就不可能利用联合体将整数转换成浮点数。

69810
领券