众生百相:个人10年软件开发生涯

前言

我是个码农,在职场干了多年,在超过10个公司服务过,遇到过各类怪现状,拍案惊奇葩,不吐不快,太想写篇文章吐槽一下。
 
这篇文章聚集了我10多年来的工做中遇到的各类经历,总结的心得,分别讨论了团队与协做(同事/领导/客户的交流)、技术与质量(学习、技术选择、质量)、职业与事业(现实、追求、老油条、职业道德、典故、事业/经验)、找工做(猎头/中介、应聘、简历、面试别人)、辞职(缘由/理由、信任)等,干货满满的,里面还夹带了个人不少秘密和典故,若是你认真看,会回来找我赞的!!!
 
若是你非要叫我跑龙套码农,请不要在前面加个死字,谢谢。
 
本文是个人我的经历和意见,请取滤网三钱,温水煎,和着服用,谢谢。
 

协做与交流

入职

无论你在之前多厉害,有多丰富的经验,去到新公司,都要从新学习,撇开业务逻辑,咱们还须要学新的编码规范(无论你是否定同)、开发流程与守则、工具等等,更耗时的,是理解他们的开发框架,每一个公司都有本身的一套(不少可能重复发明了了轮子)。
 
心态很重要,没有端正心态,很容易形成失衡。一些人一晚上暴富(如中奖),而后大肆挥霍,最后比暴富前更穷困潦倒。入职新公司,能够放低身段,毕竟你掌握的技术是一回事,学习公司各类文化、流程、规范、业务逻辑等等都要花一段时间,不能一蹴而就,不然落差太大,事与愿违,如牛入泥潭,强烈的无力感。
 
一张厕纸,都有它的做用。每一个技术公司都有过人之处,咱们要关注的,不是那些不行的地方(有待后续解决),而是寻找那些有养分的干货,学习之,提升本身。20/80法则,20%的公司牛,那就算差的公司里,也有20%的人尤其突出的,要向他们学习,看他们写的高质量代码。
 
从一个公司角度来看,评估员工的表现,不是看他之前多厉害,经验多丰富,而是看如今为公司的贡献。因此,一些时候出现的状况是:“我自认水平很好,为何公司给个人回报没有我想象中那么多?”
 
去到一个新公司,心态要摆好,低头作人,努力学习。或许,有一些同事,以为你空降过来,不会持有热烈欢迎的态度,因此,作好本分的事情,不须要奉承别人,也更加不要得罪别人,日常心看待。
 
每去到一家公司,我会尝试笑着面对每一个遇到的人,甚至说一声Hi,若是对方没兴趣,那不要紧,我不会所以脸黑或者不爽。笑着面对各类问题,本身写的烂代码,含着泪也得把它重构好。
 

同事/领导/职场

林子大了,什么鸟都有,公司大了,什么人都有。有人的地方就有江湖,有利益的地方,就有冲突。
 
澳洲,跟美国同样,是移民国家,通常每家公司都有各色人种。文化的差别,语言的沟通,总会形成各类矛盾。
 
根据这些年来的观察,冲突通常有:一、邀功,当你辛苦干完活,别人把功劳拿走了;二、推卸责任,不是你形成的问题,别人强加于你身上;三、小圈子排挤外人。
 
说到底,工做就只是一份养家糊口的事情,其它都是不重要的,把这个想通了,一切都好办了。把心态摆正,把事情作好了,就好了,不少事情没法控制,固然,咱们要懂得不要给别人留有藉口揪你小辫子。
 
每一个公司都有各类问题,进新公司以前,你们习惯设想新公司怎么怎么好,本身的计划如何顺利开展,现实,每每不是如你所愿。因此,要作好最好的准备,最坏的打算。
 
办公室不是找朋友的地方,必须时刻提防各类办公室政治,披着羊皮的狼,是最危险的,越天真越容易中招,不大有人会踢一只死狗,枪打出头鸟,你越出色,越容易招惹是非,要混得开,低头作人很重要。
 
对美女来讲,“天生丽质难自弃”,想突出本身把本身的优点最大化。职场,大部分人都想出人头地,努力往上爬,加薪升职。然而,事与愿违,总有“老子干得很不爽,去你大爷的!”的时候,若是你真有心有力,确实是能够去创业,不须要受各类非人的委屈。
 
一言蔽之,要干得爽,仍是须要本身创业。
 
公司S,心累,如今公司部门和部门之间有严重的斗争,各自为政,根本就不是想干活的,恶心的事情不少,譬如部门老大不干活,让小弟干,小弟工做繁忙压力大就爆脾气,说话不像人样,而后部门老大就各类推卸责任,还美化之,去它大爷的 。
 
公司B,三个印度码农在印度,一个大胡子孟加拉国的,一个刚来澳洲两天的伊朗人,一个来了澳洲不少年但口音极重的越南人,一个还在马来西亚下个月才来报道的码农,加上来自黎巴嫩的上司,还有我,真的是联合国。
 
公司K,精神分裂的部门女同事,菲律宾大妈,在公司呆了18年,在CTO背后联合她的两个马来西亚小弟直接跟CTO的上司说CTO各类坏话,在CTO面前老装很友好地狂笑,对待客户是同样的作法。
 
公司T,当年很纯真,但已经目击了各类利益纠纷。公司和别的公司协做作的GSP系统,一个医药销售系统,产品作得差很少了,各类纠纷,后来产品就烂尾了。
 
公司T,我离职,老板请你们吃酱板鸭,味道特别棒,至今难忘,离职后还和老板保持了多年的联系,每一年春节还发祝贺短信,很精短,都是手写的。
 
工欲善其事,必先利其器。开发工具,是开发中重要的资源,公司不该该在这块上有任何吝啬。
 
公司S,我入职后发现开发部的机器,最老的7年了,新的也有3年老了,没改一行代码,从新编译,须要5分钟以上。跟我一块儿入职的有4个新同事,公司给我买的电脑是给其它同事买的3倍价钱,IT部经理一脸正经地跟我说:你丫的应该以为庆幸拿到这么贵的电脑。但我一脸无奈地跟他说:“虽然你买的是我要求的ThinkPad,我我但愿是t4xx,你却买了exxx,我才不想要呢!”。新来的项目经理对公司安排给他的新手提电脑很不满意,一大早打开的时候就已经用力噼噼啪啪了,还吐槽连HDMI接口都没有什么的,下班快走的时候还吐槽这i3 CPU配置都8年老的了。首先,讲道理,每次i3换代都有新版本,不能刻舟求剑,可是,省这几百块不值得。
 

客户

客户是不讲理的上帝。
 
你的代码写得那么烂,你的客户知道么?
 
