宜信技术研发中心暑假实习总结 - 做一枚优秀的程序猿

匿名 2017-07-12 浏览量:917

一、初来乍到

2016年7月4日,人生中第四次抵达北京,对这座城市不是很陌生却没有好感。匆忙找到落脚的地方,和同学小聚之后,便开始准备第二天的报道。

次日,便前往Soho现代城报道,和我一起入职的员工有哈工大的研一学长、武汉大学的研究生学姐、北邮的应届生学长和清华大学的应届生师兄,所以我感到很有压力,但同时也是对我的一种挑战。我很幸运,能够在我大二的暑假有机会来宜信实习。

面试的时候面试的是Java岗,所以已经做好了Java开发的准备,而来到研发九部之后,我遇见了对我职业生涯有很大影响的Team老大(其实我开始以为他叫麒麟的(麒麟之才)),老大同我聊了很久,了解我喜欢的方向和技术,我便主动要求去做一些实际的项目,于是开始了和Scala的邂逅。

这里说明一下我对宜信的初印象:入职的时候提供入职大礼包和免费午餐,宜信的办公室命名风格独特,诸如太平洋、大西洋、火星、天王星等等此类。每周的零食和水果发放,取之不尽的coffee、奶茶等等。后来我才了解到,福利还有,转正后可以申请免费的MacBook pro和超大显示器,加班有免费的晚餐,等等。上班时间均为弹性工时,可以灵活调整。实习生一般9.30到,晚上6.30下班,午间一个小时的休息时间。

二、初出茅庐

自然地,被分配到宜学贷APP开发团队做后台,后台是scala做的。一门新的语言对我来说是一个新的开始,在这之前玩过一点spark,掌握一点spark的RDD(弹性分布式数据集)操作,所以对scala并不是特别陌生。当然了,不陌生和掌握还是有很大的差距。下面我简单介绍一下scala这门语言。

Scala是一门多范式的编程语言,一种类似java的编程语言,设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种特性。对于Java开发者来说,面向对象编程应该不是什么问题,可是对于函数式编程来说,我们就是layman了。习惯了Java,开始学scala的语法倒是没什么问题,可是当实际应用的时候,你会发现面向对象编程和函数式编程有很大的不同,主要是思维方式的转变,你不再写各种控制逻辑,也不要再写满天飞的变量。这种思维的转变困扰我很久,习惯了Java命令式编程,所以改变起来不是那么容易。Scala具有非常强大的Future和Actor等高级特性,这里不做过多介绍了。

后台框架用的是Play Framework,这是一个比较新的full-stack框架,包括一个简单的无状态MVC模型,具有Hibernate的对象持续,一个基于Groovy的模板引擎,以及建立一个现代Web应用所需的所有东西。

由于play框架比较新,所以只能通过官方文档去学习,对于英语不好的我来说的确是一大挑战,不过还好有有道词典(哪里不会点哪里)。了解了框架,发现它真的很轻量级,作为一个web框架,play要比诸如SSM、SSH轻量级不知道哪里去。它自带的模板引擎和jsp很像,所以上手也比较容易。

三、小试牛刀

6天的时间,初步掌握一门语言、一个框架、配好环境。第七天,就开始了我的迭代任务。我们做的是宜学贷APP的后台,这里有必要介绍一下项目背景:

宜学贷是面向教育培训机构和个人推出的普惠金融咨询服务,为学生及学生家庭提供信用借款咨询服务,推荐便捷、广泛的资金来源,帮助学生解决资金压力,获得教育培训机会。
宜学贷填补了国家助学贷款以外的市场空白,无论是学历教育、 IT培训、语言培训或是艺术培训、职业技能培训等项目,宜信普惠均可以根据教育培训机构的特点,结合学生的具体需求,量身定制不同的“宜学贷”解决方案, 使学生可以轻松通过分期付款的形式来完成学业,形式更灵活,申请更便捷。

宜信普惠作为 “教育培训信用借款”的专业借款咨询服务机构,先后获 得“教育培训助学贷款领军企业”及“百万读者推崇的教育培训信贷服务机构”称号。宜学贷目前服务网络覆盖北京、上海、广州等近40个城市,已为1000多家全国性、地域性合作伙伴的数万名学员及学员家庭提供了便捷服务,实现信用的价值。

宜学贷官网:http://www.creditease.cn/yxd/

目前,为增强进件时效、简化申请流程,宜学贷产品线已经开发并运营了一款宜学贷APP应用,为客户提供借款申请、借款查询、还款查询等功能。
随时业务的不断发展、变化,秉承引领市场的宜信理念,需要适时推出一款全线上的宜学贷APP应用,应用更加先进、成熟的验证、防伪技术,在保证风险可控的前提下,实现借款申请、快速审核、非面对面签约、按客户时间需求选时放款、线上还款等功能,更好的满足学贷市场的需求,更好的服务于宜学贷的客户。

