2

架构师技能:程序员如何体现价值

 1 year ago
source link: https://blog.csdn.net/hguisu/article/details/132012748
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

最近领导提到到一个话题:做得好更好死得更快。然后周末大雨闲在家里总结了关于程序员悖论的思考。

一、前言:扁鹊三兄弟的故事


        有一天魏文王就问扁鹊,让他评价自己兄弟三个的医术高低。

扁鹊说:大哥医术最好,二哥医术次之,自己医术最差。
魏文王不理解,很纳闷,就问扁鹊:既然你的医术不是最高,那为什么你的名字却是最大?
扁鹊回答:

        我大哥治病专攻“未病”,往往是在病情刚开始还没发作的时候,就及时将源头控制住并根治,因为病情初期痛苦少,持续时间短,所以知道的人不多;

       二哥则擅长治疗早期的病情,关注的人也少,知道的人也不多。

       而扁鹊自己治疗的患者,往往都是疑难杂症,甚至是重症患者,治疗繁琐,治疗时间长,病人痛苦,周围人关注多,所以自然而然的名气也就大了。

二、什么是程序员悖论?


         有人总结了如下的程序员悖论:你架构做得好,代码易读易扩展,随便谁都能接手。你是可有可无的人。 你架构一团糟,代码除了你自己没人敢碰。你是公司的重要人物,项目没你就垮了。 你代码写得好,没什么 bug ,天天不加班。你是工作态度不积极的人。 你代码写得不好,bug 成堆,天天加班。你是公司的骨干。 这正好印证了一句古话:曲突徙薪亡恩泽,焦头烂额为上客。

d401fdc2c58b46eabee9c7aab6266cb2.png

       这种悖论是一种常见的现象,反映了我们对程序员的期望和现实之间的矛盾。这种矛盾体现在不同的表现形式中,如架构、代码质量、工作态度等方面,因此成为程序员悖论。

如果你设计出了一个好的架构,代码易读易扩展,架构文档全面, 本来是一件高大尚的事。但是,如果你离开了公司或者调换了部门,你留下的代码会变得容易维护,而新来的人会很容易地接手你的工作。这时,你成为了可有可无的人。这并不是说你的工作没有价值,而是说你的工作让团队的工作更容易了,没有人会对此感到惊讶或者感激。因此,你可能会感到自己的工作价值受到了低估。是不是感觉“飞鸟尽,良弓藏;狡兔死,走狗烹;敌国灭,谋臣亡”。当一个人失去了利用价值,就会被干掉或者被替换掉的下场。

如果你的代码写得好,bug 很少,那么你会比其他人更轻松愉快地工作,几乎没有加班的压力。但是,这也意味着你的工作质量不再是一个问题,因此你可能会被认为是不积极的人。这也许是因为你的表现被认为是理所当然的,这往往会让人感到不公平。

反之,我们来看代码质量的另一个方面:如果你的代码写得不好,bug 成堆,你可能会被要求加班,以解决这些问题。这也许会让你感到不满,但实际上你可能是公司的骨干。你的工作质量虽然不是最好的,但你的团队认为你的贡献是不可或缺的,因为你能够解决最困难的问题。这意味着你的价值被高估了,但同时也意味着你的工作非常重要。

综合架构和代码质量

我们来看架构和代码质量的另一个方面。如果你的架构一团糟,代码除了你自己没人敢碰,那么你可能是公司的重要人物。如果你离开公司或者调换部门,你留下的代码可能会导致整个项目垮掉。这意味着你的价值也被高估了,但是这同时也是一个很大的责任。你需要确保自己的代码是高质量的,并且能够容易地被其他人理解和修改。否则,你可能会承担更大的责任。

三、不要抱怨你现在傻逼的系统


有没有类似经历:

1.入职3个月内,喷,这么大的系统,上亿pv的系统居然这么做的,这么做的,我提出那么做,那么做,你们都不鸟我,推翻我,哎 你们都是傻逼。

2.入职半年,咦,好像他们说的有道理啊,如果按我那么做,就会出现那些问题,那些问题。。。

3.入职一年,哦,只能这么做,这么做,你一个新来的,知道个屁啊,还那么做那么做

4. 入职两年,噢,这么做,这么做有好处,有坏处,可以再此基础上那么做那么做


傻逼的系统