公司S,作IT的同事告诉我几个真实的故事,忒搞笑了,其中一个是:客户说电脑不正常,同事远程协助,很客户说:“close all the windows",而后客户说“done",同事说我这里看见尚未关闭啊,客户坚持已经关闭。争论半天,最后发现客户关闭了的不是“窗口”,是“窗户”。
 
公司S,有一个潜在客户发来合同,要求咱们的系统一年365日,100%在线,若是服务down了,按分钟赔钱[允悲]。
 
客户的需求,没有明确目标的居多,须要逐步引导,按优先度和难度分期实现,不然很容易烂尾。
 

技术与质量

学习

只为一家公司卖命一生的,少数。即使只为一家公司干活,始终会有产品改进甚至更新换代的一刻,无论是用户量上去了,仍是用户需求变动了,那总要学习新技术。一些公司,系统多年不改进,员工就无欲无求了。等离开公司的一刻,才发现本身与社会脱节了,这种如温水煮蛙,因此早就了不少养老心态的老油条 。
 
公司C,一个资深码农,离职以前,考高级程序员证,恶补,拿到证以后,离职了。
 
我不是喜鹊码农(The Magpie Developer),不贪新厌旧,确实太多东西须要学,数据量太大了,天天太多东西能够学,时间不够。举个例子,基本的平常使用的工具,如开发工具,譬如Visual Studio,即使你天天用,不少有用的东西我就是没留意,举个栗子:你知道怎么快速复制、剪切、删除整行代码吗?删除一个词呢?再举个粒子,SSMS(SQL Server Management Studio)里面,怎么快速查看一个对象的相关信息,如一个表,显示全部字段、主键、索引、约束等等?
 
最近看愈来愈多的网络资源,一些要收费,如一个网站提供了专业面试国际大公司的一对一指导服务,全程真题,还有全球20多个著名Web2.0公司的系统设计详解,也就几十刀,值得买。
 
说到这里也给你们推荐一个架构方面的交流学习群:650385180,也是听以前的同事提起过的,看了一下,内容技术点讲解还不错,里面也会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,相信对于已经工做和遇到技术瓶颈的码友,在这个群里会有你须要的内容。
 
看过不少技术文章,一些网站追求一些很是入门的内容,譬如怎么作个多级菜单,动画效果,等等,放在首页,而一些干货文章却被忽视了,悲哀。
 
大部分码农都只擅长一种技术,因此选择的时候应该选择一种不容易被淘汰的技术(中期仍是主流的),譬如.net,如今各大平台都能用并且生命力很强,在上升阶段。前端,脏乱差,但学好JavaScript不愁吃穿,围绕js的各类框架能够学一下主流的。
 
技术是相通的,不一样的技术栈,技术思想是相仿甚至同样的,所谓一理通百理明,因此,有全栈的开发人员,从Web前端一直到后台、数据存储,还有全部之间的技术如安全、日志、队列等等。
 
即使不睡觉,也不够时间学习能够学的东西。因此,只能挑食,笼统地学一下大部分新技术,最关键核心的,能够深刻学一下。
 

技术选择

前端、后台、数据存储,都有乱象。
 
前端尤为乱,对突飞猛进的那些前端技术无力吐槽,简单来讲,就是脏乱差,惋惜,技术负责人,没有把好关,选择了错误的技术。
 
技术选型,决定因素不少,譬如技术带头人,譬如技术储备,公司现有状况,等等。著名云程序日志记录提供商raygun,几个月以前扔掉node.js改用.net core,性能提高20倍。但就是有些公司的技术人为了反对而反对,选择一些不切实际的解决方案[摊手] 。
 
举个栗子,譬如SOA家的微服务的设计与使用。网上诸多最佳实践,在多数公司里面都没有、也不会实现 ,无论是决策者、财力资源、仍是人力资源等限制 。你们审视一下如今公司的系统, 你连现有系统的的基本的模块化作到了吗?若是没有,凭啥你就觉连模块化就作不到就能把微服务作好? 甭想微服务了。微服务不大适合初创或小公司,Martin Fowler说过,上微服务须要现有的流程、监控、快速发布基础, 并且发布的成本和复杂度比单系统服务高,服务间的网络数据交换成本额外高,本地开发测试复杂度和成本也高。 遇到异常,仍是看业务,一些transactional的该怎么样就怎么样,通常流程化操做,如用sagas,容易致使死流程,这种怎么监控和解决具体问题具体分析。通常作法是有机制重试n次后还不行就escalate到IT,还有日志这块也是不少坑的。
 
继续这个栗子,微服务的基础,用公有云的话,论灵活性,那就azure function;论scalability,仍是azure batch吊;论可控性,仍是service fabric强;论简单易用陪流程,仍是azure logicapps好;论业界认受度,仍是Amazon家的AWS λ 吊。
 
MYOB是澳洲著名的老牌会计系统,直到几年前他们的解决方案仍是Windows桌面程序,客户须要用citrix远程进去跑的。。。anyway,原来这公司的名字是Mind Your Own Business的缩写。
 
公司C,当年O/RM流行没多久,entity framework尚未出现,咱们用的一个商业的,性能很烂,批量生成数据的时候整个界面没法响应(当年咱们都不懂异步处理)。
 
公司C,微软推出了和macromedia(尚未被Adobe收购)的flash对抗的Silverlight,设计思路是好的,性能都比flash好,漏洞远没flash多,技术负责人说,咱们下一版本要用Silverlight实现,当时他说:“咱们要作银光版!”
 

爆栈

最近的争论,懂一个Web前端框架,而后试图搞定后台和数据存储,还有之间存在的各类数据交换、流程处理、安全、扩展性、潜在性能问题(各级cache、sharding)等等,很难。由于每一个都有太多太多的坑,不把这些坑踩过就说能够搞定全端,有点难度啊。
 
我以前反复强调我不只仅是全栈,我仍是#爆栈#。技术体系,须要时间去构建,融会贯通。听过、会写Hello Kitty、懂用、掌握和精通是不一样的,须要多读多动手,把坑踩了,跌得越痛,认识越深刻。
 
上大学的时候,导师用跟咱们说过赫胥黎的名言:“learn something of everything, learn everything of something" (尽量普遍地涉猎各门学问,而且尽量深刻地择一钻研)。咱们能够全栈,但起码有同样是研究的特别通透的。
 

质量

在编程的时候,咱们必定要想象一下,之后维护咱们本身的代码的那我的会成为一个暴力的精神病人,而且,他还知道咱们住在哪里。
 
MVP,对体育运动来讲,是most valuable player(最有价值运动员/球员);对开发人员来讲,是most valuable professional (最有价值专家);对产品开发来讲,是minimum viable product (最简可行产品)。一些公司开发系统,一开始就勾画宏大的愿景,几个月甚至几年以后,产品仍是没有见踪迹。相反,一些公司追求最小化的可行产品,每一个版本只发布一个新功能。
 
