APP下载

转码

2022-04-25王凿

大学生 2022年4期
关键词:转码网页代码

王凿

说实在的,其实自己对自己的半斤八两倒也挺清楚。文科(社会学)转码,原因也很简单,主要还是我文科学得也确实不好,因此没能探索出未来太多喜欢的出路,就我个人的情况而言,转码几乎是唯一的选择。而独立游戏,其实确实是独立地做了个游戏,但比起那些数不清的独立游戏开发者们,还是贻笑大方。

这篇分享其实并没有标题看上去的那样成功,我也很害怕一些技术大佬被现在猫猫狗狗都能转码、还爱吹牛的情况逗得受不了。因此,需要跟大家坦白的是,无论是文科转码还是做独立游戏,我都只是沾了点边儿,不光辉,还很惭愧。

作为一个转码选手,会时常不自信,时常觉得自己距离科班的同学差得好远。第一次找到前端开发的实习,见男码农都叫xx哥,见女码农都叫xx姐。以至于后面有一次请教完一个后端小哥怎么搭建网站,“哥、哥、哥”地感谢了半天,挂电话时却发现人家比我还小一岁,很是尴尬。后来有幸作为前端工程师工作了一年,发现同事都来自生物、交通、航天、物流这样五花八门的专业,也就逐渐变得自信了一些,甚至学着一个老员工逐渐地在办公室拽了起来,开始油滑,开始吵架,开始上班的时候零食停不下。

回顾过往,其实可以说,转码的困难主要是存在于刚开始的一段时间。面试场场一问三不知,面试官常常无语甚至转喜为怒,leetcode(极客挚爱的技术成长平台)的动态规划令人自觉智障,刚开始工作的第一天连怎么打开项目都不太会。但也就只是一段时间,这些困难就纷纷被克服了。从决定转码的2019年秋天开始的半年里,我顺利完成了申请cs硕士、找到一个前端实习、找到一个全职前端工作三件事情。有了这些工作经历,也让我有自信说自己至少在前端这个领域算是一个比较合格的程序员了。

我设计的游戏最新的小版本截图

如果有朋友,甚至是文科的朋友问我,要不要转码,我也许会说,完全可以,并且值得尝试,只要你有信念,能充分了解其中的各种可能性和不确定性,但也要对自己处理找实习、找工作、上课之间的平衡,有一定的自信。转码之后,我看到的朋友们的遭遇各不相同:有的朋友在顶级学府里被压得喘不过气,有的朋友在氛围尚可的学府里虚度光阴;有的朋友在955的地方996,有的朋友在996的地方955。转码的可能性很多,最后自己走向一条什么样的路,不单单是努力与否,也和运气、性格、身边人的支持有很大的关系。

我的第一个和第二个项目分别是设计一个udemy上面的网页版计算器和一个模拟电商网站。第一次从Github(代码托管平台)上把代码clone下来之后,我惊呆了。原来代码可以写这么长,还有这么多文件。那一行行的代码,完全看不懂啊!那种感觉还挺摧毁信心的。哎!虽然跟着视频学了个一知半解,但还是硬着头皮把这个项目写进了简历里。

写项目的出发点其实也有点功利且无聊,那就是为了更好看的简历。一起出国转码的同学都说,之后找工作,有个全栈项目很重要。于是大家都一窝蜂地做项目、贴技术。十份简历,九份的项目都是电商网站、个人博客、宿舍管理系统和图书管理系统。项目的内容其实并不重要,重要的是需要在这些项目里面贴入一些由奇怪英文单词缩写构成的“技术栈”,目的是力争通过大厂简历筛选的机器扫描。比如:Initialized and managed client service from zero to one using Vue CLI, Webpack, Babel and yarn.Designed and developed the whole project using SpringBoot, MySQL, Redis, Uni-App, Vue.js and Bootstrap. 最关键的事情就是,你需要有足够多的技术栈被写进去,并且如果你是后端的话,最好还要再融入一些指标化的impact进去,比如某个服务提效15%,某个模块的latency减少了17%云云。大家就沿着这条不约而同形成的统一的规则,不断精进着自己的项目和简历。

虽然我知道应该这么做,也在这样乖乖地努力,可是我的内心还是有点不太情愿的。最让我不太舒服的就是这些看似天马行空的技术,做出来的都是一些有那么点无聊的东西。的确,有的人可以从无聊中参透代码的美妙,可以从电商网站的某个底层依赖中开辟出某个技术领域的伟大前沿。但是,可能因为我不是一个技术出身的人,我不仅无法欣赏这些技术的厉害之处,也没有动力去仔细学习这些技术的细枝末节。我没有毅力,没有水滴石穿的精神,或者说没有经受过计算机教育的毒打,还无法从头到尾地搞懂别人的项目代码,也无法在没有阅读辅助软件的帮助下在技术教程的前5页保持不困。我大概是个技术学习的废人吧,这种感觉和几年前志在社会学时,花了很大力气也根本啃不动那些马克斯韦伯之类的书籍之后,发现自己是个文科学习的废人一样令人沮丧。

