程序员修仙之道
程序员修仙之道
如何成为一个合格的程序员,如何成为一个优秀的程序员,程序员如何修道,程序员的修仙之路在哪?这些可能是码农道友们入门的灵魂拷问。
自 2000 左右 java 与.net 兴起后,20 多年来软行业的技术与方法论导出不穷、迭代越来越快地。软件生态日益多元化,强大的 IDE、高度抽象化的编程语言 让软件开发的门槛越来越低,越来越的道友加入程序员的修道之道,具非官方统计,中国程序员人数已达 800 万。
越来越多的强大的技术让编码变得简单,但也同样带来了许多问题,众多修仙之道应该如何选择,选择后又如何快速修练成长。从全栈到前后端分离、从前端 UI 到数据库、从开发到运维、从项目经理到产品经理每条路都有未知挑战。
近几年软件的工程化、低代码趋势化,再加上今年的终级杀器 GPT,让程序员们的修道之路越来越艰难。人人都可以是程序员,编程将不是一项可以谋生的技能,程序员们正在创造越来越多的软件来减少软件开发所需的程序员。这将是一个不可逆的进程,软件是让世界变的高效简单、制造软件的工作也同样被软件本身优化。世界对程序员的需求量可能会越来越少,程序员们如何选择修仙之道?
1. 修仙之道:理解软件意义与软件的目标
软件因需求而起,软件产品的存在意义是提高生产力、创造经济价值、让人类生活更美好。高新技术不是目标,技术为产品服务,能产生价值的软件或代码才是有意义的。可能会有道友质疑或批判这种观点,没关系,我以前也这样想。
1999 年 Salesforce 创始人 Marc Benioff 和 Parker Harris 提出软件即服务概念,这种概念已被普遍接受。服务的对象是客户、需求来自于客户, 如果产品经理可以代表客户,那么产品经理就对的。这种说法并不是说谁和谁的权力大,而是说大家的目标应该是一致的,站在产品和客户的角度看问题,不要把技术和代码放在主要位置,这样才能从更高层次视角来审视程序员的修仙的终级之道。
所以,程序员们首先要理解软件终极目标,将程序员工作的本质看通透后才能在修仙路上不迷茫。
2. 修仙之法:职业素养与沟通技能
农民家族出生,父母给我的教育是好好学习,将来好好打工,不好好学习就学好一门手艺,好好打工,少说话多做事。原来很蔑视卖保险做销售的工作,选了一项相对重手艺的工作:程序员。原以为只要代码写的好就可以有相对好的工作和职位,经历过十几年的历练,多次工作变动折腾后,发现写代码这项手艺的稀缺性基本没价值。年轻一找的程序员从学历、智力、体力全方位对中年人降维打击,而当年毕业做销售或销售相关的同学们都已经在行业上掌握了众多资源,某些方面已经均无可替代。
编程会变得越来越简单,门槛越来越低,程序员何才能提高自己的不可替代性?
与人一样,民营公司都是趋利,要让自己不可替代就要考虑能为企业创造多少价值,能否创建价值,并不局限于软件技能层面上。软件团队管理、需求分析或是部门团队间的沟通与协作都是程序员晋升必备的职业素质。
有人的地方就有江湖,当今环境下个人很难有可以成功,团队中沟通成本占总成本的很大一部分,项目经理 95%的时间用于沟通,程序员也至少有 40%的时间用于沟通,这些沟通是为了了解需求、与其它开发同事对接、与测试讲解说明、与项目经理同步进度,等等。 有统计表明一个软件项目的代码实施时间只占项目的 20~30%的工作量。
沟通技能之外的另一个关键词“职业素养”,是批工作中对达成目标中的稳定性,工作中应该将人个情绪排除,服从组织的安排和指挥,以达成工作成果为目的,及时沟通反馈,让组织对过程可控。赢得组织与领导的信任后,才会被赋予更多的责任和权力。
3. 修仙之术:专业技能与知识面
专业技能是程序员的生存之本,随着 GPT 与低代码趋势,程序员也将会有两极分化,开发 GPT 和低代码平台的技术专业性非常强的程序员,在 GPT 和低代码平台基础上开发的业务的程序员。但这只是未来,当前的程序员在很多方面仍然不可替代,底层的操作系统、数据库、大数据分析、各种各样的开发语言,都让程序员的存在尤为重要,这种不可替代性可能是 10 年,或者几十年。
《国民经济行业分类》对 IT 行业做了大致分类,有几百个分类,大家可以看下分类与方向。大致分类也可以归纳为 lass、pass、sass。与其对应的开发语言可以在TIOBE Index网站上查到开发语言的占有率,具体要学习或使用哪些语言是由公司技术栈和业务来决定的。每种语言都有自己擅长的地方,python、R 等适合数据处理、C、C++、Rust 适合底层操作系统通信等对稳定性和性能要求高的场景,C#、Java 等适合工程化项目,对开发效率和快速迭代要求高的软件有很大优势。
所有应用软件或者说所有软件都围绕着一个东西,这个东西叫数据库,更广义的可以说是数据,软件最终的操作对象就是数据,写入数据、传输数据、读取数据等。传输数据可以归为通信或驱动一类,写入和读取都围绕着数据库。很多时间我们就是 CRUD 工程师。所以学好数据库是程序员修道的必要路径。当今的数据品类繁多,总体两个类型,关系数据库和非关系性数据库。按部署方式有可以分为单体和分布式数据库,还有很多新概念,时序数据库、向量数据库、内存数据库、图数据库等等。实际软件应用可能使用的不止一种数据库,不可能每种数据库都能深入学习,但是应该了解每种数据存在的理由是什么,主要是为了解决什么问题,优势在哪。
最后程序员的终极大成者境界是什么?
我觉得我的归宿可能是保安、外卖、滴滴吧
版权声明: 本文为 InfoQ 作者【peak徐】的原创文章。
原文链接:【http://xie.infoq.cn/article/88065fa7ad86e2afe7a417656】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论