跳到主要内容

8 篇博文 含有标签「感悟」

查看所有标签

· 阅读需 20 分钟
Seven Wate
  • 保持一颗解决问题的心
  • 了解你的用户
  • 不要拿自己的尺子去度量别人
  • 保持学习、be open-mind
  • 想清楚,再下手写代码
  • 敬畏用户
  • 跨团队合作是利益交换
  • 用别人的语言交流,会有意想不到的收获
  • 理解前人写的「烂代码」
  • 在技术和工作之间找到平衡点

来源:做了 6 年程序员,我学到的 10 条经验 | Randy's Blog;仅学术引用,著作权归作者所有。

保持一颗解决问题的心

按照我的观察,那些在工作中用技术取胜的人们共同点都在于他们能保持一颗解决问题的心。他们可以率先想到一种更优的手段解决存在的问题(一般是效率问题)。他们不是嗅觉特别灵敏或者技术特别强,而是当他们遇到了问题,不是把它作为抱怨的话题,而是开始思考这个问题为什么没人解决、应该怎么解决,然后把它实现出来。这种心态在职场上特别稀缺。

我在创业公司的时候做一个图文排版的 App, 设计师会设计一些模板,然后交给我来实现。当时我们有很多模板,为了测试这些模板实现在不同的手机屏幕大小会有什么问题,我们要花特别多的精力。可以想象测试的数量 = 模板数量 * 屏幕尺寸的数量。后来我用 puppeteer 写了个自动生成不同屏幕和模板的截图,直接交给设计师一个一个地看。节省了大量的时间。这个事情没什么技术含量,但它解决了很重要的问题。

工作中需要解决的问题不仅仅在代码上,也有可能出现在非技术问题上。工作中我特别喜欢和非技术同事聊天,了解他们的工作。因为我常常觉得影响项目前进的原因不一定出在我们用了不适合的技术或者不够「先进」的技术。了解非技术同事的工作流程让我大有收获,我会发现他们有一些工作是可以通过写一段程序把原本的工作量做到指数级的下降,而通常非技术同事是很难察觉到的。

这样的例子特别多。有次我和一个运营同事聊天,我们当时在开发一个新闻内容的管理后台,他们常常用这个后台对一些内容做分析。聊天的时候了解到他们有一部分的工作就是在上面按条件查询一些内容,再一条条地粘贴到 excel 里面,他说这常常要花一下午。后来我帮她做了一个一键导出成 excel 的功能。

她觉得这很不可思议,但这在技术的角度来说太简单了。我也因此了解到,对于不是做技术的人来说,他们很难察觉到哪一些事情是可以用技术解决的,所以我们不能希望他们主动地提出一个需求,只能我们作为掌握技术的人主动地去了解他们。

有一次我和我们的测试吃饭,聊到他们怎么做测试。我发现他们会用 mindmap 先梳理出来一些测试流程,然后一个个地做。但是痛点在于他们常常要手动维护一个文档列出这些 case 的测试结果,这些结果包括截屏,以及证明测试通过的请求返回信息等等。不但麻烦,还很难追踪。

于是我做了一个小 demo Web App,他们可以直接上传他们做好的 Mindmap, 通过他们的 mindmap 直接生成出

来 case item,在项目的开发环境页面代码里面,只要注入这个 case id,就可以在测试之前开始记录请求日志,结束之后会上传到这个平台,这样在这个平台就能直接看到每一个 case 操作的时候的整个过程的记录。这个小 demo 后来被用于花呗的大部分前端项目,当然听说现在已经做得和我当时做的小 demo 完全不同了。

了解你的用户

我自认为自己还算是一个有那么一些产品思维的程序员,因为经常也会写一些自己的小产品。但在刚出来工作的时候,我在工作中太沉迷于技术本身。把心思都放在了诸如怎么重构,怎么改进构建速度之类的问题。我在阿里 P5 升 P6 的答辩中,我被问了一个我至今印象深刻的问题:你有了解你的用户是怎么用你在做的这个东西吗?