怎么才能不废,怎么才能多学一些技术呢?结合之前的一些经历和对自己的认识,当我认为做的事情也许能有潜在意义的时候,我就会打起不少鸡血,这些鸡血也是我小小的、克服自己平庸和薄弱意志的救命稻草。因此我开始思考,也许我应该找到一個我认为很有意义的项目去做,那样无论最后我做得怎么样,都可以打起鸡血,学到一波技术,也不会很亏。这个回路在一些日常在各大技术文档之间轻功水上漂的老练程序员看来,可能会有点搞笑。但当时我确实也找不到别的办法,来让自己有一个比较高效的进步了。

最开始我想,也许可以做个城中村地图的web版,可以像某网站一样,有很多很好的交互,甚至可以融入一些众筹数据贡献、数据分享的东西,甚至更进一步,变成一个城市研究问题的学术交流平台和资源数据交换平台。无奈我当时连JavaScript都不太会,也没有实习和接触类似代码的经历,这个想法历经几次尝试都失败了。甚至最后我羞耻地偷偷下了DreamWeaver,这个很多人可能在小学换牙的时候就用过的低代码画网页的东西。我想,只要把它做出来就行,毕竟我的Photoshop技术还是一流,应该能触类旁通。但最后发现我也不太会用,而且发现学会用了也没啥用,就放弃了。最后的最后,发现了一个叫作“极海云”的很不错的东西,虽然无法在这个东西上面扩展功能,虽然我做的全部工作就是点击上传数据按钮,然后上传ArcGIS导出的shp文件,但终于也算实现了把城中村地图变得可交互这一小愿望,那一刻还是蛮快乐的。

在大学的最后一个学期选课的时候,我因为实在是选不上合适的课程而太过气愤,就尝试做了一个大家能投票、增加扩容和改良我们的垃圾培养方案的简单平台。那是第一次成功有了属于自己的小网页,用的是GitHub.io(也就是GitPage)。具体的方法就是自己用html+css+JavaScript写了一个页面,然后在百度上想方设法地措辞和尝试不同的搜索语句,比如“怎么让别人能访问我写的网页”“什么叫单页面静态网页”“啥是GitPage”“Windows10怎么配置GitHub.io”“感觉自己很笨怎么办”“怎么打开命令提示符”等等。其实一想,搜索引擎是多么好的一位朋友啊,只要你勇敢地描述自己的问题,他总能马上尝试给你帮助。这样一步步地,我的小页面可以被别人访问到了,只不过说来惭愧,那时的技术是真的菜,实在是不怎么会切换页面,就算会切换页面也不会把一个excel文件显示到网页里,更不懂怎么能让大家在上面做问卷。最后灵机一动,主页一共就四个按钮,四个按钮分别导向了三个石墨文档和一个问卷星。这样就完成了,效果也不错,很多人都通过这个平台投票或者参与了问卷。

这次小经历给了我蛮大的鼓励。做这个网页的那两天(虽然可能有经验的人一二个小时就搞定了,哈哈),可以说是茶饭不思,白天思考夜里琢磨。究竟怎么设计这个小平台的结构,怎么从教务部网站上收集几百几千个院系的课程数据,怎么提取课程得分,怎么把这几百几千个课程根据课程评估的分数排序,把好课凸显出来,怎么设计问卷,还有我最喜欢的部分,怎么改才能让这个首页看起来很好看,这些东西占据了我的琐碎的大脑。我竟然还想起来,我当时根本不会用python做网页爬虫,我是用一款曾经主要用来自动化辅助阅读的鼠标键盘自动指令模拟小软件,一步一步地把点选操作程序化、流程化,指定多少秒点一下屏幕的哪个位置,然后再等多少秒再按一下page down,然后鼠标在哪个位置再点击拖动选中,通过ctrl+c alt+tab ctrl+v,最后在excel里面收集了北大近两个学期所有的课程信息及其评分。很傻,很原始,很低级,但是很管用,很有意思。我第一次感觉到,我可以拥有自我驱动的能力,我可以拥有技术上的进步,我可以通过这些事情变得更厉害,更重要的是,也许我技术上很菜,但我还真的可以做出一些也许会挺有意义的东西。回想起这些事情,真的很高兴很开心。

临近毕业,系里老师找到我,希望我可以帮助同学们的研究工作坊搭建一个学术交流和资源交换的社区平台。我很喜欢这个主意,这似乎是一个内部版的BBS+小网盘。不过,这可是一个完整的前后端全栈项目,不可能再用gitpage做了。我在github上找了很多可以学习的项目,也“哥、哥、哥”地请教了那个比我小一岁的实习时的后端同事。技术上的挑战确实有点大,迟迟没有什么突破,甚至可以说对我来说就是天方夜谭。最后我竟然找到了一个神奇的网站,他们可以定制BBS,虽然需要花点钱。我给我们的社区起了一个好听的名字,填了几个模板设置了好几个板块,就用免费试用版搭起了一个平台,而且竟然还可以支持微信小程序。