产品质量、功能和时间这三者里是互斥的。要质量和功能,那么时间就得延长;追求质量和时间,那么功能就要砍;赶时间和功能,那么质量必然降低。
 
看了不少公司的系统,就像在吃苍蝇。
 
你们看过少林足球,吴孟达样子和口吻:“代码,不是这样写的!”
 
怎么给垃圾系统擦屁股:你被扔了一坨热气腾腾的烂代码,幸运的话只有几百万行,没有注释,仅可能有的就是早已过期的文档,写这些代码的烂码农早已去逍遥快活。
 
公司X,第一天,下班了,累瘫,腰酸背痛。首两周都是各个部门的不一样人来介绍公司、各类业务、各个系统,找了几个机会跟开发团队聊了一下,顺手看了一下他们的开发,具体就不谈了。
 
公司业务成功,和开发不是正相关 。很特别是那些行业系统,只要销售人员足够强,无论多烂的系统均可以大卖,因此,不少公司的销售人员收入很高。
 
公司E,硬度公司,公司绝大部分是硬度菊苣,部门都是硬度码农,除了我。主系统登陆页,老板要放一个配合公司LOGO的动画,硬度菊苣就设计了个gif动画,彩虹波浪线不断翻滚,但页面加载很慢,整个窗口响应也不好,鼠标挪动都有问题,我一查,原来那个gif大小是全屏幕的,超过5兆。。。
 
公司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吗?就是最近战胜了最牛的围棋手的人工智能系统?”。没人回答。我继续“咱们写程序,是直接解决问题。机器学习,是咱们写一个逻辑,让机器其去利用现有的数据进行分析找出最优方案,这是非直接解决问题,”
 
数据从用户在界面输入开始生命周期,通过传输到达网站,通过处理(譬如ETL),再存到数据库,后续还可能有数据仓库二次处理等,最后数据失效被删除。这中间不少事情须要作,但,最重要的第一步,是确保用户输入是校验过的合法数据,不然进入系统后形成连锁反应,修复成本过高。
 
我服务过的不少公司,界面输入缺少基本的校验,譬如长度,用户输入长一点就爆了。邮件格式也不判断,系统发送邮件的时候各类爆。
 
公司S,系统设计有问题,实现有问题,运做有问题。拿各类通知客户的按期报表邮件,地址彻底不校验,同一个客户出现几十种的邮箱域名,譬如正确的是foo.com.au,实际出现:foo
coma.u, foo.com,foa.com.au, foo.com.....,一些明显是不合法的格式,一些是不存在的域名,等等,发送的时候也不校验[摊手]
 
公司X,系统各类安全漏洞,SQL注入垂手可得。
 
遇到过各类奇葩软件/系统设计,譬如LinkedIn Android版,常常告诉你没法发送内容,不告诉你为何,以前打的长长内容都丢了,根本草稿等临存功能。一些银行的app,容许你增长、减小每日转帐额度,但根本不告诉你要增长到多少或者减小到多少[摊手]。
 
公司S,现有的系统10多年前开始写的,技术陈腐,其中一个功能是根据不一样客户不一样产品从可自定义模板那里动态生成表单,这个功能是用的第三方的,原本不复杂,但随着业务发展,如今单纯渲染界面的代码行超过10,000。我在用angular改造,目前代码行200,能够显示了,接下来就是作一些交互[摊手] 。
 
公司S,Web系统性能差,有几个缘由,其中一个,是HTTP压缩都没有启用,页面/资源加载都要用较长时间,我发现以后,顺手启用了[摊手]
 
公司K,系统的数据库设计不少奇葩的事情,就命名这块就看不下,用户标识(UserId)这个,同一个数据库里有如下各类形式:UserId、UserID、user_id、userid、iduser、USERID、id_user等,并且大部分是同一我的搞的 。
 
公司E,隔三差五发现公司印度菊苣们写的代码好多坑,譬如前端js确定就不判断对象是否null,直接取属性,而后后续的代码都没法跑了。后端的代码更奇葩,直接try/catch抑制错误(catch无任何逻辑),今天发现一功能没法跑,分析后发现,数据库表字段类型是nvarchar,代码里定义是int,菊苣不解决抑制错误就完了
 
这么多年来,各类平台,看见过各类软件的奇葩实现。
 
公司Z,如今的业务系统,一个复杂的申请流程,全部数据都暂时保存到cookies,今天终于爆了,客户的一个下单JSON后超过4k,boooom!
 
写烂代码的人多用旧版本的语言,这样他们就能名正言顺地不用新版本的语法糖来精简代码。譬如c♯的自动属性,expression body、LINQ等,他们都不会用。更恶心的是从新发明更烂的轮子,数值TryParse、DayOfWeek等重搞,最恶心的是压制错误:一个对象几十个属性,不判断null,几十个try/catch逐个属性轮 。
 
公司A,数据库这块,由于某GIS产品Web服务的特色,把数据库分割为:每一个客户3个数据库,而后呢。。。而后服务器就几十个数据库。。。。其实作到一个数据库是没有什么难度的。。。。能够预见之后各类血泪 。
 
公司A, 开发这块。。。以前弄过Windows Mobile,后来用Sharepoint(怨念!) + Silverlight(怨念!!)。。。。。加上某GIS产品+.NET插件(啊啊啊),如今在上马#WPF#(怨念!!!),而后准备招聘iOS开发人员和Android开发人员(啊啊啊啊。。。
 
公司A, 作的产品主要是基于GIS的产品,给服务人员提供地理任务标注/指示,而后开展工做。而后呢。。。。#没有本身写的服务器端#,#不直接存取数据库#,彻底用某GIS产品提供的Web服务。。。。而后性能各类爆。。。。。。。
 
公司A,是典型的传统使用微软产品的企业,IT/基础设施这块都是AD/exchange server/SCCM等,最近弄了个JSP写的helpdesk系统,全部东西都往那里扔,连新产品/新项目/改进都放那里,还包括bug管理。。。
 
公司B, 系统是Web应用,引用了大量的第三方Web前端代码,超过2500个JavaScript、CSS文件。。。。每次发布要等很久很久。。。其实绝大部分都不须要用到,就是硬度码农买1送10地狂塞进去,并且grunt build那套也不用,打开首页的时间都够我去找菲律宾妹子了
 
公司B, 相比上一家公司,这公司的产品情况要好不少(尽管不少问题)。上一家公司的产品我接手以前只是基于第三方产品作扩展,彻底不是自主知识产权,午餐商业化,我从头写,大半年完成,比第三方产品还好不少功能多不少。好歹如今的直接自主产权,技术较新,但坑多。
 
