每周新技术/文章/心得 – 1

爆栈网会员服务包括每周新技术/文章/心得的分享。

本周,我们可以学一下:

 

是否想技术水平快速提升?是否希望快速成为公司的技术骨干?

核心价值
  • 把我这10多年来所学到的知识、总结的经验、吸取的教训分享出来
  • 针对不同的学生量身定制规划学习成长路线、1对1个人指导、代码审阅等
  • 解答各种技术问题
  • 为公司提供技术解决方案

请查看本站右边的信息联系我。

爆栈之旅-第五讲-软件开发-编码

目录

这是爆栈之旅的1对1私人定制授课的第五讲。

 

 

 

 

是否想技术水平快速提升?是否希望快速成为公司的技术骨干?

核心价值
  • 把我这10多年来所学到的知识、总结的经验、吸取的教训分享出来
  • 针对不同的学生量身定制规划学习成长路线、1对1个人指导、代码审阅等
  • 解答各种技术问题
  • 为公司提供技术解决方案

请查看本站右边的信息联系我。

版权所有

所有文章内容版权所有,任何形式的转发/使用都必须先征得本站书面同意。本站保留一切追究的权利。

软件设计系列-2-软件开发是什么?

本文是爆栈之旅的1vs1私人定制课程的第二讲:《软件开发基础》的摘录,如果你对这个一对一私人定制课程有兴趣,可以看右边信息联系我。

100%有Bug

任何软件都有bug,毫无例外。

在说软件开发是什么之前,或许我们应该说说软件开发不是什么。软件开发做不到没有bug,任何软件都有bug,任何软件都有崩溃的时候。

软件开发不是什么?

所以,软件开发:

  • 不是完美主义!这世界没有完美!
  • 不是堆砌积木!堆砌功能是没有用的!
  • 不是任何人都能做的!没有激情是做不好的!
  • 不是复制粘贴!Google答案是搬运工!
  • 不是修电脑的!

软件开发究竟是什么?

  • 这是一个把用户需要转化为生产力的过程
    • 需求不明确的情况下不要写代码
  • 这是一个通过团队协作交付产品的过程
    • 产品专家、架构师、设计师、开发人员、测试等多方合力
  • 这是一个为客户解决实际问题的过程
    • 质量,质量,质量,重要的事情要说三遍
  • 这是一个体现参与者创造力的过程
    • 每个功能经过雕琢有机地结合起来

99%失控

99%的软件开发都经历过需求失控、开发时间超过预期、交付的产品不满足用户需要而做修改等问题。

大部分的客户需求或者要求交付的时间都是不合理。我们需要引导客户的期望,譬如不是最迫切的功能从第一版推迟到第二版。

因为需求的不清晰,导致分析偏差甚至错误。怎么解决这个问题?多跟客户面对面,手把手地分析和做mockup/wireframe和POC。

爆栈之旅

是否想技术水平快速提升?是否希望快速成为公司的技术骨干?

核心价值
  • 把我这10多年来所学到的知识、总结的经验、吸取的教训分享出来
  • 针对不同的学生量身定制规划学习成长路线、1对1个人指导、代码审阅等
  • 解答各种技术问题
  • 为公司提供技术解决方案

请查看本站右边的信息联系我。

版权所有

所有文章内容版权所有,任何形式的转发/使用都必须先征得本站书面同意。本站保留一切追究的权利。

软件设计系列-1-设计思想

DRY,就是don’t repeat yourself不要重复。相反的做法是WET:write everything twice,类似re-invent the wheel,重复发明轮子。

类似的思想如KISS(keep it simple、保持简单)、YANGNI(you aren’t gonna need it,你并不需要那些东西)。

大道至简,我们不应该over-engineering过度设计,但是适当的前瞻性设计是需要的。譬如扩展性等,否则产品一上线就遇到各种限制。

 

Related image

 

名言

“Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.” 在编程的时候,我们一定要想象一下,以后维护我们自己的代码的那个人会成为一个暴力的精神病人,并且,他还知道我们住在哪里。
— John Woods
Think twice, code once。磨刀不误砍柴工,多思考,再写代码。
Good crafsmanship depends on use of the right tools.工欲善其事,必先利其器

技术债务

英文是Technical Debt。出来混的,迟早要还。欠下的债,也是要还的。做技术也一样,而且这个债一样会有利息,而且是高利贷那种,你的成本爆涨。最糟糕的是,债台高筑,你根本无法还:系统设计一团糟,性能低下,逻辑混乱,代码质量无法维护。

 

爆栈之旅

是否想技术水平快速提升?是否希望快速成为公司的技术骨干?

核心价值
  • 把我这10多年来所学到的知识、总结的经验、吸取的教训分享出来
  • 针对不同的学生量身定制规划学习成长路线、1对1个人指导、代码审阅等
  • 解答各种技术问题
  • 为公司提供技术解决方案

请查看本站右边的信息联系我。

版权所有

所有文章内容版权所有,任何形式的转发/使用都必须先征得本站书面同意。本站保留一切追究的权利。

爆栈之旅-第四讲-软件开发-设计

目录

这是爆栈之旅的1对1私人定制授课的第四讲。

