思考,输出,沉淀。用通俗的语言陈述技术,让自己和他人都有所收获。
作者:毅航😜
几天前,我在阅读《卡片笔记写作法》时,被书中的一段话深深触动。书中写道:
专家之所以能够达成精湛的水平,依赖的是亲身经验。学术写作的高手们拥有一种后天习得的直觉,能够判断什么事对完成任务有帮助,而什么事只是干扰,没有一个通用的规则可以预先告诉人们在什么阶段该做什么,因为新的项目都是不同的,在项目的不同阶段,最好的选择可能是阅读一些东西,回顾一段对话,讨论一个想法。世界中并没有通用的规则能够让你预先判断出那个阶段沿着那个想法。
书中的这段话强调了经验在写作中的重要性。那么,回到我们熟悉的编程领域,众所周知,随着年龄增长,程序员的市场价值似乎在不断贬值。这是否意味着编程领域的经验并不具有长期价值?按理说,随着工作经验的积累,程序员应该是一个越老越吃香的行业,但现实却恰恰相反,很多程序员在三十五岁后就面临职业瓶颈。
然而,如果编程领域没有经验的积累和传承,为什么这个行业仍在蓬勃发展? 随着网络技术的发展,软件架构和程序开发不断演变为职业,许多公司更倾向于雇佣有工作经验的程序员,而非刚毕业的应届生。这表明,经验在编程领域仍然重要。但为何程序员不像医生、教师那样,随着年龄增长而升值呢?
在我看来,程序员并不是一个“高端”的职业。随着AI技术的进步,程序员随时可能被替代。再加上其他行业的不景气,越来越多的人涌入计算机领域,这使得程序员这个职业竞争愈加激烈。那么,作为计算机从业者,你与他人的区别在哪里?你的优势又是什么?
年轻时,我们可能不会思考这些问题,但随着年龄增长,我们不得不冷静思考:如何在这个领域表现得与众不同?遗憾的是,我仍在寻找答案。
回到今天的讨论,程序员这一职业是否需要经验?根据我的理解,答案是肯定的。但程序员的经验不在于写了多少代码、用了多少框架,而在于能否具有构建产品的经验。
众所周知,程序员的日常工作大多是编写代码。但编写代码这一技能,对普通大众来说并不具有广泛的受众,这注定了它不像教师、医生那样是生活的必须品。程序员更像是工具人,他们的任务是将用户需求转化为程序,并确保其顺利运行。而这一转化过程,其实就是产品的构建过程。要构建一个产品,不仅需要代码健壮、性能稳定,还需要长期积累的经验,这不是一朝一夕能够完成的。
一个产品的生命周期通常包括立项、实施、验收、推广和运维等阶段。大部分程序员只关注实施阶段,追求功能实现,但真正的经验在于构建产品的能力,而这需要不断经历不同的项目,逐步积累经验。
举个例子,很久前流传过一个段子:树上有十只鸟,开枪打死一只,问还剩几只?这是个简单的脑筋急转弯,但程序员可能会提出一系列问题:使用的是有声手枪还是无声手枪?鸟是否真的被打死?是否有聋哑鸟?这看似是个黑程序员的段子,但随着开发经验的积累,你会发现开发并不是简单的CRUD操作,还需考虑各种边际和异常情况。这些问题,正是区分新手程序员和有经验程序员的关键。毕竟,程序谁都能写,但成为编程大师需要的不仅是技术,更是经验。
此外,程序员还需要具备在不熟悉领域中快速上手的能力。这意味着,虽然你可能不熟悉某个领域,但我们积累的经验和技能可以迅速应用,帮助我们应对新挑战,快速上手。这也是程序员必须具备的另一种重要经验。