程序员成长秘籍:是迈向管理巅峰,还是深耕技术架构?
专业在线打字练习平台-巧手打字通,只输出有价值的知识。
一 管理和架构
做技术的同学一般有两条职业发展路径,横向的管理路线和纵向的技术路线。管理路线对应的是管理岗,讲究的是排兵布阵,通过各种资源的优化配置发挥价值。技术路线对应的是技术带头人,讲究的是技术专业度,通过前瞻性的视角和丰富的知识来解决业务痛点。
关于个人成长路线,是选择管理路线,还是选择技术路线,有些误区有必要跟大家澄清一下。
误区一:我性格内向,管理需要和人打交道,所以我选择走技术路线;
在面临着人生重大选择的时候,我们是需要留出足够的时间来做决策的,而不是简单地几条信息判断甚至凭直觉来快速给出结论。这个问题如果你体验不深的话,我举个类似的例子,高中文理分科的选择与此很相似,我厌恶背诵,语文,政治,历史…,我选理科!选择的结果回过头来看,相信大家都有自己的感知。
这里面有几个逻辑需要我们梳理明白,内向和管理是互斥的吗?内向和技术是相容的吗?
不建议把复杂的问题这么简单地的去理解。我们至少需要做这么几件事:
-
把内向的定义,优势,劣势了解清楚;
-
把管理的目的,内容,考核指标了解清楚;
-
结合自己的实际情况进行相关性匹配,输出一个基本结论;
-
基于结论,进行验证,试错,调整,再出发;
正如我们进行软件开发中,真正的编码时间约占整个产品交付过程的25%左右,前期的可行性调研和需求设计阶段占用的时间却能到达40%,而后者是不能偷懒的步骤,是一样的道理。
误区二:我对技术提不起兴趣,所以我选管理路线;
这个问题乍一看,不和上面的问题是一样嘛,怎么反过来问就成了另一个误区。我再抛另外两个问题,就能感受到他们的区别了:
-
兴趣是如何产生的?
-
因为兴趣所以擅长,还是因为擅长所以热爱?
问题的答案不重要,重要的是自己要有一套解决问题的逻辑,也就是算法里面的训练模型,模型训练得越好,在以后的决策中,效率和准确度就会越来越高。
关于技术的路线的选择,不给自己设限,有机会可以去做管理,没机会就在技术上挖一挖,说不定去年还在做架构,今年就做管理了呢?
二 架构角色
架构师是一种角色,承担这一角色的人可以是研发,团队负责人,也可以是单独的实体岗位,具体是哪种形式,取决于公司的组织架构和发展阶段。
-
起初团队规模比较小,一个小组的规模,业务闭环,组织扁平化,这个时候的架构师角色一般就是由主力研发担任就可以了;
-
随着业务规模的扩大,这个时候小组已经发展成部门了,组织存在层级了,此时由各个小组的负责人担任架构师角色比较合适,此时业务边界划分相对比较清晰,设计和人力分配统一规划,往往效率比较高;
-
如果上升到集团层面后,这个时候的组织架构往往是矩阵型的,演变变得更加复杂了,一个产品的规划,往往牵扯到多个部门,这个时候一般就需要设立实体的架构师岗位了;
组织层次不同,承担架构师角色的岗位有所区别,架构师工作的重心也会有所侧重,整体是按照系统架构->业务架构->顶层架构的方向逐步偏移的。
举个场景示例:我们需要架构师角色,但一个中等规模团队需要设立独立的架构师岗位吗?
康威定律告诉我们:“设计系统的架构受制于产生这些设计的组织的沟通结构。”除了组织结构外,业务复杂度,行业迭代频率,团队技术储备等各个方面都会实际影响架构师角色的定位。
-
从组织结构上考虑,一个扁平化的闭环团队,不存在很厚的部门墙,其业务协作成本往往是比较高效的,对于岗位的感受度就没有那么高。相反,如果团队部门层次比较深,协作成本比较高的情况,就需要有人来横向推动和落实技术方案。
-
从业务复杂度和行业迭代频率来考虑,如果顶层架构相对成熟,不经常变动,那么这个岗位对应的职责可以由团队leader或业务架构师同时承担。相反,就需要专人花费比较大的精力来做顶层设计了。
一个相反的例子,如果一个团队组织比较简单,业务也相对成熟,团队技术能力比较高的情况下,配备专职的架构师岗位会出现什么问题吗?
在这个岗位上人会比较尴尬。这是因为做顶层架构的人需要有全局而不是某个单一业务视角,其组织结构一般是平行于业务组织。这会导致平常他很难下沉到某个单一业务线里面去,如果顶层架构又长期处于稳定状态,如此一来他的工作产出就很难固定和量化,最终往往会负责横向技术效率提升或者直接下沉到主业务线中去了。
总结一下,架构师岗位不是设计出来的,而是根据团队痛点,分工演化出来的。随着组织成熟度,业务发展阶段等环境的变化,架构师的职责重点也会随之做出调整,以适应当前组织的需要。
三 技术专业度
有些行业是越老越吃香,比如医生,教授,画家,其原因不仅仅是经验的积累,更为重要的是持之以恒的专业灵敏度和创新应变能力,使其能够在需要做出重大决策的时候,给出正确的方向。重要的决策,方向上的错误往往是最大的成本。
面对一个病症,医生的一个决策可能会决定着一个人的生死。
面对一个技术选择,努力方向往往决定着最终成败,就像柯达的传统成像技术被数字成像技术的颠覆。
能够描摹出蒙娜丽莎的微笑的人很多,但能达到达芬奇艺术高度的确寥寥无几。
总之,能够通过培训学到的技能终将会被替代,要么是培训班,要么是机器。保持个人能力的稀缺性就显得尤为重要,持之以恒的投入是保持这种稀缺性的原动力。岗位可以被替换,但能力却不能。
四 总结
本文回答了技术小伙伴们特别关心的职业发展路径选择问题,关键点是别给自己设限,因为路是走出来的,不是光靠想就能想出来的。接着,我们澄清了一些职业发展上常见的误区,并教大家如何学会思考和解决问题的根本方法。最后,还给出了如何保持自己在行业中的竞争力的建议,提醒大家别只顾着埋头苦干,也要记得抬头看看前方的路。
相关文章:

