HTML5技术

技术人生的职场众生相 - 十多年的经验与心得 - 灵感之源(2)

字号+ 作者:H5之家 来源:H5之家 2017-07-16 17:10 我要评论( )

继续这个栗子,微服务的基础,用公有云的话,论灵活性,那就azure function;论scalability,还是azure batch吊;论可控性,还是service fabric强;论简单易用陪流程,还是azure logicapps好;论业界认受度,还是Am

继续这个栗子,微服务的基础,用公有云的话,论灵活性,那就azure function;论scalability,还是azure batch吊;论可控性,还是service fabric强;论简单易用陪流程,还是azure logicapps好;论业界认受度,还是Amazon家的AWS λ 吊。

 

MYOB是澳洲著名的老牌会计系统,直到几年前他们的解决方案还是Windows桌面程序,客户需要用citrix远程进去跑的。。。anyway,原来这公司的名字是Mind Your Own Business的缩写。

 

质量

在编程的时候,我们一定要想象一下,以后维护我们自己的代码的那个人会成为一个暴力的精神病人,并且,他还知道我们住在哪里。

 

MVP,对体育运动来说,是most valuable player(最有价值运动员/球员);对开发人员来说,是most valuable professional (最有价值专家);对产品开发来说,是minimum viable product (最简可行产品)。一些公司开发系统,一开始就勾画宏大的愿景,几个月甚至几年之后,产品还是没有见踪影。相反,一些公司追求最小化的可行产品,每个版本只发布一个新功能。

 

看了很多公司的系统,就像在吃苍蝇。

 

怎么给垃圾系统擦屁股:你被扔了一坨热气腾腾的烂代码,幸运的话只有几百万行,没有注释,仅可能有的就是早已过时的文档,写这些代码的烂码农早已去逍遥快活。

 

公司X,第一天,下班了,累瘫,腰酸背痛。首两周都是各个部门的不同人来介绍公司、各种业务、各个系统,找了几个机会跟开发团队聊了一下,顺手看了一下他们的开发,具体就不谈了。只能说公司业务成功,和开发不是正相关 。

 

公司B,客户端用OLEDB从Visual FoxPro读到DataTable,序列化到JSON,压缩,存到Azure BLOB,然后写相关记录到Azure Service Bus Queue,服务器端Service Bus接收到信息,取相关BLOB,解压,反序列化,再Bulk Copy到Azure SQL Server的临时表,再转换格式化各字段读关联表,最终到达目标表。。。蛋疼的感觉?

 

公司B,巴西码农,为了格式化法国人名常见的组合名(就是名字中间有-、·、空格等符号后面第一个字母要大写),他洋洋洒洒写了80多行代码,逐个字母替换,而且为了应付空格,又重复了一遍。。。。

 

公司B, 又优化另一报表,初步加了索引重构逻辑后,从原来超时到现在1分26秒,再分析,发现另外一个瓶颈是引用了这函数,报表先调用一个主的人名格式化函数,这函数再多次调用上述那函数,重构后,只需要6秒。

 

公司B,挺无语的,部门一码农,一个流量值(字节)要格式化显示成兆,他直接/(1024*1024),根本不明白那些小数就不能显示了,然后呢,还Round两位小数,问和尚借梳子啊。

 

公司B,数据库那块,简单地说,就是数据库规范范里面的第1/2/3范式都完美地忽略了 。。。前端界面对一些字段没有做校验,所以系统跑的时候各种爆,譬如期望是数值但里面有各种诡异字符,期望是邮箱地址但是文字。。。日志那块,每个方法执行都做一下开始/结束日志,随便点几下界面,几百K的日志内容[摊手]

 

我发现,懒/烂码农,很喜欢复制粘贴。

 

公司S,部门一开发人员,擅长复制粘贴代码,原本几百行的代码,硬生生搞成1万多行。他说:“我写代码,疯起来,我自己都害怕!”某天,这个码农在看自己的代码的时候,迷茫了,看不懂了,代码逻辑流程太乱。所以,他只能打开Visio,逐步把逻辑画出来了。。。[摊手]

 

公司S,系统是asp.net webform + vb.net + 大量第三方重量级UI控件,前端、后台和数据库性能都很烂,根本不是SaaS,也不支持多服务器,各种各样的错误。我踌躇满志地来到公司,第一天就跟大家说:“做开发这么多年,烂代码我看惯了,所以大家放心,不管多烂的代码我都可以重构改造的”,3个月后,我歇斯底里地指着屏幕上的烂代码,狂叫道:“你们这样写代码是不人道的!!!”

 

公司S,系统各种问题,性能表现差强人意。其中一个表现是,越越来越慢,譬如同一个功能,所以参数一样,今天跑5秒,后天6秒,大后天7秒这样。。。最后发现还是跟我之前优化的日志有关,虽然改成异步批处理,但是日志基于文件,每个最大2M,不断翻滚,日志文件名逻辑是扫描所有文件来取下一个文件名。

 

公司S,一天,分析了一下数据库,一个客户7天做了150万次数据库读操作,约读取了200G数据,加上前端那些Web Form冗余HTML,实际从服务器上走出的数据是很夸张的(按我司的规模),数据库请求延迟更厉害,一个客户每次请求都要等0.2秒。

 

公司S,存在多个业务逻辑错误问题。客户反映数据有问题,部门的同事分析数据和代码,最后发现关键逻辑是读的配置文件,而这个配置是应该按具体客户的设置来的,但变量写成了static。

 

公司S,系统运行时大量日志生成,同步写入日志文件,我改成了异步。还有,每个页面加载完成,都记录一下用户的IP、加载开始时间、加载结束时间等信息,也是同步的,加上其它业务逻辑写得不行,所以很忙,我也改成了异步,定时批量写入日志。

 

一些公司的码农,不把警告当警告,完全无视之。

 

公司S,主系统,编译的时候,显示254个警告,不能再显示更多了。

 

公司S,下班前,每周五全员工公司例会中,一个IT部的同事问我:“Wilson,你们部门是否会把机器学习应用起来”,我心想:“你们连数据仓库都没做,所谓商业智能这只是做了些基本报表,数据量也不是很大,我以前随便处理都是几十亿起跳的,还想机器学习???” 然而,我还是老实说:“大家知道Google alphago吗?就是最近打败了最牛的围棋手的人工智能系统?”。没人回答。我继续“我们写程序,是直接解决问题。机器学习,是我们写一个逻辑,让机器其去利用现有的数据进行分析找出最优方案,这是非直接解决问题,”

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Vuejs技术栈从CLI到打包上线实战全解析 - 万里秋山

    Vuejs技术栈从CLI到打包上线实战全解析 - 万里秋山

    2017-06-28 15:00

  • 架构师之路--搜索业务和技术介绍及容错机制 - 静儿1986

    架构师之路--搜索业务和技术介绍及容错机制 - 静儿1986

    2017-06-26 12:00

  • 微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理) - 风中程序猿

    微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服

    2017-06-24 18:00

  • 2017年前端框架、类库、工具大比拼 - 葡萄城控件技术团队

    2017年前端框架、类库、工具大比拼 - 葡萄城控件技术团队

    2017-06-20 12:00

网友点评
}