这个问题是我从来没有想过的,我哑口无言。可能它只是一个晋升答辩问题模板中的一个问题,但对我来说这个问题让我清醒了许多。当时我们做的是内部用的新闻内容管理后台,这个后台的用户是一些小编。我们和这些小编有一个群,但基本是用来报 bug 的。我离这些用户这么近,却从来没有了解过他们的使用感受。我想,如果我当时找他们聊一聊,可能也会有意想不到的收获。或许他们会抱怨这个后台的加载速度很慢,我们就可以着手解决加载速度的问题,而不是和同事纠结在用哪种前端状态管理库这种无聊事情上。用户并不关心我们用的是 MobX 还是 Redux.

不要拿自己的尺子去度量别人

我刚出来工作犯的最大的错误之一就是拿自己的尺子去度量别人。我因为从小对编程痴迷,写程序对我来说是人生中最大的兴趣,我把几乎所有的时间都花在了技术上。当时我天真地认为所有程序员都应该像我这样,对待技术也应该有一种理想主义,我在互联网上结交的技术朋友都是这样的。所以我当时对我的同事特别苛刻,甚至对那些把写程序只当成工作的人嗤之以鼻。后来回想起来,这是非常错误的想法。每个人有每个人的追求,技术也只是多个兴趣爱好的其中一种。在当时别人的眼里我可能是个「怪人」,甚至有点「装逼」。

保持学习、be open-mind

我每天都会在 Twitter 和 Hackernews 发现很多最新的技术和思考,我关注了很多开源库的作者,我可以第一时间了解到他们最近在思考什么,在接触什么。这种主动接收会扩大你的眼界,让你在解决问题的时候有更广的思路。

不要只关注自己的领域。我还关注了很多写 Rust, 写 Go, 写 iOS/Android 的人。主要是学习技术背后解决问题的方式,这些解决问题的方式说不准也能应用到你自己的领域。

保持学习一直是和同行拉开差距最重要的一点。

想清楚,再下手写代码

我写代码的速度非常快,因为我已经花了超过十年的时间在写代码了。很多东西想实现,对我来说基本是纯粹的堆代码。导致我非常容易不经过多的思考就开始动手写。我为此吃了不少亏,常常写到一半发现一些没有想到过的问题,导致需要重新设计,重新改写。我的一位前老板很了解我,他也是个多年经验的程序员了。有一次我们在讨论一个新东西,他对我说,「不要着急,想清楚了再写」。这句话我一直记在心里。后来每次动手写代码之前,我都会把整个流程的设计先思考清楚,避免了很多不必要的重写。

敬畏用户

在写自己的一些没什么人用的开源库或者公司内部用的平台的时候,通常不需要过多思考就能把代码发布出去。到了做花呗这种用户基数庞大的产品,才意识到代码发布和以前所体验到的完全不同。

蚂蚁金服有代码发布的「三板斧」,这是从入职培训到实际工作中就会被反复提及的 must-follow rule. 「三板斧」指的是「可灰度」、「可监控」、「可回滚」。在代码发布之前,要先想想自己的代码是不是符合这三个条件。

你的代码发布之后,如果出了问题,是不是可以被监控到的?

你的代码是不是可以灰度发布的,而不是一下子全量被推到线上的?

代码发布以后,出了问题,是不是可以回滚的?如何回滚?

在经历了用户基数如此庞大的产品开发之后,我对代码发布变得尤为审慎。我记得有次只是单纯改了某段 HTML, 但我还是盯着这个 PR diff 看了几分钟,在想这个修改会不会导致什么问题。

虽然蚂蚁的基础建设可以让这三板斧很容易实现(有成熟的发布平台进行灰度和回滚,有成熟的监控库);虽然即使遵守了三板斧,还是会有 bug. 但是这种代码发布的思维模式是好的,即使我到了别的公司,我在代码发布前还是会问自己这三个问题。

跨团队合作是利益交换

在大公司里,有时在做一个事情的时候,需要别的团队一起合作,或许是用到别的团队的接口、或许是需要别的团队开发新的接口,但这通常很难。我以前天真地以为,只要我们做的事情是有利于业务的,别的团队自然就应该一起合作。但实际上,大家更看重的是这个事情对自己的团队有什么好处。

