如何才能从程序员到架构师?
1 引言
小团队一般 10 人左右,其中常常是技术最牛的人做架构师(或TL)。所以,架构师在广大码农中的占比大概平均不到 10%。而架构师也可以分为初级、中级、高级三档,江湖上真正高水平的软件架构师就更少了。
所以,大部分(超过九成的)码农干上许多年,还是做不了架构师,这是什么原因造成的呢?
2 说个阿里高级研究员
章文嵩,滴滴出行高级副总裁,CCF杰出工程师,成名作LVS。
LVS项目里,章文嵩是程序员,也是架构师。
LVS第一版章文嵩花两星期完成,根据首批用户反馈,这个demo“集配置简单、稳定可靠、[可扩展性]于一体”。这环节是程序员最擅长:明确做什么,怎么做,再埋头做出来。
虽“配置简单、稳定可靠、可扩展”已可过滤相当比例程序员,但真正体现架构师综合素质,是在这两星期之前、之后。
3 两星期前
发现LocalDirector太贵,需几万美元,即:
3.1 基于对痛点和需求的理解,决定做什么是有价值的
项目里需要做什么事情绝不仅是PM决定,架构师要有自己判断。架构师本身就是要在需求和技术之间trade off,一门心思搞技术很难成优秀架构师。
判断达到LocalDirector类似的效果并不难,即:
3.2 对所能取得的预期效果和投入成本,有准确判断
基于对底层机制的深刻理解,对关键技术路径和关键技术问题有准确的判断。不少项目最终没有达到预期,架构师能力不达标是主要原因。Meta倾全公司之力打造的元宇宙平台Horizon在很长一段时间内只有半个身子,现在想来依然搞笑。
LVS技术方案受Berkeley MagicRouter论文启发,即:
3.3 良好技术视野
这不是做出正确技术选型的必要条件,但帮助无疑是巨大的。对于程序来说更多是How, 但对于架构师而言What和Why更加重要。另外能google就不要baidu。
决定基于Linux开发,这是
3.4 对技术发展趋势的判断
将近30年前,Linux远没有如今服务器领域的霸主地位,选择基于Linux开发并促成LVS进入Linux内核是远见的。又比如七八年前,在K8s/Mesos/Swarm调度系统三国大战中押注K8s的架构师也是有远见的。对趋势的判断,会直接影响团队的产出甚至是项目的成败。
4 两星期后
在Linux Kernel邮件列表里广而告之。每天会收到很多邮件,有的是用户使用心得,有的是用户的修改建议,好的建议我就会采纳,这样LVS得到不断的丰富和完善,即:
4.1 自我推销和服务意识
NB的技术和产品不是自己PPT写出来的,是用户用出来的。从0到90%简单,从90%到100%难,剩下这10%靠的更多不一定是技术。
LVS很快聚集来自世界各地的问题解决高手和技术专家,他们一起为LVS的优化添砖加瓦][凡是对LVS有贡献的人,其名字都会被章文嵩写入项目历史中,即:
4.2 技术威望和技术领导力
不管谁加入,章文嵩都遵照自己的技术原则和方法论,掌控LVS的发展路径,什么东西做,什么东西不做,什么东西怎么做。同样不管是谁加入,也都会得到同等的尊重。不是所有开源项目都有如此优秀的领导者,如Rust。
章文嵩经常参加Linux的会议,章文嵩和Netfilter的作者Rusty Russell在酒吧相谈甚欢,即:
4.3 social能力
额.....不是架构师必备技能,但确实是提升个人影响力的有效方法。
5 为你总结好的借口
一般原因是,一般程序员根本对接不到需求方,信息缺乏,得到的工作任务根本都是设计好的离散零碎的小模块。至于模块如何组织,为何这样组织,缺乏信息,缺乏时间,缺乏动机思考。
而且99+%的程序员不喜欢和需求方打交道,而不是没有机遇。
X 总结
也许你说,这些都不是程序员应该特别关心,而我只是想成为一个架构师,不是要成为章文嵩。如果你有这种想法,那么有可能单纯程序员更适合你。
也许你说,据我观察XX架构师也就运气好。也许他确实次次运气爆棚,也有可能是他在你不注意的地方把问题化于无形了。一般来说,云淡风轻的架构师还是要比哭爹喊娘的架构师段位高的。
也许你会说,现阶级固化,没上升机会了。只能说一夜暴富的机会越来越少了,但码农成长为架构师的通道从来没有也不可能关闭,是不会关闭,因为大多数根本没这钻研能力。
本文由博客一文多发平台 OpenWrite 发布!
相关文章:
如何才能从程序员到架构师?
1 引言 小团队一般 10 人左右,其中常常是技术最牛的人做架构师(或TL)。所以,架构师在广大码农中的占比大概平均不到 10%。而架构师也可以分为初级、中级、高级三档,江湖上真正高水平的软件架构师就更少了。 所以&…...
dvadmin-打包发布-nginx-静态服务器配置-防火墙设置
文章目录 1.下载nginx2.nginx常用命令3.dvadmin打包发布4.防火墙设置 1.下载nginx 也从作者下载的网址下载:https://download.csdn.net/download/m0_67316550/88470098 2.nginx常用命令 注意:一定要在dos窗口启动,不要直接双击nginx.exe&a…...
Win10中Pro/E鼠标滚轮不能缩放该怎么办?
Pro/E安装好后,鼠标滚轮不能缩放模型,该怎么办?问题多发生在win8/win10上,新装了PROE,发现滑动鼠标中键不能放大缩小。 彩虹图纸管理软件_图纸管理系统_图纸文档管理软件系统_彩虹EDM【官网】彩虹EDM图纸管理软件系统…...
腾讯云轻量应用服务器性能如何?值得入手吗?
腾讯云轻量应用服务器性能怎么样?轻量服务器的CPU内存计算性能和同规格的标准型云服务器CVM性能处于同一水准,性能很不错,具有100%CPU性能,并且价格很优惠,值得买。腾讯云百科txybk.com分享腾讯云轻量应用服务器性能测…...
主流大语言模型的技术细节
主流大语言模型的技术原理细节从预训练到微调https://mp.weixin.qq.com/s/P1enjLqH-UWNy7uaIviWRA 比较 LLaMA、ChatGLM、Falcon 等大语言模型的细节:tokenizer、位置编码、Layer Normalization、激活函数等。2. 大语言模型的分布式训练技术:数据并行、…...
面试经典150题——Day22
文章目录 一、题目二、题解 一、题目 6. Zigzag Conversion The string “PAYPALISHIRING” is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility) P A H N A P L S I I G …...
for循环三种跳出循环的方法(retrun、continue、break)
1、continue:指的是跳出当前循环,即不执行continue后的语句,直接进入下次循环。 【continue语句和break语句差不多。不同的是,它不是退出一个循环,而是跳出当前循环,进行下一轮循环】 public static void…...
React中的受控组件(controlled component)和非受控组件(uncontrolled component)
聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...
python 查找波峰和波谷
import numpy as np import matplotlib.pyplot as plt from scipy.signal import find_peaks# 生成示例信号 x np.array([1, 3, 7, 1, 2, 6, 0, 4, 3, 2, 5, 1])# 寻找波峰 peaks, _ find_peaks(x)# 寻找波谷(使用信号的负数形式) valleys, _ find_pe…...
深入理解 Document Load 和 Document Ready 的区别
目录 前言: 一、Document Ready 二、Document Load 三、理解和总结 前言: 在前端开发中,理解页面加载的不同阶段是至关重要的。特别是当我们需要在页面加载到特定阶段时执行某些操作时,我们需要知道应该使用 document ready 还…...
有趣的算法(七) ——快速排序改进算法
有趣的算法(七) ——快速排序改进算法 目录 有趣的算法(七) ——快速排序改进算法 本文章向大家介绍有趣的算法(七) ——快速排序改进算法,主要内容包括其使用实例、应用技巧、基本知识点总结…...
Vue3 + Tsx 集成 ace-editor编辑器
Ace Editor介绍 Ace Editor(全名:Ajax.org Cloud9 Editor)是一个开源的代码编辑器,旨在提供强大的代码编辑功能,通常用于构建基于Web的代码编辑应用程序。它最初由Cloud9 IDE开发,现在由开源社区维护。 主…...
TypeScritpt中的namespace
namesapce 它是在ES模块诞生前,ts自己发明的模块功能,目前已经不推荐使用了,namespace意为命名空间,就是模块化的意思。 1. 基本用法 namespace用来建立一个容器,内部的所有变量和函数只能在容器内部才能使用。 nam…...
LeetCode75——Day17
文章目录 一、题目二、题解 一、题目 1493. Longest Subarray of 1’s After Deleting One Element Given a binary array nums, you should delete one element from it. Return the size of the longest non-empty subarray containing only 1’s in the resulting array.…...
Spring中Bean的作用域
目录 一、什么是Bean的作用域 二、Scope注解 三、Bean的6种作用域 3.1 singleton单例模式 3.2 prototype 原型模式 3.3 request 3.4 session 3.5 application 3.6 websocket 一、什么是Bean的作用域 在之前学习的过程中,我们把作用域定义为:限定程序中变…...
什么是命令行参数解析和选项处理?
在C语言中,命令行参数解析和选项处理是一项关键的编程技术,它使程序能够从命令行接受参数和选项,以在运行时进行不同的配置和控制。这对于命令行工具、应用程序和脚本编写非常重要,因为它允许用户以不同的方式自定义程序的行为。本…...
网络协议--TFTP:简单文件传送协议
15.1 引言 TFTP(Trivial File Transfer Protocol)即简单文件传送协议,最初打算用于引导无盘系统(通常是工作站或X终端)。和将在第27章介绍的使用TCP的文件传送协议(FTP)不同,为了保持简单和短小࿰…...
MongoDB 的集群架构与设计
一、前言 MongoDB 有三种集群架构模式,分别为主从复制(Master-Slaver)、副本集(Replica Set)和分片(Sharding)模式。 Master-Slaver 是一种主从复制的模式,目前已经不推荐使用。Re…...
volatile 系列之实现原理
我们通过volatile解决了由于编译器的指令重排序导致的可见性问题,这意味着volatile 底层用到了内存屏障,下面我们从它的部分源码中找一下内存屏障相关的痕迹。 通过javap-V VolatileExample.class打印VolatileExample类的字节指令如下。 public static …...
【黑马程序员】mysql进阶篇笔记
2023年10月26日17:50:43 58.01. 进阶-课程介绍(Av765670802,P58) 59.02. 进阶-存储引擎-MySQL体系结构(Av765670802,P59) 60.03. 进阶-存储引擎-简介(Av765670802,P60) 61.04. 进阶-存储引擎-InnoDB介绍(Av765670802,P61) 62.05. 进阶-存储引擎-MyISAM和Memory(Av765670802…...
ParquetViewer:Windows平台最友好的Parquet文件查看与查询工具
ParquetViewer:Windows平台最友好的Parquet文件查看与查询工具 【免费下载链接】ParquetViewer Simple Windows desktop application for viewing & querying Apache Parquet files 项目地址: https://gitcode.com/gh_mirrors/pa/ParquetViewer 还在为Wi…...
KiloClaw:为企业AI代理安全合规保驾护航
OpenClaw托管版KiloClaw:企业AI代理管理新方案由GitLab联合创始人Sid Sijbrandij和Scott Breitenother共同创立的Kilo,推出了面向企业的KiloClaw,它是OpenClaw平台的托管版本。该产品旨在为企业提供对员工使用AI代理执行代码库监控、邮件起草…...
Cats定律测试终极指南:如何确保类型类实例的正确性
Cats定律测试终极指南:如何确保类型类实例的正确性 【免费下载链接】cats Lightweight, modular, and extensible library for functional programming. 项目地址: https://gitcode.com/gh_mirrors/ca/cats Cats是一个轻量级、模块化、可扩展的函数式编程库&…...
Laravel Stats Tracker与Google Analytics对比分析:自建统计系统的优势
Laravel Stats Tracker与Google Analytics对比分析:自建统计系统的优势 【免费下载链接】tracker Laravel Stats Tracker 项目地址: https://gitcode.com/gh_mirrors/tr/tracker 在网站分析和用户行为跟踪领域,Google Analytics无疑是业界标杆&am…...
【Hot 100 刷题计划】 LeetCode 128. 最长连续序列 | C++ 哈希表 O(N) 题解
LeetCode 128. 最长连续序列 | C Set 与哈希表 O(N) 双解法题解 📌 题目描述 题目级别:中等 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度…...
nlp_gte_sentence-embedding_chinese-large模型在嵌入式Linux系统上的优化部署
nlp_gte_sentence-embedding_chinese-large模型在嵌入式Linux系统上的优化部署 1. 引言 在智能硬件和边缘计算快速发展的今天,越来越多的设备需要在本地运行AI模型。对于嵌入式Linux系统来说,如何在资源受限的环境下高效部署大型文本表示模型ÿ…...
116. 为项目监控员生成的警报添加标签
Procedure 程序To label alerts for Project Monitors, you must configure the Prometheus Federator Helm charts values section. This is done by adding additionalRuleLabels under defaultRules within helmProjectOperator. You can perform this modification during…...
GHelper全面革新:华硕笔记本硬件控制的智能突破方案
GHelper全面革新:华硕笔记本硬件控制的智能突破方案 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar…...
AI 推理引擎的并行化实现
AI推理引擎的并行化实现:加速智能决策的关键 随着人工智能技术的快速发展,AI推理引擎已成为许多应用的核心组件,从自动驾驶到医疗诊断,再到智能客服,其高效性直接影响用户体验和系统性能。随着模型规模的扩大和实时性…...
OpenProject企业级项目管理平台部署架构与实践指南
OpenProject企业级项目管理平台部署架构与实践指南 【免费下载链接】openproject OpenProject is the leading open source project management software. 项目地址: https://gitcode.com/GitHub_Trending/op/openproject OpenProject作为领先的开源项目管理软件&#x…...
