技术型创始人如何实现角色转型?

2023-11-02 12:40

本文主要是介绍技术型创始人如何实现角色转型?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

技术型创始人如何实现角色转型?

来源 | 宽带资本(bjkazb)
原文 | Gusto

技术出身的创始人可能会面临「技术」与「管理」的博弈。时间精力有限,往往顾此失彼,很难两全。在这场博弈中,如何选择才是对的?

本文来自Gusto的联合创始人兼CTO——Edward Kim。

6年前开始创业,三个合伙人中他是唯一的工程师,几乎100%的时间都在写代码。随着工程师队伍日益庞大,他对代码的沉迷反而成了团队的负累。

本期CBC热读探讨的主题——CTO如何成为好的管理者。以下是Edward的经验分享。

在Gusto,我会定期留出office hours*,工程师有问题的话都可以找我交流。我时常遇到的一个问题是:作为公司的CTO和联合创始人,你经历了怎样的角色转变?

office hours,类似“答疑时间”的这样一个概念,即某人固定时间待在office里,保证你在这段时间的时候能找到他,跟他交流。

单打独斗:车库里的……呃不对,衣帽间的程序猿

▲ photo credit: Dribbble by Elena Maykhrych

创业刚起步的时候,我在旧金山,另两位联合创始人在帕罗奥多,他俩住在一块儿。当时,我们正在创建第一个原型,我觉得大家非常有必要住在一起(我们那时都是单身)。非常可惜,房子的卧室都住满了,只剩下主卧里一个非常大的步入式衣帽间。

我和每一位房客谈妥后,以每月300美元的价格租下了衣帽间,借了朋友的充气床垫,收拾好行李就住了进去。

虽然号称首席技术官,但这个头衔其实很傻,公司一共三个人,谈不上是什么首席。软件工程师更符合我的角色。

我一门心思钻在复杂的薪资管理系统里,学习ACH系统*如何运行,每天编码12-14个小时,全程戴着耳机——这一切甚得我心。我的会面时间只限于午餐、晚餐和健身的时候。这个阶段公司的目标是什么?搭建薪酬管理的后端系统,让公司内部先用起来。

ACH是Automatic Clearing House的缩写,是一个批量处理、存储和转发的电子支付系统,在美国支付体系中占据重要地位。

2-10个工程师:同一支队伍,同一个梦想

薪酬管理基础系统完成上线(当时仅在加州可用),种子轮融资结束,随后我们搬到了旧金山的一处阁楼公寓。

我每天敲代码的时间从90%降到了60%。其余时间都用来搜寻、面试和熟悉工程师。CTO这个角色的工作内容一直在变,但花时间招聘优秀的人是我坚持做的事(也许会一直做下去)。现在,我30%到40%的时间都用在招人。

一面是选手,一面是教练

几位工程师加入以后,我从团队中唯一的全职开发变成了开发小团队的一员。我依然花大量的时间编程、审查代码、修复漏洞,但偶尔会把耳机摘下来,向大家解释ACH的运行原理,或者打个电话,询问大家是否需要开代码评审会。

只要能帮工程师们高效工作,我非常愿意做一些力所能及的事——比方说,购买配置一台计算机运行我们的CI 工作流( pipelines)。我的日程表上悄然出现了新的任务,一对一谈话,迭代策划,还有每日站立会议*。工程师向我汇报,但大多数时候,我们并没有层级之分,感觉轻松自在,像是朋友一起在房间里写代码。

每日站立会议,每天早上举行的短期会议。该活动起源于敏捷开发方法,在Scrum开发中很常见。日常站立会议一般用时五到十五分钟,有时候指代站立的早晨点名或每日例会。

正是在这个阶段,媒体宣布了我们改名Gusto的消息(原来叫ZenPayrol),整个技术团队非常紧张,大家通宵盯着服务器日志,不断刷新网页,确保我们的Linode服务器能够逃过这次“突发科技新闻”的影响。

11-50个工程师:抱紧代码不松手

公司紧锣密鼓地获得了大量客户,并且完成了A轮融资,此时的工程师团队已经扩充到10多人。协调所有工程师的工作变得更加困难。除了新增人员,还要考虑早期入职的工程师,打造一支组织化的工程师团队势在必行。几位在Gusto工作近两年的老员工开始问我,补偿框架怎么做,Gusto内部职业晋升怎么规划。说实话,对于这些问题,我没能给出清晰完整的答复。

在这个阶段,尽管我们拥有了更大的团队,仍需源源不断地发运功能点,修复漏洞。我对公司的代码库非常了解,所以一旦发现问题,或者要发运某个功能点,我就迫不及待想开始干活。大多数情况下,我正是这么做的。

纽约之行

2015年,我意识到自己应该远离编程,花更多的时间学习成为一个好的管理者。为了履行承诺,我决定飞往纽约,在酒店房间里待够三天,读一些大家强推的管理类书籍。在去程航班上,我开始编写一个新的薪酬支付功能点——毕竟,一旦到了纽约,我就有整整三天时间专心阅读。朋友,我这么做没毛病吧?但当我降落时,想把功能点完整做完的念头简直克制不住。三天终于结束了,我只读了一小部分书,为管理事业奉献时间的目标就这么惨败了。

一天的时间有限,员工管理(在Gusto,我们称之为“员工赋权”)和个人贡献很难两全。作为一个编程痴迷者,我当然更愿意完成后者,员工管理屈居第二。对我来说,一切和代码有关的事情总是难以抗拒。如果不能有我自己的成果产出,我会深感内疚,这是最重要的原因。

我确实抽空在学员工管理,但我付出的时间不足以把它做到和我的代码质量一样好。我的团队因此有些不稳定,我不愿放弃写代码,这对团队来说可能是个麻烦。

A还是B,你必须选一个

在这个问题上,我认为技术型的联合创始人有两个选择:留在技术这条路,并雇用一名职业管理人员(职称一般是工程副总裁),或者放弃编程,专注于管理。真的不可能同时把两件事都做好。

我决定集中精力发展Gusto的工程师团队,放弃写代码。我桌上的技术类书籍开始被Mindset(C位君:我们有推荐过哦)、High Output Management和The Score Takes Care of Itself取代——这仍然是我现在最喜欢的三本书。

Mindset帮助我为未来的个人旅程做好思维准备,High Output Management让我学到了团队管理背后的具体流程,The Score Takes Care of Itself教我如何突破管理,做一个具有感染力的领导者。

我经历了一段非常艰难的过渡期,在此期间,我不仅要学习和应用管理学知识,还要抵制代码的诱惑,但为了有效地组织工程师团队,这是必要的。

51-100个工程师:接纳一个全新的我

当我们的工程师人数达到50人左右时,出于对直属下级的负责,我会花60%的时间尽力把管理者的角色做到最好,也培训工程师团队的几位主管这样做。其余40%时间我用于招聘。

我对人员管理的职责了解越深,就越乐在其中。改善工程师入职手续,管理绩效,建构多元化和包容性氛围,树立企业文化,调整管理风格,制定流程以平衡技术债务等大项目,这些都值得花时间好好经营。我唯一的编程机会是在我们的半年度黑客马拉松(hackathon)*。

在黑客马拉松上,参与者需要在几十个小时里开发出一款插件,现场休息,做完当场交作品。参与黑客马拉松的,除了热衷钻研技术的软件工程师,还有来自风投公司的团队。

热爱我的新角色

我现在做的事并非都让人愉快。整天参加会议仍然很糟糕,艰难的商业对话永远不会有趣。但是,我开始发自内心地接纳我在公司的新角色。比如,为了将更多薪酬支付产品的代码所有权转移到丹佛,我花了几周时间和人斡旋商讨。一些会议非常漫长难捱,但功夫不负有心人,我们现在拥有了一支快速发展的丹佛工程师团队,我为此感到非常自豪。

我更享受帮助别人解决问题,而不是为我自己操劳。有时候,你只有在一段时间后才能发现这一点,所以用更长远的视角看待事物,回馈你的是一种满足感 。

100-250个工程师

接下来要怎么走?我们的工程师团队将跟随发展节奏进一步扩大,同时还要保持与过去相当的质量水平。这意味着,招聘、培养和留住人才仍是我最重要的职责。我很自豪能为大家营造一个多样化、充满活力的环境,使我们都能以最佳状态投入工作。如果说有什么经验是我从快速发展的创业公司那里学到的,那就是「变化即常态」——万分期待我们的未来。
这里写图片描述

这篇关于技术型创始人如何实现角色转型?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/330668

相关文章

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、