公司B, 这公司是和这行业的领先者之一合股搞的SaaS解决方案,软件+硬件结合,市场很大,不过,合股公司总部就是仓库,你们绕着会议桌开发,旁边的沙发坐了一堆五湖四海的合股公司员工吃各类风味的午餐。。。新公司的工做场所还在装修,隔壁,其实仍是仓库改造。。。
 
公司B, 须要使用的第三方系统,其市场占有率超过50%,但用的Visual FoxPro开发。。。。。。。。由于官方没提供API,咱们的玩法是直接逆向工程数据结构而后自行山寨业务逻辑玩弄数据。。。。。、、
 
公司B, 8个硬度码农(已经炒掉5个)作出来的web系统,后台ASP.NET MVC+nhibernate。。。每一个controller都automapper create一次map。。。还直接数据CRUD。。。前端angularjs,每一个controller直接http req。。。各类null ref问题。。。
 
公司A, 我发现了,代码的质量不好,主要缘由是:大量复制粘贴、反复操做(譬如反复的获取同一个值作而不是读一次作变量)、冗余的循环、没有使用较新的语法糖(譬如lambda)而自行弄10多行代码实现一行LINQ搞定的、不少状况都没考虑大小写敏感,强行catch异常而不是判断
 
公司A, 入职一个半月,发现前任挖了不少很大的坑,一些短时间内没法填,一些长期也没法填,怎么办?逐步填,一天填一个呗。
 
公司A, 开发,是典型的四无:无设计、无文档、无规范、无流程,没法无天(噢,五无了)。数据库设计乱七八糟,性能极渣,处理几百万数据的ETL也要跑几个小时,还会内存耗尽(32G)。。。。代码那个更没法吐槽。
 
公司A, 产品用的C#开发,Visual Studio作IDE,代码管理用的SVN,陈腐得很。产品开发仍是waterfall,新版本发布用windows登陆触发复制更新,无力吐槽。。。给CIO建议,改用Visual Studio Online,搭配scrum,项目管理/代码控制关联起来,这只是第一步,还有不少须要作。
 
公司A, 虽然不一样州不一样客户不一样的业务需求,但绝大部分业务/逻辑是同样的,彻底能够把基础部分标准化,可是呢,如今的作法是每一个客户单独有3个数据库。。。每次基础功能/逻辑更新,就要更新几十个数据库。。。
 
公司A, 数据库的更新容许经过sharepoint修改任意记录,而后呢,没有后台逻辑封装,而后呢,一些表大量触发器,一些触发器几百行代码。。。
 
公司A,产品的平常数据查看/修改,除了专门的管理工具/客户端,还能够经过sharepoint来,有一个自定义的数据列表WebPart来绑定一个数据源,还有一个数据编辑WebPart,根据PK来更新数据,居然容许直接修改任意记录。。。。。没有后台逻辑,没有存储过程。。。我靠
 
公司A, 系统的部分数据导出和通知是用的python脚本,质量放一边(容错、复制/粘贴等),产品环境根本就没成功跑动过,一个月多月了,没有人去排错。。。今天开会,我一会儿就找到问题了,print组合输出某数据库值null。。
 
公司S,审查代码,发现多个地方都出现一个诡异的逻辑,文件输出的时候,定义编码是GB2312,我跟写代码的码农说:“但是,我们不在中国啊[摊手],并且,那但是10多年前的作法啊[捂脸] 。
 

职业与事业

现实

铁打的营盘流水的兵,你们都是能够被抛弃的卒子,不想成为边角料,就要不断提高自我。
 
职场如古代的欢场,上班族都是出来卖的小姐,区别是一些天生丽质技术过人的成了头牌、花魁,日子天然滋润,若是碰上要么色中恶鬼的土豪劣绅或一见倾心的傻情郎给之赎身(大量股票&公司上市),那就能够安稳过下半辈子。不然等到徐娘半老只能被抛弃。少数早早财务自由,转个身,仍是作了老鸨(老板)
 
职场如古代的后宫,上班族都是佳丽,区别是一些天生丽质技术过人的成了各级妃嫔,日子天然滋润,若是碰上皇上宠幸,成为高人几等的贵妃(大量股票&公司上市),若是怀上龙种诞下皇子,那就能够成为宠妃甚至皇后(技术带头人)。不然等到徐娘半老只能被抛弃。少数早早财务自由,拿个封地自立为王(老板)。
 

追求

若是人没有理想,那和咸鱼有什么区别?
 
我不是普通码农,我是传说中的那种10x码农,效率是普通码农的10倍,但个人待遇是普通码农的10倍吗?不是。因此,我今天还得起床去搬砖。
 
出污泥而不染,濯清涟而不妖,用这个来形容我每日在烂代码的枪林弹雨中匍匐前进而幸存下来,挺适合的。
 
追求,除了代码质量,还有岗位,和待遇。
 
我那“离职公司就上市”段子你们都知道了,我经历过几回,2次错过,1次主动放弃。中午请公司Z的技术总监吃饭,他是老员工,整个系统主要是他搞起来的,公司最近拿了几亿刀的授信,市值是1.85亿刀,但公司只给了他价值6万的刀股票。另一个所谓的CIO,来了没多久,没啥大贡献,但他要求不拿工资换股份,如今有4%,价值约740万刀 。
 
追求,就是不甘于只完成任务,而是要作得更多。
 
多年前,由于要监控不一样公司的不一样系统运行状态,写过多个针对性的监控程序。作过一个分布式计算,c井写的,RESTful API通讯,cluster server发送计算模块(动态的c井代码)到全部tenants,每一个tenant跑完代码结果送回server,就是map reduce的过程。这种模式,能够作不少事情,譬如之前作过度布式查询,任意客户端(台式电脑、手机等等)查找结果真后汇总 。作监控系统,遇到情况就触发条件而后通知相关人。后来改用第三方的,譬如Nagios,再后来,改用云服务。之前用过monitis.com ,还行,如今公司要这个功能,因此再作了比较,发现还monitis最适合 。
 
作公司S,我发现公司没有这种监控系统,我主动作了出来,效果很好,找出很多问题,damage control比之前好多了。刚才监控到物理内存忽然占用多了600M,分析后发现一个业务逻辑把整个数据表取出来在内存出来,空间占用1.6G。这就是追求。
 
公司S,花了些时间,给公司的系统作了个高度可配置的数据归档功能,能够指定任意来源和目标服务器、数据库、业务表、数据记录条件等,自动建立目标数据库、表,完了自动备份压缩、迁移等等,这个,是以前没有人能作出来的。这就是追求。  
 
