当前位置: 首页 > news >正文

CTO 实际上是在做什么?

https://vadimkravcenko.com/shorts/what-cto-does/ 有刪節

本文旨在为软件工程师解密CTO的角色,并为那些渴望担任这一职位的人提供路线图。

“他们是技术团队与公司其他部门之间的桥梁,确保技术支持并推动业务发展。”

CTO的角色经常被误解。CTO有时是技术主管,有时是将技术与业务目标相结合的战略思考者,有时两者兼具。

什么是CTO?

CTO(首席技术官)是一个领导者、战略家、管理者、远见者、程序员、咖啡爱好者和问题解决者。他们不仅要理解技术,其角色还超越了仅仅理解代码或架构。他们需要理解业务、市场、客户和团队。他们需要做出的决策不仅基于技术可行性,还要考虑对公司战略的有利程度。

在媒体中,CTO常被描绘成技术天才或魔法师,独自编写复杂算法或发明突破性技术。然而,现实往往不那么光鲜。尽管CTO可能是公司技术进步的公众代表,但真正使之成为可能的是他背后的团队。CTO大多数时间都在开会、做决策、管理人员,并处理运营技术团队带来的无数挑战。

我有一个经验法则 — 公司越小,CTO需要处理的人际关系就越少;公司越大,CTO与技术的直接关系就越少。在这个光谱的某些点上 — 要么全是编码,要么全是战略。

在创业公司,CTO可能更偏向于实操,做出关键技术决策,甚至亲自编码。随着公司发展,CTO的角色变得更加以人为本。他们专注于将开发与业务目标保持一致,管理更大的团队,并与投资者/客户沟通,为整个公司的方向做出高层决策。这种演变需要持续学习和适应。

因此,你要么改进和适应,要么遗憾的是,你将无法胜任带领公司迈向下一步的任务。让我们讨论一下在不同阶段你应该期待什么变化。

不同阶段的CTO

在种子轮前期或早期创业阶段,CTO通常是公司的技术主力。他们深度参与技术工作,从编写和审查代码到做出关键架构决策。他们负责构建MVP(最小可行产品)和搭建初始技术基础设施。在这个阶段,CTO的编码技能至关重要。他们还要招聘首批团队成员并建立公司的技术文化。这个阶段的日常任务可能包括编码、调试、代码审查、架构决策、服务器和数据库设置,以及处理客户支持请求。

当公司进入成长阶段,CTO的角色从实操位置转向更多管理职责。他们管理更大的技术团队,这可能涉及建立流程、实施工具,并招聘经理来协助处理日常活动。这个阶段的日常任务可能包括规划冲刺、与其他部门协调、管理团队动态、监督项目交付和确保产品质量。

在成熟或扩张阶段的公司中,CTO的角色主要是战略性的。他们负责制定公司的技术愿景,确保其与业务战略保持一致。他们不直接管理任何人,除了与副总裁级别的直接对话。这涉及建立结构和流程,以确保有效的沟通、协作和决策。这个阶段的日常任务可能包括战略规划、预算管理、监督安全和合规、维护与关键供应商的关系,以及作为公司技术成功/失败的代表。

我想深入探讨每个阶段,讨论在10人、100人和1000人规模公司中的不同职责、挑战和关键技能要求。

10人公司的CTO

如上所述,在这个阶段,CTO经常参与技术工作。他们可能在编写和审查代码、做出关键架构决策、搭建技术基础设施、进行部署,以及为公司的发展设置各种SaaS服务。但这还不是全部 — 他们将对自建还是购买做出决策、选择技术栈、为大客户提供客户支持、与想要与软件构建者对话的更大客户进行销售、与想要见到整个团队的投资者进行融资洽谈。

在这个阶段,CTO还负责招聘首批工程师,这通常涉及大量的亲自指导和辅导,以确保文化保持正确。