程序员成长秘籍:是迈向管理巅峰,还是深耕技术架构?
专业在线打字练习平台-巧手打字通,只输出有价值的知识。 一 管理和架构 做技术的同学一般有两条职业发展路径,横向的管理路线和纵向的技术路线。管理路线对应的是管理岗,讲究的是排兵布阵,通过各种资源的优化配置发挥价值。技术路…...
xargs的参数及常用命令
1. xargs 命令简介 xargs 是一个非常有用的工具,它用于从标准输入(stdin)构建和执行命令行。xargs 可以将标准输入中以空格或换行符分隔的数据,转化为命令的参数传递给其他命令。 使用场景: 当某些命令不支持使用管…...
FLASK 数据库建立以及部署和表的创建
首先安装flask-sqlalchemy db SQLAlchemy(app) 一 Mmeber、User模型类的创建 # coding: utf-8 from app import db, appclass Member(db.Model):__tablename__ memberid db.Column(db.Integer, primary_keyTrue)membername db.Column(db.String(100), uniqueTrue, index…...
微信小程序的面试题
简述下 wx.navigateTo(), wx.redirectTo(), wx.switchTab(), wx.navigateBack(), wx.reLaunch() 区别 ? wx.navigateTo() : 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面 wx.redirectTo() : 关闭当前页面,跳转到应用内的…...
udp c语言实现组播的例子
一、组播与广播的区别 1、组播地址和广播地址是不同的概念 组播地址:用于将数据包发送到一组特定的接收者,只有加入该组播地址的设备才能接收数据。它提高了网络效率,因为发送者只需发送一份数据。 广播地址:用于将数据包发送到…...
ffmpeg面向对象——AVInputFormat与URLProtocol啥关系
《ffmpeg面向对象-rtsp拉流相关对象》和《ffmpeg面向对象——拉流协议匹配机制探索》探索过了输入格式匹配和底层协议匹配,且ffmpeg拉流是先是匹配输入格式——抽象为AVInputFormat类,然后再匹配url协议类——抽象为URLProtocol类。 它们是啥关系&#…...

【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解
高阶数据结构相关知识点可以通过点击以下链接进行学习一起加油!二叉搜索树 大家好,这里是店小二!今天我们将深入探讨高阶数据结构中的AVL树。AVL树是一种自平衡的二叉搜索树,可以看作是对传统二叉搜索树的优化版本。如果你对数据结…...