换位思考一下,我们和别的团队合作,对于他们来说,增加了工作量,增加了风险(带来更高的 qps, 写更多的代码会导致更多的维护成本)。决定是否合作,首先取决于这是否是自上而下的要求,其次就是合作对他们的 KPI 有没有好处。

所以我学会了在游说别的团队合作的时候,首先应该想明白合作能给别人带来什么好处,而不是对事情本身夸夸其谈。这样更容易促成合作。

用别人的语言交流,会有意想不到的收获

有研究发现如果你用别人的母语和他交流,他会更容易接受你的观点,对你也会更友好。我发现这个心理同样适用在技术交流中。作为一个前端程序员,在和后端程序员商量技术方案的时候,如果可以更多地使用后端的术语,从后端的角度反推前端的想法,他会更容易接受。

我自己业余是个 full stack 程序员,所以很容易切换到别人的语境,也能从别人的角度去理解他的想法。因此沟通会更加顺畅。

理解前人写的「烂代码」

这里的「理解」不是指理解烂代码的逻辑,而是理解为什么会写成烂代码。我经常会听到同事抱怨他看到的旧代码写得如何烂,但是实际上很多烂代码产生的原因不是因为技术不行,而是受限于技术的发展和业务的复杂性。随着自己写的代码越来越多,就越能理解这些「烂代码」的存在。看出来了烂代码,也不要着急去重构,这些代码很有可能藏着一些你不知道的特殊业务需求。如果你不需要碰这些代码,那就尽量别碰。

在技术和工作之间找到平衡点

在刚出来工作的前几年,我特别陶醉在把自己学到的新东西试图用在工作中。我的想法是,只有我把这个技术用到实际的工作中,我才算学习了这个技术。

其实这个想法是不对的,学习技术并不一定要求你把他用到工作中。工作就是工作,学习就是学习。工作的内容是为了业务服务的。我在创业公司工作的时候,曾经因为把一个我刚学习到的库用在业务中,因为一些我不知道的坑导致业务进度出了点问题。老板生气地说:业务不是你的试验田。

我后来遇到很多「后辈」(我竟然也开始有后辈了) 请教我说觉得自己在工作中不能运用到自己平时学习的技术,因此觉得自己技术没什么长进。我认为这种想法不太正确。

能把学习到的技术运用到自己的工作中当然是最好的,但这是可遇不可求的事。但是这不代表没有用在工作中,就等于没有真正学习到这个技术。我认为很多人对技术学习有错误的理解,对我来说,学习技术的精髓在于理解这个技术的 Why, What, How. 和能不能用到工作中没有太大的关系。

举个例子,我在刚接触到 Redux 的时候,我去学习它,除了了解它怎么用以外,我特别关心的是,Redux 的哲学是什么?是什么启发了 Redux 的作者创造了 Redux? 他和别的库有什么不同?顺着这些问题,我就会了解更多的东西,比如我发现 Redux 是受了 Elm 的启发,我就会去了解 Elm -> 了解 Functional Programming -> 了解 Immutable, 然后关注 Dan (Redux 的作者) 的 Twitter, 看他日常会分享什么,看他对自己做的这个东西的理解是什么。即使我没有把 Redux 用在工作中(事实上我从来没有用过 Redux),当我在学习这个库的时候,我学习到的不仅仅是 Redux 本身,还有它背后的更多东西。我可能很快就会忘掉 Redux 的 API, 但那又如何,那些它背后的知识才是最有价值的,是不会被忘掉的。

而工作则相当于是一个真实的场景,是在你学习新的技术的时候,帮助你进行实际思考的场景。你需要有意识地去想,这个技术如果用到我的工作中,它是否适合?它能解决什么问题?它为什么适合?它为什么不适合。当你在学习新技术的时候,结合这个技术,多思考这些问题,这才是真正的学习。

· 阅读需 2 分钟

上学的时候我特别喜欢数理化这些科目,因为这些科目对就是对、错就是错,然而文史类科目需要你 get 到它的点,然后由老师主观的评分;所以我当时偏科极其严重。

生活中也是如此,青少年时代的叛逆、懵懂无知、无畏无惧。固执偏见只坚信自己的“道”,并认为其他都是错的,淋漓尽致的展现着年轻人的棱角。后来的碰壁让我开始思考,并且深刻认识到非黑即白之间还存在无尽的灰色地带。