傻逼的系统一般的特征:框架落后,代码混乱复杂,文档缺失,功能冗余重复造轮子等等。

存在即合理, 这么傻逼的系统还运行这么久,说明它价值的重要性。我们要感谢以前的挖了很多坑,埋好各种雷的人:

1、解决问题,加快能力成长。

2、证明你的能力,和老板谈心聊薪水。

如果一个系统代码质量很高,几乎没有bug,那还要你架构师/高级资深的程序员干嘛呢?

学会体现自己的价值

一些多年大厂出来的感受:如果系统bug不多,领导就觉得你做的事情没有挑战和难度,是不是感觉写代码是也一种艺术。

曾经有个技术大拿这么说: 当一个程序员,花了很多时间在底层,架构,这些方面的时候,后面写出的代码质量就会挺高的,而且出bug的时候也少。这样的代码和程序员,在我们这里是不行的。 因为,这体现不出你的价值。 最优秀的程序员呢,就是在底层搭建的时候,弄一些不疼不痒的问题,后面的代码出了bug,你可以去摸鱼,去改,而且还能体现你的价值。 你看,这程序员就是厉害,有问题就能解决! 而那些把底层弄得很好的,一天到晚没啥事干,天天就知道上班摸鱼~ 这是真事,而且是某大公司的技术总监。 唉。。。。。。

当电脑没有病毒了,安全软件公司就没有存在的价值。

当没有了违法犯罪份子,jing察就没有存在的价值。

四、如何展示程序员的价值


不要做没人知道的努力而是更高级的展示你的价值,善于总结,把平时零碎、表面、肤浅的感性认识升级为全面、系统、本质的理性认知。

需要技术向多人展示,而不是通过修改大量Bug。因此我们要注重平时工作的沉积,思考,以及总结能力。简而言之,就是把我们所做的事情,抽象总结出创新的方法论,向领导和其他人展示分享。

1、总结方法论提出创新解决方案,说明优秀架构设计的价值,用数据说明技术带来效率提升,达到降本增效。

      我们要明白一点,绝大多数新技术,都源自现有技术的重新组合。无论从前端还是后端,无论是过时还是被炒得很热,无论是云计算还是SAAS等,其本质技术都来自于此前已经存在的技术,都要求具备良好的算法和数据结构,在此基础上不断衍生出许多新技术。我们需要真正掌握和理解已有的技术,根据业务需要,去组合出更好的原创解决方案。如果要打破技术重组,那就需要我们去理解很多技术背后的原理和系统。

  •  勇于挑战和承担疑难技术点攻关,将问题集中化解决,提供平台化解决方案以及选型决策。
  • 定期做总结归纳以此分析问题,解决问题。
  • 发现各类型问题(不仅仅是技术),通过规范,演讲,绘图等方式解决隐患。

2、努力提升语言表达能力,多写技术文章,展示技术能力。

     学习提高语言表达能力之前,学习底层元知识:

1)、建议学习知识体系如何构建:

架构师成长之路(5)--如何获取知识(学习境界)

构建知识体系(1):知识体系是什么?

构建知识体系(2):如何构建_知识体系构建原则

构建知识体系(3):建立体系6个步骤_知识架构建立推进过程中

2)、提高思考力,主要包括:逻辑思维、本质思考力、升维思考力、结构化思考力、系统思考力、批判性思维、元认知。架构师成长之路(5)--架构师具备的思维

主要的手段:

1)勤读书,阅读优秀的技术文章,积累更多的专业术语和知识,提高语言素养和专业水平。

2)写文章,写作是提高语言表达能力的有效方法之一,公司内部发布技术文章,文档,也可以写博客。通过不断的写作练习,组织语言,逐渐提高自己的语言表达能力。

3)技术分享:多写ppt分享,参加技术会议或者组织内部的技术交流,    向他人展示技术知识和经验。

3、推进需求治理赋能业务,做对公司最有价值的事情

建立以价值为导向的需求治理机制,把有限的开发资源,投入到更有价值的项目上。

技术人员要成为最懂业务的技术大牛,用系统性思维帮助业务方更有效的解决业务问题,把技术资源投入到公司最有价值的项目上,让技术成为公司的核心资产,帮助公司建立壁垒,驱动业务的快速发展,在激烈的市场竞争中胜出!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK