野醺小记|搬过砖,铲过沙,独自一人饮雪花(技术篇)


不知道是午夜还是凌晨,当我 coding 略感疲惫的时候,想记个流水账再继续。
话说2020年过得好快呀,快得让人觉得一个春节紧接着另一个春节。与我而言,这是任性的一年,在家办公的日子,让我奢侈的用8个月的时间成全自己,做一个互联网产品的全栈设计和落地实现。
此文无酒,谨以千余字,记录一下这一年以来有关技术细节之外的思考。
先反思一下
「本可以」是我特别讨厌的三个字,其实就算一切都顺风顺水,该来的尴尬也总该会来。就像PHP 和 Python2.7 停止更新,ai说凉就凉以及自己说胖就胖。原本浓密的技术栈,也随着脱发而逐渐稀疏。
曾经以为过硬的技术是相对保值的硬通货,可是真到一把年纪才意识到就连技术本身都是有生命周期的,就互联网而言,3到5年必须重新学一遍。所以也庆幸这8个月,就像天山童姥一样,内力全失重新练,也重新体会了把年轻的感觉(头发并没有多)。
2013 到 2016 研究生这3年,即使是过了4,5年之后,也让我觉得轻剑快马。无论是学业之内还是外包挣钱,一个接着一个的项目做来者不拒。五道口通宵coding的美式续杯,大运村楼下的柠檬茶和午夜秋刀鱼以及中午起床后的齁咸油泼面,是一只野生程序猿的日常饮食。

高强度的编码基本上可以解决「菜」,那几年基本上把该见的bug都见过了,也撑起了web+android+iOS的全栈开发的基本技能,虽然也实现了自己完整落地一个产品的愿望,不过基本上是跳着做的,很多细节不能举重若轻,关注点也在怎么实现才能更好上,产品运营也比较糙,基本都是「抄」和「炒」的粗俗手段,重量不重质。

其实技术这个东西就像吃饭,一方面他是一个迭代的过程,不能说今天吃了,明天就饿着。技术也是会迭代的,而且看似繁复的编程语言,有着内在的发展逻辑。最开始是面向过程,为了解决代码的复用,逐渐有了面向对象,过度继承等问题出现,又有了各种设计模式,逐渐的设计模式又融入了编程语言,比如python中的迭代器,以及模块化的编程,甚至python中的引用。短平快的敏捷开发流行了好一阵,后来又有了swift里面向协议的编程。
这个背后的逻辑就是:编程这件事情,本质上讲是一种对复杂度的管理,最开始使用程序设计去管理这些复杂度,逐渐的变成了利用数据去管理复杂度,因为再严密的逻辑也比不上牛逼的数据结构。逐渐的数据形式也复杂起来,比如api传回的数据,app的界面(本质上也是一种特殊的数据),就出现了面向协议的编程。keep hungury 吧,除了宵夜不对付,还有就是保持好奇心和审视批判的视角。
一个心结
这段时间闭关,打开了我一个心结:于个人而言,如何解决技术的深度和广度之间的矛盾?
曾经一度反思自己学的东西太杂,有点贪多。写程序这个事情,如果一种语言掌握的足够熟练,学习其他语言就会很快掌握。毕竟都是逻辑表达形式而已,学个if/for/while,非得用java写出c语言风格,谁也管不着。以至于有一阵,强迫自己保持一个技术的广度,好像这样很厉害的样子。现在看看,完全没有必要,就像你会用日语,英语,法语,中文做1+1=2一样,关注点不应该是会的多,而是要有勇气去琢磨下如果写成1+1<>2的好处。
这也是贪念作祟,为知识所累。总不能像金针菇卡bug,反复消化几遍就能吸收的更好。面对以前做的东西,丢掉陈旧的部分,没必要自己会的很多很厉害,清空自己,才能有胃口吃下一道菜。
不过,以上是我一年前的认知,还没想得通透,直到前几天,灵光乍现。

技术的深度和广度要在产品层面才能得到统一,当下所有的行业都在朝着精细化分工发展,一方面是为了高效工作,避免入职学习成本过高。另一方面,是降低人力成本,一家健康的公司,每个人都应该是可以替代的。
然而「分工」并不是只有好处,与公司而言,只是降低成本的折中选项,而那些被舍弃的地方。正是「全部工作独立完成」的原始魅力。
说的再明白点,一个产品的细节才能决定成败,然而这些细节,只有在「全部工作独立完成」的过程中才能看得到。所以如果抱着追求卓越的态度来做产品,团队里至少需要一个能看到所有细节的领路人。

所以,哪有什么深度与广度的取舍?只有深度与广度兼备,才有可能穿过那篇黑森林,看到光芒万丈的太阳。
这是一个需要勇气和自己死磕的过程,不能惜力,更不能考虑成本。
最后,别磕死了就行。。。
本文由「野醺」独家原创,严禁转载,违者必究。
