什么是有技术难度的事情

回想一下自己这些年软件开发的经历,对技术方面的热情是有增无减

虽然现在做的不少事情,并不是纯技术性质的,

但我却不认为这是对技术没追求了,而是对技术本身有了更全面的认识。


最近接触了很多朝气蓬勃的年轻人,他们在技术方面的强烈执着经常让我想起曾经的自己。

跟他们沟通和交流,就好像对着年轻时的自己在对话一般,

所以我很想一股脑的把自己对技术的最新见解分享给他们听,看看能对他们有什么启发。


这篇文章先谈其中一个主题,什么是有技术难度的事情

准备不足

我上学的时候比较偏科,数学能考不错的成绩,语文很差。

这就导致在学习数学的时候,有点飘飘然,不能扎扎实实的打好基础,总是想着往前学


小学三年级的时候,拿了一份六年级的数学试卷得了 90 分。

初二的时候把微积分中的梯度、散度、旋度学完了,高中的时候一次去县城的长途汽车上我在看微分几何。

这是一种很不好的学习习惯,学的时候比较散漫,概念只求理解并不能熟练掌握。


一个教训是竞赛,竞赛题其实并不考概念,考的是赛前刷过多少难题。

所以,在高中把大学知识都学一遍,也几乎不可能在高中竞赛中拿到好名次。

当时有个同学对竞赛情有独钟,他拿下了全国数学竞赛一等奖,却甚至连阿贝尔群都不知道是什么。


另一个教训是数学成绩,概念学的多、竞赛题刷的多,也并不意味着数学成绩就能名列前茅。

有另外一个同学,平时并不刷题,但是高中数学却学的很透彻做题仔细,经常考满分

我们知道这是挺难的,数学要考满分,首先压轴题必须做得出来,并且其他题一个都不能错。

然而,稍微有一些难度的不等式相关的竞赛题,他却做不出来。


这给了我们什么启发呢?


这说明知识(技能)的难度没有唯一的衡量标准,驾轻就熟取决于努力的方向

我们在一个方向投入的时间越久,就越容易创造门槛,这个方向就成了对别人来说有难度的事情了。

卖油翁的故事告诉我们,“无他,但手熟尔”。

资料匮乏

之前看过一篇文章,作者提到了对金庸、古龙两位大师武学观的理解,

古龙小说中的大侠一出场就已经满级了,不知道他是怎么练成的,在故事中他会经历江湖恩怨情仇。

而金庸小说中的大侠则不同,他们一般以小白的身份出现,由奇遇导致他们获得某些秘籍,从而逆袭。


所以金庸小说的武学观,是崇尚秘籍(知识、资料)的,并且已经持有秘籍的高手也不会轻易将它传授给别人。

普通人就算资质差,有了秘籍也能跻身武学宗师的行列。


金庸小说中关于秘籍的这种现象,其实跟学习、工作过程中遇到的某些有难度的事情很相似,

在我上学那会,互联网还不是特别发达,查一个资料远比现在要困难得多,

经常要去图书馆找好多书,甚至把一个书架中所有相关书籍都看一遍,才能解决疑惑。


比如,当时我想理解 “张量”、“流形” 这些概念,找遍了学校图书馆,分别也只能找到一两本,写的还很模糊。

而现在呢,直接在互联网上搜索,甚至还能搜到好多别人理解后写的概念解释,

资料极大的丰富了,概念的理解成本就大大降低了。


软件开发领域也是如此,前些年我想理解 “CPS”、“hygienic macro” 几乎只能翻论文才行,

现在互联网上一搜一大把,这些概念理解起来也就变得简单多了。


所以资料获取的难易程度,资料的丰富程度,也能影响一件事情的难度。


现在网上一搜到处都是 React 源码、Vue 源码解读系列,我们再去学这些源码,又有什么难度呢?

所以要想做一些有技术难度的事情,就得尝试做那些很少有人愿意去做的事情开始。

“夫夷以近,则游者众;险以远,则至者少。而世之奇伟、瑰怪,非常之观,常在于险远,而人之所罕至焉”。

资源有限

我们知道有 “人力资源管理” 这个学科,可曾想过为什么 “人力” 也是一种 “资源” 么?

从经济学角度来看,资源指一国或一定地区内拥有的物力、财力、人力等各种物质的总称。


百度百科上解释,资源可分为自然资源和社会资源两大类。

前者如阳光、空气、水、土地、森林、草原、动物、矿藏等;

后者包括人力资源、信息资源以及经过劳动创造的各种物质财富等。


很多事情是要消耗资源才能办成的,“天上掉馅饼” 的事情太少了,从资源角度考虑,会引出两大难题,

  • 资源不足的情况下,如何尽可能把事办成

  • 怎样获取更多的资源


在软件开发领域,可以跟资源挂钩的有:

用人成本、服务器费用、办公室租赁、办公用品消耗、市场上的机会成本 等等。

我们能灵活控制的一般是人力


当我们自己单兵作战的时候,能掌控的资源数可定义为 1,

如果我们自己不能掌控自己能做什么,我倾向于认为此时能掌控的资源数为 0。

大部分公司会给一线员工有限的自由度,所以单兵作战的开发者能掌控的资源数介于 0~1 之间。


不考虑市场因素、也不考虑产品定位、也不考虑资源的利用技巧(其实是一种用兵方法,后面谈),

资源数少的作战单位是不敌资源数多者的。


所以,首先我们要学会争取更多的资源,想办法让资源向我们这边倾斜

这就需要对不确定的市场环境,做出更清晰的分析和判断,给出更合理的规划。

重视规划,因为它是竞争资源的一种办法。


此外,有了资源之后,怎样合理的利用这些资源其实更加重要,

中国有一本奇书《孙子兵法》,很多人认为它是讲军队的,而其实它讲的是资源的运用。

“举兵必克” 避免长时间消耗,“知己知彼” 不打无准备之仗,“以逸待劳” 让敌人被动的跟我作战,等等,

这些都是极其先进的资源利用技巧。


记得在之前看到过人们对于 支付包首页改版 进行的激烈讨论,

都在讨论为什么支付包首页的交互做得那么差,为什么不能下掉一些占位的功能。

而当时的负责人则评论说,这不是交互体验的问题,而是在打仗。 

是支付工具跟其他竞品之间的战争,是一场无硝烟的商业战。

谁能赢得市场份额,谁才能活下去。

所以交互体验差虽然是个问题,但是活下去显然更重要。


我认为这件事情的难度,不逊于前面提到的两种,怎样赢得商业竞争这场仗。

结语

本文提到了我对 “什么是有技术难度的事情” 的理解,从 时间不足、资料匮乏、资源有限 三个角度进行说明。

可以看到,难度衡量是分不同标准的,有着不同维度的有难度的事情。

难以界定哪件事情最有难度,哪件事情第二有难度。


此时我想对年轻的自己说,大胆的去做有难度的事情吧,不要在一些没有难度的事情上纠结争论

敢为天下先。

  • 长期投入时间到一个领域中,把其他人甩的远远的

  • 做那些极少有人去做的事情

  • 争取资源、合理的利用资源打一场胜仗