软件开发
-
为什么我反对自上而下的全局优化?工程团队资源配置的另一种思路
在写完《保持打造高效团队的势头》之后,不少人提出了同一个后续问题: “如果一个团队已经偿还了大部分技术债务,那么团队里看起来多出来的人,是否应该转移到其他更缺人的团队?” 这个问题很合理。毕竟,如果某个团队剩余的技术债务已经很少,而当前优先级又没有那么多,那么从全局看,它似乎已经人员过剩。假如这种情…
-
如何持续建设高效工程团队?从团队状态到资源投入的管理方法
一位朋友在过去六个月里一直负责支持一个约 60 人的工程组织。毫不意外,组织里的大多数团队都觉得自己严重缺人。于是问题来了:招聘名额应该平均分配给所有缺人的团队,还是集中投入到一两个团队,直到它们的人员需求得到充分满足? 这是一个很好的问题,因为它抓住了工程团队管理中最具挑战性的部分之一:如何在有限…
-
工程领导力成长路径:从新晋工程经理到技术管理者
我最初开始做工程管理时,几乎是在一片空白中摸索前进。很快,我就成了一家艰难求生的创业公司里唯一的工程经理,所有事情都只能边做边学。 那时的我并不是一位好管理者。回头看,我很感谢那些在那段时间里包容我的同事。当时,我没有系统化的管理方法,没有清晰的职业发展规划,也没有成体系的指导机制,只能凭感觉一步步…
-
为什么硅谷型公司更懂软件工程师?自主权、业务意识与研发效能的差异
我曾在多种类型的科技相关公司工作过:从传统科技公司、咨询公司,到投资银行,再到高速增长的科技公司。我也和许多软件工程师交流过,他们分别来自初创公司、银行、汽车公司、大型科技公司,以及其他更传统的企业。这些公司有的位于硅谷,有的总部则在硅谷之外。 我注意到,硅谷型公司往往真正理解了一些传统公司没有理解…
-
单元测试有什么好处?从代码验证到重构保障的收益金字塔
我曾多次因为单元测试而获得“原来如此”的顿悟,也曾因为缺少单元测试而吃过不少苦头。 我的亲身经历告诉我,自动化测试,尤其是单元测试,对于团队快速迭代、提升代码质量和高效成长至关重要。难怪我曾工作过的几家快速发展的科技公司,都会在公司范围内广泛采用这类实践,包括某海外出行平台、某海外大型软件公司中频繁…
-
大型科技公司的内部系统有哪些?软件工程师需要了解的研发工具与管理平台
某海外大型科技公司拥有大量内部系统。对于软件工程师和工程经理来说,了解这些内部系统、研发工具和工程管理平台,有助于更快理解大型技术组织的研发流程、协作方式和交付机制。 当你以软件开发工程师(SDE)或软件开发经理(SDM)的身份加入这类公司时,需要学习并使用一套高度定制化的内部技术栈。这套技术栈与外…
-
软件迁移怎么做?常见系统迁移类型与成功迁移方法
软件迁移是软件工程中最容易被忽视的话题之一,尤其是在高速发展的初创公司和大型企业中。 随着业务增长,公司往往需要采用新的系统和方法,以承载更高的负载、支持更多使用场景,或满足更多约束条件。于是,工程师有时就必须把旧系统或旧方法迁移到新系统或新方法上。这类系统迁移可能涉及服务替换、代码迁移、数据迁移、…
-
产品模式优于项目模式:为什么产品型团队更适合软件研发
软件项目,是当前软件开发中最常见的资金投入和组织方式之一。它通常根据商业论证中预估的收益获得资金支持,并以临时团队的形式组织工作。这些团队往往只负责开发,项目结束后便随之解散。 与之不同,产品模式采用长期稳定的产品型团队。这类团队负责从构思、开发到运行的完整过程,并持续围绕某一业务问题或业务能力开展…
-
技术债务是什么?如何治理技术债务并找到务实的中间立场
从一无所知,到否认它的存在;从接受它不可避免,到开始极力抗拒;最终,走向一种务实的中间立场。这大概是许多工程师在面对技术债务时都会经历的一条典型路径。 技术债务是软件开发中绕不开的问题。人们很容易想直接跳到结论:如何消除技术债务,以及如何避免技术债务。但如果跳过中间的认知过程,就很难真正理解最终立场…
-
高质量软件值得投入成本吗?为什么代码质量能降低软件开发成本
在软件开发项目中,人们经常会争论一个问题:时间究竟应该花在提升软件质量和代码质量上,还是应该用来发布更多有价值的功能?现实中,交付功能的压力往往占据上风。于是,许多开发者会抱怨:他们根本没有时间关注架构、内部质量和代码质量。 有一条著名的“贝特里奇标题定律”说:任何以问号结尾的标题,通常都可以用“否…