大家好,我是程序员鱼皮。今天我要分享自己团队里一位全栈实习生的实习总结。
在实习期间,这位同学参与了多个项目的工作,包括企业动态公告系统的开发、企业周边系统的搭建、撰写技术教程、开发 IDEA 插件、构建云端管理平台等等。
实习近 3 个月,我见证了他的高速成长,无论是全栈开发能力、还是软实力的提升都很大。
以下是他的实习总结,给大家参考:
鱼厂实习总结
时光飞逝,转眼间在鱼厂的三个月的实习生活已经结束我也要回学校继续大三学习生活,常言天下没有不散的宴席,但分别的时候还是非常的不舍的。
总体而言,实习经历我是非常满意的,并且能明显感受到自己的成长非常大。下面我来详细地总结一下我的实习生活、技术、以及软实力的成长,并且把我的经验分享给大家!
团队氛围
我们是一个年轻的团队,氛围真的非常好,没有任何所谓 “职场官腔” 这 一说,大家都十分好相处。
公司有定期的团建,会去户外玩密室逃脱(上海的密室逃脱体验感真的很好,NPC 很专业)、一起运动打羽毛球、射箭,当然对于我这个桌游的重度爱好者来说,最开心的还是大家聚在一起玩桌游,后来我发现原来 打桌游是公司文化,周五大家工作不忙的时候都会一起玩,十分欢乐。
还有,公司的饮食文化也很丰富,经常会一起聚餐,工作日老板请吃西餐是不是想想就爽;且公司有零食提供,不用担心写代码会饿着。
编程领路人 > 老板
首先很感谢鱼皮给我这次实习的机会,其实这种感觉还挺奇妙的,自己的编程学习上的引路人变成了老板 。平时交流上不管是工作还是生活也非常平易近人,没有因为我是一名实习生就忽略我的感受,性格也是比较和蔼的。刚开始我还没有很融入的时候会与我交流并给出建议,不会像一些领导一样当众训斥你,当然有时候员工犯了一些低级错误,比如代码不审核就上线,还是要批评的。
可以给分享几点鱼皮哥给我的建议,我觉得也同时适用于大家的:
1)养成开发记录的习惯,具有主人公意识
2)对于工作进度及时反馈,如果有压力需要提出、抛出风险
3)注重代码规范,提交规范
4)大胆表达,锻炼和提高自己的沟通能力
5)主动去争取机会,机会永远是自己去争取的,不要相信天上掉馅饼(我的实习机会就是主动和鱼皮沟通争取来的)
以下为了保护隐私,均使用脱敏后的名字 💭:
我在鱼厂认识的第一个同事,也是第一个和我一起合租的舍友松柏(后端同学),松柏就比我大一届,但是我能非常真切的感受到业务技术能力要比我强很多很多,平时学习技术上很多不懂的问题都会问他,也得到耐心了的答复,虽然我知道很多问题都是比较基础的,这一点真的很感谢松柏哥的帮助。
平时在交流上也很开心,很多时候我们都会一块回租房的地方吃晚饭、看鱼皮直播、聊聊游戏、爱好与人生。还有,我们共同的特点就是早上起不来,虽然鱼厂是 10 点上班,还是很困,我们的口号是 “今天星期四,明天星期五,后天又是周末了”。
后面又认识了 LX 和 CQ ,他们是带我做项目的导师,一个负责前端一个负责后端。记得刚来公司那一会我的业务水平很差,很多技术、写文档的规范也不了解,只能一直问 CQ,我感觉 CQ 哥当时应该是对我挺无奈的,很多基础的东西也不会,没想到第一个带的实习生就这么菜,不过虽然嘴上说是基础问题,但是会给我解答并没有直接不管我了。那段时间还挺难过的,会怀疑自己、焦虑不安,直到我收到了 CQ 五千字的工作建议与技术学习建议 ,我真的非常感动,虽然我当时技术不行,但是我想的是我必须要做出改变,于是在下班之后我开始学习那些工作中要用到但是是我的短板的技术,个人感觉还是有所进步的,下面的模块会详细介绍~
虽然我的工作是全栈实习生,但是我的前端其实只能算是写过,并没有系统学习过。因此在写项目的过程中,特别是前端这一块会磕磕碰碰,我的前端导师 LX 会给我技术上的指导,会告诉我用什么技术可以实现让我自己去摸索,后来我意识到 “只有自己学会去解决问题才是成长”。LX 给我的建议就是先打好基础,弄懂 JS 的基础语法,再去学框架会很快,我觉得这是十分科学的,也建议想学前端的同学按照这个顺序来学。
不过我想,回忆起来最快乐的是午休时间打洛克王国吧,我们俩用 6、7 年前的宠物被现在的神宠吊打 😭,我想要是用钻研技能的热情来学技术获取能更厉害一些 😂。
我们中午同事基本都会一起出去吃午饭,小 y 的那一句 “拉面、广场、米粉王” 已经深深刻在我的脑海里,我寻思着果然有当产品经理的天赋啊,把问题都抛给程序员了😝。小y 是公司的运营,也是编程导航的运营,平时虽然交流的不多(因为和开发同学交流多一些),但是还是非常能感受到他的热情,特别是每次玩桌游的时候都会跟我说 “自己人,别搞”,虽然他跟谁都说是自己人。
之后,我又认识了我们公司另一位前端大佬阿星也是元老级员工,他教会了我很多 React 中开发的技巧以及 Ant Design Pro 框架的使用,并且给我推荐了一份学习资源:《React Hooks 核心原理与实战》,讲的真的非常好,新手也能看懂,高手更能理解其中精髓。
不过我认为阿星更适合教学,比如他会教会我在前端如何去定位问题,用什么技术去解决问题、如何阅读官方文档等会给我举例子讲解,很期待之后能看到他直播讲解前端的知识,当然印象很深的是他请我们喝的柠檬茶,至于什么原因可以去看看鱼皮的公众号了解 —— 员工写了个大 BUG,网站痛失 300 元!。
技术成长
我目前大三在读,平时学技术的时候是偏 Java 后端,也会一点前端,入职的时候鱼皮哥给我安排的是全栈实习生的工作,我个人认为我在整个实习期做的事还是很多的,对我技术成长帮助很大。整个实习培养的过程是循序渐进并且能学到真材实料的,并不是像网上传言找一个实习生来打杂。会有清晰的需求,要做什么并且有意义的去做。
以下我分几个阶段去讲:
1、线上实习
刚开始线上的时候给我安排的主要是熟悉公司的工作,包括开发规范、公司内部后端代码、阅读公司的已有技术业务的沉淀以及同事的日常工作记录,这里因为隐私原因没法给大家透露细节可以参考星球内部分享过的 企业级开发流程 以及 阿里巴巴开发手册,但是能给到大家的建议就是,刚开始工作的时候 一定一定要仔细研读公司的开发规范和提交规范 。如果规范上写明的要求,你在写代码的时候还是没有注意是一定会被同事批评的,想想你的同事写了一堆屎山代码让你来维护你气不气。
其次就是,强烈建议大家阅读 编程导航 的后端模板代码,这一点是我刚进公司松柏就给我的建议,多读高手写的代码多去调试并且做到真正的理解内化,理解每一个函数、每一个类的作用是什么,以及为什么要这么设计,一些技术实现的原理是什么,我敢说如果大家能把编程导航后端模板那一套东西吃透,至少在实习阶段你肯定是能干活的,并且80% 的业务也是能够上手的 ,那有同学可能会问还有 20% 呢?不用担心这个阶段暂时也不需要你来做。
再之后给我安排了一些调研的工作,并产出调研文档,了解到了 AI 搜索引擎的产品。这一块给我 **最大的感受就是工作与在校学习的差别 ,在校的时候可能老师会给你找到资料、实现方法等,甚至把代码都给你改改就能使用,但是在公司我们需要做产品调研、技术调研、方案可行性的思考等。建议大家自己在做项目的时候也要养成调研的习惯并思考:这个需求到底有没有做的意义。
技术方面,主要是在学习 Java 的网络爬虫知识,在编程导航聚合搜索项目的第二期里有讲到,我还开发了一个自动化填写问卷的小脚本。
2、线下实习
之后来线下,公司有配备工作 Mac 电脑(Mac 写代码是真得舒服除了不能打游戏 hhh),熟悉了几天,鱼皮哥就给了一个独立负责项目的机会,让我单独完成动态公告系统。
简单介绍一下这个项目,在面对网站故障、需要通知用户或进行临时公告时,为了提供一种简便而灵活的方式,我们希望设计一个通用的公告系统。该系统允许管理员在系统后台轻松创建通知,并灵活配置通知的内容、展示时间、网站生效范围等参数。
这个项目复杂度并不高,但是对于第一次实习的我来说,还是一个比较具有挑战性的任务,因为在此之前只是跟着教程写代码,并没有发挥出自己的自主性,因此刚开始做的比较慢,效果也并不好,不过好在我的导师给了我很大的帮助,告诉我需求文档与设计文档要怎么写,如何做需求排期、风险管理等。鱼皮哥也没有给我很大的时间上的压力,放手让我去做。通过一次次的迭代终于可以达到验收的水准了,说实话我当时成就感还是比较大的,这是我 第一次负责独立项目,并且从 0 - 1 完成。 完成后我又写了详细的项目总结文档,复盘我遇到的问题,给大家分享一下我学到的知识点:
1)IDEA 多环境的配置,区分线下和线上配置
2)团队开发流程与规范 :每一步都必须要写好文档,包括需求分析文档、调研文档、技术选型文档(技术调研)、详细设计文档,一定要理清核心业务,再进行开发 。
3)代码复用能力,复用公司的前后端模板,快速进行二次开发
4)Mac 快捷键的学习,形成自己的工作流 (这个是松柏教我的,省下的时间可以适当摸鱼 🐟)
5)MyBatis-plus 分页插件使用(前后端的对接)
6)如何解决前端传入的数据与后端需要接收的数据不匹配的问题(JSON处理)
7)阅读官方文档的能力:解决修改列表渲染样式、表单字段渲染样式、是否展示属性配置等,还要熟悉 Ant Design 的常用组件。
8)学会开发一个优秀的前端 SDK(JS 脚本)。包括定位打包后 JS 文件过大的原因、使用原生 JS 开发弹窗代替依赖库来写一个弹窗样式、用 Fetch 代替 Axios 写请求接口等。这些操作可以大大减小压缩文件的体积,方便用户引入,减少消耗的资源。
9)腾讯云对象存储的安全使用
3、负责独立项目
鱼皮之后又给我安排了一个独立的项目 —— 企业级周边系统,这次的项目难度以及工作体量相较于动态公告系统是要上一个等级的,所以我说鱼厂的培养制度是循序渐进的并非无道理。
还是简单介绍一下这个项目背景,在我们过去的周边信息管理中,存在着对内(公司内部周边管理)和对外(向用户展示周边信息)两个独立的表单。这种模式导致了大量信息的重复填写,同时也增加了人工维护的成本和压力。为了解决这一问题,我们迎来了周边系统的诞生。这一次相比我第一次开发, 我觉得最明显的进步在于更熟悉开发流程与规范了,比如我会自主进行需求的排期,文档的沉淀,并且一些重复性的 CRUD 代码也更加熟练了,不需要花很多时间就能完成,可以把时间重点放在思考核心业务的设计上,并且将想法和同事反馈,可以帮助我辅助思路以及设计的可行性。
地址:http://prize.yuyuanweb.com/
值得一提的,我的导师会认真看我写的设计文档,并给出详细的改进建议,在此之前我一直认为设计数据库是比较复杂的,现在虽然不能说得心应手,也积累了一些自己的经验,能对付一些常见的系统设计了。
如果说前一个项目我更的是在学习开发的知识的话,这一个项目可以帮助我巩固熟悉开发流程,之后可以很快地开发一个类似的系统,并且真实的感受到企业中一步一步优化项目的过程。并且最后鱼皮给了我一台单独的服务器,学会了部署上线的方法。第一次部署的时候还不太熟,好在 CQ 给我讲了 Nginx 的反向代理的,并且我也沉淀了详细的部署文档,之后再部署的时候可以控制在小时级别内了。之后说不定各位鱼友就能用上我们的周边系统挑选周边了~
4、撰写技术文档
年后,鱼皮给我安排了撰写项目教程的任务,让我完成我负责的两个项目详细教程的编写,手把手教我如何写教程文章,写好文章大纲、保证语言的通俗易懂,如果是规范的教程,可以参考鱼皮哥在星球分享的 代码生成器共享平台 教程,可以说我没有见过比这更细文字版的教程了。
写第一个项目的教程的时候还不是很熟悉,有一些写作格式与规范还不太了解,以及部分内容过于机械化,鱼皮哥会详细看我的教程,并给出优化的建议,应该怎么引导读者、怎么拆分内容、如何写地更加专业规范等,让我在写第二个项目教程的时候更加熟练且得心应手了。
总的来说,这个阶段我可以很明显感觉到自己写作能力的进步,有了框架后,写作思路更加清晰了。
5、开发 IDEA 插件
再之后,我们公司研发上线了代码小抄:一个易用的代码分享工具,支持快速跨设备分享代码、阅读他人代码、在线运行代码、AI 分析和代码纠错等功能。
代码小抄:https://www.codecopy.cn/
而我也接到了一个新的需求,开发代码小抄的 IDEA 插件,其实当时鱼皮在 B 站上发布了视频介绍代码小抄,下面评论区有一个 “产品经理” 提出了开发一个插件的需求,我就知道事情并不简单!鱼皮一定是看到了他的评论决定给我这个需求的 😭。
鱼皮:其实并不是,很早之前就计划好了!🐶
这对于我来说,也是一个不小的挑战,因为我之前在网上调研过 IDEA 插件的开发教程,可以说是少的可怜,要么就是非常入门没有深度,要么就是过时的教程不适合新版本 IDEA,所以光是调研教程,学习 IDEA 插件开发,跑通 Demo,我就花了两三天的时间,因为项目用的是 Gradle 依赖管理工具,我对这个东西不是很熟,刚开始一直拉取依赖失败,配了很久的环境,一直跑不起来,好在之后配置了本地的 Gradle,开了代理之后终于能安装上依赖了。
按照惯例,还是介绍这个项目:这款插件是专为代码小抄项目设计的,开发同学可以直接在 IntelliJ IDEA 开发工具中一键分享代码到代码小抄,并快速获取分享链接,然后就可以把代码转发给更多人啦~
在开发过程中还是学到了很多知识的,比如插件的开发步骤、重要的模块、扫码登录的开发、如何在 IDEA 插件中种上 Cookie 等。
6、开发云端管理平台
再之后,我们公司自研的超级剪切板工具 - 剪切助手也进入内测了,这是一个界面精美、简单易用、支持快速复制多条内容并自由粘贴的效率工具。
官网:https://jianqiezhushou.com/
我虽然没有直接参与项目业务的开发,但是也做了一些贡献,开发了剪切助手云端管理平台,支持用户云端管理自己的剪切内容。
在这个项目中,我学到了很多前端开发的技术,比如怎么实现一个带格式化的复制功能(我们使用 Render 函数后,渲染出来的内容无法直接使用表格组件自带的 Copyable 复制)、集成富文本编辑器(更好地展示用户复制帖子的内容)、在前端实现微信二维码登录等。同时也学到了一些 CSS 技巧,比如当我们需要修改两个地方用到一个组件的样式应该怎么做。
阿星教我了一个开发技巧,给每一个页面都要写一个 CSS Class 类名,找到包裹这两块不同的类名给他复制下来,然后通过唯一的类名进行修改对应其下的元素样式即可。
以上呢,就是我近三个月的实习工作。我个人认为这种方式是很能锻炼一个实习生的,能很明显感受自己的技术成长。
也分享一下我之前的简历。
全栈实习生简历:https://www.laoyujianli.com/share/yupi3
软实力成长
1)养成独立解决问题的习惯
我觉得这一点是对我帮助最大的,作为新人,遇到问题时首先去尝试思考,独立解决,是非常重要的。
2)学会提问的智慧
这也是鱼皮哥在星球置顶帖中提到的,我们在问别人问题的时候需要尽量描述清楚自己的问题,自己尝试的方案,失败的原因等,才能让别人更好的帮助你解答问题。
3)提升自己的表达能力
这一点是承接上文的,不管是与人交流,还是写文章,都需要展现出自己的表达能力。其实我的表达能力并不好,中学的时候作文也只是及格水平,没有那么出彩。需要通过多说,多写来锻炼自己。
4)提高自己的总结复盘能力
这一点我觉得我已经养成了习惯,至少现在在做完一个项目,或者看完一门教程,我都会产出一篇文档来专门做总结,做完一件事也会复盘自己做的好的或者不好的地方,方便自己下一次改进,做得更好。还有就是公司会写周报,把自己日常做的事记录下来,开会的时候一起讨论进度,也能锻炼自己这方面的能力。
5)和同事一起吃饭
融洽的同事关系,能够让工作起来更加舒服和高效,在吃饭的时候,通过和同事的交流,也能获得一些自己平时无法得到的信息,提高自己的认知。特别是在和一些比你更厉害的牛人交流的时候,你能收获到的会更多。
6)及时记录灵感
每个阶段的学习方法是会改变的,随着知识的积累。比如一开始学习写代码只是模仿,到后面就可以自己根据设计参考文档写出代码。对于一些知识点,需要自己能讲出来才算是真正的理解。
业务提升
聊聊我来上海的生活吧,我是一个美食爱好者,梦想是吃遍全中国所有爱吃的食物,且我也喜欢旅行,来上海去游玩了一些比较出名的网红打卡点,像外滩、东方明珠塔、武康大楼、豫园等景点还是非常值得一去的。平时的爱好就是在公寓里和朋友一块玩金铲铲,并自创了一个金铲铲滴牌理论(当单局内刷新次数大于 80 次的时候常客优惠会比棱彩门票更有价值),在大家都有空的时候会一块聚在公司打桌游。
项目方面,补了之前搁置的鱼皮 API 开放平台项目,了解到分布式 RPC 框架的使用,以及微服务网关 Spring Cloud Gateway 的知识。我还把智能 BI 项目拉下来回顾,重新复习了一遍消息队列的知识,因为我个人很喜欢这个 AIGC 项目,并且感觉可以做的事情非常多,打算对这个项目进行持续的扩展,后面也会不定期更新项目拓展笔记,感兴趣的同学可以看一看我的源码:http://gitlab.code-nav.cn/szdaiyifei/bi 。
目前正在读的是鱼皮的手写 RPC 框架教程,已经完成了前六章的代码编写,不过还是有一些难度的,毕竟 RPC 用的还不够熟练,就要自己写一个轮子。像自定义的 SPI 机制还是比较复杂的,只能多读几遍来帮助自己更好地理解。
技术方面,我打算认真系统学习设计模式,学习到前人总结出来的开发规范,目标是能写出更优雅可复用的代码。计划先把《大话设计模式》通读一遍,再去尝试手写简单的设计模式,最后把它们应用到项目里。比如 编程导航 的聚合搜索和 OJ 都用到了大量设计模式,之后可以在项目中实践。还有数据结构与算法的学习,我要日拱一卒,计划阅读《数据结构之美》这份专栏,听说写的十分不错,搭配着刷 Leecode 热门题集。
阅读方面,最近比较喜欢读一些哲学类的书籍,以及一些提升自己软实力的书,像耗子叔的左耳听风专栏绝对是经典中的经典。我会利用碎片化的时间,比如等车、通勤、下班回租房的路上等时间来看编程导航内大家分享的文章,并且在能力范围内帮助大家解答问题。
未来展望
虽然我的实习生活结束了,但生活还在继续。计划是回学校认真准备考研了,因为自己的第一学历是双非本科,在学历这方面是没有什么竞争力的,我觉得机会摆在我面前,我要去珍惜,去努力尝试一下,享受这个过程,并且我觉得我的 408 基础学科学的不是很扎实,借此机会巩固一下自己的专业基础能力。
当然更久远的计划还是能继续提高我的技术水平,多做一些项目,并且在博客网站分享一些自己的技术文章,目标是能在互联网这一块找到自己的一席之地吧!
最后,真的非常感谢阅读,祝好!❤️
以上,就是我们实习生同学的分享啦,希望对大家有帮助。