我们在做技术的同时应该注重打造我们的工程师文化

有言在先

一个团队的文化氛围往往决定了团队的作战方式,发展方向。对于技术团队工程师文化浓厚是非常容易吸引人的,当然更吸引人才。这是很多团队都想要的,但是文化的积累是非常困难的。首先技术团队都得做业务,业务往往会占住很多时间,精力会分散,容易疲惫。其次一些技术使用或者开发的内容往往被封锁在一个小圈子里,想学习的人接触不到,即使进行技术分享,也不能深入底层,往往草草了事,看似提高的技术的氛围,其实因时间久了,慢慢也就麻木了,容易丧失技术的引力。

关于如何建立工程师文化,可以谈一下我们的经验

我们会用很多的时间来开发业务,而业务也的确是我们工作的重点,完全不能抛开业务空谈技术进步,这种技术的意义其实就是纸上谈兵,最佳的方式是快速学习快速实践,允许试错,逐步优化,其实我们发现最好的点就是如何把业务和技术结合起来,通过技术降低业务的难度,从而提高学习的时间。分享技术,让代码和思想都能得到升华

工具化,框架化

我们团队内部会每天早上开站立会,除了每日说明下昨日和今日工作情况,另外还会讨论收集下目前工作中的难点和最耽误时间的工作部分。然后后面一部分工作的内容就是如何通过技术来简化这部分工作,通过团队讨论加自我驱动,不断思考如何创新,优化目前的业务,让开发变得更简单,让人员有更多的时间去深入技术底层。

每天我们消耗很大的精力来线上查看日志,来确定生产的问题,当初程序还很简单,只是两台服务器做了负载均衡,查看日志还算简单,几个linux命令一组合便可以轻松检索出日志,但是随着业务增长,服务器开始变多,项目也逐渐变成服务化,分布式化,请求不一定会分散的服务器变多,日志变多更难查找,排序等都是问题,我们现在迫不及待的需要一个日志工具,把日志各台机器上汇总到一台机器上,然后通过grep命令来查找我们想要的日志内容。

但是问题随之而来就是通过grep会越来越复杂,比如日志所在的文件夹过多,日志又经过压缩导致命令执行起来效率并不是很高,而且对于大段大段的有上下文的日志,不能很好的展示,所以我们就是建立一个索引,这样方便我们用web展示,另外经过我们的优化结合业务场景,日志的展示效果也得到突破,基本原来查日志需要半个小时到1个小时的时间,现在基本1分钟搞定。

另外基于这套日志系统,围绕日志内容,我们开辟出了报警系统,统计系统。日志系统研发过程中,需要学习和研究很多的技术细节,并持续优化和改进,现在发现我们的同步日志有时候会出现不稳定的情况,索引创建的也越来越大,需要将日志计划向比较成熟的ELK上靠拢,研究其长处,并结合我们的系统持续发挥日志系统的特长。

开发中会使用很多成熟的开源项目,我们会结合业务使用场景对其进行扩展优化,让框架适应我们,而不是我们去适应框架。针对一些比较复杂的业务也会自己开发框架,以便简化了业务开发流程。日志中记录业务id,是个很普通到不能再普通的需求,但是业务需要在所有日志每一行记录一下业务id,甚至异常堆栈的每一行都有业务id,我们扩展了logback,以便开发人员根本不在意打印的日志内容是不是带换行符,都可以在每一行的行首自动加入业务id。

针对一些流程模块比较复用的业务,我们开发了模块自动组合调度框架,可以将原本需要在业务中写死的调度关系,抽象到XML中,通过在XML中简单配置,就可以实现节点功能的组合,并提供循环,条件判断等简单逻辑。

这其中很多想法,都是团队成员在业务开发中逐步提出的,并充分利用工作间隙开发出来,目前看来这些工作反而提高工作效率,也降低了工作强度。

适时的重构

一个项目运行久了,经过业务需求的迭代,经过很多名开发人员的变更,总会产生一些让人不太满意的代码,要么来源于对某些业务理解的不太深,要么来源于对一些紧急变更的后遗症,我们在团队内部总是强调,尽量避免凑活,追求性能极致,追求简单美,往往遇到这种情况,我们会适时的引入重构,避免破窗效应,让一个项目越来越杂乱。

