“给服务器开发的应届生泼冷水”之我见

原博客:写给那些傻傻的,想作服务器开发的应届生前端

1java

还有一些同窗想作大数据分析,若是你写过 MapReduce 程序就不会这么想了。如今的 MapReduce 程序写起来太 easy 了,不少时候简单到你就只须要写一条相似 SQL 的查询就好了。程序员

我知道这些轮子很是易用,然而数据分析远远不是会用轮子这么简单。web

传统的数据分析须要借助几率统计的模型,好比参数估计和假设检验,理解他们很简单,甚至你并不须要理解,直接套公式就行了。大数据分析也就是把概统的模型换成了 mapreduce 这样的轮子,其余呢,一点也不变。算法

可是数据分析须要在数据里面挖掘规律,更本质一点来讲,须要决定在各类各样的数据面前,使用哪一种算法或者轮子。这一点,我估计没个几年的不断尝试,不会有这样的经验。就像你会写顺序条件和循环三种语句,可是知道何时用什么,须要项目经验。spring

2编程

刚刚说到服务器端复杂,这带来的结果就是分工与细化。每一个作服务器开发的同窗,可能只会涉及服务器开发的某一部分的业务逻辑和功能,甚至是某一部分业务逻辑的某一层。好比我在网易邮箱作服务器端开发时,就只是负责 Restful Api 这一层的开发工做。后端

正是分工与细化使得后端更简单。好比后端负责业务逻辑的就不用管大量用户并发这件事,由于这是架构或者平台支持部门的事。若是一个后端开发者一上来就要和底层打交道,或者处理优化,我想就没有人写后端了。api

然而几年以后,因为写应用的人多了,其中有一些经验的人可能会往架构方面转;但若是他去了前端或者别的什么岗位,转起来就会比较困难。服务器

从业务上来讲,将复杂的系统拆分,而后每一个人作独立的某一块固然是好的。可是对我的来讲,服务器端开发却使终是一块迷雾环绕的大山,在这座大山上,你对你走过的路线很熟悉,而那些你没有接触过的服务器端技术,你使终是不清楚的。

首先纠正一点,拆分系统不是业务上的东西,是架构上的。

我想一个优秀的程序员,应该不只仅知足于学习可以挣钱的东西,在公司中使用的东西。个人意思是,他必定会涉猎底层也是更高阶的知识,好比说所依赖的server和os是什么东西。我所了解的程序员很多都是晚上或者周末看书,那他们彻底有时间去了解这些东西。

在计算机领域,一切都是分层的,甚至连计算机自己都是分层的。就算你搞清楚了server和os,底下还有cpu和半导体等着你挖掘。因此千万不要试图精通整个体系,穷其一辈子也学不完。

3

可是,正由于客户端须要密切和产品经理,UI 设计师打交道,因此他们会频繁接触到产品设计思想和设计思想。这使得客户端的同窗更加容易学习和积累编程以外的技能,包括产品和设计的思想以及沟通能力。另外,由于用户的 bug 都是经过客户端反馈,客户端同窗还更容易接触到真实的用户。
因此相对于服务器端同窗来讲,客户端的同窗的眼界更宽,因为非技术方面的沟通更多,因此他们的非技术方案的成长也越多。

后端没必要前端的非技术因素少。前端有 ui 和 ue 。可是业务逻辑可都在后端。好比一家4s店的处理销售流程软件,业务逻辑确定在后端,不可能放前端去。就算服务端程序员只参与执行,那他们可以跟产品打足够多的交道了。

通常来讲,开发是产品的下游,移动端是服务端的下游。移动端调用服务端的api,因此除了你那点可怜的交互设计,剩下的东西彻底取决于服务端的接口怎么设计。实际上移动端是跟服务端打交道,因此才有“前端改接口要请后端吃饭”的桥段。

固然这也不是绝对,由于对于工具类的app而言,移动端才是主导。可是如今互联网公司的app,工具类的恐怕少之又少,大部分是给服务端作个展现层罢了。

再者说,提高非技术能力的最好办法也不是作技术。假如我要提高业务水平,上几门相关的课比什么都强。

4

服务器端的技术长久发展的结果就是,基本上每一个业务需求都已经有现成的轮子了。因此作服务器端开发不少时候就是学习各类开源组件的用法,而且熟悉这些组件的一些性能特色和坑。
你觉得这很容易吗?其实不是的!这些轮子发展那么多年,已经很是复杂了,光 Spring 就包括很是多的特性,写一本 1000 页的书来介绍它也不为过。若是不是多年的使用,你能搞明白它的各类功能的优缺点吗?若是你搞不明白,遇到问题的时候除了抓瞎还能干吗?

web应用的框架,说白了,不过mvc而已。服务端的工做,我说的是开发而不是架构,不过curd而已。以前一个框架的学习经验彻底能够无缝迁移到以后的框架,甚至能够跨语言迁移。由于都是一个level的东西,设计思想也是同样的。

1000页的书在编程书里面多得是。就算你不搞spring而是搞安卓,都得学java,java的书《java核心编程》两本加起来也得一千四百页了。当初几本1000页的书都都过来了,还怕spring那1000页吗?

5

还有一些应届生以为本身在学校作过网站,以为在服务器开发方面有基础,作这方面更顺手。NO!企业里面的服务器开发彻底不是你想的那样,基本上你们在学校作网站的经验等于零。

我只是说一个事实,咱们这里大二就去实习的很多。若是企业里面的web开发不是平时作项目的那样,我想就没人去了。

事实上,咱们学的通常的人不只能胜任,并且还以为“对技术提高没什么帮助”。缘由见上面一条。

更不要提那些在学校就开始作项目的人了,没据说过他们当中哪一个进了公司还不适应的。

那么下面咱们就仔细分析一下倒底哪里不同。

  • 规模。规模只意味着功能的堆砌,web应该从1k行代码到100k行代码,技术复杂度都是同样的。

  • 可用性。你说的是开发,负责大规模并发是架构的事。只要开发不写很是愚蠢的代码就好了,而在review下面写出这样的代码是很是困难的。

  • 可维护性。框架的做用就是强制你高度模块化,来保证可维护性,这个没什么说的。

真是无稽之谈。


我并非要为web开发者正名。只是做为曾经是这个方向的人,看到这样充满谬误的文章,有些不爽,不吐不快。仅此。

相关文章
相关标签/搜索