美文网首页
2018年回顾

2018年回顾

作者: 逆水处行舟 | 来源:发表于2019-01-04 00:09 被阅读0次

一些情况

1.本人毕业于2014年,福大软件工程专业。
2.从大一C语言学的一头雾水,考试冒冷汗,中间的各种专业课,说真的,且不说《算法与数据结构》,就说Java语言,操作系统,计算机网络等等,没有一门是有把握,考试能轻轻松松的。最终,还是迷迷糊糊把大学的专业课上完了,不是很有自信心的毕业了。
3.真正对代码开始有感觉,还是在大四下开始的实习。
4.很感激第一份工作,是学长给的机会。说真的,当时对算法很没信心(即使是现在也是有些阴影),学长问的冒泡排序都写不出来,渣成狗了。还好面试的不是算法岗,只是初级的Java工程师,实际工作中,就是围绕增删改查实现业务。
5.说到学长,不得不感激他对我的信任,感激他在工作中给予的帮忙和指导。他对代码质量的要求,事情要做的比别人好的不服输心态,对我影响很大,我也在努力坚持。
6.从毕业到现在,换了好几次工作了。舜亚(后来改成和齐家签合同了),美图(差不多4个月),ws(待了将近1年半),到现在在卖咖啡

回顾

8月21之前

这是在ws的日子。
我所在的部门是负责做客户使用的系统,在公司做的算是最上层的组件了,核心数据或关键业务都不在我们这边。

关于技术

我负责的是web系统,主要有两大功能:报表和自助配置。整体上来说,报表是比较简单的,自助配置是比较复杂的。

感悟

  • 不要拷贝代码,能抽取复用的,就不要犹豫
  • 不要用魔法数,推荐使用常量或枚举
  • 该加索引还是要加的,可以借助explain查看执行计划
  • 要善用封装和抽象(比如session 相关的key可以封装在SessionUtil工具类,避免到处散落session key,功能调整时比较不会落掉代码;又比如,正则表达式校验可以考虑根据业务封装个Util类,而不是在使用的地方直接暴露正则),以此提升代码可读性和可维护性
  • 对于使用Spring开发项目的,能用Bean就不要用静态类,静态方法。这些对于单元测试是不友好的
  • 借助阿里巴巴、sonarLint、checkStyle等静态代码检测工具,发现代码坏味道,统一项目的代码风格,提升代码质量和可读性
  • 约定项目使用到的专有名词,并形成文档。避免一人一个说法,一个接口一个写法
  • 要熟悉吃饭的工具,比如IDEA的快捷键,调试,插件(比如:jrebel,git/svn,translation等),重构功能;又比如Chrome的调试工具,调用栈,Network等等。工具是第一生产力
  • 框架性的东西如果有疑问,可以直接看源码
  • 对于SDK类型的系统,需要提供接入手册,升级文档,版本变更说明,兼容性说明,并维护常见问题记录。你想想,当你使用某个SDK的时候,什么文档都没有,还得硬着头皮接入,维护的人又经常无法及时响应,内心会有多少只草泥马;同样,你做为SDK维护者,如果每天都是回答一些重复问题,做一些重复动作,如果接入者能自助完成,你该有多轻松!
  • 对于SDK类型的系统,如果SDK是自身和其他项目都有在使用,最好不要在其中写只和自身有关的功能,可以考虑暴露扩展点来实现,SDK要尽量保证通用性
  • 对于SDK类型的系统,如果可以,最好能记录每个接入方当前使用的SDK版本,这样对于升级和问题调查都有帮助
  • 移除无用代码。项目都是越来越复杂的,无用代码很容易干扰视线,无形中增加耦合度。版本控制可以让你找到历史记录
  • 监控(运营指标和系统健康/运行状态)能让你了解系统运行状态,对全局有个把握

关于团队

  • 不要让一粒老鼠屎,坏了一锅粥。对于影响团队积极性的行为,需要引起重视,努力想办法解决,不然一个团队就没有凝聚力,进而影响到项目的进度和质量
  • 需求设计文档、原型设计等需要约定一些通则,定义团队内使用的业务术语,一些大方向的约定,减少不同角色间的沟通。比如:需求文档可以提炼出一个通用模板,避免遗漏一些经常需要又容易忘记的内容;比如约定前端界面风格,错误提示处理等等
  • 根据团队情况,灵活安排回顾会(我更倾向搞个团队内的吐槽大会),会议的原则是:对事不对人!回顾会的目的:让团队对过去一个阶段的工作情况做总结和反思,表扬优秀的成员,收集团队遇到的困难和不和谐的事情并寻找和制定解决方案,对于解决方案需要指定成员负责落实或监督。回顾会不适合定期展开,比较适合根据团队工作情况和任务情况灵活安排
  • 如果团队有紧密依赖其他团队的,在合作过程中难免会有磕磕碰碰。因为分工,团队间存在一些信息不对称,比如:互不清楚对方系统技术细节,导致不清楚哪些功能或设计为什么无法实现; 互不清楚对方团队工作饱和度,导致无法及时沟通。这种情况下,建议团队间一起开个技术分享会或者茶话会,解决双方的疑问,增加互信
  • 团队的领导者,建议能适当的和团队成员聊聊天,收集意见或建议

