嗨大家好,没有想到今天来了这么多人,非常感谢大家来捧场。下面我把今天想谈的话题发给大家,然后按这个顺序一个一个说。说完一个话题停下来大家讨论,聊到后面话题的时候,前面的问题如果大家想问,也非常欢迎发问,好的谢谢大家。
今天主要想跟大家聊聊这几个方面:
-
技术成长路线;
-
对Web技术和Meteor的理解;
-
关于技术创业。
首先跟大家说说自己的一个成长经历吧。我从高中的时候编程,最早接触的是Pascal,现在好多比较年轻的同学都不熟悉这个名字,后来又写了几年Delphi,实际上就是objective的Pascal。工作了之后主要用的是Java和Python,后来转向了数据分析领域,用Scala语言,计算平台是Apache的Spark,大家可能都听说过Hadoop这些分布式计算平台,但目前分布式计算方向的是从Hadoop这种磁盘落地的方式向内存计算,也就是Apche Spark的方向发展,所以又做了一段时间的Scala。
大概是从2014年的年底的时候,开始着手做Web开发,因为我在接触Web之前的已经写了很多年的代码,有一些写代码的感触,所以当时考察了很多Web开发框架,包括Ruby on Rails,也就是RoR,Java的SSH,Google的Dart,最后找到了Meteor这类纯JS的架构,一直用到现在,大概不到半年的时间。
我接触的编程语言比较多,对这个领域比较感兴趣,工作期间使用过很多种语言,包括函数式风格的Erlang和Haskell,包括像面向对象的Ruby。用语言写代码,写出来的代码能完成一定的任务,对这件事情本身非常感兴趣,所以在这方面投入了不少精力,大家可以看下我的技术博客,上面各种语言都有,杂而不精,哪位高手看到我写的比较粗浅,可别笑话我。
好,现在我们来聊聊第二方面吧!
关于Web这块儿,我接触的时间比较短,算上前面东看西看也就一年时间,资历比较浅,所以只是谈一些个人看法,肯定是比较幼稚的。我觉得Web发展到今天,从1.0那个时代侧重于页面展示,向完全桌面应用的方向发展,比如咱们用的Meteor就是一个非常典型的一个代表,我们可以完全在客户端开发,把所有功能都放在客户端,然后等到功能测试好了之后,再把那些数据,也就是企业核心的资源了,放到Server端。
在比较了各种Web技术栈之后呢,我有个比较突出的感觉,因为我Web的背景不是很强,对HTTP协议细节也不是很了解,我看到很多技术栈的后端,对HTTP的嵌入还是比较深,如果开发人员不懂Request和Response这些概念的话,很难把自己的业务放进去,很难对开发过程有深入理解,而Meteor这个技术呢,可以让程序员只关注业务逻辑,不需要去关心网络传输协议,完全不跟HTTP协议打交道。
实际上Meteor使用了一个叫DDP的传输协议。在应用层,也就是七层协议的最高层中,DDP协议更适于做Web app的开发,比如说它的状态保持,比如说服务端向客户端推送消息,这些优势使得在它上面做开发,会天然地比基于HTTP协议的框架容易很多。
学习Meteor时做最简单的那个Tutorial的时候,如果同时开两个那个浏览器,在其中一个里面改了数据,另外一个就跟着变了,这个效果如果在一些传统的Web架构上做,可能要用到比较高深的技术,但是在Meteor上,大家可以看到完全是一种非常自然方式,没有任何人工干预就自然而然就实现了,所以这个App的体验就会比传统架构好很多。
从我们程序员的角度出发,会有一种顾虑,认为Web技术发展这么快,会不会有一天Meteor也像RoR那样,曾经一统江湖,现在已经不再高速发展了,大家会有一种疑问,Meteor会不会下一个RoR呢?
这个问题我的理解是,技术是在不断变化的,但思想是持续的。比如Ruby on Rails吧,实际上是MVC架构,MVC这个思想其实早在上世纪七十年代,施乐公司做图形界面的时候就已经有了,所以RoR在开发思想的开创性方面不是特别强。
但是反观Meteor这个架构,它不仅仅是用纯JS写代码,实际上是在倡导一种思维方式。以前我们普遍认为网站就是一些个页面,后来用Ajax技术和其他Web 2.0技术增强了互动性。但并没有摆脱页面导向的思维,仍然会明确的区分客户端和服务端。但是Meteor实际上已经不明确进行区分了。
在这个架构下,完全可以按以前我们写桌面程序的思维方式,先在客户端把功能完全实现,再把我们需要隐藏数据和业务逻辑,挪到服务端去。这样一来,从思维方式上已经跟传统的区分这个客户端和服务端的方法不一样了。这种思维会持续地发挥它的效果,即便说过个三五年,Meteor不像现在这样爆发式增长了,即便出现新的技术栈,也会吸收这种先进的思想。
Meteor还有一个非常好的特点就是轻量化。从Java时代开始,做Web开发起码先要装一个Eclipse这种很牛的IDE,上面添加各种框架,如果你的电脑配置不高,Eclipse得起个三五分钟的,先双击一下图标,然后去喝杯茶,洗个澡,回来这个IDE终于起来了。但是我们看Meteor开发,完全在命令行里面,带一个vi这样的文本编辑器,然后再有个Firefox之类的浏览器就能搞定。
那么从GUI图形用户界面向命令行转变到底有什么好处呢?我个人的理解是:Web技术本身是一种文字展现。以前说网站做的非常的炫,各种弹窗、各种服务窗口、包括鼠标怎么追也关不掉的那种窗口,我们说做得非常炫。但后来我们发现Web逐渐发展为扁平式设计,把文字提到一个比较高的位置,对文本的打磨远高于对图形的要求,比如对字体、字号,文字风格与场景的搭配非常重视。
真正能够给我们带来价值或者说高效率传递价值的,是文字,图片只起辅助文字的作用。在Web开发当中,传来传去的就是文字,传图片也可以采用某种技术把它压缩成字符串进行传递。那么我们开发工具的文本化,实际上暗合了Web应用的这种发展趋势,所以我个人是比较推荐这种基于文字界面的开发方式。
好的,技术这块儿就先说这么多,大家感兴趣的话我们私底下交流。
下面谈一下关于搞技术的人创业的思考。
大概是去年的十月十一月份吧,我的一个同学找到我,希望能够一起来创业,他在会展行业做了很多年。
在工作当中了他感受到会展行业由于信息交流不畅,导致了很多问题,随着移动互联网出现,之前他感受到的所谓行业痛点,现在已经可以解决了。
加上之前一个做金融的同学和一个做运营的朋友,我们成立了创业团队,一起做牛展网(newfairs.com),这个网站简单理解就是会展领域的淘宝,我的理解可能不是很到位,大概就是这么一个角色。
很多同学对技术在创业当中如何发挥作用非常感兴趣,建议大家看下子柳写的那本《淘宝技术这十年》,这本书非常好地再现了淘宝发展过程中,技术所发挥的作用。
技术圈里会流传着很多硅谷的几个技术天才,用一种世人仰望的语言,做了一个横扫一切市场对手的应用,创造了财富,实现了个人财务自由。但是我在看《淘宝技术这十年》的过程当中,没有感受到这一点。初创团队所犯的那些错误,淘宝犯的也不少。所以我感觉,不要相信那些传言。现实世界中没有那么多的一刀毙命这种古龙风格的东西,技术所面临的问题,还是要认认真真一点一点地去解决的。
现在国家层面也很鼓励创业。大家可以看到创业团队如雨后春笋般出现。一夜之间到处大家都在谈创业。个人的想法的确是创业的开始,但其实并不特别重要,因为但凡你的创意靠谱,凡是你能想到的,基本上别人也能想到。
那么所谓的创意是什么?我认为是这样的:我们想到一个点,这个点可能是以前的一个问题,现在靠新技术或者新模式,能够解决它,也就是所谓的行业痛点。
当有了这个想法之后,在头脑当中的就会有一个对这个产品的构想,一个大概的框架,将来做出这个产品的话,大概希望能达到什么程度,解决什么问题。但它只是给自己设置的一个终点,而且还是个虚无缥缈不一定在哪儿的终点。那么我认为,至少需要有这么几方面帮你到达这个终点:
一个是运营,就是怎么才能让别人知道这个产品,让那些真正需要这个东西的人,能够看到有这么一个产品。
下面一个是资金,至少包括财务和这个金融两方面。一开始的时候如果只是几个人做为一种业余爱好,可能不存在怎么发展的问题,能不能挣钱也无所谓,但如果是严肃地把它当成一个事业来做的话,现金流在其中起的是像空气一样的作用,如果现金流断了,这件事儿可能就不了了之了,所以肯定要有个比较专业的人士来做这方面的工作。
最后,重要的内容当然得放后面,当然就技术了对吧!所有的想法都需要通过技术去实现,比如笑傲江湖里面,剑宗和气宗都觉得对方不怎么样。但至少剑宗比较重视剑招,不管高手低手,还能在外行面前糊弄两下,但是气宗,如果你什么都不拿,那你水平再高也没用。
创业过程中技术所发挥的作用,就像一个坚固的底盘,是所有一切想法、一切运营、资金流转,最后落实的东西。你的产品究竟怎么样,是好是坏,最后要通过技术的手段来做出实在的东西,传递到用户手上,最后形成一个闭环。
从开发者的角度,技术不仅仅是一个产品的承载平台这么一个角色,技术本身就是一个非常吸引人的领域,它不仅有是冰冷的代码,严密的理论。它的背后包含有丰富的文化背景。我们回望上世纪六七十年代到现在,Unix和Linux系统的发展历程,各种爱恨情仇,江湖恩怨,勾心斗角,忠诚和背叛,各种高大上和狗血的情节,在技术圈里都能看到。
那么好,上面几个方面我都基本上介绍了一下,如果大家还有什么问题的话,欢迎大家过来跟我互动。谢谢!