wangpin34 / blog

个人博客, 博文写在 Issues 里

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

2021/12/03: 什么是技术驱动的公司?

github-actions opened this issue · comments

封面

主题: 什么是技术驱动的公司?

2016年我在论坛上回答一个问题,问的”某家公司如何“。我的答案是,“这是一家打着高科技名称,但是并不以高科技为本的公司。对于高科技行业的人来说,不合适”。后来很快就收到一个评论,说,”公司都是以业务为本的,技术只是手段而已。” 我当时第一反应是好想有那么点道理,但又好像有些奇怪。的确有些技术公司更重视技术,而其他公司不太重视。那区别到底是什么呢?业务和技术的关系又是什么呢?

5年之后的今天,我终于想明白了这个问题。

公司自有其业务,技术是实施业务的手段。这句话是正确的。

不正确的是,因此推而广之,认为技术之于业务,就是可有可无,无关紧要。用最好的员工,最先进的管理,可以。用最一般的员工,最拉垮的管理,也能用。我不否认这个世界上,有很多公司,其实就是这么做的,而且并没有死。原因可能很多,比如市场上有垄断地位,行业竞争壁垒很高。换言之,这些公司没有死是因为其他方面太强,作死而不死,仅此而已。

但同时也应该看到,很多优秀的公司,正在以最高的效率利用技术,发展技术,形成技术壁垒,最后鲸吞市场,这样的例子,国内外都有。比如奈飞,比如苹果谷歌,比如国内的一种互联网公司。你能说,他们所用的技术都无关紧要,随便做做就可以了。这可能吗?

”公司都是以业务为本的,技术只是手段而已。” 更让我想起儒家对技术的传统评价,“奇技淫巧”。在**的传统文化里,德行,品格,是更重要的东西。技术这样的东西,最是廉价不过。因为工人到处都是,随意征用就可以。遇到技术层面解决不了的,那就人力硬怼。“人定胜天”。

在漫漫数千年里,我们社会的精英阶层或者精神精英阶层其实就是这样看待问题的。讽刺的是,的确有很多问题,就这样被解决了。不靠技术,不靠发明,因为勤劳朴实的老百姓们太多了,不用白不用。直到什么时候呢?直到满清中后期,堆再多的人也推不动西方列强的枪炮阵地。被打的满头包的朝廷大员们才开始想着“师夷长技”。非得打痛了才长记性。

回到技术公司这个话题,为什么都是搞技术,为什么有的搞得好,有的不好呢?排除志大才疏的可能以后,最明显的原因,就是传统的**在作怪:”技术不重要“。既然技术不重要,那就做做样子,能交差就可以了。
之于那些真的原因花心思搞技术的公司,那也一定是因为,搞技术让他们形成了竞争优势。

总之,做不做,从上帝视角看有高下之分。但是在当事人看来,一定是自己的最优解。是不是全局上的最优解,就难说了。

那,业务和技术的关系,又是什么呢?有些业务,是必须借助技术来实现的,这种叫做强相关。腾讯阿里如何裁掉所有工程师,也不要外包的,就靠着卖广告铺位赚钱,可能吗?估计起初不错,但是很快就会面临各种各样的技术问题而不得不停业整顿。这种就是强相关,没有技术根本不行。因为它的业务是基于技术演化而来的。技术不仅是手段,而且是唯一的手段。

还有的是一般相关,或者弱相关。比如银行推出的手机 App。你不用 App ,直接去柜台上办理,也可以。事实上很多上了年纪的人就是要去柜台,App 用不惯或者用不来。还有根本无关的,这里就不举例了,多的很。应用市场那么多大公司开发的 App,很多 App 用户还没公司工程师人多,因为这个 App 本来就很多余嘛。这些公司的业务可能本来就不依赖技术,纯靠传统方式推广获客,技术,只是互联网大潮下公司们都想试试水的产物罢了。

最后总结一下,什么是技术驱动的公司?通俗的来说,就是没有技术万万不行的。

我讲清楚了吗?

读书

没怎么看书。看书的时间都用来玩《原神》了。

学习

写代码遇到很多算法问题。比如:

  1. 从目标字符串数组里找最长的匹配。
  2. 绝对路径
function computePath(path: string, root: string) {
  if (path.charAt(0) === '/') {
    return path
  }
  const p = path.split('/').filter((e) => Boolean(e.length))
  const r = root.split('/').filter((e) => Boolean(e.length))

  let i = 0
  let j = 0

  while (i < p.length) {
    const ep = p[i]
    if (ep === '..') {
      i++
      j++
    } else if (ep === '.') {
      i++
    } else {
      break
    }
  }

  return [...r.slice(0, j !== 0 ? -1 * j : r.length), ...p.slice(i)].join('/')
}

用算法解决业务问题的机会并不多,但是偶尔也会使用到,我总结了下来,大部分的场合在于“搜索”,就是从一个数据集里找到需要的。当然,第一步是构造适合的数据结构,然后针对结构,设计算法。其实说设计其实有些不准确,因为大部分代码都是现成的,我要做的只是把业务需要做抽象,找适合的算法,做一点点修改。