我停留在这个黑白灰认知很久,以至于深深的认为并不存在所谓的白。一叶障目不见泰山,当我们认定一件事情的时候,我们的思想就会变得很片面。

步入社会以后,随着阅历的增长加上生活的锻炼,开始慢慢的认识并打破了这个观点。生活不仅只有黑白灰,其充斥着各式各样的色彩,更夹杂着无数的中间地带。其没有所谓的标准答案,更没有非黑即白。

唯一能做的就是做一个不那么错的选择,仅此而已。

· 阅读需 4 分钟
Seven Wate

罪恶应该被遗传吗?这个标题还是源自看到的两个视频《四天工作制》、《为什么德国年轻人选择不上大学,直接去工作?》,进而延伸出来的思考。

英国作为老牌强国,曾更是被称为日不落帝国;作为世界上第一个工业革命和工业化的国家,西方资本主义的倡导者,并且是早期议会民主制的诞生地。但在资本主义原始积累阶段它也是罪恶累累,现如今作为发达国家,其国民更是享受发达国家带来的高福利,德国更是如此,那么它们曾经所作下的罪恶应该被遗传吗?

日本于上个世纪对我国进行侵略战争,两千万人的抛头颅洒热血赶走了侵略者。那么现在日本(人)应该遗传曾经所犯下的罪恶吗?清朝闭关锁国是直接导致近现代中国的侵略原因之一,那么现代的中国人就需要承担这些侵略带来的血与泪吗?

小时候村里有很多大沙岗,村里的老书记也是趁着建筑行业的高速发展,私自将全村的公共财产变卖发家;其子孙后代也是享受充分的物质基础所带来的便利,拥有常人所难得的资源与机遇。那么老支书的子孙后代应该遗传他曾经所犯下的罪恶吗?

人类作为智慧动物的一支,站在动物金字塔顶端,期间更是充满了原罪与杀戮;那么其后代应该遗传所犯下的罪恶么?如果动物就因为它母亲是猪,那么它生下来就应该承受将来被吃吗?

就这个问题也与朋友展开了辩论,问题的中线在于遗传;父母给予孩子生命,那么孩子应该遗传父母曾经所犯下的恶么?最后所得的结论是:

客观上:如果孩子享受父母曾犯下的恶所带来的利益,那么孩子是必须要遗传或者继承这份所谓的恶。

但是进而又存在的问题可以推翻这个结论,孩子生下来作为独立个体有选择的权力吗?如果父母就是想通过自己曾犯下的恶让自己的孩子获得利益呢?就如动物生下来是猪,小猪仔说它不想被吃,我能重新投胎吗?很明显这是不能的,也是做不到的。

综上所述,最后还需要再加一条简单粗暴的结论:强者拥有最终解释权,因为我得拳头比你大,所以我的规矩就是规矩。可是我以为我以为的就是我以为的吗?

· 阅读需 9 分钟
Seven Wate

最近临近天朝高层会议,公司也迎来了网安大队的检查,网安大队来了不少人,掺带着三方公司的技术员。简单询问了一些问题,并告诫临近会议不要出乱子,随后三方公司的技术员象征性的扫了扫漏洞。

其中一位警长深有意味说道,我们来不是吃拿卡要的,是为了保护人民、企业信息财产安全。有点那种去嫖娼不是犯法,而是为了救济失足少女,挽救背后成千上万的家庭哈哈哈。因为我们上了等保,所以问题不大。

前辈说 2019 年以前公司信息安全一度是裸奔状态,只有简单的杀毒和域控。后来国家《网络安全顶级保护 2.0》标准实施,集团信息总部将其列入了工作重点后;于 2021 年 12 月开始试点上线等保 2.0,并于 2022 年 6 月份正式上线。

等保 2.0 是什么