初来乍到,对业务的了解真是知之甚少,所以在完成每一项迭代任务的时候,都要熟悉相应的业务。总结一下自己完成的迭代任务,六个迭代周期,大大小小我记得完成这些:

  • 完成亲属称谓后台灵活控制

  • 完成身份证两次输入不一致时身份证信息入库;

  • Boss身份证展示

  • Boss下载合同PDF

  • Boss用户注销

  • 线下合同可上传银行卡信息

  • 完善进件联系人亲属称谓判定

  • 完善手持身份证DAO

  • 完成最新需求上传身份证、银行卡统一接口的编写和实现

  • 修复一些bug

  • 完成boss每日定时器执行sql并且展示

  • 完善boss用户管理搜索模块

  • 完善用户管理模块

  • 完成位置转换成经纬度的接口,以及计算距离

  • 增加联系人亲属称谓时错误信息返回的code码

  • 身份证验证时,增加两次认证不一致时也入库

  • (BOSS)放款对账需要加关键信息并增加按日期查询

  • 完善boss端用户管理模块(查询和注销问题)

  • 放款对账需要加关键信息并增加按日期查询

  • 手工改为线下签约的订单,在收到信审通知时不要重新获取签约方式

  • (完善)boss用户注销,删除用户token

  • (BOSS)放款点击按钮,必须返回提示。并增加放款列表

  • 计算两个经纬度之间的距离

  • 根据商家地址获取经纬度

  • (BOSS)可以通过输入手机号码,查询对应的机构码

  • 定时执行进件按城市统计和每日统计的SQL,插入数据库中

  • 找到点击任何按钮,(经常)页面意外跳转到登陆界面的原因

  • 重构定时查询功能,完成定时执行sql

  • 修复boss端页面点击放款详细查看后,跳出到登录页面的bug

  • 完成boss用户注销,删除用户token后出现加密解密异常,返回错误token的错误co de码

  • 完善手持身份证DAO

  • 身份证信息更新改为新添

  • Boss端配置管理功能,原型设计

  • 配置组各项配置的合理性校验

四、工作日常

每个研发团队都有自己团队的合作模式,我们team的代码管理工具采用基于内网的gitlab,任务进度管理由开始的Tower转而现在的Trello。每日一次的站会,跟踪进度,每个人轮流说自己昨天完成的任务和今天即将完成的任务。每周一次的技术分析会,分析如何高效地工作和学习、算法或者技术工具相关等等。不定期的小组讨论会,由于团队成员互相挨的比较近,所以有什么疑问随时提问,随时有人给你解答。老大和鹏哥离得我很近,所以每当我有什么疑问,都会随时请教他们。

学贷团队人员由产品经理、安卓团队、iOS团队、后台、测试和运维组成。我想来到宜信之后,很大的收获是熟悉了大公司的软件工程开发流程,从产品经理引进需求(开需求分析会)、到组内细化需求(把需求拆分为任务)、再到组内分配任务(开小组讨论会)、独自开发 、开发完毕后review code、Acceped Merge Request、合并到master,然后测试服务器部署、测试人员测试,最后到这一迭代版本的上线。整个一套流程下来,你会收获到不少东西。我在这里的50天,支持了6个迭代周期,平均每个迭代周期为一周左右,由于学贷是今年3月才开始做的APP,所有目前学贷还不是特别稳定,大部分的需求都是新功能而只有少部分的维护,所以对于我来说是一个很大的挑战也是一个很好的机遇。

除了支持APP的后台,还对宜学贷APP应用运维管理系统进行功能开发(boss端),由于boss端是web项目,所以我上手起来还是比较容易。而对于学贷APP,前后端分离的项目,测试起来就要自己写测试用例进行单元测试和集成测试。我觉得有必要强调一下测试用例的重要性,因为作为一名优秀的coder,可能写测试用例的时间要多于写code的时间,测试用例是对于你思维严谨性的体现,你会知道你写的code有哪些隐患和不足,减少bug。测试人员真正的工作不是给你检查出bug,正常到他们手中的版本应该没有bug,当然了,这种情况过于理想。

五、实习收获

有一点很大的感触是老大教会我的,在开始coding之前,一定要充分明白你在做什么,就是你一定要充分理解需求,充分理解产品经理的话,然后在透彻地理解需求的基础上,结合实际业务场景去coding。不要盲目地去写code,一定要明确目标。

每一次和老大探讨,老大都会教会我很多东西,12年工作经验,老大的技术能力早日超出架构师的水平,让我深深佩服。他总是能从各个角度出发思考问题,对我们不能解决的问题提出解决方案。具有很强的大局观,能够用长远的眼光审视代码、重构代码。

在这里结实了很多朋友,full-stack的老大、严谨的鹏哥、幽默的杰哥、帅气的强哥、热心的一为等等等等,在工作中给我莫大的帮助和指导,感谢你们,希望有机会能够再一起合作。感谢欣姐,对我姐姐般的照顾。再次感谢浩瑜学长内推,感谢潇潇姐对我入职前的答疑解惑。

