一个web程序员的年终总结

时间:2023-03-09 23:28:42
一个web程序员的年终总结

  2017年年终总结(就是一个程序员的瞎叨叨):
  从来到中科院到现在,很开心可以在这留下来。毕竟对于我来说,这里符合我对自己毕业后前两年的规划。我是一个很慢的人,特别是对于我想做好的事情,我会非常认真仔细的思考,不愿意放过任何一个漏洞。而对于我的专业来说,对于前端,我当时也是知之甚少。我愿意花费更多的时间去补充自己的知识,我非常乐意学习新的知识,新的内容,以及了解所有我不知道的,意料之外的现象。了解他们形成的原理,去避开,或使用他们。但是我不愿意自己在没有很牢固的基础时,去大量的学习内容,我觉得这是一个表面现象,或者说这不是我想要的,想成为的人。我希望自己对所学的一切都知其然知其所以然,不仅会用,更能理解,解决,创造。这大概是我当时的想法吧。
  对于前端,可能很多人都觉得简单,甚至上手非常的快,或者觉得html和css基本不需要学习,js也只用jquery就可以了。最近也在面试一些同学,可能他们也抱着这样的心态,我觉得这是不正确的,我并不觉得一切都很简单,对于html的关注,和css的关注,应丝毫不亚于对js的关注,我不得不承认我当时对js的关注也多于其他两项,我正在调整,去花更多的时间关注他们。这些都是在工作和学习中,时常会感到对这些的理解不够深刻,只是用,很少去想为什么用。在这一年中,我觉得自己的基础在逐渐的牢固。在工作和学习的过程中,也遇到了许多问题,产生了许多想法。使用了更多的库,包括学习深度比较深的像cesium,three,arcgis等,使用了sass,less,gulp,grunt,等内容。写了几篇博客(比较遗憾,没有多抽出时间来写),但是总结了几百个页面甚至更多的知识。使用java,并且优化了自己的代码,别人的代码,进行了重构,自己的前端后台代码也在不断的成长。照着书敲了800多页的内容。等等还有非常多的内容。在这里,所有的问题,都需要自己解决,所有的想法都要自己判断,自己处理。像代码的优化方式,重构都是看书和别人的总结,自己在过程中逐渐认知的内容。总体来说,就是自己一点点的累积和总结,达成了今天的自己。
  接下来总结我现在能想到的一些问题:(这点也是没有进行良好的总结导致,以后还是要多多总结,全面总结):

  第一个是跨域的问题:做项目时,服务端用的python,我在自己的编辑器写web。请求调试时跨域。当时解决方法,使用CROS进行跨域。因为服务器也是可以控制的。所以很顺利。后续给组里写的项目,都是自己需要写后台的,所以基本没有这个问题。直到有一次,需要去调用一个视频流,当时我们有三种格式的,由于某些原因,获取放到了前端。那次真的是尝试了10多种跨域方式,最终通过webscoket解决。也帮助我总结了基本上所有的跨域方式,以及我了解到的他们的特点。

  第二个是转html转pdf,word文档。这个当时在百度和chrome上,都没有现成的,或者说晚上的解决方式,主要是对于内容,格式,图片,表格等导出控制,没有一体化的库或者说一个比较规范的方式。所以我是去发现现有的可能的方式,然后去总结比较,包括结合来达到我想要的结果。这个问题也教会了我当我遇到的问题,可能网上没有答案,或者没有合适的方案时,我自己要怎么思考,怎么分块处理,怎么整合在一起。最终完美解决。只放了word的代码,因为pdf还是有一个比较合适的库,又加上后来没有去放代码。这个在博客和github上都有。
  第三个是重拾java,写前端的同时,写后台的代码。这个主要是心理上的问题,当时我感觉自己是想要吧前端做的更加好,觉得自己有许多要学习的前端的内容,不想花费时间在后台上。但是后来还是接受了,而且在这个过程中学到了许多。比如调整自己的心态,虽然之前在学校也学过,但后来基本丢的差不多了,但是会非常容易理解一种语言,也总结了学习语言的方法。我愿意花时间去看一本springboot的书。所以一切就会变得简单,后来甚至会重构之前的同事们写的后台代码,能发现哪些方法是好的,哪些是不合适的,比如前端列表的获取不应该由后台controller定义。我觉得这是我一开始没有想到的。也感觉代码到一定程度,其实设计应该是相同的。
  第四个是通过不断的写系统,从刚开始的缓慢到后来的速度,自己对系统的设计和组织能力,在不断的提升。知道如何入手,知道要考虑哪些方面的内容,要思考什么样的方式去实现。另外,也懂得与人协作可能会存在的问题。这个只能说是实践出真知。去年大概完成了五个系统。也学习了,修改了别人的系统。
  第五个是数据流展示,这个其实不算什么问题。本来是准备使用原生的websocket,但是之前的同事们采用了一个框架socketjs,所以本着遵循他们的逻辑,后台要求仍然用这种方式,所以就用了。但后来,又增加了两个数据流后,发现后台给的接口,并不能确定数据流的类型,因为是通过rid进行区别的,但是websocket的路径中并没有带rid,所以会发生串流的现象。后来采用了原生的方式进行重写。这个主要是前后端约定方式的问题。教会了我思考扩展问题,思考现存的方式是否合适,以及是否有更好的方式可以代替。 

  第六个也不算是什么问题,当我们决定使用3d地图的时候,自己研究了学习了cesium地球,还有threejs,并且可以实现我们的需求,后来因为我们之前用的平面地图是arcgis,我们也买了arcgis的服务,也参加了arcgis的全球大会,所以改为使用arcgis3d地球。在这个过程中,一直是一个学习的过程,遇到的问题其实都是自己对该库了解不够多,另外还有学习方法的问题。对于问题,其实只要你花时间去解决,基本就能解决。对于库的使用,我觉得只要是库能做到的,我们开发人员就基本应该做到,这没什么特别困难的事。对于学习一个新的,具有深度的库也有了自己的理解。我们应该有正确的方法,比如从类到方法,到属性的去学习。一步步的根据我们的要求学习这个库。如果我们主攻这个库,我建议采取的不是为了要求,而是我们对于每一块自己能理解到的程度去学习。这样会更加有深度,也许可以提出或者创造一些没有的东西。但这个一般对于库的开发人员来说,就像我们对于js一样,能多深,就多深。
  第七个是在写动画的过程中,使用的方式就不说了。主要是在js精准控制动画过程中,产生的问题。由于界面需要的交互动画较多,会导致一些延迟动画在快速操作的过程中,没有进行及时的添加移除,包括延时后产生的各种效应等。教会了我许多对于动画的设计,和控制动画的起始,包括了解了js的高精度计时,以及js的延时操作不可靠。也在处理threejs过程中接触到了大量动画渲染卡顿的问题。也了解了dom树的渲染和利用gpu去解决js的计算问题。包括界面上的盒子。以及脱离文档流后的部分重绘将会节约时间。等等,并不深刻,有待深入了解总结。