典型挑战

  • 挑战:使用有限资源工作。在小型创业公司中,CTO通常必须在非常紧张的预算下工作,只有1-2名额外的工程师;CEO可能会做QA。这可能使快速交付高质量产品变得具有挑战性。
  • 解决方案:CTO必须有效地确定优先级,专注于最关键的功能,并对技术栈和架构做出明智的决策。当你的时间和资源有限时,你必须仔细选择将时间集中在什么上面。一切都需要有高影响力才能生存。

  • 挑战:招聘人才。在竞争激烈的技术就业市场中,吸引顶尖人才可能具有挑战性,特别是对于小型创业公司。
  • 解决方案:CTO需要展示强大的技术文化,并提供学习和成长的机会。你还必须向潜在的应聘者推销公司愿景,因为你无法在薪资和福利方面进行竞争。

关键技能
如果在这个阶段我要推荐一个单一技能,那就是技术专业知识。你需要对正在使用的技术有深入的理解。这是你带来的最大资产。你的创始人将依靠你做出关键的架构决策、为大客户调试代码,并构建MVP。

成长建议:及时了解你的技术栈的最新趋势,构建副项目,观看YouTube课程,参加工程课程。如果你喜欢,参加编码挑战,或为开源项目做贡献。基本上,提高你的技术知识。

100人公司的CTO

随着公司成长,你作为CTO的角色变得更偏向管理。你现在负责构建和管理团队,而不是产品本身 — 这可能涉及建立适当的流程、实施工具以改善信息流动,并招聘经理来处理日常问题。

在这个阶段,CTO必须确保技术战略与公司需求保持一致。这可能涉及关于长期投资本地化迁移或重构应用程序部分以减少技术债务的决策。此外,合规性成为一个重大话题;由于你不再只是在玩原型,你正在获得越来越多的严肃客户。

在这个阶段,希望通过所有正确的招聘,你已经培养了强大的技术文化,并确保技术团队与公司价值观保持一致。

典型挑战

  • 挑战:扩展开发团队的效率并与技术债务作斗争。
  • 解决方案:是时候为各种事情实施明确定义的流程了 — 部署、代码审查、代码格式化、一对一会议、本地开发等。这也是开始将基础设施视为一等公民并建立适当的管道和CI/CD的好时机,以确保功能能像以前一样快速交付,并考虑到安全性。

  • 挑战:平衡管理和技术工作。在这一点上,你可能开始手头事情太多,两边都在拉你解决他们的问题。现在是开始将工作委派给其他人的好时机。否则,你可能会发现很难平衡作为CTO的高影响力职责和你仍然喜欢做的低影响力任务,例如,摆弄Kubernetes。
  • 解决方案:CTO需要有效地委派,可能需要为不同的角色招聘人员来处理占用太多时间的低影响力任务。

关键技能
这里最重要的单一技能是 — 人员管理。你基本上是在公司周围创建一个系统,让人们来做你以前独自做的事情,而且做得更好。

成长建议:参加领导力/管理/沟通课程。寻求团队的反馈,并保持开放学习和改进的态度。练习积极倾听和同理心交流。

1000人公司的CTO

现在你进入了大企业联盟。我从未担任过1000人公司的CTO,所以这是基于我与不同人的交谈、读书,以及根据我感觉事情发展的方向所做的推断。这里的角色主要是战略性的。你负责制定公司的技术愿景,并确保它与业务战略保持一致。

纯粹的前瞻性思维 - 我们如何在未来十年作为一家公司蓬勃发展,而不是运营性的 - 我们如何改进产品?在这一点上,你应该有比你更有能力的人来思考运营事务。

在这个阶段,你所做的一切都是从公司各个方面收集信息,将其与外部技术进步的信息相结合,并与其他C级高管一起设定公司发展方向。

你还必须管理与关键利益相关者的关系,包括董事会、投资者、重要客户和合作伙伴。别忘了参加大型活动与其他CTO会面,看看是否有潜在的协同增长机会,并讨论收购事宜。