重构其实不仅可以重新梳理下我们的业务场景,梳理我们代码的逻辑,让其更贴合业务,更重要的是可以让开发人员有机会再次设计我们的系统,结合一些更好的开源项目和技术,提升团队的技术氛围。

每一次重构其实对于一个项目来说都是无比艰难的决定,上有新业务的需求,下有重构的使命,时间紧迫,希望得到很好的效果,压力都会比较大。但是就是这种环境很容易锻炼人,使人飞速成长,通力合作,团队也会得到很好的磨练。

1.首先我们考虑先要梳理项目的痛点,重构其实更重要是解决现在的实际问题。

日志混乱:记录的自定义格式千奇百怪,关键入参和返回结果打印不全,生产运维困难,不能很快的找到一个业务流程,需要在上下文中筛选。

缺少数据字典:导致每个名词的定义各有不同,但字面意思相近,变量千奇百怪,不方便维护。

新业务添加复杂:相近的业务代码,没有抽象,导致新增要通过复制粘贴,然后调整差异的地方,导致开发工作量大,bug频出。

工具类多:每个人都各自添加各自的,其他人不知如何使用。

废弃代码多:废弃代码不知道是否有用,方法写了,看不到引用的地方,不想删也不敢删。

代码由于业务的不断改进,逻辑已经不再那么清晰。

……

2.提出更高要求,例如提高项目承载能力,应对更大业务需求。

制定明确的开发规则,例如同层之间不允许互相调用,日志的打印细则。

明确接口,SQL的含义,避免模棱两可的情况出现,更能精确的优化。

频繁请求的热数据考虑加入缓存及更新机制。

合理的优化框架,让业务代码更加纯粹。

根据上面的总结汇总设计重构方案,并制定开发计划,白天开发,晚上review代码,总结调整方案。引入新的技术和新的理念。新技术对于程序员来说是有很大吸引力的,化被动学习为主动学习,技术气氛浓厚。新的理念的引入,化解了很多旧有问题,改变了旧有开发方式,让业务代码更简单。最重要的代码再次回到开发人员的掌控中。

强化的技术氛围

其实前面介绍的工具化,框架化和实时重构,本质上其实是简化了我们的运维成本,同时也提高了大家对技术的钻研兴趣,用学习的技术解决实际的生产问题。另外还有挺重要一点就是平时工作中多鼓励大家钻研技术,鼓励刨根问题,鼓励知识共享。鼓励思维创新,鼓励组建技术小组,攻克技术难点。开展黑客马拉松,强调竞争,合理奖赏。另外在工作之外,会组织一些游戏竞赛,一来放松心情缓解疲劳,一来团队合作增加彼此了解。

经验总结

其实工程师文化就是一种放松的,自我驱动的技术文化,在这种文化下,通过成员的自我创新,通过技术手段,降低工作强度,优化业务数据,将技术与生产的需要相结合,并做到极致,从而使人在这个环境中得到飞速成长,团队也飞速进步。工具化,框架化强调DRY原则,避免重复,提高工作效率。实时重构避免代码质量恶化,重新设计提升代码品质。技术氛围创造来良好的环境,促进工程师文化持久留存,人人受益,团队才会受益。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,389评论 25 707
  • 一手烂字,很可能让孩子无缘重点高中,更别提好大学了。 所以,从小就好好练字吧,一手漂亮、规范的书写不仅仅能让卷面整...
    李宇航妈妈阅读 115评论 0 1
  • 夜幕降临的晚上天空飘洒着一丝丝细雨, 男男女女正急匆匆地行走在回家的路上。 我像天边漫无目的白云, 茫然无措的游荡...
    得我者幸阅读 454评论 0 1
  • 姐姐比我大十岁,每次回家,她总会做几个拿手好菜,嚷嚷着让我吃饱,说是回来一趟不容易。每次回去,我和母亲聊天,姐姐则...
    陪月亮摘星星阅读 450评论 30 23
  • 离人 银色小船摇摇晃晃,弯弯悬在绒绒天上。你的心事三三两两,蓝蓝停在我幽幽心上。月影洒在江上荡荡漾漾,隐隐映在你默...
    mikouer阅读 183评论 0 0