V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
metrue
V2EX  ›  程序员

如何失败的做一个全平台产品

  •  
  •   metrue ·
    metrue · 2016-11-11 18:17:46 +08:00 · 1725 次点击
    这是一个创建于 2751 天前的主题,其中的信息可能已经有所发展或是发生改变。

    访问博客阅读: https://minghe.me/%E6%80%9D%E8%80%83/2016/11/11/%E5%81%9A%E4%B8%80%E4%B8%AA%E5%85%A8%E5%B9%B3%E5%8F%B0%E7%9A%84%E4%BA%A7%E5%93%81/

      来自一个真实的失败案例
    

    刚毕业出来工作的时候,觉得写底层老牛逼了,要不就去写写 C/C++ 吧,和指针,内存整体玩一块好像好高端的样子,可以写写 PHP, JavaScript ,什么,那是不懂编程的人才用的玩具啊。 我可是 EE 出来的呀,不去写汇编,做板子已经很 low 了,不要讽刺我好不好。

    写着写着发现, C/C++真 TM 无聊,庞大的陈旧的代码库,修改一个小小的模块,编译的时间可以去喝杯咖啡了,加上跑 Regression Tests 的时间都可以去吃午饭了,而且时不时还来个 Segmentation Fault . 我的青春怎么这么被浪费掉呢?

    听说真正的黑客都用 Perl(也不知道从那个傻逼哪里听说的,噢好像不是傻逼,是 Steve Yegge),要不就去做作基础设施开发, build 一个棒棒的开发平台,控制着整个公司产品的开发,测试,发布,感觉好牛逼的样子呀。说干就干吧。用着写完了自己都看不懂的语言造了无数的内部轮子之后,兴高采烈发布了,发现压根没有人用,而且在传统 IT 公司做着基础设施开发好尴尬,产品研发团队, QA 所有人都看你不爽,出门都不敢和别人说我是写 Perl ,更不敢和同事说,哎,那个那个平台是我开发的,那个那个工具是我维护的,就是因为你们基础设施团队瞎搞,流程搞来搞去的,工具换来换去,你们还要不要人干活了,而且还用着那么难看的 Perl, 想自己改改代码都要看大半天,真想一把火把你烧死。

    后来你想,到底用什么语言可以既有 hacker 范儿,又简洁美观,既简单又复杂呢。那必须是 Ruby 啊,那高贵的红宝石才能配得上你的逼格啊。所以大步的跨入了 Ruby 的世界,刚刚被 Martz 魔怔一般的安利,一个不小心,又被 DHH 的洗脑营销,你按耐不住了,开始 Ruby on Rails 的旅程,觉得还是 Ruby on Rails 炫呀,那么优美简洁的语法,魔法一般的元编程,让人欲摆不能的不要不要的。搞了不一会,竟然弄出了一个像模像样的网站,突然间以为自己可以改变世界了,把网站往论坛一丢,漫天遍野的骂声一下子把自己的热情打到了哈尔滨的零下三十度。

    没一会儿, Ruby on Rails 就 not cool anymore 了,而 Node 火的不不要的,而且 Google 的 Angular 真是令人叹为观止的神作呢。要不是还是把 Rails 换了吧, MEAN( Mongo + Express + Angular) 才 cool 嘛,说换就咬立即换呀。然后项目还没有写完,就刮来了一道 is express dying? 的飓风,大家都开始转向 Koa 了,自己怎么能落后呢,不行不行,必须得转向 Koa 啊。哇,还真不错呢, Koa 的简洁一点都不比 Sinatra 差嘛,写着真是愉快呢。刷刷两三下,一个整洁的 API Server 就构造好了,开始愉快的 Angular 前端开发喽。

    Boom, 快报快报, Facebook 出了 React 啦,大家快用啊,特别简单的语法, virtual dom 很先进,在也不用理 Angular 那么复杂的 directive 了,配合着 Flux 用,爽的不要不要的呀。

    UI = f(State)
    

    你看着公式,多么简单深刻的哲学呀,而且单向的数据流那么好控制,换换换,必须得换。发发 actions, 加几段 jsx 代码,一个棒棒的页面就出来了,好棒呀,你漏出了满意的浅笑。

    什么,你还在用 Flux, 好落伍呀, Redux 都已经主流了那么久了,你是博物馆馆长嘛,你的小伙伴和你说,作为一个风一样的男子,跟风是你的属性啊,你怎么能忍受这般羞辱呢,刚回到,你就打开 Vim ,打开 package.json ,完美的把 redux 圆满的放进去了,调整了一晚上的代码, git push 了之后,不知不觉,天亮了,你安静的睡了两个小时。

    来到公司,同事不小心瞄了一眼的屏幕。大声的说,什么,你还在用 redux-thunk 来管理异步 action ,真实土鳖啊。同事的声音很大,所有的目光都刷刷的聚集到你的身上,你感觉无比屈辱啊,你忍住泪水,轻描淡写的说,我是在确认 redux-thunk 的一个 bug ,打算给他们发 PR 呢。在同事离开了之后,你马不停蹄的开始代码迁移,终于你的项目技术栈变成这样了:

    后端: Koa, Mongo
    前端: React(Redux/Redux-Saga)
    移动端: Objective C
    

    似乎你可以喘一口气了。

    万万没有想到, Facebook 又投了一个重磅炸弹, React Native 横空出世了,而且相继支持 iOS 和 Android ,你已经错过了成为了 Swift 的第一批尝鲜者,这个时候,你再也按耐不住了,立即开始投入了 React Native 的怀抱,终于在也不用看到 Objective C 那丑陋的语法了,而且你严格遵循着社区的最佳实践,Presentational  and Container Components 完美分开, web 前端和移动端代码复用特别爽,你暗暗的自豪了起来。

    然后又朋友听说你在做一款产品,准备同时做 Android 和 iOS 版,为什么不也把桌面版也做了呢, Github 的 electron 那么赞,有了 web 前端,几乎不要改什么代码就可以完成一个很棒的桌面应用呀,必须要上啊。最终你的技术栈变成了

    后端: Koa, Mongo
    前端: React(Redux/Redux-Saga)
    Android/iOS: React Native
    桌面: Electron
    

    你终于开始安心的写代码做产品了。然有而突然有人告诉你,其实现在 Vue 比 React 还要轻量级优雅,你开始惆怅了,心里泛起了一点点涟漪: 要不要试试看呢。

    然后你的产品 laivei 在 Github 躺了好久了, 却,依然没有完成。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1248 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 18:02 · PVG 02:02 · LAX 11:02 · JFK 14:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.