了解了大公司职位晋升机制,在公司里晋升与否不关乎你的学历,而是你的个人能力、你的KPI、你关键时刻能够顶住压力、你的主观能动性和自驱力。以前自己经常纠结是否读研,现在我想我已经很明确了。当然,如果读研玩一些高科技的东西,也未尝不可,很多公司在部分岗位招人的时候,还会限制学历,是吧?

暑假实习之余读了几本书,分享给大家:

  • 《代码整洁之道》:只读了前几章。感谢老大,让我学会如何写出“优雅”的code,这本书读完或许没什么卵用,但你会下意识地审视自己的代码的可读性、可维护性和可扩展性。这种意识要比你会写出优秀代码重要得多。

  • 《大数据架构师指南》:这本书很适合想做数据却不了解大数据的人阅读,此书介绍了大数据的一些技术,诸如Spark、Hadoop、Storm及大数据可视化的相关技术和背景,会让你对Big Data有一个比较宏观的认识,清华大学出版,还不错。

  • 《数据挖掘导论》:记得以前立过flag,不搞机器学习,独醉Java。我想可能当时太年轻了,这本书写的通俗易懂,导论嘛,没有太多复杂的数学公式,入个门还是不错的。想做数据挖掘的童鞋可以读此书入门,欢迎与我交流,一起进步。

  • 《机器学习实战》:这本书只看了前几章,自己闲暇之余用python实现了比较简单的算法,例如KDD、决策树、Logistic回归等等比较简单的算法,大三继续看下去,把各种算法实现一遍。

  • 《快学Scala》:学习Scala入门推荐首选,想当时六天时间一门语言、一个框架大致内容记一遍也是挺不容易的,这本书说实话有的地方翻译的不是很准确,但是入门绝对够了,写的比较易懂。如果想了解scala的更多细节,不妨读一读《Scala编程》这本书,是老大推荐的,需要pdf版的可以私戳我。

六、娱乐时光

暑假的娱乐时光非常潇洒,在传媒大学附近住10天左右之后,我便如约住到哥们寝室去了—北京化工大学,在那里:二人世界咔嚓,空调WiFi西瓜,2K15一打,雷霆火箭互杀。我想这也是为什么在北京近2个月未曾感到一丝孤独,因为有兄弟陪伴。火锅、烧烤、烤肉、驴肉火烧、海底捞、西餐、绿茶、必胜客,还有吃的最多的牛肉炒饭。我想这些都是我珍贵的回忆。

住在化工40天,节省了约3000元的住宿开支,四年兄弟情,无以表达感谢,来日方长,希望情谊长存。

七、未来展望

我想我已经决定去做Distributed computing和Data Mining了,毫不犹豫,下学期加入王老师的海量数据研究中心,希望接触到更多实际的项目。

之前把玩过Hadoop、Spark、Strom,也就是写写WordCount,搭搭伪分布式或者本地分布式环境,已经忘得差不多了,接下来抽时间细作WordCount,接触实际项目,把上述框架把玩一遍,深入了解下ZooKeeper、Hive、Pig、Hbase此类,之前了解的不够深入,当然,爬虫还是要学的,暑假之余了解了py和Scrapy,python的确是一门出色的语言,能做很多事同时也非常简洁,接着学学Scrapy,爬爬网站。至于Lucene、Nutch、Solr此类,有时间再学深入了解吧。还需要掌握下Nginx,目前做负载均衡用的还是比较多的,我们的项目也在用到。

记得和老大说过这样一句话:我只能看得到自己一年后的样子。正如老大所说,这样的人生才有意义,不然,倘若你看得到十年后的样子,岂不是人生很无聊吗?

八、特别鸣谢

我想我最应该感谢的是研发九部老大徐Sir,我的二面面试官,是您给了我实习的机会,我一直心存感激,珍惜在宜信实习的每一天,没有太多机会和您促膝长谈,只是离职前有机会和您聊一次,感触颇深。诚然,基础非常重要,我会谨记您的教诲,夯实基础,努力成为一名合格的软件工程师。

再次感谢Team老大,您这段时间教会我太多东西,不仅仅是技术,还有其他更重要的东西。您是一名出色的Leader,善于与人沟通交流,积极组织团建,带动气氛,当Team里有人遇到困难的时候,您都同他长谈,解决疑惑。您是我的榜样,我希望以后可以跟您一样出色。

再次感谢鹏哥、杰哥、一为,认真耐心地回答我每一个问题,教会我很多技术细节,希望有机会能再次合作,像你们学习。

附上我的离职申请:

最后送给自己一句话,与君共勉:

通晓天下武功而百无一用,其实和不出家门的书生也没太大的区别;

学尽世上技术但做不出成功的产品,一样是毫无意义。

所谓知行合一,实在缺一不可!

一万小时的努力是任何人从平凡到超凡的必要条件!

发现文章有错误、对内容有疑问,都可以通过关注宜信技术学院微信公众号(CE_TECH),在后台留言给我们。我们每周会挑选出一位热心小伙伴,送上一份精美的小礼品。快来扫码关注我们吧!
分享硬核IT 专注金融