关于产品

  • 对于产品的理解程度,会影响到新增功能的取舍,影响到开发人员的技术实现,进而影响到系统迭代能力。个人认为,好的开发人员要向产品经理靠近,或者说要提升自身的产品思维

8月21号之后

换了工作,一开始以为帝都来的和尚们会念经,面试的时候,把自己的姿态放得比较低,并没有尝试争取更高的待遇。然而,入职后发现,他们的经也是难念,技术能力并没有那么高的高度,团队间的协作能力也是打个问号。

存在以下问题:

  • 基础组件/中间件要么缺少抽象,要么缺少文档,要么功能不全,要么直接就是假功能
  • 基础服务组件没有平台化,各个业务线各部署一套,不好维护,发布和版本维护都是头疼(现在又开始在做平台化了)
  • 答疑号响应慢。有些是因为没有对日常答疑进行汇总整理成wiki,导致问题重复解答;有些是权限设计不合理,授权只能找答疑号
  • RPC服务没有订阅机制,导致一个系统不清楚都有哪些调用者,更别说调用者的项目负责人信息,涉及到版本变更,就很难通知到位
  • 代码提交日志很随意,经常看不出变更原因或背景
  • 入职一来,就一次团建,整个公司的。部门的并没有看到
  • 领导权力斗争吧,之前想要自己重新搭建基础服务和平台,折腾了2个月,后面还是妥协了,继续使用旧的基础服务和平台
  • 框架太老,Spring还是3.x
  • 上线流程,还有可以提前审批,或者解耦的地方。

好的方面是:

  • 监控告警平台(基于cat改造)
  • 线上日志系统(基于ELK)
  • 网络隔离(测试环境和生产环境隔离,以及其他隔离)
  • 一些之前工作没有使用过的技术:HBase、MQ、配置中心、netty(用于推送、rpc服务)、hessian(老的rpc技术)、调度系统、基于客户端的分库分表、fastFDS(分布式文件存储)等等,对我来说都是新鲜的,值得学习研究的

关于技术

  • 项目使用到的配置文件要定期清理,移除无用配置,对于一些无法直接看出用途的配置,增加相关注释,提供参考文档或使用说明
  • 增加项目的readme.txt文件,介绍项目整体的代码结构,记录一些关键信息或重要变更
  • 代码提交记录尽量提供有用信息,比如:修改原因,背景说明等等
  • 注意使用连接池或者复用连接,避免导致连接资源耗尽,接口响应慢等问题
  • 日志不要随便打或拷贝,要打的有意义,也要打对信息
  • 代码语义化,有些代码完全不清楚设计意图或实现的需求
  • 模板代码提取,避免到处写类似代码(是的,有些重复代码,IDE还没那么智能识别)
  • 代码要有一定的分包策略,体现模块和抽象,提升代码复用的便利性
  • 学会查看异常堆栈,有遇到同事不会查看最原始异常(也就是报错的根本原因)的,也是惊呆了

相关文章

  • 周回顾回顾什么?

    关于周回顾,也是2018年常常遇到的一个时间管理概念。 下面是我总结出来18年遇到周回顾的几个地方: 有感兴趣的小...

  • 读书笔记|规划最好的一年|目标回顾

    目标回顾分为三个层次:每日回顾、每周回顾、季度回顾。 每日回顾 避免目标中途遗忘,每日目标回顾的作用就是建立总体目...

  • 回顾

    我今年26岁,我的儿时记忆已经记不起多少了,能回忆起来的事情大概要从03年非典了。03年我上六年级升初中 板蓝根卖...

  • 回顾

    今天AgileCommunity的话题是“如何提升迭代回顾会议的效率和生产力?” 这个话题在上次问题收集中排在首位...

  • 回顾

    坐在车上,望着窗外熟悉的风景,时光荏苒,不知不觉间,我在这座城市呆了已有十个年头了,曾经也有离开过,过了一段时间却...

  • 回顾

    我固执的认为我的父母没办法在一起生活,这个想法不仅害了我父母,也害了我自己。 为什么会有这个想法,源自于童年的恐惧...

  • 回顾

    时间过得好快,没想到这半年就过去了,回顾总是让我容易生发出感慨,还觉得有点难以想象。这一两个月,和G先生的...

  • 回顾

    看以前的字,想笑。感觉自己进步了。加油

  • 回顾

    没什么好说的一天,认真回顾了之前的笔记 笔记做的有点复杂,抓不住重点,需要改进 学习总是枯燥,希望自己能够坚持下去...

  • 回顾

    从事教育4年来,接触过许多学生,他们普遍都会犯一个问题,不愿意复习和回顾自己做过的作业。为什么呢?大部分时候他们学...

网友评论

      本文标题:2018年回顾

      本文链接:https://www.haomeiwen.com/subject/phvolqtx.html