公司S,主系统存在10多年了,当年没啥设计,功能逐步堆砌。存在各类问题,性能问题尤其突出。主业务是各类数据的ETL,大部分逻辑都是逐条记录写入、更新到数据库。譬如插入1万条记录,须要2分钟。我改为批量的,0.4秒。。。仍是太慢了[摊手]。这就是追求。
 
虽然我是爆栈,我偏好写后台逻辑代码,由于前端代码,好歹还得跑一下minify和uglify步骤,这样别人才看不清你写的代码有多烂。毕竟,系统慢,你能够说是硬件差不是你代码烂。其实,我仍是都写得很好的。这就是追求。
 
公司S,生产环境有备份(第三方的备份SQL server的备份文件),但备份是一笔糊涂帐,譬如随机抽查尝试还原,竟然能告诉我那天的备份失败了[摊手]怎么没人通知??而后呢,换一天,数据库自己的备份也失败了,然而仍是没有设置通知[摊手]我看不下去,给备份结果作了通知,而后给以前写的系统监控加了相关监控 。这就是追求。
 
如今上班天天仍是坚持作些研发和写写代码,最近在作系统监控的功能,全套, 爆栈,从前端(angularjs等)到服务器(asp.net MVC+Web API等),从客户端(Windows service) 到数据库(SQL Server等),每一个模块都尽可能针对接下来作新产品要用到的技术的最佳实践进行演示,编程规范等等都尽可能覆盖,给你们学习。这就是追求。
 
公司S,一天,全部网站服务所有停摆。查本身写的log没发现,查看IIS网站在跑,但应用程序池停,启动再打开网站,仍是不行,池仍是停,如此反复,排查系统日志,池中止是由于hips模块没法加载,追踪是外包的IT服务公司擅自在工做时间安装McAfee杀毒软件,给IIS加模块,IT卸载杀毒软件还不行,最后只能由我解决。这就是追求。
 
公司S,每周开个workshop,主要说现有代码的问题和怎么优化,还有各类场景的优化办法和高效算法,给出benchmark,一些快几倍,一些几十倍,一些上百倍。还在ASP.NET Web API的基础上搭了个Web服务框架,支持token,流量控制等,写得好爽 。这就是追求。
 
咱们心态不该该bottle half empty,而是half full,就是要乐观。我眼中的坑,是潜力,我发挥的机会,坑越大越好。我吐槽了那么多,都是我遇到并修正的。
 

老油条

 
我对老油条爱恨交加。
 
公司S,我面试的时候,老板说公司要把现有老系统作成SaaS,队伍很成熟,看了一下该公司领英员工列表,初创员工从最开始到如今11年多了,没离开过。成熟,换言之,就是革新的阻力大,老员工舒舒服服的,不会关心什么新技术,更不喜欢空降一个上司来找他们麻烦。若是你是老员工,你怎么办?若是你是空降那个,怎么办 ?
 
公司S,几个老油条,常常请病假,曾经有人一个月请三次病假,彻底是滥用。
 
有一家公司,作了20多年,积累了大量代码,超过2000万行,其中,大量重复发明的轮子,基础组件如譬如O/RM和XML序列化等,大模块如ERP等,无所不包,至关佩服,好处是,你有藉口入职后1年才开始了解系统,以后,也能够安心作老油条养老,由于你写的代码没多少人看得懂。
 
公司A,我接替的那个研发经理将于3周内离职,问他拿系统架构设计、流程图、数据库设计、技术规范等等全部文档,全无!那好,让他讲解一下,他让我直接看代码和用数据库diagram看表关系。。。我靠,系统设计仅仅就是表关系吗?至关的无语。。。
 

职业道德

 
这些年来听过很多朋友吐槽各类奇葩遭遇,我以前也遇到过很多。
 
公司X,用Java的,其是给南航作订票系统的,后来老板跑了,没发工资,你们都回公司抢电脑填工资。
 
公司H,一个从广州灵狐(还有人记得吗?)来的码农同事离职,破坏分区而后格式化磁盘了,还拆开机箱,拔了电源线和数据线。
 
一个公司雇用一个员工成本挺高的,找猎头就要给一个半月的工资,基本工资,养老金,各类保险,工做环境(租金),设备,培训,年假,病假,每一年加薪、奖金,平均算下来是基本工资的150%甚至更多。因此,我干活都很努力,对得起这份工资。
 
时刻站好岗,不过不须要像以前带病工做了,也不须要第一个来上班,最后的那帮人走。早9晚5,把工做都作完就好了。
 
公司S,部门会议,8个码农,30个任务,部门的码农狂塞任务给我,我要作10多个。。。我vs都没,代码访问权限都没,业务逻辑都没掌握,就让我作事情,一些任务仍是有难度的,譬如很笼统的系统优化,我仍是坚持去作了。
 
公司S,数据安全很严格,除了通常的过滤和监控等,每一个员工都是从本机使用本身的帐号远程桌面到服务器上作平常工做,譬如收发邮件、读写文档、使用公司的系统等,这种作法还真是第一次见 。公司这样作,无非就是想你们遵照职业道德,但若是不尊重的状况下,能够知道而且行动。
 
公司C,我离职的时候被部门经理冤枉我破坏服务器,一个多月的工资没发我,后来他们发现是部门经理搞鬼。这个部门经理还把源代码放本身的手提天天带回家,要挟老板给他股份。几年后,公司还发现这个部门经理偷偷卖公司的系统源代码,把他给炒了,但公司还厚颜无耻地找我回去主持开发部。
 
公司T,我离职了,几年后,跟我一块儿呆过的技术负责人,联系我,说他如今手上有当年的系统的源代码,问我有没有兴趣一块儿搞搞卖钱。
 

健康

身体是革命的本钱。没有健康的身体,工做效率和质量要打折。
 
举个梨子,我这些年来身体每况愈下,前后有脱发、肩周炎、手腕痛、颈椎病、腰椎间盘突出、慢性胃炎、肾结石(三次入急诊)等等。
 
由于长期病痛,必然会致使工做时不能全神贯注,因此产出量天然要降,并且质量也可能存在问题。
 
我工做10多年,只请过几回病假,要么是由于要去急诊,要么是颈椎病发做严重没法思考。如今回头看,以为本身不须要这样拼命。
 
该请病假就请病假,对本身好点。
 
我如今是上班工做,出卖劳动力,而不是出卖性命。你垮了,甚至挂了,你全家人怎么办?老板给你的工资中是不包括这个的。
 
古代,那些卖唱的女子,碰到无耻之徒,会说:“请客官放尊重点,小女子只卖艺,不卖身!”。如今,我也应该说:“老板,请你尊重劳动合同,我天天只卖艺8小时,不卖肾。”。固然了,若是老板给的钱足够多(很是很是多),那,我就无论你今晚来的多少人,来的是否是人了。
 

