在知乎的回答:后端开发,主要的挑战有哪些?

这个问题是我提出的,其实也有想要总结一下自己思路的意思。我的初步的思考如下:

 

1、后端开发,最重要的挑战,来自于规模

 

规模的扩大,比如访问量扩大,文件存储量扩大,数据量扩大,服务器数量扩大,等等等等。

 

一个前端看起来一模一样的网站,某一种指标如果扩大十倍,几乎都会面临一大堆的问题和挑战。之前@徐湘涛 有一条微博,但是我现在搜不到了,大意是,一个系统,从小到大,仅仅在数据库方面,就要经历多次的拆分,横切、竖切,种种演进。总之是一路荆棘的过来的。

 

另 一方面,在规模扩大以后,后端系统架构,一定会复杂化。原来只有一台Server,LAMP都装在一起。然后数据库分出来,反向代理,负载均衡,分库分 表,Memcache,Message Queue,事务处理,CDN,NOSQL,种种架构,Server,就逐渐的演化出来了。

 

架构的复杂化,自然会带来更多的问题和更多的挑战。

 

2、第二大挑战,来自于安全

安全问题层出不穷,防不胜防。需要技术手段,也需要管理制度。这方面我也不甚了了,期待更加资深的人来解答。甚至单独开一个问题:“网络安全方面主要的挑战有哪些?”都是一个很大的问题。

 

3、第三大挑战,来自于效率

能否提供足够的处理速度,能否提供足够的带宽,能否保证响应能力。这些是对外的效率。

能否使用更少的服务器,能否使用更加便宜的服务器,能否使用更加节省能源的服务器。这些是对内的效率。

 

4、第四大挑战,来自于需求变更

当然,无论前端后端,都会面临需求变更,只要是软件开发,这都是大挑战。但是当一个系统已经 稳定的,高效的运行着的时候,需求变更来了,在满足需求之后,原来的本来没有问题的部分,会不会突然崩溃,一旦崩溃,就是后端工程师的噩梦。

 

从 这个角度来说,后端工程师,会更加抵触变更。一个系统只要是好好的运行着的,最好就不要去动他。CSDN密码泄漏之后,@Tinyfool 写了一段话,我认为非常有道理:“技术界有一种哲学叫做,系统如果还可以运行就不要修改它。这种哲学我一直反对,但是没有可靠的证据。CSDN这次是一个 非常好的证明,如果前年有人在CSDN内部说,咱们的数据库密码是明文,改了吧,也许有人会反驳都多少年没出事儿了。所幸现在出事儿了。”

 

但是,我真的非常理解那些不想变化的心态。虽然他们是错的。

 

5、第五大挑战,来自于教条

这个世界上有无数IT大公司,他们都很开放,都愿意分享自己的架构与技术。于是,对于“眼界开阔”的后端工程师而言,困难不在于如何解决,而在于如何从众多的解决方案中做出挑选。框架、实践不断涌现,成功案例也不断涌现。人家都用得好好的,你敢用吗?

 

到底是勇于尝鲜,还是保守要紧呢?这个很难。

在知乎的回答:在游戏公司运营部只能做发帖回复的工作,学不到东西,怎么办?

有一个被折叠起来的匿名用户的答案,很有代表性。典型的:振振有词,却不能反思的人。

1、从个人经历来说,任何人都可能会经历:看上去毫无前途的工作。

2、从成功失败的分水岭来说:所有的loser,都是只会抱怨,却不会在逆境中成长的家伙。

3、 从公司来说,付出一份工资,换取一份劳动。如果能够招到成长快速的员工,能够有能力承担越来越多的份外的工作,所有的公司都会感到幸运。厚道的公司,会给 他升职加薪,不厚道的公司,至少会分给他更多的工作。如果楼主在很长的一段时间没有感到自己的工作变得越来越多,越来越重要,那么,抱歉,你就是个 loser。

4、跳槽我当然不反对,人往高处走是天然合理的。但是,如果你现在的公司,都不能越混越好,很大的一种可能性是,loser走到哪都还是loser。所以,在跳槽之前,先混到升职加薪,至少先混到升职,再以更高一级的身份跳走。这样也光彩一些。

5、仅仅说楼主目前的这份工作,其实很有意义。发贴回复,一点都不简单,有很多值得深入学习的地方。如果你觉得学不到东西,那么抱歉,你是个loser。

在知乎的回答:如何更有效地学习开源项目的代码?

说说我的开源学习经历:
1、下载源代码之后,首先要跑起来。编译通过、正常运行。
2、在你觉得最有可能的运行到的地方,设置断点或者抛出异常,这样,就能够找到一个项目在正常运行时的入口点。
3、从入口点所在的那个源文件开始阅读,逐步把握整个项目是如何启动起来的。
4、随便改点代码,看看会不会报错,如果报错,会从哪里报错。
5、试着把报错屏蔽、修复、或者绕开。
6、尝试理解一个系统的内部结构,多少组成部分,主线模块是哪些?辅助模块是哪些?
7、从实际需要出发,修改这个项目,满足自己的某一个小的需求。

在此之前,尽量不要在网络上找答案。

8、看看相关的讨论与心得,看看是否与自己的理解相一致。
9、提交bug fix或者某个新的功能代码。

在学习开源的过程中,有几个方面,会获得大量的收获:
1、架构与模式
2、开源社区常见的一些惯用法
3、相关领域的结构与算法

总结一点是:学习开源,就尽可能在代码里找答案,而不是在代码之外找答案,那些都是二手的,而且很可能是不准确的。

在知乎的回答:为什么盛大创新院多方出击,但真正给力的产品不多?

有很多人都邀请我来回答这个问题,我的确犹豫过是不是要匿名回答,后来想想,还是实名吧,这是我一直以来坚持实名上网的原则,不想因为问题的敏感而破坏。

1、创新本来就很难,在中国,在互联网这个领域,尤其困难。一个产品出来没多久。就会有很多的"专业评论家"出来指指点点,怎么看不到创新点啊,怎么跟某某国外的产品那么像啊,怎么不够给力啊?这样的专家,自己有什么拿得出手的产品吗?没有!典型的人物有,谢文、麦田。

2、 互联网产品,技术、产品、运营,是三大核心要素,缺一不可。能够在一个团队里同时配备三类顶尖的人才,是非常困难的。即使三者齐备,具体的产品领域,也可 能决定了一项产品,注定是慢热的,而不是指数增长的。但是,在风险投资人看来,慢热的项目是没有投资价值。而现在的互联网,恰恰是一批风投主导了话语权。 如果没有创新院这样的环境,很多项目根本就没有出生、成长的机会。比如我们团队现在正在做的一个开源项目托管社区,根本就没有任何赢利的目标与前景。如果 没有盛大创新院的支持,我们根本无法开始这个项目。

但是,这种项目有可能爆发式的增长吗?github有今日的风光,又是经过了多少年的打磨与积累呢?

3、创新,更需要耐得住寂寞和批评的人来做。更需要理想远大,但同时脚踏实地的人来做。一项创新,在他刚刚诞生的时候,很可能是一点都不酷,一点都不给力的。