这个夏天的节点
时间总是很快,每天九点前去实验室,十点后回宿舍,十二点左右躺下,一点半睡着,习惯一旦养成就不容易改变了。一下子这个夏天又没有了。
在六月的时候,想过一个今年夏天大概的计划,就现在来看,只完成了不到 2/3 。我有时候想,是不是真的对自己要求太高了,还是因为没有足够的动力支撑自己来完成这些计划。不过就算如此,还是有一些东西是可以被记录下来,打个节点,然后继续前行吧。
技术这条路
大概从六月份开始,实验室的学长学姐陆续开始准备简历,为工作做准备。那个时候我就想过,一年后自己会怎么样,能不能让自己多一些选择,自己以后的职业发展又有哪些可能呢。单从这方面来看,其实我是一直都比较慌的,因为一直觉得自己比其他同学少很多退路,所以只能让前面多几条路。不是找借口或者找理由,在技术发展上,其实是可以有比较多的选择的,无论是后端还是前端,真的只是看自己的想法。我知道,大概自己潜意识还是会选择少数人走的那一种,一条路走到黑吧~
自己一个人做一件事情果然会比一个团队慢很多,先来说说自己一个人做的事情,因为小团队的方向也是自己在把握,再一次体会到管理人员的心酸了,特别是管理技术团队,还是没有产品经理。
这个夏天自己学会的东西:
- 知道了企业前端开发的简易流程;
- 系统地学习了一遍 Vue.js;
- 会使用 npm 和 webpack 开发了前端项目,并且慢慢习惯了这种模式;
- 学习了一部分 ES6 的特性并用到了实际工程中;
- 对 云服务器 和对象存储的运用更加熟练;
- 基本掌握了微信小程序的开发流程;
- 基本掌握了初级的 Node.js 后台接口的开发;
- MongoDB 数据库从入门到熟练了,可以写复杂的查询语句了;
- 对项目产品的生命周期有了进一步的认识,也能够做基础的项目部署和上线的工作;
- 很多次认识到基础的重要性;
- 开始学习 算法,慢慢注重 性能。
除去在这个博客花费的精力之外,其他的好像也不能并入技术这条路里面。以上的几条我应该都会写对应的拓展或者在后面详细说明。再一次体会到,有些东西是你早晚都要了解的,但你可以选择什么时候去了解,多了一种选择会让自己多一份自由和满足。上面学会的东西有一部分是应用到实际项目中的。整理完小团队做的东西,余下的我会继续补充。
这个夏天带领小团队做的东西:
- 动态适配的思路,跟随数据的思想。需要实现什么功能就必须明白数据的输入是什么,为适配各种可能的数据输入,只能做动态的适配。可以修改数据,但必须满足所有可能的有效数据。这一点,似乎和 测试算法的算例不谋而合,这是我对团队成员的要求,也是对自己的要求。
- 微信小程序项目,这个是我一直想了解和实现的。最终在小程序的页面开发里面我只是用一下午的时间做了一个页面开头的事情,但小程序的开发显然不仅仅只有页面,对应的后台,依赖网络的有效域名请求,开发与测试的管理,可以说参与的也不少了。实现的只是一个简单管理功能的微信小程序,也算五脏俱全了。小程序对应的后台是我自己独立完成的,使用的是 Node.js + MongoDB,是用 Nginx 和 pm2 部署在腾讯云服务器上,域名是用的我的一个二级域名做映射,匹配了 https 和 http。拆解小程序的开发来看,它真的可以算是前端的一种形式,简直像是一个拆开的 Vue.js ,形式也像 React.js 。所以,学完才发现前端本质大概都是一个东西啊。
- 一个完整的 Vue 项目,准确来说是一个基于 Github 模版更改到具体功能的 Vue.js 项目,包含的技术是 vue + webpack + vue-router + veux + element-ui + axios + mock 。虽然实现的功能是管理系统,至少知道如何解决遇到的问题。后台对应的是 java + MongoDB,这个项目的前端和后端的技术路线是我确定的,和小程序共用的一套数据库。其实本来只需要一套后台的,基于让自己练手和团队内的成员技术更新的目的,大部分代码不是我亲自写的,我负责的是解决关键问题和技术方向的把握,尽量做到项目的可控,因为是项目的负责人。这个项目的部署是我一直很上心的,因为我之前一直想弄清楚前后端分离开后,真正需要上线的时候是如何做到匹配的,在六月的时候我就把 webpack + tomcat 作为一个难题,现在想想,当时自己是没有把握技术真相啊,枉费自己考过一遍网络工程师。对跨域的本质和网络传输原理还是要重视,总结起来就是三点:代理,映射,重定向。另外就是开发环境和生产环境的区分。单页应用的好处真的很明显,编译过的 js 文件不会暴露很多东西,现在来看 jsp 开发过程中前端完全暴露地跳转确实有点儿恐怖。
- 一套展示型的系统,这个项目是最终产品是实验室的网站。之前做的项目一直是管理系统,我一直好奇那些展示型的网站每次数据更新是如何实现的,所以在技术选择上,我制定的是 展示型的门户页面 + 管理系统。管理系统是用于数据管理和分析的,附带有后台与数据库。门户页面的数据来源于后台数据接口。所以每次更新只需要对管理系统数据进行操作。因为这三个项目基本是属于并行开发,当时的 Vue 技术还不算成熟,这个项目前端使用的是 jQuery + bootstrap,后端用的 SSH + MySQL,这也是我们之前项目里一直用的。虽然不新,但是稳定,可控。对于这个实验室网站,我是有一些想法的。研究生三年说短也不短,但是过得很快,有这个想法的肯定不止我一个,为实验室留下一些东西。所以对于人员展示的页面我是十分固执的,要有数据存储,要可以数据更新,导师是个实干派,学术方向也及时更新,实验室应该能存在很久,人情味还是更重一些比较好,所以我让收集已经毕业的学长学姐的信息,在网站上放上他们的名字和曾经的研究方向。自己待过的地方还是留下些痕迹比较好。
三个小项目,在技术程度上,未来再看肯定是不值一提的。但三个项目里面我主要的工作是技术选型和解决问题,当然肯定也参与开发。总体算是小小的 项目经理 + 产品经理了。每周一次例会有点儿折磨了团队里的小伙伴,但是大家肯定也学到了一些东西。过程自然不会这么愉快,管理是一门很深入的技能,需要用理论支撑。过程中我主要让团队成员练习的是理解和分析需求的能力以及解决新问题的方法,这个才是最关键的,技术什么的只要有时间,早晚都能学会。意识 和 方法 是学习过程中最重要的东西,当然还有总结。产品里面PDCA的理论用在提升自己的技术水平上面也同样可以的。
项目实践
上面学东西的三个项目,本质上算学习和练习,不能算作正统的工程项目。同一时间线上其实我还在负责一项工程应用类的项目,工程类的项目与上面寻求技术更新的项目开发模式是不一样的。因为要求实现的功能和指标往往不像互联网项目一样是为人服务的,关注业务流程就好 。
工程类的互联网项目更偏向于处理数据,换句话说,是 数据的感知汇聚存储可视化分析与优化。整个过程中感知和硬件关系紧密,一般是是 嵌入式设备+上位机 软件实现,汇聚一般使用局域网网络传输 TCP/Socket可能涉及到多个客户端数据格式与服务器解析协议,存储呢就比较复杂了这个要考虑数据量和存储的数据格式,数据库表字段的确定是项目开发的基石啊,为了数据安全和存储效率又要考虑读写分离和批量存储。到后面可视化过程才是前端和后台交互的地方,单单这一个其实抽出来是比较简单的,但一串起来,就要考虑各部分引入以及协调的问题。分析与优化就更考验 数据库处理的功底以及前端数据可视化水平了。有了实现目的和验收指标,就必须照着指标实现功能,遇到实际物理设备的问题要从接入端开始考虑,用技术可实现的方式去解决。这是我参与负责工程类项目的一些想法,可能有些部分不大成熟,但流程大致是不错的。
这个夏天,算是在实验室的第二次出差了,地方是南部的某个小城市,靠工业化支撑的一个城市。去的时候是第一次坐飞机,整体都算是体验,感受一下实际车间的产品生产流程以及自动化产品可以达到的程度,有些东西你不去真正体验,是感受不到科技在工业社会的融入程度的,因为之前都是实验阶段,如果再加上之前的参观体验是人工操作,感受会更加明显。其实另一点儿收获很大的是,能够坚信自己所做的是有意义的,特别是学术上的应用,如果去做就真的多做一点儿能够被应用到工业领域的东西。都说互联网产业是泡沫,和实验室将来可能会做产品的小姐姐交流时也提到了这些互联网产品真的有意义么?能够给使用者带来什么呢?我们将来很大一部分机率都是从事互联网行业的人,自己所做的项目或者产品可能只是一个复杂项目的一部分,但是整个产品是不是有意义的呢?这是一个值得思考的问题,当然老板可能只会关心产品带来的利益和用户,如果自己对自己所做的实践有了认可,真的能够找到能够为用户带来意义的东西,或许这个阶段的程序员心里也没有那么累了。
工程类的项目也在一边学习一遍传授,我只希望自己将来在企业遇到的导师也像过去这阶段的我一样负责(爱惜自己的羽毛)。
前面这一阶段大部分精力花在了将需求分析和拆解到技术上了,每次开完会,都有深深的无力感,像是脑细胞被用光了一样,但是习惯了会感觉顺手很多,也更踏实,相信团队的能力和力量,面对新的需求第一步居然是评估了。如果将来工作也是这个模式,相信很快就能适应的吧。
学术探索
本来,这个夏天的计划应该很大一部分是在学术上的,因为感觉自己太工程化,学术素养真的不大够,论文总的来说看的还不够,其实自己知道有些东西逃避不了,也会主动记录和分析看的论文的思路。但相对项目和技术来说,还是有所欠缺的。
学术的前沿性导致了它和工程的最大区别,它的重点不是实现功能,而是逻辑的完整和符合学术理性。写的东西比做的东西要多以及更完善。“自圆其说”这个技能,我学起来颇为吃力。模型的可行性自然有评估指标,我觉得前提还是要说服自己。近六月底我接手了与拆卸相关的这个研究方向,把人考虑进去的研究不多,新的问题其实本质分析的不是那么明确,想做的创新被博士否定了,自己想想确实那个方向不好做工作量又很大,选择有相关基础的去做的话真的要弄清楚自己的模型是什么,属于自己的东西,自己的创新,有意义的创新。
我一直把之前学的深度强化学习放到学术技能里面,现在看看那是技术类的一个小技能啊,用这个方法的前提是你知道问题是什么,如果问题没有弄清的话,再好的方法也没有用。新的问题妄想新的方法,真的有些难啊。后面不能再像这个夏天一样偏向于技术和项目了,一个完善的研究生体验应该有一大部分为学术和自己研究的点在挣扎,优化的理论和逻辑也必须要完备。
这一部分,不是没有什么东西可以讲,这里只是说了在自己学术研究时遇到的一些想法和处理思路的东西,我想具体的研究点在我有逻辑完整的想法后是会单独针对学术研究写相关的文章的,不合逻辑的话还是不能说,心虚啊!
后面的话
上一个节点是在今年元旦,那是一个研究生入门和认知的节点,这个节点大概是熟悉和提升的吧。下个大范围的节点也不知道是什么时候,希望能够等到优化与升华。就不写后面的规划了,论文显然是重点,不能毕业的话都是白搭。其他的大概真的靠意识和自觉的,还是要坚持总结和写东西。
这个节点,算是有意义的吧。刘若英的《我的不完美》里面有一段小句子,我觉得适合放在这里。
我喜欢休止符,
它代表了静止,
休息,呼吸,
然后重新再开始······
休止符不是结束······
当然,我是看上了奶茶写的休止符,而我的是节点。
所以,下一阶段,重新再开始吧,希望不会要那么多心累。
SkylineBin 2018.08.25
评论