加薪升职与待遇

加薪,还得看加多少,不少时候,仅仅是随着通货膨胀率加一点,一些时候还不怎么加。加得多的,通常是公司看重的并且是呆得久,升职尤甚。蹲坑久了,通常人加薪升职是不如那些跳槽的。固然,若是你运气好,公司上市,你又拿到可观的股票期权,那另当别论。
 
离职,和谈得来的其它部门的同事喝酒,他在这个公司呆了10年,看着它的变化。他说:“我知道这个公司不少问题,不少混账的人,我天天只能逐一应付,日子就这样过去了,尽管一些生活我会忍不住爆粗,老板待我不薄,因此我没有找别的公司。”,这个待我不薄,其实就是加薪升职,他从毕业实习生一直作到经理。
 
可是,职业生涯,是一个金字塔,底层的是绝大多数,往上层次/岗位的愈来愈少。因此,不可能你们都当上高级工程师、经理、主管甚至CTO。
 
在中国,不少公司为员工逃税,把工资造低,你们倒手的钱是多了,但长远看,未必,由于账目收入低了,公司给你的养老金天然会低,你本身给的养老金天然也低。我在中国工做7年,移民澳洲的时候退保,我的部分才拿回1万多元人民币。来澳洲刚刚满7年,养老金是中国的40倍,不逃税。
 

典故

公司A,IT经理,样子是典型的犹太人(就是那种大胡子),后来一问,人家说是英格兰+苏格兰裔的澳洲人。。。我代替的那个研发经理,是不丹人,祖母是广东人。。。部门的开发人员之一是日本人,英文名跟中文拼音同样。。。另外有一个开发人员是上海人。
 
公司K,我是刽子手。公司人员流动率高,新员工入职,老员工离职,都须要一系列的流程,我作的hr业务中有一个功能:自动化入职和离职流程。每当监控系统中显示今天要离职的人员,我就有深深的罪恶感。。。。监控系统只是显示的人员不断变化(入职离职),但背后是有血有肉的人啊。。
 
公司T,大学尚未毕业,就在这里混了,而后跟着公司去了深圳蛇口,公司就在女娲补天像旁边的大厦,当年那里是海边,如今那个地方都成市中心了吧?下班后,你们去楼下的大排档喝深圳土产的金威啤酒,晚上你们就在公司里的一个小房间里的挤着睡。
 
女码农,你们以为又少又神奇,是吧?
 
公司T,遇到了两个女码农,一个在几年后成为了另一个该公司的男同事的老婆。另一个,成了个人女友,当年是很开心的,有共同语言,爱的死去活来,(这里省略大量儿童不宜的内容)。后来,与她纠缠不休的前男朋友来搅和,她让我走,我心有不甘,但尊重她的决定,多年以后,她读了大学,用上了C,去了银行搞大型机,再几年后,找了个同乡,回去组建家庭,生了孩子,没再从事码农事业,(这里省略大量各类哀怨)。
 
公司H,另一个女码农,水平还行,但不大喜欢接受新技术,我推荐的新东西她都没有采用,不过,我仍是在这家公司呆了我职业生涯最长的时间,超过5年,直到我要离开中国移民澳洲。
 
公司T,上述的同事夫妇,3年前带上全家来澳洲,他读硕士,说是曲线移民。毕业后,由于,他的原话:“我只是不想别人给个人时间订价”,愤而回深圳发展。对了,当年咱们分别离职以后,我在广州买房,他在深圳买房,都才是50万左右的两房,如今他的房子快1000万了。
 
注意!前方高能!!!
 
职场,是泡妞的好地方。
 
公司A,前台真漂亮啊,目测很年轻,20岁左右的样子,貌似是混血的,哎呀。
 
公司H,我遇到了一个女神,真心漂亮,一见钟情那种,我就对她展开了追求。后来发现已婚了的部门经理对她也有兴趣,在各类电影中才会发生的经历以后,(这里省略大量儿童不宜的内容) ,她成了个人两个孩子的妈!
 

事业/经验

 
提及作技术的人事业演进路线,通常分三条。你们都是从初级码农开始,到中级码农,高级码农,而后开始分:一、tech lead / principle developer → architect → senior architect → chief architect → CTO;二、team lead → development manager → senior / technical manager → VP of engineering。若是还要细分architect的话,还能够这样:application/software architect  → solution architect → enterprise architect ,每一个都有junior/mid/senior/chief级别。
 
提及架构师,我以为没有多年实际动手经验,毕业就上来作架构师的,真正作成功的属于百里挑一,大部分都是扯蛋。
 
为何须要资深(老)码农?为何须要架构师?一个误区:把现有系统扔到AWS/azure/GCP这样的公有云是简单的lift and shift,但实际上远远不是这样,譬如一个公司的业务要打印快递公司的那些标签,就不能彻底在云里面跑了。
 
资深码农,通过多年的实战经历的锤炼,掌握的技术广度和深度都是新人没法比拟的。简单来讲,老码农踩过的坑,都是血泪换回来的,你愿意让缺少经验的人再去拿公司来玩笑吗?
 

找工做

 

猎头/中介

大部分猎头都很烂,大部分猎头都很烂,大部分猎头都很烂,#重要的事情要说三遍#。
 
猎头,就是把人力资源当牲口那样贩卖,他们所谓的Cherry picking,很烂,由于没有背景知识,他们乱来地强塞给你一个岗位,骚扰你,或者你投了不少份简历,就是不理睬你,尽管你很是符合甚至over qualified。更搞笑的是,我去找工做,他们倒过来给我推销码农。
 
猎头干的是买卖牲口的工做,澳洲的招聘工做,大部分是都是企业经过中介来发布的,但绝大部分中介很烂,根本不懂行业知识,不懂的分应聘者水平高低。我以前找工做,大部分中介都不理睬我,但知道我当上研发经理后,常常骚扰我,强力给我推荐他们手头上的应聘者。
 
不少时候,联系了猎头,而后,就没而后了。猎头不靠谱,猎头不靠谱,猎头不靠谱,重要的事情必须说三遍 。
 
猎头/中介真的不懂技术的,今天有个猎头,屡次来回邮件,每次都问一个技术/工具。譬如微软的team foundation server,让我深刻说明这个东西。要不要我说说怎么配置continuous integration啊,要不要我说说vs agent的参数啊 ?
 
试过面一个多月前面的一家公司,没潜力,推了。接下来这个故公司换了几家猎头来投放广告,我都发了简历(难以分辨是非同一家公司),猎头问技术问题的时候,总会问同一个问题,每当问这个问题,我就内心想:靠。。。又是这家公司。
 
