从开发一个完整的网站到全栈开发工程师

前言:记录反复独立开发网站、app、应用程序的成长。

前端开发的成长。

前端的学习,从每一个小小标签开始,标签和属性记记背背,最基础的网页,就是不同标签的叠加。虽然有一些简单的样式,但始终感觉脑袋空空。

在独立写了无数项目,无数页面,后面想来,前端开发重在设计和样式。js是偏逻辑的,也就是偏后端,虽然js的重要性不言而喻,js占据前端的绝大部分,但是越研究js,就会让你更偏向后端,从而前端再无存进。

前端的灵魂,是每一个元素的设计,前端的元素是有共性的,一个 div 可以千变万化,可以是方的、圆的、动的,忽隐忽现的,甚至可以用div画图,把一个元素样式千锤百炼,千变万化时,再让你设计前端页面,简直手到擒来。前端的精髓:div 的千变万化,页面的设计

后端开发的成长。

最开始接触后端,感觉是最没用的,最简单的。

从一个最基础的增删改查来讲,后端接收前端传递来的参数,然后写入数据库,或从数据库获取消息,再返回给前端,无疑只是一个中间工具人:

前端 --请求--> 后端 --请求--> 数据库

前端<--响应-- 后端 <--响应-- 数据库

基于这样浅显的认识,后端开发也是长时间无存进。尽管代码愈加精炼和规范,各种设计模式也有样学样,代码封装得也非常简化。但是这些并没有让我成长,反而是越来越感到迷茫,永远有学不完的东西似的。

在经历的大量的编码,以及独立设计了多个应用框架,才终于慢慢明白。后端的精髓,在于逻辑控制,比如同样是从前端接收并发送到数据库,如果把一个步骤分成多个通用步骤,这样代码重用、耦合就更低,越是分层、分步骤控制的越精细,则越能驾驭庞大的系统。

写10个小系统,远远不如一个大型系统来得有难度,前者只是无用代码的反复堆积,而独立设计完成一个超大型系统,足以证明你有非常强大的后端能力。

数据库的学习成长。

曾经简单的认为,数据库只是一个存储数据的工具。在很长很长一段时间,都是使用文本存储。(这里的文本,并不是简单的按行文本,很多时候也是有格式的)认为数据库比较繁琐,比如一个非常小的系统,就用于记录密码,除了登录和密码列表外,再无其他功能,更是一度使用文本存储。

后来发现,无论是简单的数据库存储,还是文本存储,最大的困难就是不便于扩展,不灵活。

如果使用了数据库,那么可以设置无限的表,可以设置很多字段,扩展方便得多。当然,这一点即使是刚接触数据库的也能理解,但是真的深刻理解吗?

数据库不是简单的存储,最重要的是数据间的关系,以前为了简单,所有字段都存储到一张表中,或者说即使存到多张表了,也是按实际需求简单的分析了一下应该存储多个表。

要考虑数据间的关系,不一定要按照实际需求来分析,而是按数据本身,尽量把字段分离到合适的表,你的业务逻辑也将变得更加不一样。举个例子:一个公司有一个地址,一个职位有一个地址,通常来说我们认为不可划分,但如果我们强行划分了就会不一样,我们把每一个地址都记录下来作为地址库,这样新添加职位甚至可以从地址库中选择,一般的程序员都想不到这样设计,而对用户来说无疑是十分友好的。

从前面来看,多表的设计,数据间的关系,无疑是数据库能力提升的最佳体现。而不是多掌握几种数据库、记记背背一些语法,只要不得精髓永远停留在表面阶段。

全栈开发工程师。

web全栈开发,仍然是价值最高的。无论多专业的分工、前端和后端、设计都是经验饱满,但其效率,远不如全栈开发的50%,说50%都有点过了,综合有30%就不错了。做设计的,也可能设计不当(因为前端后端数并没有十分熟悉),前端和后端也可能难以沟通(只要是程序员,沟通肯定是有问题的),这样就导致了开发进度缓慢,而且最终成品含金量大大降低。

只是在国内,人数多。通常来说不缺程序员,也就导致全栈开发面临一个尴尬的局面,那就是:价值远被低估(或者说从未被重视)。

能力一般,则难以堪当重任,前端、后端等等都要十分熟练(一般程序员都是达不到的),还不如分别招几个专业些的程序员来得实在,毕竟各个方面都很牛的人几乎不存在,或非常稀少。所以真正牛逼的全栈开发你见不到,也很难成为这样的人。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注