是否想技术水平快速提升?是否希望快速成为公司的技术骨干?

核心价值
  • 把我这10多年来所学到的知识、总结的经验、吸取的教训分享出来
  • 针对不同的学生量身定制规划学习成长路线、1对1个人指导、代码审阅等
  • 解答各种技术问题
  • 为公司提供技术解决方案

请查看本站右边的信息联系我。

版权所有

所有文章内容版权所有,任何形式的转发/使用都必须先征得本站书面同意。本站保留一切追究的权利。

爆栈之旅-第三讲-软件开发-需求分析与规划

目录

这是爆栈之旅的1对1私人定制授课的第三讲。

是否想技术水平快速提升?是否希望快速成为公司的技术骨干?

核心价值
  • 把我这10多年来所学到的知识、总结的经验、吸取的教训分享出来
  • 针对不同的学生量身定制规划学习成长路线、1对1个人指导、代码审阅等
  • 解答各种技术问题
  • 为公司提供技术解决方案

请查看本站右边的信息联系我。

版权所有

所有文章内容版权所有,任何形式的转发/使用都必须先征得本站书面同意。本站保留一切追究的权利。

爆栈之旅-第二讲-软件开发-基础

目录

这是爆栈之旅的1对1私人定制授课的第二讲。

是否想技术水平快速提升?是否希望快速成为公司的技术骨干?

核心价值
  • 把我这10多年来所学到的知识、总结的经验、吸取的教训分享出来
  • 针对不同的学生量身定制规划学习成长路线、1对1个人指导、代码审阅等
  • 解答各种技术问题
  • 为公司提供技术解决方案

请查看本站右边的信息联系我。

版权所有

所有文章内容版权所有,任何形式的转发/使用都必须先征得本站书面同意。本站保留一切追究的权利。

爆栈之旅-第一讲-爆栈服务

目录

这是爆栈之旅的1对1私人定制授课的第一讲。

是否想技术水平快速提升?是否希望快速成为公司的技术骨干?

核心价值
  • 把我这10多年来所学到的知识、总结的经验、吸取的教训分享出来
  • 针对不同的学生量身定制规划学习成长路线、1对1个人指导、代码审阅等
  • 解答各种技术问题
  • 为公司提供技术解决方案

请查看本站右边的信息联系我。

版权所有

所有文章内容版权所有,任何形式的转发/使用都必须先征得本站书面同意。本站保留一切追究的权利。

技术人生的职场众生相 – 十多年的经验与心得 – 之四 – 求职与辞职

系列目录

求职

猎头/中介

大部分猎头都很烂,大部分猎头都很烂,大部分猎头都很烂,#重要的事情要说三遍#。

猎头,就是把人力资源当牲口那样贩卖,他们所谓的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登录改了 。

后话

以上各种吐槽,来源于我这些年来的经历,相当部分在我的微博发表过,现在汇总成文,加上大量私货,希望大家能从中受益。

谢谢。

版权所有

所有文章内容版权所有,任何形式的转发/使用都必须先征得本站书面同意。本站保留一切追究的权利。

技术人生的职场众生相 – 十多年的经验与心得 – 之三 – 职业与事业

系列目录

职业与事业

现实

铁打的营盘流水的兵,大家都是可以被抛弃的卒子,不想成为边角料,就要不断提升自我。

职场如古代的欢场,上班族都是出来卖的小姐,区别是一些天生丽质技术过人的成了头牌、花魁,日子自然滋润,如果碰上要么色中恶鬼的土豪劣绅或一见钟情的傻情郎给之赎身(大量股票&公司上市),那就可以安稳过下半辈子。否则等到徐娘半老只能被抛弃。少数早早财务自由,转个身,还是做了老鸨(老板)

职场如古代的后宫,上班族都是佳丽,区别是一些天生丽质技术过人的成了各级妃嫔,日子自然滋润,如果碰上皇上宠幸,成为高人几等的贵妃(大量股票&公司上市),如果怀上龙种诞下皇子,那就可以成为宠妃甚至皇后(技术带头人)。否则等到徐娘半老只能被抛弃。少数早早财务自由,拿个封地自立为王(老板)。

追求

如果人没有理想,那和咸鱼有什么区别?

我不是普通码农,我是传说中的那种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,我遇到了一个女神,真心漂亮,一见倾心那种,我就对她展开了追求。后来发现已婚了的部门经理对她也有兴趣,在各种电影中才会发生的经历之后,(这里省略大量儿童不宜的内容) ,她成了我的两个孩子的妈!

事业/经验

说起做技术的人事业演进路线,一般分三条。大家都是从初级码农开始,到中级码农,高级码农,然后开始分:1、tech lead / principle developer → architect → senior architect → chief architect → CTO;2、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,但实际上远远不是这样,譬如一个公司的业务要打印快递公司的那些标签,就不能完全在云里面跑了。

资深码农,经过多年的实战经历的锤炼,掌握的技术广度和深度都是新人无法比拟的。简单来说,老码农踩过的坑,都是血泪换回来的,你愿意让缺乏经验的人再去拿公司来玩笑吗?

版权所有

所有文章内容版权所有,任何形式的转发/使用都必须先征得本站书面同意。本站保留一切追究的权利。