曾经看见一份工做,投了简历,和猎头来几个来回邮件电话交流后,无疾而终(中介没回复)。大半年后同一个公司同一个职位(招聘广告不会列明公司),一样一个猎头,几个来回后没下文。以后,同一个猎头,主动找我,仍是同一个公司同一个职位。
 
刚来澳洲的时候,找啥工做,猎头都会问你有没有本地经验(local experience)。找来找去没找到合适的,只能从新从低作起。最搞笑的一个真实故事:一个英国人,作了20年,来澳洲找工做,猎头仍是说:你没有本地经验。
 
猎头,不少没知识不说,纯粹浪费时间,没有面试机会,还找你去面对面聊天 ,还为了避免对口的技术骚扰你,还让你去作初级码农。
 
澳洲市场很小,猎头很傻B。刚才一猎头找我,职位是我上一家公司的首席架构师,她根本没看个人简历,若是看了,就不会找我了。
 
一些猎头真是厚颜无耻啊,群发垃圾邮件就算了,我回复:“你这职位我不少年前已经不找了,更新一下你的系统吧”,今天直接电话骚扰我,问了一串问题,我强调我刚找到perm工做,不会换,她还死缠烂打问我工做内容什么的,我说我在开会,她说:那么我明天再电话你吧。我说:邮件联系,别电话我了。
 
某公司要招一个全栈码农,最后在领英上找到了一个技术极度全面的,上班后才发现,原来他是个猎头。#一个猎头写什么狗屁掌握技术 某公司要招一个全栈码农,最后在领英上找到了一个技术极度全面的,上班后才发现,原来他是个猎头。#一个猎头写什么狗屁掌握技术# 。
 
有一次,被猎头骚扰,LinkedIn上加了我,一看就知道是昨晚我忽略的一个工做机会,他打电话过来,工做须要常飞去越南搞外包团队,待遇还比我如今低,一听到我没兴趣,立刻挂电话。。。基本礼貌啊 。
 
曾有一次,猎头骚扰,在招聘网站找到个人简历,花了半个小时,强推一个用Java、RoR的公司的岗位,待遇比我如今还低,而后呢,我居然赞成去面试了。
 
找到工做以后,常常有猎头直接打电话到咱们公司的技术支持来找我,强推他们手上的码农,我上司接的电话,上司一脸诡异地看着我,觉得我在找工做(虽然我其实是。。。)我投简历,猎头不鸟我,如今倒过来给我找麻烦。
 
一次,公司的技术支持电话响起来了,女QA接电话,而后转过头来对着我诡异地笑了,说找个人,我纳闷谁会用这个号码找我,问是谁,女QA说是猎头,当时就惊出一身冷汗 。
 
还有一次,猎头来电,说:“喂,咱们有一个很适合你的岗位!”,我说:“哦?说来听听。”,猎头:“你擅长.NET,对吧?”,我说:“嗯。”,她说:”那JAVA呢?“,我内心一咯噔。。。mmmmm,她继续:“还有PHP呢?”,我立刻说:“负分滚粗!”
 
有一个猎头来电:"如今有一家大数据处理公司,须要SQL Server专家,你来不?",我:“好啊,我立刻辞职。”,上班第一天,SQL Server正在Linux上欢快地跑着。
 
曾经有一次,猎头来电,上司在和我讨论容灾设计,我迅速拿起电话说我要接这个电话,以防Google又自动显示未知号码是哪一个招聘公司。这已经不是第一次了,上司那么聪明,确定知道我。
 
曾经有两个美国猎头找我去美国工做,用的是澳洲公民特有的E3签证,我说我但愿是H1B签证,这样我能够留在美国,而后,就没而后了。
 
一猎头让我作一个ASP.NET的在线测试,IKM的,50来个问题,内容真是服,一大堆过期的ASP.NET Web Form技术细节,连web.config配置里某属性的名字都要搞几个typo来考,还包括SharePoint开发的,MVC的只有寥寥几个routing问题,越作越啼笑皆非,完成那一刻仰天长叹:世界那么大,我仍是。。。 作完后不爽,写了邮件给猎头,痛斥这个测试问题多,和如今的技术严重脱节,这些老技术没什么人用的了,还说测试太长,没多少人会愿意作完。。。。。发送以后,意识到这猎头不会再联系我了。。。
 
曾经有猎头打电话来,问我昨天面试怎么样了,知道我对那份工做不大感兴趣,就直接问我全部记得的面试题目,这样她就能够给下一个应聘者提升成功率。 猎头推荐的3个应聘者,两个挂了,我说对这职位不大满意,她说跟招聘公司联络一下看看结果先,而后呢,没跟我打招呼,刚才静悄悄地再发了一个新的招聘广告。
 
悉尼有大量猎头中介,大部分丢很烂,作垃圾的一间叫progressive,垃圾中的战斗机,各个员工轮流经过系统发送同样的邮件给你推送彻底不合适的岗位,刚开始我都老实回复邮件说岗位不对口没兴趣,他们都不理睬照样发。还打电话骚扰你,一些是看中我作经理因此推荐他们手上的人,一些是推不合适岗位给我 。
 
最近几年,和猎头的交互,发生了好笑的变化。之前他们找我,基本上是推销比我如今岗位职称低、薪酬少的工做,如今呢,推销他们手头上的那些找工做的人给我,由于他们发现我是研发经理,除了电话骚扰,还在领英上私信骚扰。#我只想安静地找个工做#。
 
鸡蛋不能放到同一个篮子里。同理,公司招聘,经过猎头发广告,不少会找多个猎头,渔翁广撒网。不过招聘广告绝大部分不会透露公司名字,应聘者难以分别,因此会常常形成经过不一样猎头投同一个岗位的状况,这过程常会出现不愉快的经历 。
 
曾经遇到过一个混血猎头,母亲台湾人,真心漂亮,模特级别的,美!后来去了澳洲最大的银行作人力资源,最近怀孕休产假去了。。。
 
总结一下这些年来面试心得:中介(猎头)大多不(就)靠(是)谱(猪),买卖双方多会避(造)重(假)就(注)轻(水),正常工做时间基(加)本(班)是(没)不(工)多(资),队友水平参(大)差(多)不(很)齐(烂),开发很(毫)有(无)规(章)范(法),产品质量有(别)保(逗)障(了)。。。
 

应聘

 
我是代码浪人,不在打靶路上,就在被打靶的面试中。我梦想有那么一天,终于再也不须要打靶了,为本身工做,当老板。
 
在澳洲找工做,要金睛火眼,打的是perm职位,实际上是合同工/临时工,打的是悉尼地区,其实多是墨尔本、黄金海岸、新西兰、新加坡、英国,还看见一个奇葩的:曼谷。这还不算,最好玩的是看见一个是 不丹 。
 
