最代码5月第3周回顾(5.12-5.18@2014)
url: http://user.qzone.qq.com/1758317551/blog/1400513736
最代码每周精选
|
网站总结 内容管理员机制优化,由伊成为组长,成员有:kaka,小怨妇,天丫头,带领团队整理分享代码!有愿意整理代码获取牛币的请联系伊成。如果不想接收周总结邮件的请在设置里面修改。 资讯精选 导读: 1。 你的领导总是传递给你负面的消息 这是一篇非技术贴,但对于你的职业发展来说,跟对正确的人这件事和自身技术能力的提升同样重要。 程序员的出路之一,拥有一技之长、打造自己的精品、更广阔的市场 就 现在经济大环境而言,很不乐观,程序员的日子也很不好过,无论是还在找工作的、还是已经入职多年、哪怕做到项目经理、技术经理的,压力都异常巨大,似乎处 处充满危机。但是,仔细分析一下,出路还是有的,甚至解决温饱、过上有房有车没贷款的生活也是很可能的。首先,在如今这个浮躁的社会,大多数人的心态也是 浮躁的,只要你能潜下心来,深入研究某个技术,有了一技之长,温饱问题肯定就可以先解决了。 1.一技之长 新技术层出不穷,而内核的精髓的东西却变化不大,就像.NET,从VS2003到VS2012,已经有10个年头,VS的版本不断更新,而.NET内核的最新版本也才4.0,所以,作为程序员,我们要多掌握内核的东西,精髓的东西。 我 们的学习积累毛病在于:贪多、贪全、而不够深入。对于很多技术,我们都很有兴趣,对于刚兴起的技术,也紧紧跟随。但是,几乎都是蜻蜓点水、一知半解。回头 想想,我们似乎什么都会一点,什么类型的项目都可以做,B/S的、C/S的、数据库的、分布式的,等等,但是,却不敢说,在某某方面,我的水平已经超越了 圈中同类型的80%的人。只是我能做的,大家都会做,而且,我也没有把握比别人做得更好。 必 须要让自己有价值,而自己的价值在于不可替代性或是难以替代性。如果,随便找个程序员就能把你replace掉,你的价值就很低廉了。如果在你负责的某个 方面,只有20%的人超越你,那你的价值、你的重要性就凸显出来了,你与雇主的关系就从被动转向了主动,你就有了谈判的筹码。 在 专业化高度分工的今天,一技之长并不是说需要你掌握某个很大的方面,而只需要你能掌握其中的某一个小的领域,并不断地深入下去。就这个小的领域来说,你花 个3、5年的时间挤进前20%是非常可能的。比如,有人专门研究SqlServer数据库优化、有人专攻TCP通信、有人深入研究IIS、有人深入钻研 WCF,等等。 2.打造自己的精品 当 你在某个小领域钻研了3、5年后,你一定会有很多心得,积累了很多经验,其中有些经验是异常宝贵的,为什么了?因为在钻研这个领域一段时间后,会陆续碰到 很多问题,而那些80%的人,在碰到某个问题时就停止向前了,在这个小领域的水平就到此为止了,而你却不断地解决这些问题,不断地超越那80%的人。 而 且,很可能的一个情况是,作为几年钻研的一个副产品,你积累了一套类库或框架,而基于该类库或框架来开发该领域的项目,不仅开发速度更快,效率更高,而且 项目的质量更有保证。然后,你可以把积累的这套类库/框架打造成一个精品,不断的打磨,直到某一天,可以让更多的人来用它。 当你在某一领域有了丰富的经验,或者有了自己的精品类库/框架之后,你便可以面向更广阔的市场。 3.更广阔的市场 在公司做个小白领,你的生死荣禄几乎就完全掌握在你的上司手中,你不得不关注他,被他的情绪所左右,很可能因为他的一句批评,你就整夜难眠。你觉得自己做得很好,可是他不认可。但是现在,你不需要再过分的关注他,你可以将眼光转向更广阔的市场。 互 联网时代的一个好处就是,任何人都可以以非常低廉的成本来向大众市场展示自己或自己的产品,评判你价值的不再(仅仅)是你上司,而是整个市场,相比于你的 上司,市场的评判会更客观、更公正。你可以把自己的经验能力说明放到自己的博客上、写专业的技术文章来分享知识、顺便推广自己,或者把积累的框架放到网上 去卖,或者去项目交易平台接那些与你精通的领域对口的项目,由于在这个领域你超越了80%的人,所以,成功接到项目的可能性是非常之大的。有了这些基础, 以后就算是靠技术创业也是有可能的。 如果做到了这三点,我想,你的“有房有车没贷款的生活”差不多就可以实现了。 就我个人经历而言,我花了10年的时间积累了ESFramework通信框架和OMCS语音视频框架,单靠它们的收入,满足家庭的生活开销已经足够了。我作为一个普通的程序员,既然我可以做到,我相信后来人也可以做到,甚至做得比我更好。祝福大家。 老实说,我在20岁时可没打算这样。我编程就是为了挣钱。只要编程还能挣钱,我就愿意一直这样挣下去,差不多就是这样。 到了50岁时你觉得你还能做什么?你能找出一个远离编程但符合下列要求的职业吗?:
编程挣钱很容易。编程这个行业门槛低,但却极难退出。什么行业能替代? 我有3个律师同事——两个后来成为了程序员,一个成为了项目经理。我还没有遇到过有程序员变成律师的。我知道一个工程师——不是程序员——他后来变成了专利律师(据说的原因:“一定程度上,你会非常讨厌那些跟你的孩子年岁相仿的经理”)。你想在你50岁时做一名专利律师吗? 我认识一个经理,他说他更想当一名学校教师,认为这样的工作对社会更有价值。但他干了8个月后就辞职了,在主流报纸采访他的告别会上他说:“有时候我甚至想带一挺机关枪进教室,端起来扫射”。他现在给韩国三星工作,他感觉他的在智能手机摄影技术上的贡献已经充分的长久的使社会受益了。 我的一位同事近来一直在学习大量的知识。他有心理学和一种叫做虚拟剧院(Visual Theater)的学位。他业余时间一直在编程,靠编程来补济他的学费。他的编程工作也成了他的视觉效果工作的一部分(跟电脑声效相关)。他的编程最终也可能会资助他的艺术工作。我不能想象他某一天会退出编程。 我曾看到过很多人的“退出”,有的是学习物理的,有的是学习哲学的,他们最终转向了编程工作。金钱是有吸引力的。当然,除了钱,编程还能让你获得很多其它的满足——这就是为什么我要无偿的开办这个博客网站——但是,大部分的这些满足都是有源动力的——直接或非直接的,大部分的还是和金钱相关的。“开发有用的东西”和“挣钱”是密切相关的。 当然,你也许会有一个不用发愁的财务来源。但如果没有,编程就成了你的B计划。对于物质财富,有一点我要提醒——它是很容易被拿走的。我经过了苏联时代,所以我说的会显得有些夸张——但实际上,财产很容易被没收,钞票一夜间变成废纸,并非在苏联是这样,美国在相似的时期也有过没收公民黄金的事情。而职业能力是不能没收的。程序员在这个时候仍然能通过自己的努力来保持良好的生计。 有人说职业编程压力太大。同样,要看跟什么相比。跟医生?律师?接听暴跳如雷的客户的电话时还要留神你的回复会被录音用作以后的检视? 什么压力?真正能编程的程序员——比如,能正确的打印出二叉树结构——是非常稀缺的。这种稀缺情况下一个真正的程序员不会任人随意摆布的。你也许能胁迫他们没有报酬的加班,但很快他们就会认识到:这是买方市场,你在虚张声势。你找不到可以替代他们的人。 在这种供不应求的局面下,每个人都能在编程职业里找到自己的空间。相较于金融/投资银行类的工作来说,编程行业竞争并不是那么激烈。 程序员通常还会有“隔离带”来防止客户和高层管理人员的侵扰——这些人永远都是对的,这使得跟这些人的交流索然无味。 工期压力?不错,这是存在的,但每个人身上都会发生。我承认,我们经常会逾期完不成任务,但这不是很有压力的事,除非自己给自己制造压力。如果你被分配了一个不可能完成的任务计划,而你也尽力了,但还是没按时完成,你可以深深自责,或者保持平和心态。事实上,你的肉体绝不会因为贻误工期而受到危险,所以,你的反应完全取决于你自己。 有人说,程序员无法完全的把握事情的进展,无法完全的了解所有的API,技术层面等东西。如果你不能理解自己身处的环境,这就是压力,这可不好玩。说的很好;但是,又有谁能比一个程序员对此了解到更多呢?钻研病人内脏的大夫?翻阅法律文案的律师?监管一二十个程序员的老板?面对所有这些人为造成的复杂情况,我们仍然是境遇最好的。 事实上,超过50岁的程序员并不是很多。这意味着编程不是一个长久的活儿吗?更可能的原因是,这只是发展的结果。30年前——相对于10年前——20多岁的程序员是很少的。因此,如今50多岁的程序员要要比30多岁的程序员少的多。一定程度上编程世界的发展在慢下来,往后20年,事情又会变的不同。 所以,我没打算退出编程,并不是单因为它本身能带来很多乐趣,也是因为它比起其它行业来要理想的多。也许这不是最“热情的”词藻——即使热情耗尽,贪婪永不停息。如果你打算退出编程行业,我怀疑你能找到什么更好的职业。而且,当你数年后再次回到编程领域时,我一点儿都不会惊讶。 工作是在大公司更好,还是小公司更好?这个问题让大家争论不休,也没有最终的答案。凑个热闹,我结合自己的经历,谈谈我的看法。 我最开 始工作就是在小公司。当时刚刚毕业,在对工作完全没有概念的情况下,进入了一家小的创业公司。虽然今天想起来,作为创业公司,它有这样那 样的不足,但我依然非常珍惜那段经历。主要原因是,虽然在创业公司,我仍然受到了相对良好的职业训练。当时我的两位领导都是毕业于清华,而且在搜狐工作过 的,有丰富经验的 IT 人员。所以我最初工作的两个月,几乎是每天在批评中度过的。虽然我在学校也认真写过一些程序,但还是每天被批得一无是处,因为学生写的程序,距离生产系统 要求的工业级别,实在是差得太远了。所幸自己当时脸皮厚,被批了就赶紧改,根本不去想太多,这样过了两个月,终于没那么少被批评了。当然,另一方面是因为 我受到的批评都是“对事不对人”的,所以一直没有“人格被否定”的糟糕感觉。 第一份 工作我做了一年多,最大的收获是在领导持续的严厉批评下,深刻认识到了“现实生产环境需要的程序是什么样的”,其次就是模糊地领悟到,持 续的“对事不对人”的批评,可以营造出追求专业进步的价值观。现在回头去看,很多人即便进到大公司,受到各种条框的限制,也不见得理解这些约束的意义;加 之,如果领导没有严格的要求,没有树立“工作至上”的价值观,身为员工很可能不会有太多收获,反而会受到负面的影响。 之后我 去了一家大公司,当时很有可能在美国上市,但最终没有成功,前几年终于上市成功。进入大公司的第一感觉是资源丰富了,典型的例子是,服务 器紧缺的情况再也不会出现了。另一个感觉是视野开阔了,因为高手很多。我深刻记得有一次快下班时,某个同事路过我的工位时看了一眼,说“你的 vim 怎么没有颜色呢?”,然后他拿过键盘迅速敲了一串命令,之后我的 vim 就有了语法高亮标识。后来我把他的操作记录调出来查看,学会了很多新知识。再问问同事,原来帮我设置语法高亮的是集团的首席科学家。原来技术做到很厉害的 人,还可以这么平易近人,这也突破了我的想象。中国古话说“言传身教”,我总觉得“身教”是非常重要的,以沉默但巨大的力量改变人的认识。 之前在 小公司时,因为业务领先,行政、人事、财务相对都不那么规范,老板只挑“靠得住”的人,程序员去办事时就不那么顺利,所以我通常都是“横 眉冷对”的态度。然而到了大公司,行政、人事、财务等等都要规范很多,真正让人知道什么是“职业化”。我也学会了尊重和重视行政、人事、财务等等支持部门 的工作,并在自己后来的职业生涯中受益很多。如果不是去到大公司,我想自己是不会领悟到这一点的。 后来我 还有一段在“大公司”工作的经历,也就是 2010 年加入盛大创新院——如果也可以叫“大公司”的话。如今创新院已经解散,旧日往事无须再细细道来,我只说一点,就是深刻感受到了文化的重要性。在我进入创 新院的第一年,那种环境和文化是我非常欣赏,也是后来大家非常怀念的。但是在急速扩张,团队成员短时间内翻倍甚至翻两倍之后,对原来的文化造成了极大的甚 至可以说是毁灭性的冲击。我以前不太理解大公司里为什么都要有个部门来管企业文化,有了这段经历才真正明白。企业文化的背后,是行为规范,是做事准则,核 心的是价值观——大家认定什么、推崇什么,否定什么、排斥什么。公司做到一定规模,就不能仅仅依靠大家的默契来维系,而应当不断塑造企业文化,强化这种价 值观,否则很容易分崩离析。就我看来,许多小公司能迅速成长到一定规模,然后就四分五裂,没有统一的价值观是重要原因之一。 离开盛 大创新院之后,我选择了进入广州的一家创业公司领导技术团队,也可以算一段“小公司”的工作经历。其实在做这个决定时,我心里比较忐忑, 自己之前无论大公司小公司,都是在技术特别好的团队工作,这次的工作环境,无论团队还是系统,都超出自己的底线,我不知道自己能不能应付得了。尤其是发现 广州高校中优秀的毕业生基本都被网易和腾讯收罗之后,就更是沮丧。恰好当时参与了《程序员的职业素养》的翻译,其中有一章提到“团队应该有凝聚力”,这给 了我很大的启发。后来的事实也证明,除非钻研前沿的科学项目,否则,由素质不错、工作靠谱的程序员构成的有凝聚力的团队,一样可以输出很高的生产力,做出 不错的产品。尤其让我欣慰的是,这段工作经历也成了很多同事怀念的对象——虽然身为团队的领导,需要为此付出极大的努力。 供职过大公司和小公司之后,从我自己的经验来看,纠结于“大公司还是小公司”的人,更多还是来自有一定的大公司工作经验,面临去小公司挑战的情景,我见到很多人无法迅速落地反而很快夭折。如果你正面对这样的情境,我有几点建议。 第一, 在大公司往往要解决具体的问题,在小公司往往要解决抽象的问题。在大公司,你需要关心的往往是相对具体形象的指标,比如“搜索及时性提高 20%”,而小公司要解决的往往是“在各方面问题一大堆、资源也有限的前提下,分多少资源到各个方面,以及如何安排先后顺序,才能保证业务的增长”。解决 前一种问题需要专业技能,解决后一种问题则需要慎密的思维,而且常常需要创造性地发明一些解决方案。 第二, 初入小公司,一定要适应“乱”的环境,并且需要能推动“由乱到治”的过程。小公司往往是生存为第一要务,业务为先导的,流程和规范相对来 说落后,而且一家公司的流程规范总是要适应这家公司的具体情况。如果生搬硬套各种流程规范,很可能危及到生存。所以,需要能忍受“乱”的环境。另一方面, 如果公司业务成长到一定规模,仍然没有流程规范,必然无法持续发展,所以需要有“由乱到治”的过程。这也牵涉到上个问题:在什么时候开启“由乱到治”的过 程,分几个阶段开展,每个阶段进行到什么程度,同样是个复杂问题。 第三, 在小公司需要有界限感,但工作中不能严守本位。举个典型的例子,如果你是小公司的领导,用我的话说,比需要“既当爹又当妈”,一方面保证 业务目标的实现,另一方面还得管好团队,营造积极向上的氛围。抱着“这个问题应该人事出马”,“那个问题是行政的事情”的态度,最终很可能做不成事情。因 为问题是自然出现的,而不是按部门、按界限出现的,如果凡事都讲究界限,很多问题就无法及时解决。但如果没有界限感,大家的配合又会出现问题。我推荐的做 法是,在界限那边的力量足够专业和强大的时候,可以放心把事情交过去,否则,还是自己多走几步更加稳妥。 第四, 也是最重要的,在小公司工作,一定要对人有特别敏锐的感觉。我见过很多大公司的人,业务能力没有问题,职业素质也没有问题,但还是无法适 应小公司的工作环境,原因就在于对人不够敏锐。前面已经说过,小公司不太可能有专业的人事和行政来帮助你,所以很多事情只能自己上阵。而且,小公司成长过 程中,人和事往往是交织在一起的,即便你有足够的理由否定之前的某个员工,也无法准确衡量另行安排他会对公司产生怎样的影响。另一方面,小公司往往不会有 充足的人员编制,业务的增长又很迅速,所以需要准确判断人员的工作能力和成长潜力,预先做好安排。退一步说,即便公司有充足的人员编制,也要思考,进来的 人是否会冲击到原有的文化和价值观,要知道,在小公司通常不会有企业文化部门帮你打理这些事情的。 最近发起了最代码的推广活动,希望每个支持zuidaima的都可以帮忙推广下,活动地址:最代码推广活动,有你参与更牛币。 欢迎转载该文章并提供出处。
|