中级软考软件设计师真题+模拟题+课件讲解+机考讲解模拟+笔记分享
软考真题分享 下载链接⬇️⬇️: 下载链接...

MySQL—视图
前言: 视图是一个虚拟的表,是基于一个或多个基本表或其他视图的查询结果集。视图本身不占据物理储存空间,仅仅只是一个查询的逻辑表示,物理上依赖于数据表的数据。 视图具有简单,安全,逻辑数据独立&#…...

鸿蒙OS启动流程
启动流程(基于openharmony4.1) 系统上电加载内核后,按照以下流程完成系统各个服务和应用的启动: 内核加载init进程,一般在bootloader启动内核时通过设置内核的cmdline来指定init的位置。init进程启动后,会挂载tmpfs,…...

服务器数据恢复—EMC存储RAID5磁盘阵列数据恢复案例
服务器数据恢复环境: 一台EMC某型号存储设备,该存储中有一组由12块(包括2块热备盘)STAT硬盘组建的raid5阵列。 服务器故障: 该存储在运行过程中突然崩溃,raid瘫痪。数据恢复工程师到达现场对故障存储设备进…...
使用 `netcat`(nc)工具进行TCP数据发送和接收
Netcat(通常缩写为nc)是一个功能强大的网络工具,常被称为“瑞士军刀”的网络工具。它用于在网络上进行各种操作,比如读写网络连接、调试和分析网络服务等。以下是关于Netcat的一些详细介绍: ### 主要功能 1. **TCP/U…...
Linux虚拟化技术嬗变综述
在信息技术飞速发展的今天,虚拟化技术已经成为数据中心、云计算和企业IT基础设施中不可或缺的一部分。Linux操作系统作为开源和灵活的代表,在虚拟化技术的发展中扮演了重要角色。本文将综述Linux虚拟化技术的演变,探讨其优势、应用场景&#…...

.NET 通过C#设置Excel工作表的页面设置
Excel文件数据准备就绪并需要以报告形式呈现时,调整Excel文件的页面设置变得尤为重要,不仅关乎文档的专业外观,还直接影响到打印或电子分享时的可读性和实用性。通过C#来自动化这一过程,不仅可以节省大量手动配置的时间࿰…...

Excel日期导入数据库变为数字怎么办
在Excel导入到数据库的过程中,经常会碰到Excel里面的日期数据,导进去过后变成了数字。 如下图: 使用navicate等数据库编辑器导入数据库后: 原因分析:这是因为日期和时间在excel中都是以数字形式存储的,这个…...

SSL---SSL certificate problem
0 Preface/Foreword 0.1 SSL certificate problem 开发过程中,gitlab-runner连接gitlab时候出现SSL 证书问题。 场景:公司的gitlab runner服务器引入了SSL证书,每年都会主动更新一次。当前的gitlab-runner运行在PC机器上,但是g…...

linux tar 打包文件去掉文件所在路径
一、准备目录 /root/tmp/images /root/tmp/images2 执行命令打包目录/root/tmp/images 到 /root/tmp/images.tar.gz 再解压到/root/tmp/images2 cd /root/tmp/images && tar -cvzf images.tar.gz * && mv images.tar.gz /root/tmp/ tar -C /root/tmp/image…...

MQ快速入门【详细】个人笔记 讲解通俗易懂
1.同步通讯和异步通讯 同步通讯:如果举个例子来说,同步通讯就像是两个人在打电话,一方说的话,能够立马传给另一方,消息的时效性非常高,但是相对的,只能是给一个人通讯,如果这个时候&…...

react实现实时计时的最简方式
js中时间的处理,不借助于moment/dayjs这样的工具库,原生获取格式化的时间,最简单的实现方式可以参考下面这样。 实现效果 代码实现 封装hooks import { useState, useEffect } from "react";export function useCountTime() {c…...
时尚的社会心理机制:求同和树异这对互为矛盾的心理动机,使得人们在社会生活中互相模仿、互相追逐、互相竞争,使得时尚的钟摆永不停息。
文章目录 引言I 时尚时尚的社会心理机制时尚的分类时尚的特点时尚的表现形式II 术语时装周服饰引言 时尚(fad)又称流行,它指在一定时期内社会上或一个群体中普遍流行的,并为大多数所仿效的生活方式或行为模式。 人的心理动机常常是互相矛盾的,既要求同于人,又要求异于人。…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...