简单来说等保就是国家对于信息安全出台的一项标准,等保 2.0 是于 2019 年开始正式实施,其简单来说有 5 个等级,主要基于信息系统受到破坏后,所造成的影响来划分的。

  1. 自主保护级:一般适用于小型团体,信息系统遭到破坏后不损害国家安全、社会秩序和公共利益。
  2. 指导保护级:一般适用于对信息安全有要求的中大型团体,信息系统遭到破坏后对社会秩序和公共利益造成损害,但不损害国家安全。
  3. 监督保护级:一般适用于地市级以上国家机关、企业、事业单位内部重要的信息系统,信息系统遭到破坏后会对社会秩序和公共利益造成严重损害,或者对国家安全造成损害。
  4. 强制保护级:一般适用于国家重要领域、重要部门中的特别重要系统以及核心系统。信息系统受到破坏后,会对社会秩序和公共利益造成特别严重损害,或者对国家安全造成严重损害。
  5. 专控保护级:一般适用于国家重要领域、重要部门中的极端重要系统。信息系统受到破坏后,会对国家安全造成特别严重损害。

内网与外网

内网就是内部专用网络,简单理解家里的 wifi 就是内网,仅限于当下环境的网络通讯,外网可以简单理解为互联网;互联网的雏形就是基于内网衍生出的。虽然互联网精神自始贯彻开放、平等、协作、快速、共享,但是现如今越来越拉闸。

微信与小程序

微信是国民级通讯工具,小程序现在哪里都是,遍地都是,干啥都离不开这俩。微信还算好,可是这小程序究竟是什么鬼……

大部分浏览器下运行开发者工具就可以看到该网站的全部源码,做了什么操作都一览无余。这也秉承了互联网的开放精神,可是你微信一个通讯工具,有啥功能放在网页不好吗?再内嵌一个小程序浏览器,美名其曰方便用户,扫个码点开就能用,可是我以前打开浏览器输入网址什么都可以访问啊!

小程序违背了互联网的精神,产品经理一拍桌子就做出来的东西,感觉好牛批,背地里强奸用户。这种内网不要也罢,微信公众号也是,就连很多网站也是最基本的注册都不提供了,必须微信登录。

各大网站的跳转 APP

手机上打开个网站,就连 TM 的颜色网站也请你安装 APP,然后继续访问。就不说各大流氓厂商了,更是毛都没有,你有毛么?

例如知乎、CSDN 等等,内容难道不是各位创造的?各位既然都无私地放在互联网上了,我 TM 看还得下载个 APP,然后注册用户否则无法享受全部功能。商业产品是为了挣钱,这啦哪啦,毕竟都不能靠爱发电是吧?

这都别提互联网精神了,妥妥的互联网流氓、碧池。敢问你们当初不就是靠着互联网起家的吗?

公网 IP 与 ICP 备案

各大网站提供地平台确实方便,大家可以相对自由的分发、共享互联网资源。可是运营商你给我开放个公网 IP 不就完事了?我自己搭个博客,搞个聊天室,整个论坛不也是香饽饽的?

现在是你就算买了云服务、申请了 ICP 备案,也是这不能说,那不能说。还不如回到原始人时期,让我站在山头吼两嗓子。

抖音推送和信息茧房

抖音也是喜欢看什么就给你推什么,也是存在内网与外网。例如你是上海人估计挺难刷到新疆人的抖音,公共热点外网也是每个人都能刷到的。

权威媒体的推送,更是让我们没有了思考能力,更不提理解力了,说什么你听着就好了。

天朝网与世界网

不多 BB 了,我最痛恨至极的就是访问 GitHub 和 Google 以及包管理器拖库,哎西吧,毁灭吧世界!!!

最后的最后

我只是简单发一下牢骚,并不是抨击祖国,任何事情都是具有多面性的;

最初互联网的诞生带来了生活方式的改变,但是现如今商业化公司的跑马圈地与互联网精神越来越背道而驰;原本互联网精神带来的信息资源本就是开放的、无限复制、随处共享的,但是某些人似乎并不想让我们享受这些。

不仅仅是因为在天朝这种《特色》意识形态下,孪生出了无数《特色》的事物。就连外部的互联网世界也在发生着巨大的改变,大部分信息资源紧紧攥在少部分人手中!

· 阅读需 4 分钟
Seven Wate

我最近加了一个《低调务实优秀中国好青年》微信群,其是 Github 上一位开源作者《阿里巴巴·冴羽》创建的。当然不是靠关系户才可以进这个群,只是因为一件事引发了这个思考。