我发给工作坊的同学们,他们纷纷进去发帖抢沙发,效果不错。遗憾的是,这个外包的方法不符合学校的信息管理政策,那就只能自己开发。多重困难以及新冠疫情导致我不得不在临近毕业一个月的时候才开始找工作,使得这个项目最后变成和系里管网站的老师合作,把工作坊的word内容上传到系里网站上像博客那样挂着收尾,很是遗憾。

后来的我有一点迷茫。也许我应该踏踏实实地把需要的技术都学一遍,我迷茫于不知道自己的技术究竟还能不能进步,也不知道自己能不能在这最后一个月的时间里找到应届生的工作。不过我可能是幸运的,在紧急辞去了实习的工作并全力刷题复习找全职工作的一个月时间里,我竟然真的找到了一家很不错的互联网公司的前端开发工程师的职位。作为一个社会学毕业的菜鸟的学生,每个月到手的工资竟然可以达到将近2万块钱。

做游戏是工作了半年之后才开始的事情。工作以后代码逐渐写得多了,对项目的理解也逐渐提升了。后来,不知怎么就冒出了“东南西北”这个小游戏的点子。

我从小打红警,出门也很爱看地图,以前也很喜欢在google earth里面满地球瞎逛。我就想,也许对零散信息的组织这件事,就是一个我未经意间尝试过的有意义的事情。而地图就是一个很好的载体,因为它稳定、漂亮、迷人,地图上的要素其实可以是任何东西。也许,我也可以做一个叫作DarkNet的app,以更有意思、更容易让用户理解的方式向大家展示一个城市的不同图层,比如建筑、下水管道、地铁、绿地、公园、菜市场、城中村、书店、公共厕所、各种各样的店铺,这样喜欢探索城市的人不用真的到处探索,也可以更快速便捷地了解他身边都有什么。也许,我可以做一个叫作MapAnything的用户主动标注地图的app,里面都是网友自己上传的各种各样的稀奇玩意,大家可以在里面互动……越想越觉得,每一个idea都蛮有意义的,最后,我选择了一个叫作“东南西北”的微信小游戏的方案。

将近半年时间的开发过程中,无数的心思、设计、实现、反馈和一遍遍推倒重来。在这个过程中,我确实感觉到自己的能力存在很大不足,但也很高兴通过这个项目,我确实可以说自己已经不是一个单纯的前端工程师,而是一个刚刚入门的全栈工程师了。

尽管这个游戏到现在可能还存在不少失败的地方,但它毕竟是我的第一个真正意义上的全栈项目,因此我可能会继续开发和完善,并且试图搞个ios app,然后看看能不能通过审核上架,善始善终。既然给自己戴了个“独立游戏”的帽帽,那就还是要顶着这个帽子努力加油呀。

以前在学社会学的时候,虽然学得不是很精透,但是总是能感觉到一种意思,就是它一直告訴我不能陶醉于一个东西太久。我所认为具有意义的东西,并不是天经地义的,而是从我的过往和我的生活世界中生长出来的。

一些以前废弃的UI手稿

就拿这个游戏来说,我似乎想做一个面向大众的科普游戏,可实际上,可能大众并不需要这样一款奇怪的游戏,也许只有我这种对辨识方向有奇怪癖好的人会想玩这个游戏。甚至更进一步说,这个游戏的设计初衷就和游戏的一些宗旨相违背了——最后它的样子并不好玩,玩家并没有什么乐趣。再换一个问题,可能也会有一样的困惑,比如劝朋友转码。现在各行各业生化环材农林牧渔的同学几乎都在转码,虽然从个体的层面来看也许是个可以考虑的选择,但是这样的风气正常吗?会不会有点太疯狂了?适合一个人的就适合另一个人吗?每个人都有办法在这里找到自己的意义吗?

如果有朋友在纠结要不要转码,虽然我对于给出肯定的答案已经非常自我怀疑,可是我也很难因为推卸责任就糊弄朋友——转码也行,不转码也行。我还是会把我了解到的信息和盘托出,这些信息大部分可能是有利于转码的,也有一部分可能是不利于转码的。我能做的,也许就是建议朋友在做决定前尽量多地和形形色色的不同的人聊一聊,从而尽量地避免偏颇吧。

责任编辑:陈思

猜你喜欢

转码网页代码
视频转码技术在广播电视中的应用研究
创世代码
创世代码
创世代码
创世代码
基于Hadoop的流媒体转码系统设计
基于CSS的网页导航栏的设计
基于IPTV点播业务的视频分段式转码方案的研究与应用
基于URL和网页类型的网页信息采集研究
网页制作在英语教学中的应用