您当前所在的位置: k1体育 > 新闻中心 > 公司新闻

新闻中心

News

分类>>

编程十年的感悟

2025-01-10 11:41:02
浏览次数:
返回列表

  编程十年的感悟马尔科姆·格拉德威尔的“一万小时定律”指出,持续投入一万小时的努力,足以使人在某个领域达到专家水平。 按照每周20小时的练习量计算,每天大约需要投入3小时,十年左右才能达成这一目标。

  从我写下第一行C代码算起,至今已超过十年。 期间,我编写了超过三十万行代码,其中一部分在微信写的代码,曾服务过超过一亿的用户。

  尽管写了这么多代码,我仍不敢自诩为专家。 但多年的“打工”生涯,日复一日地敲代码,也让我积累了不少感悟。 “工多艺熟”,这些感悟既是对编程技术的思考,更是对职场人生的体味。 毕竟,除了最初在学校学习的几年,我的编程生涯几乎都伴随着“打工”的酸甜苦辣(多是苦辣)。

  虽然大学是从C语言入门编程的,但是我在大学时主修的语言是Java ,毕竟Java是门非常成熟的工业语言,有非常丰富的框架,在国内的企业非常受欢迎,工作岗位也多。

  到我实习入职蚂蚁金服的时候,发现组里代码库操作数据库的ORM框架用的并不是Hibernate,而是Ibatis ^5, 后面又切换成了新的MyBatis ^6

  去了微信支付后,前期都是在写C++, 使用微信内部自研的svrkit 框架,到后期因为负责数据治理相关项目的缘故,开始使用 Spark + Python + Hive SQL

  现在在AWS S3, 因为业务对性能和资源使用有非常高的要求,又开始使用Rust, 而历史业务又是使用Java, 兜兜转转之后,又回到Java的路子上。

  我也从来不会把自己定义为某门语言的程序员,如Java程序员,C++程序员等等, 我只叫自己做Software Development Engineer. 语言从来只是工具,只要你持续学习,遇到新的场景,自然就会学习新的编程语言了.

  计算机的世界日新月异,可能几个月就会出个新框架,几年又会流行一门新语言,只有持续学习,才能持续保持自己的竞争力。

  领袖常说,「东升西降」,虽然不知道此种变化何时才能实现,但起码说明,目前是「西尚在上,东尚在下」,在计算机领域,尤其如此。

  最前沿的技术都是英文资料,英语又是世界通行的语言,来自不同国家的开发者又会不约而同地使用英语来交流, 因此学好英语既可以了解最新的技术潮流,又可以融入社区,建立自己的影响力。

  疫情之后,越来越多的公司都开始推行远程办公,从全世界招聘开发者. 这就意味着如果你英文过硬,甚至可以离开一线城市,避免高额的生活开销,在老家工作,陪伴在父母身边,同时赚取外汇;这对于饱受996困扰的程序员来说,未尝不是一条出路.

  熟悉我的朋友,尤其是我的高中同学可能知道,十年以前,我的英文可以说着实挺烂的: 满分150分的英语,只考个及格的90分可谓是家常便饭,后来也只会笨学英语k1体育十年品牌值得信赖,到高三的时候能考个120分已经是巅峰水平。

  没有口语交流的条件,就自己创造,去网上找人聊天, 当时还在一个叫Interpals ^10 聊天网站认识了全世界好多的人, 其中还有一个是年龄相仿的土耳其女孩,我们还加了Facebook, 经常用Skype 视频聊天.

  大学毕业后就没有那么多的时间闲聊后就断了联系, 最近看Facebook的动态,看她也穿上婚纱了.

  工作后也一直阅读英文的技术文章,用英文搜索内容,在Stackoverflow 和 GitHub 用英文回答问题,在Discord 的英语学习频道找人聊天, 把电脑和手机系统语言都换成英文的,从学习英语变成用英语。

  而在我看来,英语就是夜里走路时手上拿着的手电筒,可以让我们走自己的路的同时, 扫一下旁边那条道的情况,需要时及时转向,不至于一条路走到黑.

  当时同事之间还在讨论,Iphone也是一块铝片冲压而成的嘛,那发的是否还是Iphone呢,不发手机只是烟雾弹?

  小龙一直强调「独立思考」对微信的重要性,认为如果要选择一个最重要的品质,他会选择「独立思考」。

  上级说的不一定是对的,老师说的不一定是对,学术机构说的也不一定是对,媒体说的也不一定是对,声音大的更不一定是对,毕竟有理不在言高。

  作为初创公司或小团队,新业务是否要上微服务架构呢?还是先使用单体架构,业务发展起来再迁移到服务呢?

  开发过程免不了要做各种决策,比如技术选型,针对你的需求,你可能会找到一打「看似」符合要求的组件, 可能还会去网上找找对各个组件的评价,会发现众说纷纭,就需要自己独立对每个组件做出分析,找出其优劣,再结合自身团队的特点,做出决策.

  关于独立思考,我最喜欢的是一句话是HBO出品短剧《切尔诺贝利》里面, 科学家瓦列里·列加索夫希望克格勃释放调查同事乌拉娜·霍缪克的要求,说可以保证她是没问题的,克格勃头子回答的那句话:

  很多的程序员都是完美主义者,尤其是读过《重构》和《设计模式》的程序员,会倾向于把很多时间来优化代码,做重构。

  以前的我也会有类似的冲动,总会想时间去优化代码, 但是项目肝多了之后,有种强烈的感觉,还是先把MVP上线,及早让用户体验。

  所以经常看到社区有人问做副业的时候,应该用什么语言和框架,PHP/Python/Ruby 会不会太慢,我的观点一直都是,先做个原型跑起来,先找到第一个用户再说。

  当运行速度成为瓶颈时, 你的业务已经非常大,肯定有足够的钱可以招一打的程序员把你的项目换成Golang/Java了。

  他们既不会关注你是用C++/Java还是Javascript 写的,也不会关注你代码写得是否优雅,与其执着于技术选型,不如先把产品干出来让用户试用。

  「最好」是个相当主观的结论,也并没有针对所有场景的「最好」的解决方案, 但是经常能看到社区有人因为哪个语言更好而吵起来.

  让不禁让我想起《社会性动物》这本著名的社会心理学著作里面提到的团队认同现象, 当球迷与某支球队产生强烈的认同感后,会将球队视为自我认同的一部分,这里他们会:

  当初在2017年学习Rust, 也只是因为大四没有课,时间充裕, 想学点有趣的新东西,那时候Rust1.0才发布2年, 可没指望能靠Rust找到工作

  我也曾问过自己类似的问题: 是不是好的东西就能流行?不一定 是不是我喜欢的东西就是好的东西?不一定 我会不会花时间精力在一个不一定会流行但是我喜欢的东西上?会7 多与人交流

  因此初入职场之后,我既是这么持有这样的想法,又是这样行动的,虽然不至于对其他人冷脸相对,但是难免会如好友形容那般:「孤傲」

  但是被毒打时间久了才会发现,无论是在国内或国外,都难免会有「人情世故」,用英文来说,那叫 network and connection.

  即使我技术能力过硬,也需要被人见到才行,和同事领导相处关系好,才可以在做出成绩的时候,「花花轿子被众人抬」。

  所以我现在都是有事没事都和同事们聊天,既可以提升下熟悉度,也可以了解到许多部门八卦, 还可以从同事们抱怨中找到潜在优化点,践行自己「Work hard and be nice to people」的理念.

  被毒打多才认清的事实就是,有很多事情是无法用代码来解决,代码只是个工具,只能在个合适的场景使用, 避免路径依赖.

  编程肝项目的专业能力固然重要,但是也要有营销自己的软实力,就像一位长者说的那样: 两手抓,两手都要硬.

  不知道是中国人讲究谦虚内敛的品质,还是程序员「木讷呆板」的刻板印象,导致大家都不怎么营销自己。

  从业多年,去过蚂蚁金服,微信支付和AWS 搬砖, 和各种各样的同事都共事过,有个越发强烈的感悟:

  不仅能从他们身上学到非常到的优点,提升技术能力,可以学到最佳实践和工程经验,在Code Review 的时候可以学到更好的编程方式,遇到问题时又有靠谱的队友帮忙和指导。

  品味与美感这个词是很抽象,但是用过了好用的系统,自然就不会对那些粗制滥造,还靠老板背书强行推广的系统感兴趣。

  和优秀的同事共事的另外一个好处是可以建立高质量的人脉网络,利于职业发展,跳槽换赛道也多个选择。

  虽然初始公司也有优秀的开发者,但是平均而言,大公司优秀程序员的比例会更高,毕竟他们更有竞争力的薪资福利,自然也有更高的招聘门槛。

  比如微信就有所谓的面试委员会,除了招聘部门的面试官之外,还要通过面委面试官的考核,避免为了快速招人而降低标准。

  虽然离职微信快两年了,我仍然想念当初同组共事的同事们,他们真的是技术过硬,人又超nice, 还乐于帮忙.

  大学时候就有的鼠标手(腱鞘炎), 工作几年之后「喜提」腰椎间盘突出,久坐下半身会麻痹,还有我曾经浓密黝黑的头发,现在也日渐凋零。

  因为腾讯总部有免费的健身房,所以我基本工作日都会去健身房薅公司羊毛,2天有氧慢跑,2天无氧器械,坚持了快3年。 也开始注意自己的饮食,尽量少油少糖不喝酒。

  虽然编程很有趣,虽然养家很重要,但是还是要注意身体,毕竟身体是一切的本钱,垮就没有其他的精彩故事了。

  无论是编程,还是其他的技能,我感觉都是「马太效应」,你学得越多,你懂得越多,再学新的东西,你就会学得越快。

  代码写多了才意识到,程序员的竞争力并不是写代码,也并不是哪门语言或者框架, 其核心竞争力是通过技术解决问题的能力,又何必再去拘泥于哪门具体的编程语言或技术呢。

href=""

搜索