在一个周末闲来无事收拾书柜,整理出来几本闲置的书籍。思来想去不知道如何处理;不想送到回收站,因为那样我觉得知识被埋没了,所以便想着送人好了。

在群里发布了这个消息后,马上就有好几个群友加我微信预定书籍。直到最后共 3 位朋友预定了 8 本书籍,随后我就在周日下午寄出了。对于我来说这件事情并不奢求任何回报,也不希望谁感激我,我只是想让这几本书继续“活下去”。

但是后续发生的事情很有意思,其中一位朋友非常有礼貌,从始至终你都能感受到尊敬与感恩;另外两位朋友也是感谢至极,但是远没有那位朋友“更礼貌”。最后收到货后,那位朋友更是如获至宝似的发朋友圈言谢,这是令我没有想到的。

首先澄清一点,我与他们并无任何利益相关,更是非亲非故。仅是缘分把我们送到了一起。那么借这件事延伸出一个问题:如果面临三选一的升职问题,加上这个事情作为既定前提的情况下,你会做出更加理智,公平的选择么?

也需这个问题有些不成熟,但是如果还是这三个人,其中一个 A 技术、管理能力都不错,但是脾气臭,爱骂人。其余两个都不如他,你会怎么做抉择?抽丝剥茧出来就是一个问题:面临问题时,你到底是在凭借理智做选择,还是情感?喜好?

不要下意识理智了,完全不可能;因为我们没有办法完全剥离情感,喜好去做选择;所以我们会去均衡利弊,尝试做出最优选择,做出你能获得最大利益的选择。

我们无法做到理智选择,只能尽力尝试去做出最优解。

基于这个结论下,关系户也只是其一撮表现形式,钱权交易更是必然存在的。不过谈论这些对我们来说太遥远了。

· 阅读需 1 分钟
Seven Wate

看到了一篇博客,有一段视频,也算是广告很有意味。然后想顺带测试一下博客的 Bilibili 视频功能,再水一篇哈哈哈

[bilibili:53239786,1,1]

生活没有终点、最美的风景永远在路上 ~

· 阅读需 2 分钟
Seven Wate

乙亥末,庚子春,荆楚大疫,染者数万,众惶恐,举国防,皆闭户。

道无车舟,万巷空寂。然外狼异动,垂涎而侯,神州腹背受刺。幸龙魂不死,风雨而立。

医无私,警无畏,民齐心。政者、医者、兵者,抗疫逆行勇战。商客、戏子、邻家百姓、仁义者、邻邦献物捐资。

叹山川异域,风月同天,喜曰无衣,与子同裳,能者竭力,万民同心。

四月末,疫除,终获胜。此后三十余年,风调雨顺,国泰民安。

2020 年注定是不平凡的一年,今日更是国家公祭日。前事不忘、后事之师。

乌合麒麟前辈的作品更是让我充满震撼,借此分享。

国家公祭

国家公祭.JPG

民国十大汉奸

民国十大汉奸.JPG

丰碑

丰碑.JPG

剑来

剑来.jpg

和平之师

和平之师.JPG

致莫里森

至莫里森.JPG

白宫粉刷匠

白宫粉刷匠.jpg

你能呼吸吗

你能呼吸吗.jpeg

群体免疫

群体免疫.jpg

炮灰

炮灰.jpg

为弄臣加冕

为弄臣加冕.jpg

伪神

伪神.jpg


引用《庚子春.鼠年.荆楚大疫》

作者:欧阳小川

地址:https://www.jianshu.com/p/a79de84e949f

图片《乌合麒麟作品集》

作者:乌合麒麟

地址:https://weibo.com/1566936885/J5I6de3An

本站禁止评论任何有关时政、热点、反动、违法、暴力、恐吓、赌博或淫秽的内容,故本文关闭评论。

· 阅读需 1 分钟
Seven Wate

买蛋糕的时候,排了很长的队。

前面小孩等的不耐烦了。 妈妈、我不想买了。 你每次都是这样,幸福的事情都是需要等待的。


是啊,幸福的事情都是需要等待的。