典型挑战

  • 挑战:管理地理位置分散的大型团队。在大公司中,CTO需要确保技术团队的有效沟通和协作。
  • 解决方案:CTO需要确保(不是说他应该自己做)存在适当的结构和流程以实现有效沟通。例如,清晰的报告线路、明确的团队间依赖关系和沟通系统。甚至可以尝试自组织团队的Holacracy管理模式。

  • 挑战:在快速发展的技术环境中保持竞争力。在大公司中,CTO必须确保公司有效利用技术保持竞争力。
  • 解决方案:CTO需要在团队中培养创新文化。他们还需要对技术投资和合作伙伴关系做出明智的决定,例如微软与OpenAI的合作。

关键技能
你需要具备的一项技能是 — 战略思维/长期思维。在大公司中,CTO需要能够为未来五年制定清晰的技术愿景和战略,做出关于技术投资的高层决策,并确保技术战略支持公司的业务目标。

成长建议:我不知道;我还没到那个程度,但有很多关于商业战略的书籍可以学习,也有CEO教练可以帮助你转变思维范式。所以建议是通过参与复杂的长期项目来练习战略思维,并向经验丰富的技术领导者寻求指导。但这些建议要持保留态度。我也在学习中。

我的一天是怎样的?
我想给你一个具体的例子,说明如果你选择CTO这条道路,你的生活可能是什么样子。在我的生活中,没有两天是完全相同的。我目前的角色是技术、管理和战略职责的混合,我的日常任务会根据项目的需求而广泛变化。我希望这个日常生活的一瞥能提供一些清晰的认识。

早晨
我7:30起床。我不会去晨跑,而且我并没有充满动力,因为我已经查看了手机,有几十个通知。完美。我只想洗个澡然后去办公室。

你可能认为一旦我到了办公室,我就会享受日出,喝着热咖啡,想着自己有多棒。不是的。我的早晨很忙碌,我总是从查看邮件和Slack消息开始一天,检查是否有任何紧急事项。通常每天早上都有大约15条消息等着我 — 包括团队更新、人力资源备忘录、开发问题和客户邮件。

喝完咖啡后,我有时会参加一些重要项目的站会,确保我们在正轨上。我们讨论进展,解决任何问题或阻碍,看看我是否能以某种方式帮助他们 — 大多数情况下这意味着我要写一些邮件并安排一些会议来加快进度。

我在一天的第一部分处理最高优先级的任务。其中一些包括 — 作为第二双眼睛审查PR(我仍然喜欢做这个),与其中一个团队做出架构决策,查看我们的DevOps或为新客户制定提案。作为一个仍然参与实操的CTO,我可能会花费早上相当大的一部分时间做技术工作。

下午
午餐后,我参加一些会议。这可能包括客户演示、供应商会议,或关于战略、预算分配或资源规划的内部会议。即使我还在参与实操,我仍然参与很多关于公司方向的高层决策,所以这些会议是我一天中的重要部分。

之后,我可能会进行项目估算工作。我们与高级开发人员一起估算新软件项目的范围和成本。这涉及理解客户需求、评估技术要求,以及评估所需的时间和资源(以及我们是否拥有所需的资源)。

如前所述,我们同时有多个产品在开发中,我通常在Slack上很活跃,所以我会在一天中查看Slack,确保每个人都从我这里得到他们需要的一切,没有人被阻塞。

晚上/在家
我在家完成当天的工作,检查待办事项清单看看我完成了什么,并发送邮件安排接下来几天/几周的会议。尽可能回复更多的人。我试图在一天结束时做到零未回复邮件,但经验表明 — 总是有比你一天能处理的更多的工作。

在完成主要职责后,我会阅读一些HackerNews文章,听一些技术播客,构思下一期通讯的主题,并写几段文字。