公司B,面试中,和公司领导之一聊了一个小时。原来年初才加入的那个穆斯林技术负责人要离职了,其他的开发人员也打算干掉或者已经离职,如今有个5人的海外硬度团队,产品严重拖延交付,公司容许把现有的系统推倒重来,我上任后先是重建团队,再考虑重写仍是继续改现有的半成品。
 
应聘过程当中,免不了要作各类测试。你们还记得那个反向二叉树的段子吧?写算法和实际问题解决能力,这个仍是因人而异的。单纯强调算法不靠谱,毕竟,实际开发,不少状况下是须要纠结具体算法的,有须要的时候就Google。我以为更应该强调实际解决问题的能力。
 
曾经遇到过一面试官问我Sharding是啥。我没听过Sharding这个词,因此说不知道,后来才知道就是数据库的分库/partitioning。
 
一次,打靶,真的被爆了。那个在微软干过的,两鬓有白发了,架构师,问了我一大堆的设计/架构问题,简单的,复杂的,最后让我在白板立刻设计同时支持几百万人在线的系统。结束以前问他在微软作得怎么样,visual studio还有你的代码吗?
 
每次打完靶,以为都被掏空了,又要从新填充一下全新的计划,这种迭代,不愿定是螺旋式上升的,仍是原地踏步 。
 
不过,我习惯了每次作完面试题目,回家就复盘,把全部问题都写下来,从新作一次,总结。
 
好几回面试过程当中,遇到到了不懂的技术问题,别面试官质疑个人能力,当时是很无地自容的,但最关键的是,我知耻然后勇,把不懂的都学会了。
 

简历

被国内码农尊称为高司令的Java之父James Gosling,这些年来简历只有一行字:Father of Java。这种级别的简历,也只有10来个重量级语言的创造者才有这底气,固然,那些操做系统创造者们则是天外飞仙了。
 
悲哀的是,不少人简历做假。这些人造假,一些缘由是由于自身水平/经验不行,一些是由于猎头只给一份简历3分钟时间,用的关键字自动扫描,你们没法突围而出。
 
可是,我强烈建议你们简历仍是要短小精悍,最有价值的东西放首页突出位置,不要造假,不要动辄精通,用实际例子和数字来讲话。
 
说到底,简历只是敲门砖,只能让你获取面试机会,面试中的表现,仍是看过人的水平。
 

面试别人

公司C,当年毕业没多久,年少气盛,技术负责人不在,我代替他去面试一个新的开发人员,对方经验比我丰富,我问问题也不含糊,追根究底,他耐不住了,就直接说:“算了,就这样吧,我走了”。。。。
 
一公司招聘开发人员,在10多个应聘者中,我坚持并最终选华人。其实最后一轮有2个,第二个是印度人。这个面试的印度的开发人员跟我以前的见识的相似(只是说见识过,没说所有,以事论事)。
 
面试不是一个对等的过程。面试官能够出任意问题,事无巨细都可,面试者能作的就是基本功要扎实,而后针对岗位准备一下相关技术问题。我看过几篇老外的文章,痛斥面试过程当中种种不是,说其是绝壁无聊,蛋疼没用,惨无人道的。
 
面试就是相亲的过程,双方都在扯谈,都会注水。应聘者会吹一些没掌握好甚至彻底不懂的东西。面试官会吹公司状况怎么这么好。
 

辞职

缘由/理由

辞职的缘由能够不少,最主要的缘由,其实就是:“老子作得不爽”。这个不爽,能够不少有不少缘由:
  • 待遇不满意
  • 职位升迁不够快
  • 猪队友
  • 办公室政治斗争
 
可是,不少时候,为了照顾老板/公司的面子,仍是会给出一个好让双方都下台的体面的藉口,譬如:“邻居的大姨妈的小侄子的小学同窗的家里的小狗生孩子了,我也想去生孩子了”。你想一想,辞职都这样给东家面子,这样的员工去哪里找啊?
 
关于待遇,可能会出现老板对不鸟如今的老员工( 无论是尸位素餐的老油条仍是功勋元老),以为重金能够聘到更好的员工(无论是滥竽充数的,仍是真牛逼的人),因此,可能出现新人进来待遇比老员工待遇还高的倒挂现象,对努力干活的老员工不公平。
 
通常状况下要给一个月的辞职通知,公司B,我说服了上司,只须要给2周的通知。还有一周就能够离开如今公司了。刚才家里领导还训话,说如今的公司很差吗?为何要离职,真折腾啊!我一直没告诉他如今公司多操蛋。
 
公司B,辞职了,还有大半个月才走,公司愈加明白个人重要性了,无论是技术攻关仍是系统重大问题,团队没人能接班,解决不了,最终仍是要我来解决。今天越南码农作了个功能,在chrome浏览器死活跑不过,他又着急着走,明天一大早驱车1000千米去墨尔本,因此没耐性解决,我分析排查是CORS问题,解决了,老板摊手 。
 

信任

信任是一种很奢侈的商品。
 
公司S,我来公司呆了一个月,在几个关键老臣子的劝说以后,老板才给做为技术负责人的我访问源代码的权限[摊手]我来了5个多月,老板还咨询那几个老臣子我是否值得信任。。。用人不疑,疑人不用。公司一个来了8年的老臣子,今天跟我讨论完产品后,跟我谈心,说老板的想法和作法都是,尽可能让不一样的人作不一样的事情,不让一我的掌握全部东西,以确保知识产权。同时他也说,澳洲这地方,不大可能让华人作很高的位置,譬如他就作不了总经理,我也不大可能能坐CTO的位置 。
 
仍是公司S,入职,据说我要访问源代码,老板立刻提出要独立服务器虚拟桌面进去,但那个服务器来以前,就给个人手提安装上了Kensington锁,老板反复强调不是信任问题。上个星期专门请了一世界级大公司的CIO来咨询代码安全管理等相关问题,固然,老司机我天然能对答如流, 那个CIO对我也是另眼相看 。老板给权限,IT经理过来打开计算机管理器,我说把我加入管理员组就好,他说:“你大爷的,歇歇吧!我作IT固然懂这个!”,然而那固然不能直接加,他说要退出从新用他帐号登陆,我说能够直接打开cmd admin而后compmgmt.msc,他说这样输入密码不安全(不信任我),我离开一会回来一看,他用admin登陆改了 。
 
 

后话

 
以上各类吐槽,来源于我这些年来的经历,至关部分在个人微博发表过,如今汇总成文,加上大量私货,但愿你们能从中受益。
 

谢谢。

相关文章
相关标签/搜索