其实还有许多问题,没有进行好的总结,所以或许一时想不起来,像vertical-align和line-height之间的关系,像transform的matrix。等等,当我遇到的时候可能就会想起来了,这里就不把几百页的内容列举出来献丑了。
总结一下学到的知识吧:
1.跨域
2.webStorage
3.各种各样的插件使用。
3.html content 转world,pdf。
4.java springboot
5.sass, less
6.gulp, grunt
7. websocket
8.flex布局
9.canvas
10.svg
11.播放各种格式的视频流
12.cesium,arcgis
13.three.js
14.动画
15.看并敲了七八百页的基础书。
16.写了几篇博客
17.看了半本设计模式
18.看了半本算法。
19.学习了es6
....
等等许多css和html,js细节的内容就不说了,实在是临时想,很尴尬。。

总结展望:
1.总结:学习了大量的内容,巩固了自己的基础知识。也使用了很多的插件和框架,对于基础,对于html,css,js都有了自己的理解。对于插件和库有了自己的学习和使用方法。也依靠自己解决了许多问题,对于问题,能形成良好的思路。缺乏总结整理。对于知识的掌握缺少深入思考和联系,对于前端的架构了解较少,对于算法数据结构,设计模式使用较少。看书较少。总体还算可以吧(我夸自己一下)。
2.展望:今年要对基础进行更加深刻的理解,争取能够成为真正意义上的精通。其次,多多思考学习方法,学习管理自己。多读一些书,还是有整体上的许多内容需要进一步学习。多多使用算法数据结构和设计模式的思想。学习vue和react,webpack。了解angular.js。多多学习源码。任重道远,砥砺前行。