基本上就是这样。这严重依赖于具体项目、截止日期和可能出现的问题。我试图保持灵活,在日常工作中仍然扮演多个角色,我希望确保我们在技术工作上取得进展,并在流程、资源和项目方面使公司变得更有效率。

完成工作后,我会读一些奇幻小说,去散步,和朋友一起出去玩。最终我会躺在床上,好好睡一觉,第二天带着不同的问题集重复相同的模式。激动人心!

值得吗,还是应该继续做软件工程师?

这是个大问题,没有简单的答案。从软件工程师转型到CTO的决定主要取决于你的职业目标、兴趣和技能。我们都是不同的苹果。

作为软件工程师,你深度参与技术方面。你在编码、调试和部署。你在解决复杂问题,并在你构建的产品中看到工作的直接成果。如果你热爱动手的技术工作,更喜欢专注于编码和技术问题解决,那么继续做软件工程师可能是你的正确选择 — 而且,这种情况下与人的互动要少得多。

另一方面,作为CTO,你的角色更多关于管理和战略。你要管理一切 — 资源、人员、计划、供应商、合作伙伴、客户。你是推动大规模事务发生的驱动力之一。你较少参与实际编码工作,更多地是在管理那些编写代码的软件工程师。如果你享受领导工作,喜欢成为榜样,并且热衷于在公司层面解决问题,转型成为CTO可能是一个正确的选择。

在领导岗位上你能产生的影响是惊人的,完全不能与软件工程相提并论。你不仅仅在影响单个项目或产品,而是在影响整个公司的技术方向。你可以塑造公司的技术文化,推动创新,并对公司的成功产生重大影响。CTO的角色也可以成为通往其他领导职位的跳板,比如CEO,特别是如果你对经营企业感兴趣的话。

然而,从程序员转变为CTO意味着需要培养新的技能(人际交往技能)并承担新的责任(很多很多责任!)。这可能具有挑战性,可能会让你走出舒适区。但它也可能带来回报,并提供新的成长和学习机会。

所以,选择权在你。


http://www.mrgr.cn/news/78415.html

相关文章:

  • 构建一个去中心化的零售生态参与者的商业模型
  • 探索光耦:光耦安全标准解读——确保设备隔离与安全的重要规范
  • 2024年11月27日Github流行趋势
  • flink学习(9)——time+water mark
  • 华为鸿蒙内核成为HarmonyOS NEXT流畅安全新基座
  • thread_id_key != 0x7777(`fibers` 包与 Node.js 16 及以上版本存在兼容性问题)
  • LLamafactory API部署与使用异步方式 API 调用优化大模型推理效率
  • 矩阵重新排列——sort函数
  • 使用ENSP实现默认路由
  • 蓝桥杯c++算法秒杀【6】之动态规划【上】(数字三角形、砝码称重(背包问题)、括号序列、组合数问题:::非常典型的必刷例题!!!)
  • 鸿蒙NEXT元服务:利用App Linking实现无缝跳转与二维码拉起
  • 【Leetcode Top 100】48. 旋转图像
  • 微信小程序按字母顺序渲染城市 功能实现详细讲解
  • ThingsBoard规则链节点:GCP Pub/Sub 节点详解
  • 技术文档的规划布局:构建清晰的知识蓝图
  • 【Leetcode 每日一题】632. 最小区间
  • Springboot整合分布式任务调度平台XXL-Job实现定时任务
  • 更优雅的 yolo v11 标注工具 AutoLabel Conda环境直接识别训练
  • PGSQL学习笔记 -- 从入门到放弃
  • 使用Spring Data MongoDB中的MongoTemplate实现分组查询最新的数据
  • 前端应用界面的展示与优化(记录)
  • C++学习日记---第14天(蓝桥杯备赛)
  • 什么是代理,nodenginx前端代理详解
  • vue修改el-table-column上下margin外边距调整行间距方法教程
  • 在Ubuntu2004中搭建基于ESP-IDF v5.1的ESP32-S3开发环境
  • MySQL篇