谈到学习,一直在强调要动手,不能只看书。正所谓:纸上得来终觉浅,绝知此事要躬行。看书更多的只是停留在表面,很多细节、精髓只有自己亲自动手才能深有体会,并牢牢记住。对于程序员来说更是如此,看着别人的代码很简单,看着别人讲的原理很明了,但是当自己真正实践的时候,发现还是很多东西没有弄明白。所以我在学习技术的时候,即使是看着很简单的代码,也会自己敲一遍,以加深理解。但是这种学习总是很零散,没有一个全局的概念。有没有一种学习方式,能把自己所学都能运用上,并且能作为后面学习工作的参考?这就让我想到了要开发一个完整的系统,以项目的形式来开发它,且不断的迭代,引入新的技术,引入新的思路。只有这样,自己多年所学习的知识都能有个沉淀和展现,并且有系统性,也能将自己所学以更贴近工作的方式加以运用,能提高技术水平,更能提高工作能力。
如是,就有了这个网络收藏夹——爱收藏。
选择一个能长期迭代的项目是非常难的事情。首先选择的项目要有实用性,从专业的角度说就是要有需求,没有需求就没有开发和持续迭代的动力。我上学的时候开发过很多小工具,例如类似windosw系统自带的绘图板,可以管理课程的课程表,图书管理系统,博客等等。开发这些并不是没有意义,对锻炼开发能力很有帮助,但是这些项目只是开发着玩,并没有长远的意义,很多细节可能只是应付了事,不会深入研究。自己开发的绘图板功能和windows自带的绘图板一样,但是bug要多,还有用自己开发的绘图板的必要性吗?自己开发的课程表、图书管理系统没有人使用,也没有继续开发的必要了。博客更是很多了,各种博客网站都不会去写,自己开发的博客更不会写了。最终,这些自己开发的系统只能是存储自己的电脑上,没有任何意义,更不会迭代。那应该选择一个什么样的项目呢?应该从细分领域着手,选择一个小的需求,且每天都存在的需求,并且目前没有满足这类需求的系统,或者很少有类系统。因为项目的独特性,才有开发的动力,每天不断的使用,才会发现问题和提出新需求,才能推动项目的迭代。
我选择的项目是网络收藏夹。平时在浏览网页时,总会碰到很多有价值的网页,一般都会收藏在浏览器的收藏夹中,但是后面几乎很少再去打开它,换一台电脑这些网页也找不到。为了能随时随地的,快速的访问自己收藏的网页,就开发了网络收藏夹。遇到喜欢的网页,就一键收藏,且自动显示网站名称和简介,随时随地能访问。
能做到长期迭代一个项目,要求开发者要有技术敏感性,即是对新技术有学习和持续实践的兴趣。我自己开发几个项目,虽然方向在不停的变化,但是技术一直是朝着主流技术在演进。最开始是开发的windos桌面版,后来比较流行web系统,又开发了web版的图书管理系统。再后来流行微服务、前后端分离,又使用Springcloud、vue开发了博客系统,再使用了docker进行部署。这种持续不断的迭代,使得自己学习到的技术得到了很好的实践,自己所学不仅仅是停留在纸面上,而是有了有价值的输出。同时自己的一些很好的想法能在这些系统上得到实现和验证,更能很好的弥补工作上的不足。开发系统中遇到的问题,也会促使自己不断的进行学习。
未来,随着网络收藏夹的使用,必定会出现更多的问题和需求,这些问题和需求将会持续的在系统中实现。同时,随着自己的学习,项目也会在不断的完善。同时,也会写出一系列的文章,以此帮助大家学习各种技术,带领大家完成网络收藏夹的开发。
网友评论