培训机构毕业的程序员被歧视的背后逻辑

最后更新于:2022-04-01 21:16:34

![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-11-27_56582a8196a10.jpg)  (注:本文曾发表于《程序员》2015.11.B期) 现在,像达内、华清远见、国嵌、北大青鸟、传播智客等等IT培训机构很多,为尚未毕业的大学生、毕业了一时找不到工作的大学生、工作后想转行的再就业者提供了一个掌握新技能的机会,通过三个月或半年或更久的培训,你就可以掌握某一种技能,比如Android开发、Java Web开发、iOS开发、嵌入式Linux开发,然后,没然后了吗…… Sorry,然后还是有的,只不过,“然后”并不是像培训机构的销售代表频频给你通电话时宣传的那样光明罢了。有的机构会推荐你就业直到你彻底失望他们推荐的单位,有的机构会放你出去闯荡江湖四处碰壁……形式不一,但,一段痛苦的旅程从此开始了,这倒是真的。 很多单位歧视培训机构毕业的学员,你所在的单位是这样吗?或者你从IT培训机构毕业后,找工作时被鄙视了吗? 为了弄明白为什么IT培训机构出来的程序员在找工作时经常遭遇不平等对待,我们需要弄明白“教育”和“培训”的差别。 ## 教育和培训 > 大致上讲,我们所说的“教育”,指的是掌握一般性的原理与技巧的过程;而我们所说的“培训”,不过是学会某种特定技能的过程。 上面是温伯格在《程序开发心理学》中说到的,符合大多数人对“教育”和“培训”的理解。 你可以通过培训机构学会理发、做饭、修汽车、写代码、做蛋糕,这没什么稀奇的,当我们接受培训时,就是为了某项技能而去的,不是吗?我去蓝翔,难道不是为了开挖掘机吗? 通常我们认为培训机构(学校)是学习某种不太复杂的谋生技能的摇篮。这种技能还有一个特点,就是相对稳定、变化不是特别频繁,能够在相当长一段时间内保持基本的稳定性。所以,一旦你获得了这项技能,就可以靠它吃饭吃上一阵子,一年半载,三年五年,十年八年,都有可能。 而教育,我们通常认为是一项基础性的工作,重知识,重原理,周期长,见效慢,与社会脱节,有时还能把人变傻(注意我不是讽刺现行教育制度,也不是诋毁我们伟大的大学教育)。虽然如此,很多IT公司的基础部门还是被受过正规大学教育的朋友们占据了重要岗位。因为大家普遍认为,虽然学校教育严重脱离社会现实,但名牌大学的学生的智力水平、学习能力,平均来看还是高于未能考上大学的中学生,更适合于从事某种对智力、学习能力有些特别要求的技术岗位。 没错,程序员正是这样的岗位。程序员的平均智力水平和学习能力高于大部分的其它行业从业者。 然而,教育和培训的差别,并不是关键。关键是,出于某种原因,面试官或公司主管对出身“培训机构”的人有偏见。为了说明这一点,我们先要看看程序员需要的特殊能力。 ## 程序员需要的特殊能力 成为一个合格的程序员,需要以下“特殊”能力: * 自知之明 * 自我学习 * 努力 看起来没什么出奇之处,也许你会觉得一个程序员最重要的能力不是上面三项,没关系,知否知否,应是绿肥红瘦,随便怎么看,横看成岭侧成峰,一千个观众就有一千个哈姆雷特,嗯,开启口水模式……这里省略500字…… 大家公认程序员从事的是烧脑性工作,行业发展日新月异,各种新语言新技术新框架新概念层出不穷,需要程序员时刻保持归零的学习心态,持续不断地保持学习维持竞争能力和价值。所以,我也是从这个角度出发,选择了前面提到的三点,实际上这三点指向的是“[**学习之道**]”。 ### 自知之明 我们要了解自己拥有什么、缺乏什么,然后才能开始学习。 通过不断地总结、回顾自己做过的事情,我们就可以慢慢了解自己的能力边界。哪些事情做好了,好在哪里,为什么好在那里而不是别处,是由你自身的哪种行为、才干、能力决定的?哪些事情做得不好,坏在哪里,为什么坏在那个点而不是其它的点,改善你自身的哪种行为或能力可以改变事情的走向,还是说你没什么能改变的那就是你的局限? 当你了解了自己,就能发现自己应该做什么,就能决定自己的学习方向,而不是盲目地把自己交付给别人(学校、老师、家长、培训机构),因为,没有什么人真的可以为你负责,能为你负责的,只有你自己。 当然,自知是最难的事,也不是一朝一夕的事,需要不断的自省和内视才可以做到。 ### 自我学习 知名的教育专家林格有两本非常著名的书,《教育是没有用的》和《学习是不需要教的》。林格有一个非常核心的观点:学习能力是人与生俱来的能力,是人之天赋,是不需要教的,但这种能力会随着年龄的增长和家庭教育、学校教育的误导而萎缩或消失,所以,教育的方向就是营造一个环境,让人自己发现自己的学习能力。 六祖慧能一朝顿悟传承衣钵,佛性自在每人心中。只不过,世人多如神秀,认为“身是菩提树,心如明镜台,时时勤拂拭,勿使惹尘埃”,一定要借助外力和各种各样的清规戒律,方可保持灵台清明,最终获得某种修行。这种扭曲了教育本质的说法、做法大行其道,导致中学教育(大学相对自由)重知识、重规矩、重技能而轻发现、轻唤醒、轻因材施教、轻有教无类,最终扼杀了学生的自我学习能力。所以,很多人不是天生不会学习,而是在成长过程中在家庭、学校、社会的各种外力撕扯中慢慢丧失了自我学习能力。更甚之,多数人不自知这种能力的丧失。 然而,程序员尤其需要自我学习能力。 学校会教你操作系统原理,会教你计算机组成原理,会教你算法,会教你C语言,会教你Java,各种知识都会教你。然而你到工作中,能不能用你学到的知识解决问题,实在是个未知数。 培训机构会教你怎么写Java代码,怎么安装某个IDE,怎么完成一个个人博客或购物车之类的小项目。然而,你是在框好的架子下被动地按照老师的要求“完成”了这些事。到了工作中,面对巨大的未知和陌生的项目,你能不能举一反三灵活运用,充满了未知。 [**一个程序员能不能自己学会一门技术、能不能自己解决一个问题特别重要**]。因为,很少有主管会手把手的教会你编程和设计的实际技巧,也很少有主管会大发慈悲把你送去研习班学习工作需要的技能,在一个现实的环境里,一切都要靠你自己。假如你自己不能独立习得某项必须的技术,真没有人能帮得上你。假如你自己不能独立解决问题,真没有人能始终拉扯着你。这也正合梁漱溟说的话:“任何一个人的学问成就,都是出于自学。学校教育不过给学生一个开端,使他更容易自学而已。青年于此,不可不勉。” 很多人轻视培训机构,是认为培训机构的老师,多数脱产,没有丰富的一线工程实践,是业余选手,而这些“业余选手”却要通过短短的一期培训来为社会培养“专业选手”,这基本是一个笑话。即便我们能举出不少从培训机构出来的优秀选手,那也只能说明,这个选手本身具有很好的学习能力。 如果一个人意识到了自己还具备自我学习能力,那他完全没必要去培训机构浪费动辄六七千一两万的学费——他完全可以自己学到必须的知识和技能,假如他真有兴趣的话。 而**要检验你是否还有自我学习能力,先不要去培训机构,自己找本讲编程的书、找台电脑、连上网,花一两个月时间就能搞明白你是否适合做一个程序员。一旦你通过了这种自我学习实验,那时再挑一个培训机构系统地学习某条技术栈不迟。** 言而总之,你能不能成为合格的或优秀的程序员,取决于自我学习能力,而不是参加过专业培训。所以,很多公司在招募程序员时,不太愿意考虑培训机构毕业的学员,因为在面试官的心里,觉得如果你有能力,自己就可以学会,完全没必要去培训机构,你接受了培训,他反倒认为你可能缺乏自我学习能力(以及对技术的兴趣),担心你不能胜任将来的工作,他太了解了,你学的那点东西根本不够用,还有很多新东西等着你学,所以,他不愿意考虑你。 而对于知名大学的毕业生,虽然可能和你一样是一张白纸,但别人会以为,能进得了大学当得了学霸,起码学习能力没问题的概率高一些。 ### 努力 有一句话是这么说的,“以大多数人的努力程度之低,根本还轮不到拼天赋”。其实,努力也是一种天赋。为什么有的人明知努力可以改变生活,可他还是不努力呢?因为,臣妾做不到啊!为什么做不到,因为他缺乏“勤奋”、“努力”之类的天赋和才干。真的,勤奋、努力的人,多数是生就的,少数是被后妈(生活)逼的。 程序员白天要上班,晚上偶尔还要加个班,自由时间少,而新技术很多,什么时候去学呢?你以为实际的项目一定可以让你锻炼新技术吗?要知道,大部分的项目在技术选型时,会考虑技术的成熟度和团队的技术储备,很少有冒险采用大家都不熟悉的技术的,不可控因素太多,风险太大,项目失败的概率很高。那这样的话,你什么时间丰富自己呢? 八小时之内是现在,八小时之外是将来。你可以用的,就是你的业余时间了。你看,人家都在打游戏、看电视、挎着女伴的胳膊去速8,你还要苦哈哈的学习,如果你没有“努力”这种天赋,是很难做到的。 所以,很多面试官在面对培训机构毕业的人选时,也会有诸如“如果你有自我学习能力并且努力,其实没必要上什么培训班,完全可以自己搞定”之类的想法,而你上了培训班,是不是反过来证明你不够努力咧……然后,他又会想,是不是因为你没自知之明不知道自己要干啥才被忽悠到培训机构去交学费了呢……也许,他还会想,是不是因为你对技术其实不感兴趣只是想谋个事儿干呢…… 额,你看,面无表情之下,其实各种想法如同暗流漩涡,澎湃不息……所以,最后,你可能就只好“回去等消息”了…… * * * 不知道说了这么多,你是否明白了个中原因——面试官会觉得培训出来的学员,可能对技术没有那么浓厚的兴趣、缺乏足够强的自我学习能力也不能很好的自律和努力。但在我的观念里,其实**应该这么看待IT培训机构的学员:他只是找了一个类似学校的地方系统学了一些东西,和别人并无什么不同,如果他对技术有兴趣,有自我学习能力,一样可以做一个优秀的程序员。**
';

SMART原则助你设定有效目标

最后更新于:2022-04-01 21:16:32

![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-11-27_56582a7f81cdd.jpg) 2015年刚过完年的时候,我写了一篇文章,题目是“[**咦,你也在混日子啊**](http://blog.csdn.net/foruok/article/details/42293119)”,没想到点击量贼高,光CSDN一个站点,超过16万。还有很多站点转载了这篇文章。后来呢,我又写了一篇题目为“[**怎么告别混日子**](http://blog.csdn.net/foruok/article/details/44096235)”的文章,想提供一些经验,希望能对那些不想混日子的程序员有所帮助,不过明显,这篇点击量没有之前那篇高,到现在也才不到3万。 “[**怎么告别混日子**](http://blog.csdn.net/foruok/article/details/44096235)”一文的核心观点是:**设立目标可以告别混日子**。文中也简单举了个例子说明如何设定目标,还大概提了如何寻找目标。 时间过去了大半年了,我又有了新的想法,于是写了一篇文章,“[**如何快速定位自己热爱的工作**](http://blog.csdn.net/foruok/article/details/49419807)”,再一次讨论怎样寻找目标。这篇文章我认为比之前的文章更好一些,因为里面提供了可操作的方法,有很强的可执行性。不过这篇文章还有很多东西没有说清楚,比如什么是有效的目标。这次呢,我想把**有效的目标**说清楚。 1954年,德鲁克在《管理实践》一书中提出了一个具有划时代意义的概念——目标管理(Management By Objectives,简称为MBO),它是德鲁克所发明的最重要、最有影响的概念,并已成为当代管理体系的重要组成部分。 串田武则有一本书叫作《目标管理实务手册》,非常详尽地介绍了如何进行目标管理,值得一看。 假如你想系统了解目标管理,仔细研读前面介绍的两本书就可以了。假如你没时间细看,那往下看看就能帮助你快速了解什么是有效的目标。 ## SMART原则 在目标设定中,SMART原则被普遍运用。 * S(Specific):目标必须是具体的,要对标特定的工作指标,不能笼统; * M(Measurable):目标必须是可衡量的,衡量的指标是数量化或者行为化的,验证这些指标的数据或者信息是可以获取的; * A(Attainable):目标必须是可实现的,在付出努力的情况下可以实现; * R(Relevant):与其他目标有一定的相关性 * T(Time-bound):目标必须有明确的截止期限 下面我们来具体了解一下SMART原则。 > 注:此处再次发挥剪报君特长,严重参考了百度百科。 ### 具体的 用具体的语言清楚地说明要达成的行为标准。明确的目标几乎是所有成功人士和成功团队的一致特点。很多团队(人)不成功的重要原因之一就因为目标定的模棱两可,或没有将目标有效的传达给相关人员。 看两个例子: > 无效的目标:我要提高代码质量  > 具体的表达:我要降低Bug率(千行代码缺陷率) > > 无效的目标:我要成为一个程序员  > 具体的表达:我要掌握C++语言 ### 可衡量性 衡量性就是指目标应该是明确的,而不是模糊的。应该有一组明确的数据,作为衡量是否达成目标的依据。如果制定的目标没有办法衡量,就无法判断这个目标是否实现。 比如前面的例子可以进一步细化,让目标可衡量。 > 目标1:我要将Bug率控制在千分之2.39以内(CMMI3的标准) > > 目标2:我要掌握C++基本语法、继承、多态、虚函数、STL中的常见容器类的用法,并完成一个10000代码行的项目 ### 可实现性 目标是可以通过努力实现、达到的。应该高于现状,但又是跳一下能够得着的。 假如一个还没有做过软件开发的应届毕业生,定下了“我要在一个月内成为C++语言的专家”这个目标,那这可能就是一种不切实际的表达。更接地气的目标是:“我要在3个月内掌握C++基本语法、继承、多态、虚函数、STL常见容器类”。 C++并没有想象中那么好学,能在一个半月内掌握基本语法能够简单应用就非常不错了,像继承、多态、STL这些内容,能够真的理解并应用,没有三个月以上的时间是相当困难的。 ### 相关性 目标的相关性是指实现此目标与其他目标的关联情况。如果实现了这个目标,但对其他的目标完全不相关,或者相关度很低,那这个目标即使被达到了,意义也不是很大。 比如你的中期目标是“三年内成为一个合格的C++软件开发工程师,能够独立完成模块的设计与开发”,那短期目标“掌握C++语言的基本语法”和中期目标就具有很强的相关性,是实现中期目标的一步。 假如你的目标是沿着中轴线参观中山陵,那每一个台阶都可以看作一个小目标,爬完392级台阶,就可以到达中山陵,开始参观。目标也是一样的,一连串的短期目标指向中期目标,若干个中期目标又指向远期目标,指向你工作或生活的愿景。 只有当一个目标和人生愿景相关联时,才有实际的意义。这种关联性,可以通过短期目标与中期目标关联、中期目标与长期目标关联、长期目标与人生愿景关联这种递进的模式来保障。而实际上还有一种自顶向下设计的方法(从愿景分解出长期目标、从长期目标分解出中期目标、从中期目标分解出短期目标)来从方法上保障关联性。要做到这么志存高远又步步为营实在是对个人要求太高了……不过呢,你去看那些很成功的人士,基本上都是有清晰的人生目标的;而混得不错的,也基本上有中期目标或长期目标;对于连短期目标都没有的亲们,多数时候是在随波逐流…… > 注:愿景是人生目标的概括表达,它综合概括了一个人或一个组织的未来目标、使命及核心价值观。它是我们努力奋斗希望达到的图景,就像大海远航的灯塔,指引我们前行。比如马云提出的“让天下没有难做的生意”,就是阿里巴巴这个组织当时的愿景。比如房地产商杜甫,他的愿景是“安得广厦千万间,大庇天下寒士俱欢颜”。 ### 时限性 目标的时限性就是指目标是有时间限制的。比如我在运营微信订阅号“程序视界”时给自己定的目标是“在2016年5月9日达到10000关注”,这里的2016年5月9日就是确定的时间限制。额,时间快到了呀,还远着呢,关注我一下,让我离目标近一步吧。 ## 目标设定举例 前面我们概述了如何通过SMART原则设定有效目标,这里提供几个简单的目标作为示例。 * 我要在3个月内掌握C++基本语法 * 微信订阅号“程序视界”在2016年5月9日前要吸引1万个关注 * 我要在5年内成为公司XXX研发部门的经理 * 我要在5年内成为后端架构师 * 我要在8年内成为全职的专注IT的自由撰稿人 * 我要在60岁之前赚到2000万 我要在某个期限内怎么怎么着,类似这种目标,还是比较好设定得满足SMART原则的。 有目标只是第一步,接下来的任务更为艰巨:**如何分解你的目标形成计划并执行下去**。很多人不是没有梦想,而是缺乏找回梦想的勇气。如果你真的有这种勇气,那么什么都不能阻挡,你对未来的向往。
';

自我发现,找到适合自己的职位

最后更新于:2022-04-01 21:16:29

《[漫谈选人与培训](http://blog.csdn.net/foruok/article/details/39494245)》是我在读《首先,打破一切常规》时的小感慨,谈公司找人那一面的事儿。硬币的另一面,是作为公司员工的我们,如何找到一个靠谱的位置。这个很难说,因为每个人找工作的侧重点都不一样,我在这里也不打算对如何找到合适的公司、合适的职位来废话,而是想谈谈这个:怎样判断你当前的职位是否适合自己。话又说回来了,如果你能判断出当前的职位是否适合自己,就会对怎样找到合适的职位有莫大的帮助。     十一带娃回了姥姥家,7号回到西安,今天早上送她去幼儿园,不大想去,我和她妈妈就老生常谈地告诉她这种感觉怎么怎么样……反正就是想让她克服一下自己的感受……快到门口时她问我去上班是什么感觉,会不会不想去……     **过完周末,第一天去上班,是什么感觉……**     这就是关键之处,也是我们判断一个职位是否适合自己的起点。     如果你想了解你正在干的工作是否适合自己,我建议你每个星期天晚上都给自己一点时间,梳理一下心情,搞明白“明天要上班”这件事儿给你带来什么感觉。     如果你内查到犹豫、恐慌、紧张、担忧、抗拒之类的情绪,停下来,再给自己多一点点时间,问问为什么会这样?工作中的什么让你产生这些情绪?一一记录下来,列在本子上,看看哪些是临时性的、很容易消除的,找出那些较为持久的、难以消除的、让你感觉特别扭的,重点标记,跟踪。每周都这么问自己,每周都筛选让你不舒服不愿意赶赴工作现场的那些因素。经过几周或者几个月,相信你一定会找到一些从你的角度看来坚硬如铁无法消融的原因,它们带给你压抑、抑郁,这些负面情绪大过于你在工作中获取到的乐趣,以至于最终你过完周末就头疼要上班的事儿。     如果你发现自己非常渴望下一周的工作,有种恨不能穿越时空要去爱的感觉,停下来,快停下来,问自己为什么?当前工作中的哪些因素让你如此兴奋、享受、快感不断……找到它,记录下来,分析它们。周而复始,不断探寻、记录、分析它们。当你的周末自省结果发生变化时,看看是不是之前记录的结果也发生了变化。这样当你寻找下一份工作时,这些记录就能帮助你判断新的工作是否适合你。     我们说了两个极端,那其实还有中庸的状态:无所谓抗拒与欢欣,就那样,啥也探查不出来,或者也懒得探查,爱谁谁。好吧,如果你连自己的感觉都不愿意关注,那也真是醉了……     不管你在内视时感觉到抑郁、痛楚、抗拒,还是欢欣、渴望、期待,抑或百味杂陈,都要忠实地记录下来,分析它们,区分哪些可以改变,哪些很难改变。     对于可以改变的,尝试去改变,因为它们一般都不是和你天性对着来的,既然改变一点就可以让自己高兴一些,那就赶快行动吧。     对于很难改变的,要区分是外部环境(工作的物理环境、领导的行事风格、工作氛围、职位对某些技能的要求等等)还是自身特性。如果是自身习性,那就算了吧,江山易改秉性难移么,看来你的气场与这份工作不合,换个环境比较好,但是一定要明白,你的哪一点与这份工作中的哪一点不可调和,避免下次找工作踏进同一个坑里。如果是外部环境,其实可以尝试去改变,比如你不喜欢你的领导,可以申请调岗,比如你讨厌没有阳光的工位,可以找人商量换位置……     其实这种“探寻工作给自己带来的感觉”的内视过程,就是自我发现的过程。     有些人需要这样的显式过程,就像基督徒的礼拜一样,形式会强迫你的肉身和精神进入到一个平常难以抵达的境界。为毛武侠小说中很多人要闭关修炼呢……大概也是这个道理。     而有些人每日三省乎己,已达随时随地感知自我的境界,则不需要这种显式过程了,人家无时无刻都在修行,又何必拘泥于形式哉……话说这样的人也不会来看我扯淡,不说也罢。     自我发现的要点在于扬长避短,所谓尺有所短寸有所长么,我们要慢慢地建立自知之明,了解自己的长处和短处,发现自己的独特才干,最终为自己的才干找到用武之地。     机遇只青睐有准备的人……快点扪心自问吧……
';

漫谈选人与培训

最后更新于:2022-04-01 21:16:27

最近终于有时间来翻看《首先,打破一切常规》(First, Break All the Rules)了,感慨良多啊。真后悔之前公司发这本书时把它封印起来。     先看看书中提到的优秀经理们的座右铭吧: > ***人是不会改变的。*** > > ***不要为填补空缺而枉费心机。*** > > ***而应多多发挥现有优势。*** > > ***做到这一点已经不容易了。***     其实很简单的道理,我们都忽略了。在实际工作中,领导们、经理们、高级工程师们、研发人员,大部分人都有试图改变别人的实践、倾向,我们试图让一个人改变自己来适合某个职位,这是最大的错误。     谈恋爱时很多小女生经常问:难道你就不能为我改变一下吗?而且男女双方经常为这个问题吵架啊,比如你为什么就是猜不到我心里想要什么呢,比如你为什么就不能停止编码陪我逛个街呢,比如你为什么就不能浪漫一些……太多了。其实你所希望对方改变的那一点,恰恰就是他不可能改变的。因为,人是不会改变的……江山易改、禀性难移么。为毛要白费力气呢?你应该试图去理解他之所以为他的那些东西,如果你理解了,那就不会为它们而感到生气,因为他就是那样子一个人,你爱他(她)这个人,就要接受他的秉性,而不是要来把他(她)改造成另外一个人。非要那样,双方皆苦,分了算啦。     关于选择另一半,有时我们说要靠一见钟情的运气,有时要比较彼此的优缺点来凑合,有时就是将就着过日子……其实不管哪种,都会面临这个问题:你选择的到底是什么样一个人,他(她)身上的哪些东西可以改变,哪些不可以改变。这是必须要明白的,否则,哈哈,要生一辈子气,或者闪结又闪离。     对于选拔人员,或者简单地说招聘,其实也是类似的。在选拔人员的过程中,我们其实要识别的是:**他有什么样的才干**。     要做到这一点,就要区分技能、知识和才干这三个概念。之所以要区分,是因为我们习以为常地混淆了它们。     如果你曾经面试过别人,或者被别人面试过,就会有各种各样的体验。比如有的面试官就喜欢细细审视你的工作经验,用什么编程语言、什么工具、写了多少代码、负责什么模块……有的面试官天马行空,就问一些貌似不着边际的问题,比如你怎么向一个不认识的美女搭讪,怎样准备一次约会,如何与别人吵架并且要吵赢……还有的面试官会关注你玩什么游戏,是喜欢足球竞技,还是就爱魂斗罗……     其实他们都希望通过这些问题来判断当前的人选是否适合自己的需要。但更多的面试官通常分不清技能、知识和才干这几个概念。     技能,它所对应的是一件工作“怎样做”的问题。它们是人们可以相互传授的各种能力。对于程序猿,编程是一项技能,如果一名新手不会Qt Creator,别人可以教会他啊。如果你不会用Visio,别人也可以教会他。传授技能的最好办法是把整个操作过程分成各个步骤,让学生最后连成一体。就像舞蹈的分解动作,比如当时我们公司年会,我们部门要跳郭富城的《浪漫樱花》,我们都不会,可神仙姐姐找来分解视频,学一学都会了。     知识就是:“你知道的东西”。比如你知道C++11的标准,比如你知道广电181号文,比如你知道你做的产品的卖点和要解决的用户痛点……这些都是可以教会的,C++语法、JavaScript语法,这些都是知识,都可以教会。还有一些经验性知识则略有不同,它是无形的,只能通过自己回顾、归纳、总结来获得特定的感悟。比如有的人擅长讲PPT,知道什么时候插入一些有意思的小故事、笑话来活跃气氛。     而**才干**呢,与技能、知识完全不同,它甚至可以说是与生俱来的,当你能够参加面试时,你的才干基本上都已经定型了。是不是很沮丧……难道我不可以培养某种才干吗?别担心,虽然你的才干在你十五岁时已经成型并很难改变,可是你多数时候并没有意识到它们的存在,只要你有意识的识别出它们并发扬光大,前景不可限量。     才干决定了你的贯穿始终的思维、感觉和行为方式。比如有的人就是喜欢“精确”,这是一种才干,他可以成为优秀的会计师。而有的人就是马虎,你告诉他一百次一千次一万次不要马虎了也没有用,因为它天生没有“严谨”的才干。比如有的人就是争强好胜,凡事都要做第一,不容许自己比别人差,这也是一种才干啊,只要给个对手他就能HIGH起来,你都不用管的。有的人天生热情,具有交往才干,热衷于结识陌生人,并且能够很快与别人打成一片,这也是种了不得的才干;而有的人则羞涩,最怕与人说话,80岁了被人说一句也会脸红,那你就不要企图让他变成社交明星。有的人喜欢有序,最不能容忍的就是杂乱无章,再乱的房间,她进去十分钟就会大变样,这也是才干啊,她可以做一个很好的物管、文员或者图书管理员……有的人就是会学习、爱学习,学什么东西都比别人快三步,不管是高数、微积分还是拳皇,这也是一种才干,我有个大学同学就这样啊,怎么说呢,与之相对的是有些同学怎么学东西都学不会、学不快,那是没这方面才干,也强求不来,如果你为人父母,就要识别孩子的才干并创造环境让他(她)发挥自己的才干,路越走越宽么;如果非要拧着他(她)做不擅长也不可能变得擅长的事儿,众生皆苦啊。     **任何可以产生效益的“贯穿始终”的行为模式都是才干**。而取得出色成绩的关键在于使你的才干与工作相匹配。     回到选拔人才这个话题,如果我们能够区分技能、知识、才干,那就能明白,为什么梁山需要鼓上蚤,而十一罗汉需要破坏天才巴世尔。你以为林冲、杨志可以变成时迁吗?不能吧。所以呢,招人时、面试时,其实既往的经验不是最重要的,重要的是,这些经验里体现出他的什么才干,而这种才干是不是你空缺的职位所需要的。比如你要招会计,面前的人连纽扣都系错位置了,我想他多半不是你需要的那个人。     当我从技术支持转做软件开发时,没有任何编程经验,C语言也没学过,可是老板就收了我,后来也做得很不错。老板看中我什么?思维、快速学习与积极上进的才干。我带过的一个团队,有一个哥们就具有积极奋斗的才干,属于我们常说的自驱型人才,只要你给他活、给他资源,别的就不用管了,他总是按时或者提前完成任务,而且完成的很好,代码质量高,软件BUG少,连测试组的姐妹们都喜欢他。这样的人难道是可以培训出来的吗?     所以,**最关键的是如何找具有合适才干的人。然后就是给他环境,给他资源,让他最大限度的发挥自己的才干**。     而培训呢?     培训到底能做什么?其实就是教会人们一些具体的技能和知识,不要指望可以把一个得过且过的人培养成极富责任的业务尖兵,也不要指望培训可以改变一个人的习性。你能想象把一个见陌生人就低头、说句话就脸红的美眉培训成左右逢源的交际花吗?有人不会用redmine,不会用jira,不会用svn,可以培训一下,可是你能把一个凡事推诿不愿担当的盆友培训成项目经理吗?     才干是最重要的,却是无法教会的。你教不会有主见,教不会善解人意,教不会体谅,教不会变压力为动力,也教不会毅力与坚持,更教不会百折不挠……市面上的各种管理类书籍千千万,各种培训机构团团转,它们都教你什么?如果你是想学某一项技能、某一类知识,没问题,它们可以胜任。如果你想学的是你不具备的某种才干,那就是缘木求鱼了。     所以作为单位,既要识别才干选对人,创造让人发挥才干的环境,又要明白该做什么样的有针对性的培训,将技能、知识与才干结合起来,产生最大的效益。而作为个人,虽然很难培养新的才干,但可以有意识地识别自己的才干,把你想要的若干种才干有机的联系起来,去做最能发挥你才干的工作,这样才能有所成就。
';

亲爱的程序猿们怎么找工作

最后更新于:2022-04-01 21:16:25

神秘的刀郎在 2003 年成名,成名歌曲是《2002年的第一场雪》。     “2002年的第一场雪,来得比往年要晚一些。停靠在八楼的二路汽车,带走了最后一片飘落黄叶。……”     正是在 2002 年,我大学毕业,找了份售后技术支持的工作。 2003 年的时候,奔波在河北维护程控交换设备,我们破旧的桑塔纳里,经常传来刀郎沙哑的嗓音。     好吧,我承认,这篇文章与刀郎没有半毛钱关系。可是当年红遍大江南北的刀郎,现在已经找不着了吧。     人无千日好,花无百日红。早时不计算,过后一场空。这首诗又是干么的……还是回到正题儿吧,恐怕你手里板砖已经在跳动了吧。     我的第一份工作,是技术支持。干了两年多,觉得没意思,自己快被废掉了,于是决定转行做软件开发。先裸辞,后学了一星期 C 语言,幸好找到个公司肯接收我,谢天谢地,不然真不知道今夕何夕。那时被各种形式所逼,不得不换工作,所以收入只有技术支持那份工作的 1/3 也接受了。     一开始在西安做 PC 软件开发,后来离开西安,去了南京,搞嵌入式,导航、MP4、车载电子,干了一年多,又不干了。裸辞,回到西安。     干什么呢?其实我这人比较随性,再度回到西安时,已是 2007 年底,工作近六年了,也没正儿八经想过这些个问题。那当年大学要毕业时,就更是少不经事了,人憨憨的,没见过世面也没什么想法,觉得有个事情干不错了。可人不能总这样,你说呢?更何况我干了六年革命工作了呢……     找了个做 WIFI 芯片的外企,待遇不错,当时给到将近 8K ,公积金什么的都挺高。找了家做外包的,待遇也还行。后来呢……我又回到第一家搞开发的公司了,工资是谈过的几家公司里最低的,兄弟,最低的。     为什么呢? >     当蜘蛛网无情地查封了我的炉台    >     当灰烬的余烟叹息着贫困的悲哀    >     我依然固执地铺平失望的灰烬    >     用美丽的雪花写下:相信未来           我有一段时间很喜欢食指的诗,当然,海子的也喜欢。      >     从明天起,做一个幸福的人 >     喂马,劈柴,周游世界          不过,我回到老东家那里不是因为它们。     看来得躲西红柿了。     别砸,回家我得自己洗衣服呢。     其实作为程序猿,你们不觉得找工作时要时刻谨记这两首诗吗?很多人都在追求的:生活与工作的平衡,所谓 work life balance 。其实就藏在这两首诗里,真的,骗你是小狗。     我回到老东家,是因为老板对我说要做产品,做一个视频相关的产品,具体是什么还不清楚。那时我虽然还有点儿糊里糊涂,听过很多道理,还没过好这一生。可毕竟已经不是懵懂少年,多少有了些自己的看法。觉得做产品比较靠谱,比外包靠谱,比外企有更大的可能性,没准一下子红了呢?风水轮流转,明年到我家,也许就可以鲜衣怒马走天涯……     这是我当年的一个认识吧:     “**有产品做,就不要做外包;有独担一面的机会,就不要去做外企或者大公司的螺丝钉。**”     当然很多人与我见解不同,理解并支持你们!王小波是罗素的信徒,罗素说,参差多态乃幸福之本源。本来么,求同存异,不能视见解与己不合的人为异端,那是法*西斯。工作中其实也是一样的。     吭哧吭哧干到了 2014 年,从 08 年到 2014 年,发生了很多变化,老婆孩子什么的都有了,人生有几个六年呢……有了白头发了……     此翁白头真可怜,伊昔红颜美少年……不过当年我也是一容貌粗鄙吓人的主,配不上这诗,我要说的是,红颜弹指老——打住,我这是肿么啦!     我已经 30 多岁了,三十四五岁,非常尴尬的年龄,对开发人员来讲。你懂的,虽然你是个一线经理,其实也还是个干活儿的。屁话!     有次和朋友吃饭聊天,说起我们这个年龄的技术人员的出路,不免相对喟叹……如果要找工作,其实挺尴尬的,继续做开发吗?已经做了几年技术管理,不想玩儿过山车了。可是管理工作本身也很难做不说,机会也不是太多,这时就体现出差别来了:招管理岗位的,更愿意有大公司管理经验的人员。而项目经理之类的,多数是外包公司或者定制开发类的项目,与做产品的初衷不同。     话说到这里,想必你也猜到了,我做了六年的产品,产品没有大红大紫……     其实干什么都是有风险的,对于开发人员来讲,最大的风险是什么呢?选错一门技术?干错一个项目?做错一个产品?跟错一个老板?……也许都不是,也许是没有在合适的年龄找到合适的妹纸……     对于开发人员来讲,最大的风险是:**在职业规划上没有延续性地乱跳槽**。     有人跳槽为了涨工资,不跳不涨么。一年都能换几次,也不管工作内容、技术路线什么的。这其实也无可厚非,是吧。龙生九子,个个不同。理解万岁。桥归桥,路归路。     我是比较迟钝的人,到了 30 多岁才第一次正式地来审视“怎样找工作、找什么工作”这个问题,可能是年龄大了吧,觉得不能再玩从零开始的游戏了。有人早慧,可能大学没毕业就明白了这个道理。真的,我有一同学,毕业时放着微软不去,坚定地找嵌入式的机会,真给他找着了,并且干得风生水起……还有个小盆友,小学时就说长大了要当校长,原因呢,是因为他的老师老打他手心,他当了校长就可以直接开掉这个老师……     当年我在参加一家公司的面试时对面试官说:要在两到三年内做到不可替代。结果被拒了……你懂的,单位都讨厌这个。可是作为开发人员,这是你时刻要牢记在心的:**培养自己的稀缺性**。    为什么这么说呢?物以希为贵么。如果你很牛X,干的活儿很重要,别人又替代不了,你自然受重视是吧。     好像又跑题了,题目是怎样找工作……干脆换个题目算了。     别急,待我再绕回来。     如果你要寻找新的工作,反过来说,就是你要跳槽了。此时一定要想:为什么跳槽?     是因为所用技术没有前景吗?比方说公司用 DOS 环境编程,或者一直使用 MFC ,这都是过时的技术,如果不喜欢,早点跳,找个与互联网或者移动相关的方向吧,或者行业性很强又产能不过剩将来大发展的,比如机器人、自动化控制、智能医疗什么的……     是因为工作中经常不爽吗?这个就要仔细掂量了,哪里的工作,哪家公司都有不爽之处,人最大的敌人是自己,一定要想明白,自己的心态或者策略是否可以改变,从而改变工作状态,消除不爽。凤凰涅盘,浴火重生。简单说,改变自己,改变世界。当然,如果无论怎么样,某种不爽都无法忍受,比如女上司老吃你豆腐而你又不爱这口,那就早点走吧。     是因为个人没有发展前景了吗?比如职位上不可能再晋升,技术上不可能再进步,薪水上不可能再大幅增加……要想清楚……     是行业突然遭遇暴风雨,前途黯淡了吗?好吧,该换行了。夕阳产业的话,没必要留恋了。     是公司突然遭遇资本危机,一蹶难再振吗?看你自己的判断了,有些老板很牛的,翻身很容易的,如果你在此时很讲江湖义气,不离不弃共患难,东山再起时,自然少不了你的……     是因为薪资太低,同行业相比较,缺乏竞争力,或者简单说,生活压力大,入不敷出?这没什么好讨论的,搁谁身上因为这个换工作都可以理解。     总之,要换工作,一定要想明白为什么?都说是为了爱情……其实这也是一个常见的原因。如果是这样,问世间情为何物,二话不说,换吧,支持你。除此以外,还是要想想为什么。面试时这也是经常被人问到的问题。     好像我应该是在说自己,现在又换角色了么,有点儿逻辑混乱了,当我自说自话好了……     决定换工作了,就要考虑找个什么样的新工作。此时你之前的思考就派上用场了。机会只青睐有准备的人。     假如你已经很清楚自己将来的道路,非常笃定,坚信不疑,那就好办了,一定要找到这样的机会,抓住它。此时你的稀缺性,无论是技术上,还是思想上的,都可以帮助你找到好的工作。而你对职业发展连贯性的原则与思考,也会让你的焦点不那么散乱,能够做到有的放矢不盲目。任尔东西南北风,咬定青山不放松。我就是奔着那个妹纸去的,就像那些狗血的电视剧里演的那样,目标明确,很好,很好。左牵黄,右擎苍,千骑卷云岗……好吧,如果你气场这么强大又目标明确,摧枯拉朽不是问题……     最后说一下我对好产品的理解,大概是酱紫的: 1. 解决用户痛点 2. 所处行业前景光明 3. 产品有延续性,可持续性发展     好产品加上靠谱的公司,基本上就是比较靠谱的工作了,甚至可以做成事业。     怎么判断公司靠谱呢?我有一些经验,用来鉴别不太靠谱的公司或工作: 1. 只关注你过往能力和项目的匹配度 2. 只想用你已有的技术能力解决公司遇到的问题 3. 面试你的人对公司产品没有热情,自己都不了解公司的产品远景,也不了解公司的远景,说不出个一二三 4. 没有新产品,招你就是维护性开发     如果新公司靠谱,有实力(有一帮牛人、有资本投入)把这个产品做好,那是最好的了。恭喜你啦。     那怎样了解公司呢?互联网搜索,熟人打听,公司网站,招聘要求,都是途径。还有一个就是面试,一定要牢记,面试是双向的,不但是公司选择你拷问你,也是你最好的了解这个公司的机会,有时机就问一些思考过的问题,这也是前面提到让你想清楚为什么自己要离开现在的公司、自己想干什么、将来的路怎样规划的一个原因。我在面试一些应聘者时,通常在最后会留机会让他们问问题,经常遇到有些求职者说我没什么问题……这么好的机会都放过了,一般这种情况,这个人我就不再考虑了……     但愿你看到了这里。     哇哈哈哈哈哈……     最近韩寒的《后会无期》正在热映,沉寂十来年的朴树同学也出来为其站台背书,那个当年满脸疙瘩的民谣歌者,现在依然没有一个很适合他的编曲,也是一大可叹之事。其实我还是比较佩服韩寒的,他的经历可供我等程序猿们参考。当时写作《三重门》时,他的身份也颇具稀缺性——新概念作文大赛一等奖。话说那时新概念如日中天,后来也还有多位作家是从这里走出来的。后来韩寒当了赛车手,真够劲儿!这截跨的!后来又创立了《独唱团》;再后来出了《1988,我想和这个世界谈谈》,又开始写小说了吗?其实这部小说真心一般,还有那个《长安乱》……前两年主办的《一个》 APP ,现在是我手机上打开频度最高的应用……到如今,他又搞起电影来了……真真儿是没有做不到,只有想不到。     扯这么多,说什么呢?作为开发人员,也是要不断挑战自己的,那种“今朝有酒今朝醉,明日愁来明日愁”的做法是要摒弃的,所谓“人无远虑,必有近忧”么。子在川上曰,逝者如斯夫,在这个瞬息万变的 IT 江湖里,如果你不能识别并不断加强自己的竞争力,任由时间悄悄流逝而自己始终滞留原地,想必过不了几年,就该感叹“如今的江湖,已经不是我辈的江湖”了。     写给已过而立的自己,也给看这篇文章的你。
';

程序员,这12个问题让经理比你痛苦多了

最后更新于:2022-04-01 21:16:22

![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-11-27_56582a7b25179.jpg) (本文曾以“新任技术领导会遇见哪些问题”为名发表于《程序员》2015.11.A期) 《论语·子张》: > 子夏曰:“仕而优则学,学而优则仕”。 后半句“**学而优则仕**”更为人熟知,按我浅薄而世俗的理解,这话的意思是,由学可以致仕,就是说,你学问大了,就能当官。比如苏东坡,比如柳宗元,比如诸遂良,比如孔子,比如李斯,比如苏秦,比如范仲淹,比如欧阳修,比如海瑞,比如杜甫……这种情况,在古代实在是数不胜数。 学而优则仕这种传统,在软件开发领域也有体现:很多人会因为技术工作做得好而走上管理岗位。然而,这样走来的技术领导,在刚晋升时,往往会面临很多问题,经历痛苦的转换期。这和那些学而优则仕的文人才子们的遭遇是一样的,比如范仲淹屡被贬谪,比如杜甫总不得志…… 现在,我们就来看看,新任技术领导都会遇到哪些问题,怎么破。 ## 1\. 以为任命产生领导力 带队伍和当小兵是完全不同的,技术领导需要组织、领导、激励其他人为目标而工作。然而其他人会不会听你的,会不会阳奉阴违,会不会积极主动地干活,当别人与自己意见分歧时怎么办,怎么样让别人接受自己分配的任务,怎么样让别人接受你为其设定的目标……这些都是问题,需要有影响力和领导力才能玩儿下去。 然而新任的技术领导刚到经理岗位,对领导力可能还没有体会,很可能不知道怎么做,会错误的用行政权力来强硬地要求(命令)别人做某些事。这是一种误区,任命可以赋予一个技术领导行政权力,但不能产生领导力。来自权力的压力可能短时间内貌似有效,但实际上会严重损害一个经理的领导力和影响力,假如一个经理频频采用官大一级压死人的策略来推动项目和项目中的人往前进,往往最后会适得其反,招致大家的厌烦和反馈,在团队中失去威信。 ## 2\. 害怕别人不干活 从普通工程师晋升为经理后,开始管理其他程序员,开始管理项目,开始为整个团队或部门的工作进展负责。此时就会产生各种担忧,其中之一就是:要是别人不好好干活或不干活怎么办。 因为刚担任技术领导,对经理的角色还没有适应,不太了解一个项目的人员怎么运转,想当然的以为每个人都应该工作量饱和、工作积极,项目进展才能保证,因此对每个成员是否努力积极工作就会特别在意。同时也可能由己推人,如果自己是特别努力积极做出了成绩才晋升,那就可能觉得别人也应该和自己一致;如果自己曾经因为种种原因有怠工的行为,也会担心别人找各种借口不好好做事而影响进度…… 其实这种担心是很正常的,但从客观上讲没太大必要,你相信大家都会积极完成工作,结果就一定会朝这个方向演进。因为多数团队原本就形成了某种节奏,可以度过领导更替的动荡期,然后继续有效运转。信任是一切的基石。 ## 3\. 总想亲自下场 因技术而晋升的技术领导,通常在技术方面有较强的能力,甚至是出类拔萃。这种技术能力的优势在作为普通员工时可能会给一个人带来显而易见的影响力,然而当这个人成为经理后,有时反倒可能成为他做好领导工作的障碍。因为他可能经常拿自己的技术水平衡量团队的其他人,觉得这个任务张三很难处理好,那个任务李四铁定犯错误,于是不放心把事情交给别人来做,或者交给别人做了又因为看到要出错,忍不住自己伸手去做,把分给团队成员的任务再拿回来自己做。 当一个技术领导因为担心下属会出错或不能按自己预期完成任务而收回这个任务自己做时,要么会让下属自己觉得自己无能(或者让下属猜测领导认为自己无能),要么会让下属觉得这个领导越俎代庖不干他该干的事儿,这就会产生严重的不良影响,不利于团队成员自己成长自己解决问题。同时,这位技术领导也会因为过分关注技术细节而忽略其他的组织、领导工作,导致只见树木不见森林,严重影响整个团队的效率和生产率。 ## 4\. 担心丢掉技术失去竞争力 有些技术领导刚刚开始带团队时,往往还停留在过去的角色里,认为技术是唯一的立身之本,担心放弃了技术细节后,自己会丧失竞争力,会贬值。比如会担心万一自己从这个经理岗位离开,就可能又找不到管理岗位的工作,又因为生疏了技术而找不到技术工作。所以,他们会陷入纠结中,一方面想提升整个团队的工作效率而不得不做很多的组织、激励、领导、协调等工作,花费大量精力;另一方面,这些非技术方面的工作会占用他们大部分精力,导致无暇深研技术而产生焦虑。 其实,此时更重要的是视野。你可能对技术细节了解得少了,但对技术方案选择、技术类别、技术的影响力等可能了解得更多,会形成更为广阔的视野,这足以弥补你在技术深度上的欠缺。而且,其实你之前的达到的技术深度也仍然存在,甚至会发酵,会反过来滋养你的技术视野,因为如果你之前在技术上达到了一定深度,一定在学习上摸索到了适合你的规律,这种学习模式,会帮助你更快的了解更多技术,让你从广度上来丰富自己,这虽然不能保证让你在技术方面更有竞争力,但也会帮助你将技术竞争力维持在某个水平。 最重要的,除了技术,你在管理岗位上的锻炼,将来一定会带给你更深层次的变化:要么你培育了组织能力领导能力;要么你认识到自己更适合做什么,对自己的才干和能力边界有更为清晰的认知,而一旦有了这种认知,再做其他事就会得心顺手——因为,你会更容易找到自己喜欢做的事情并带着热忱义无反顾地投入进去。 ## 5\. 不理解岗位职责 很多从一线晋升的技术领导,一开始不理解经理这个岗位的职责,不知道具体要做什么、怎么做、公司对该岗位的考核指标、上级领导对这个岗位的期望,这些都是问题。虽然有些公司有明确规定项目经理、部门经理等的岗位职责,然而没做过,看那些毫无生气的官方描述也是挺蛋疼的,看着都是汉字,每个字都认识,但看了就是不知道不明白什么意思,和没看差不多。更何况,很多公司其实并没有这玩意儿,或者根本就是从网上或别的公司抄来的,是否适用都没人管。 比方说你看到项目经理的职责里写了这么一条: > 确保项目目标的实现,领导项目团队准时、优质地完成全部工作。 对你有实质性帮助吗?再比如下面这条: > 与客户沟通,了解项目的整体需求。并与客户保持一定的联系,即时反馈阶段性的成果,和即时更改客户提出的合理需求。 对你有实质性帮助吗? 即便你通过公司的文档了解了岗位职责,对工作范畴有了大概的认识,仍然还是会迷惘:*具体我该做哪些?做到什么程度有没有标准?哪些轻哪些重哪些是考核的内容哪些对我的绩效考核影响大?* 问题太多了。你知道要作为经理要和客户沟通,然而这并没有什么卵用,并不能将你眼前的铺天盖地的未知揭开,你只有慢慢去试才会知道水有多深,你是从一个工兵的角色忽然就变成了排长,以前的经验几乎没用了,你还没有掌握新的关于项目管理和人员管理的经验就必须面对那些事情了,这是一个“负位”的过程,你得自个儿慢慢摸着石头过河去适应。 > 注:人们的实际能力,往往低于他所坐的位置,也就是说,有负于他所坐的位置。这种现象被称为负位。 你需要一个可以伴你成长的同级或高级同事来充任你的mentor(导师),帮助你尽快熟悉工作中的各种事情,帮你答疑解惑,必要时为你指点方向。 ## 6\. 怕犯错 因为对岗位职责不甚了了,眼前一片茫然,这个时候就会担心犯错,担心一不小心搞错了什么事儿领导不待见,又因为对上级不了解而很难明了现在的上级是什么行事风格、如何要求下属,自然也担心如果自己的风格和领导不匹配是否会让领导对自己的错误过激反应。 还有,也可能会担心领导对自己评价不好——因为你在负位过程中,很多事情做起来没那么得心应手。但你有这种担心的时候,就会愈发想把事情做好,然后,要么迟迟不能决策,要么劲儿用过了把事情搞错了,最后反倒真的不好了。 人非圣贤,孰能无过。犯错也是一种成长,没有犯错就很难成长,不用怕,错误也是一种财富。 ## 7\. 担心下属议论自己 新晋升的技术领导,往往会因为以前没有做过,而特别在意自己是否做好了,既会担心领导对自己的评价,也会担心下属对自己的看法。这个阶段,风吹草动都会让人浮想联翩。心思较多比较敏感的人,还可能会因过于忧虑而导致神经紧张。 其实,大风吹倒梧桐树,自有别人论短长。无论你做什么事情,都不可能符合所有人利益,总是有人会议论的,因为这个而战战兢兢实无必要,还是信奉这句话吧:走自己的路,让别人说去吧。 ## 8\. 不知道怎样培育领导力 别人为什么听你的?你怎么样影响别人使得别人朝着某个目标努力? 这是一个又大又难的问题。对于新任的技术领导而言,有些人会错误的以为任命产生领导力,但多数人慢慢会意识到,领导力和任命没什么直接关系。那么,领导力从何而来? 当你作为一个程序员时,相对他人的技术优势可能让你说话更有力量;当一个团队的各个成员技术水平相当时,技术对领导力的贡献就几乎可以忽略,相互之间的关系会更多的影响一人的领导力;当一个程序员走上管理岗位,他的技术能力很可能对领导力没什么特别的贡献,甚至可能会损害他的影响力——假如他事事亲为的话。 温伯格的技术三部曲之一《成为技术领导者》里面对这一点有详细的论述,感兴趣的可以参考,我在我的微信订阅号“程序视界”中推荐过。这本书是每一个想成为技术领导的技术人员都应该阅读的,它是你成为技术领导者之路上的明灯。它这么定义领导的职责: > 领导的职责就是创造这样一个环境,每个人都能在其中发挥出更多的能力。 如果你能理解这一点,对培育你的领导力会有相当的助益。以此为目的,技术领导应该是一个公仆的角色,为团队成员服务,有人需要资源就给协调资源,有人不明白目标就帮助他明确目标并制定其个人目标,不同的模块间接口无法确认就组织相关人员讨论,张三任务完成的好就明确肯定,李四对自己所从事的技术方向感到迷惘就协助他找到归属和发展方向,有人忽然情绪低落效率低下就及时发现背后的原因并在必要时提供支持……大家和你一起同甘共苦完成了一件事,并且都看到并认可你的努力,你就具有领导力了……总之,你做一切事,创造一个让大家各尽其职各展所长的环境,让这个组织运转正常,让目标得以实现,那你的领导力就形成了。 ## 9\. 不能接受绩效比当普通员工时差 前面我们说从技术岗位晋升到管理岗位后,这个新上来的技术领导,往往是负位的,所以,在上任后的那个绩效评估周期内,他所得到的评分,如无意外,肯定是比他做普通员工时差的。 嗯,这种结果往往会让这位同志不能接受。你想啊,我当普通一兵时次次得A,现在当了经理,人都累成马了心都操成渣了,结果却是C!有情绪很正常,没情绪才不正常。但其实,也应该换个角度想想,在技术领导岗位上,其实你是从0开始哦,有一个爬坡曲线也是符合逻辑的。 ## 10\. 特定的事情可能会带来挫败感 有时我们也会碰见一些具体的事情,不知道怎么做。 比如公司是结合职级评定和年终绩效决定一个人是否升职加薪,那张三没有参加职级评定但工作结果很好,从各方面看都应该加薪,此时你怎么操作?传说公司有人操作过非正常流程给员工升职加薪,可是你不知道怎么做。问谁?怎么说服你的老板支持这么做?怎样绕过公司的常规流程? 比如你们每个月都要向高层汇报工作,需要写PPT,而你只有一个管理部门给的PPT模板,模板里除了封面和封底只有一页正文,写了几句不痛不痒的话,你要怎么根据这个模板写出你的第一份月度汇报材料? 比如公司规定要定期和下属一对一面谈,你从未有过这方面经验,根本不知道目标是什么、谈什么、怎么谈、如何应对可能出现的问题,想起来就会担心就想逃避,谁来拯救你? 你会面临各种对你来说头一遭的事儿,而多数情况下既没有人show给你怎么做,也没有机会去演练,你只能凭着感觉战战兢兢如履薄冰地往前走,一不留神没搞好,就可能被老板批评被同级嗤笑被下属鄙夷,这样的挫败感可能很难接纳…… ## 11\. 耻于下问 有些新作技术领导的,遇到问题不好意思找人问也怕找领导求助,怕露出自己的无知、短板,怕别人瞧不起,怕显得自己不老练…… 其实不必,谁是生而知之呢?大家都是从不断地学习不断地实践中培育自己的能力的,很多事情你没经历过就是不知道没做过就是没体会,求助于别人是再自然不过的,一般的人也乐于帮助你,不会因为你不懂某个技术某个规则而看不起你,你显露自己在某方面的无知也不说明你这个人能力有问题,人因为不那么高大全而更真实更有魅力。同时,一个人也只有先正视自己的无知,才能更快地进步。 士别三日当刮目相待,无需多虑,尽管前行即可,你明天的成就并不会因为你昨天的懵懂而掉一分成色,相反,你还会获得快速成长的美誉。 ## 12\. 不知道怎么应对变化的关系 当一个程序员成为技术领导后,还会面临关系的变化:原来同级的伙伴将成为下属,原来很难见到的高层成了领导。 面对原来同级的小伙伴,是该故作威严拿起官腔,还是依旧嘻嘻哈哈不分彼此?打官腔公事公办会不会让人指指戳戳认为自己小人得志?不分彼此一团和气又会不会妨碍任务的分配和执行最终什么都很难推动?这也是不大不小的问题。但一般来讲不必刻意端着,就事论事公私分明即可。 新的领导往往Level较高,看待问题的角度和切入点与刚晋升的经理之间有很大不同。通常的情况是,他看结果不看过程,而你往往还在经理角色的转换和负位过程,所以经常会收到批评、否定的信息。怎么办?其实这是一个必经的过程,虽然老板嘴里信里说的都是自己的不完美,但也很少有老板有那个闲心思专门针对你(很遗憾你没你想的那么重要),一般来讲接纳即可。要相信自己正在变好,随着你熟悉规则,随着你角色转换过程的演进,美好的事情很快就会到来。
';

这8种武器点亮程序员的个人品牌

最后更新于:2022-04-01 21:16:20

![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-11-27_56582a78f081e.jpg) (本文曾发表于《程序员》2015.10.B期) 提到段誉,我们就会想起凌波微步和六脉神剑。提到乔峰,我们会想起降龙十八掌。提到王语嫣,我们会想到她惊为天人的容貌和熟知各门派功夫的渊博知识。提到欧阳锋,我们会想起蛤蟆功。提到李寻欢,我们会想起小李飞刀。提到…… 提到Linus Torvalds,我们会想起Linux。提到雷军,我们会想起WPS和小米。提到Bill Gates,我们会想到微软和Windows。提到王江民,我们会想起江民杀毒。提到侯延堂,我们会想起网际快车。提到…… 每一个人,不管是小说中的还是现实中的,被提起时,听者都会联想到和这个人相关的一种或几种能代表他身份的东西,这是身份认同,也是品牌效应。虽然身份不等于人,一个人可以有多重身份,身份只是人内在能力的结果,但我们在实际生活中,却往往是以身份论人、挑人、交人。 作为程序员,如果能有自己的身份和品牌,那是最好不过了,你走到哪里,不管是找工作还是参加活动,都能以某种方式被人记住。所以,**个人品牌**,对于程序员来讲也是非常重要的。 所谓**程序员的个人品牌**,按我粗浅的理解,就是这个程序员所做的那些让人觉得他有独特价值的事情、产品、活动。互联网创业者面对投资方时,不可避免地都会被问到开发团队的构成、曾经做过的产品等问题,也说明投资人对团队的看法,假如你的研发团队成员来自百度、阿里、腾讯、网易等,就很容易让投资人生出信任的感觉。其中道理不说自明。 这次呢,我们就来总结一下,看看程序员该如何经营个人品牌。主要有以下几点: * 产品 * 所在公司和团队的背景 * 开源项目 * 技术博客 * 出版技术书籍 * 持有专利 * 证书(各种工程师证书、获奖证书、学历证书等) * 口碑 好啦,我们一个一个来扒一扒。 ## 产品 虽然说程序员纵马江湖的个人英雄主义时代已经过去,一个程序员个体已经很难独自完成重量级的产品,但独具特色的产品依然是一个程序员最好的证明。 全球第一个走红的P2P音乐交换软件Napster,它的创始人是肖恩·范宁。 知名杀软McAfee的创始人,是约翰·麦克菲。 最早的P2P下载软件BitTorrent,作者是布莱姆·科恩。 豪杰超级解码梁肇新,UCDOS鲍岳桥,江民杀毒王江民,网际快车侯延堂…… 这些赫赫有名的程序员,都是因为他们的产品而被人所知。也许他们离普通的程序员太远,但道理是通的。作为一个普通的程序员,如果你参与过一个知名软件产品的开发,毫无疑问会给你的履历增添一抹亮色。进而,如果你独立开发了一款颇有影响的App,那就更是让人刮目相看了。 ## 所在公司和团队的背景 我们写简历时,都会写上工作经验。招募方挑选简历时,也会浏览工作经验。如果你所在的公司或团队很牛X,往往会给招募方带来深刻的印象。有些单位在招人时都是盯着某个公司的研发团队来的,甚至有的直接去目标公司目标团队挖人。 有一款社交软件叫碰碰,有一阵在微信里也疯传过。碰碰的团队曾通过在微信里投放一些社交小游戏来转化用户,其中有一款小游戏名字叫做**你懂我吗**,你可以发给你的朋友几个个人喜好问题请他回答,看他有多了解你,结果你会发现,你的大部分朋友都回答不出你提供的诸如你的生日、爱玩的游戏、爱吃的水果、爱看的书之类的问题。 是的,人和人之间是很难相互了解的。熟人之间尚且如此,更不用说陌生人了。仅仅靠几分钟或几十分钟的面试,就能真的了解到一个人吗?非也! 正因为人和人之间的难以了解,程序员的工作背景才会变得很重要。假如你在IBM的云计算团队工作过,那华为就可能找到你把你挖走,而至于你这个人是否真的很牛X,其实人家一时半会儿是了解不到的。所以,这个时候,是公司和团队在为你的个人品牌背书,招募方看的是背书者的影响力。 所以,作为程序员,如果你有机会到牛B公司的牛B团队工作,会对你的个人品牌及后续的发展有很大帮助。 ## 开源项目 开源改变世界,这不是一句空话。 很多程序员在开发软件时,都喜欢先搜索一下有没有开源项目可以拿来用。说实话,国内很多牛B公司的牛B软件都是在开源项目的基础上搞起来的,比如做视频的会去用ffmpeg,比如做视频会议的多数都从webrtc改过来…… 假如你能有一个被人喜爱和传播的开源项目,那你一定会被别人刮目相待。退一步讲,你自己没有这样的开源项目,你能参与到一个知名的开源项目中去为其贡献代码,也是值得一说的事情。 Node.js是开源项目,它的创始人是Ryan Dahl。后来这个开源项目非常火爆,Joyent这个公司注意到了Node.js,决定赞助这个项目。Ryan Dahl于2010年加入该公司,全职负责Node.js项目的开发。 关于Node.js,后来因为Joyent的管理问题,几个重要的开发者出走,另立山头,开始了一个叫做io.js的开源项目,其社区一度非常活跃。不过,2015年9月15日,io.js和Node.js再度合体,Node.js v4.0.0发布了。 虽然我们不可能像Ryan Dahl一样牛X,但参与开源确实也是你构建个人品牌的一个途径。 ## 技术博客 其实技术博客和开源是类似的事情,它们都能在一定程度上说明一个程序员的分享精神和技术能力。假如你有一个非常牛B的技术博客,别人也会因为这个而对你的印象加分。 StackOverflow和StackExchange,开发人员都知道(咦,你不知道!!!),它们的创始人,Jeff Atwood,有一个非常著名的博客,CODING HORROR,国内的技术大牛,现在爱奇艺的技术总监陆其明还翻译了Jeff Atwood在Coding Horror上的一些文章,集结成书,其中一本是《高效能程序员的修炼》。 虽然不是每一个人都能像Jeff Atwood那样,但再小的个体也有品牌——作者也有一个技术博客([http://blog.csdn.net/foruok](http://blog.csdn.net/foruok)),学习Qt的人可能会知道。 维护技术博客是相当有挑战的事情,你需要锤炼你的技术和写作能力,还需要有很好的自控力。不过,一旦你坚持下来,收获多多,哈哈,到时你就知道了。 ## 出版技术书籍 OK,现在出版技术图书的门槛已经比较低了,像我这种半路出家的野和尚,也出了《[**Qt on Android核心编程**](http://item.jd.com/11571639.html)》和《[**Qt Quick核心编程**](http://item.jd.com/11587406.html)》两本书。所以,我觉得,有相当一部分人都可以出书。以大多数人的努力程度之低,实在还轮不到比拼天赋。所以,出,或不出,关键在于你是否努力和坚持。 写一本技术书是非常大的挑战,除了坚持和努力,还要求你对所涉技术有全面、系统的了解,还要求你有比较好的书面写作能力,因此,一本认真的技术书籍是一个人能力的一种证明,能够成为你个人品牌的一部分,对你以后的工作和生活都会带来一些便利。 现在很多出版社都通过技术博客寻找技术图书作者,你看看CSDN上有多少博主出版了图书就会明白这一点。所以,维护一个高质量的技术博客,能增大你出版图书的机会。 ## 持有技术专利 哦 My God,这个看起来比较难!我从来没这方面的想法…… 不过,即便是在小公司,开发人员持有技术专利也是可能的。我之前所在的公司,就有两个人拥有专利,还是技术方面的,让我有高山仰止之感。 其实,专利也不是那么高不可攀的事情。Google一下图像处理、视频处理,专利多如牛毛,有的专利看起来似乎也不是那么难…… 还是那句话,你可以试试的。 ## 证书 我把学校、学位、软考、ACM程序设计大赛获奖、PMP等等都归类到这里。 知名大学计算机、数学、电子等相关专业的学位,对刚走出学校的程序员是很好的个人品牌,这和有经验的程序员的工作背景类似。但是随着工作经历的增加,学校和学位的影响会逐年降低。 很多人在学校时就参加软考(计算机技术与软件专业技术资格水平考试),拿到了初级、中级或高级的证书。这些证书有一定含金量,有一部分公司会看重它,比如有些传统的软件公司或国企。 还有的人参加过ACM程序设计大赛或其它的比赛,拿到过奖牌,这当然是极好的。即便有人觉得现在的ACM已经注水,可前几名总还是有吸引力的。 PMP(项目管理专业人士资格认证),参加这个考试要花3000多大洋,熟读PMP Book就可以通关。有些企业招聘项目经理会加上一条:有PMP证书者优先。 还有很多其他的资格或证书,比如微软的MVP…… 总之,有各种各样的证书可以丰富你的履历,给你的个人品牌锦上添花。有的时候,甚至能当做敲门砖来用。 ## 口碑 很可能我们作为一个非著名程序员,前面的哪一条都沾不着边儿…… 那也不必沮丧,这最后一点,真真是一视同仁的,无论你在大公司小公司、无论你高学历低学历、无论你颜值高或颜值低,都可以通过实践来获取。 大多数程序员都工作在一个团队中,会和各种各样的人打交道。你在别人的眼中是什么形象,别人怎么评价你,这很重要。真的,非常非常之重要。 现在的软件公司,人员流动性很高,有些单位的程序员,经常是过两年置换个百分之八九十。在这样高流动性的背景下,你能流向哪里,很大程度上取决于**在既往的工作组织里别人对你什么印象**。也就是说,你的口碑如何。 那么这个口碑,其实是你自己经营、塑造出来的。 假如你留给别人的印象是认真、能干、学习能力强、各种技能强悍、独挡一面,别人提起来你就会点头,“嗯,这人靠谱”或者“嗯,这人iOS开发门儿通,没什么问题他搞不定”,那么,你那些曾经的同事、朋友,在软件江湖里泛舟月下之时,很可能就会想到你,“嗳,这事儿让那谁谁来做肯定没问题”。于是呢,你的各种机会和邀约自然会多了,即便我们一直在小公司奋斗,即便还没有知名产品开发出来,也一样能够自由自在地飞翔。 而假如别人提到你就摇头或皱眉,心里犯嘀咕,“这家伙太不靠谱了”或“事儿逼一个,什么都搞不定还牛逼哄哄”,那估计就算他们身边有工作机会,也断然不会邀请你的。 春耕一粒粟,秋收万颗子。你今天的负责、努力、上进、能钻研、与人为善、乐于助人、有担当,一定会为你树立良好的个人口碑和形象,一定能在将来帮得到你。即便前面7条于我们都是浮云,做好口碑这一点也可以“莫愁前路无知己,天下谁人不识君”。
';

如何快速定位自己热爱的工作

最后更新于:2022-04-01 21:16:18

![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-11-27_56582a77395f6.jpg)  我前几天发了篇文章,“[**月薪3万的程序员都避开了哪些坑**](http://blog.csdn.net/foruok/article/details/49245349)”,有很多朋友看了,反馈很多,我汇总了一下,有两方面的意见比较突出: * 文中说的都是大道理,妇幼皆知,知易行难 * 不喜欢开发,怎么去找自己热爱的事业 感谢所有反馈的朋友,让我加深了对这些问题的认识,我决定再写几篇文章来谈相关的问题。这篇文章要谈的,是**怎样判断你是否喜欢软件开发**以及**怎么去找自己热爱的事业**。 > 庄子与惠子游于濠梁之上。  > 庄子曰:“儵鱼出游从容,是鱼之乐也。”  > 惠子曰:“子非鱼,安知鱼之乐?”  > 庄子曰:“子非我,安知我不知鱼之乐?”  > 惠子曰:“我非子,固不知之矣;子固非鱼也,子之不知鱼之乐,全矣。”  > 庄子曰:“请循其本。子曰‘汝安知鱼之乐’云者,既已知吾知之而问我,我知之濠上也。” 庄子和惠子的这段话很多人都有印象,其中最广为人知的,可能是“子非鱼,安知鱼之乐”,大概意思是不要总是以自己的眼光看待他人。 其实我的理解和庄子类似,就软件开发而言,我认为可以从精神状态对应的外在表现看出一个人是否喜欢软件开发。但从另一方面来讲,我又支持惠子,我觉得我很难去揣测别人怎么判断他是否喜欢自己的工作。因为每个人的经历、学识、家庭背景等都是不同的,这决定了每个人看待问题的角度都不同,做事的方法也千差万别。我可以观察到一个人是否喜欢软件开发工作,但却不能臆测背后的原因,我能做的,只能是从我自己的经验出发来总结一些我认为可行的判断方法,抛砖引玉。 ## 关注自己的感受 喜不喜欢是主观的,是感情、情绪方面的,是一种感受,要了解自己对一件事情的感受,可以通过各种问题问自己做这件事时的感觉,然后分析一下就能知道是否喜欢。下面是我总结的几个问题,通过问自己这些问题,我可以判断我是否真的喜欢软件开发工作。 * 写代码让你觉得时光飞逝如箭还是一秒犹如一万年? * 看到代码是否有“似曾相识燕归来”的温暖? * 隔一段时间不写代码,是否会充满怀念,有想打开IDE写点什么的冲动? * 是否经常有这样的时刻:看着自己的代码,有种“相看两不厌,唯有敬亭山”的喜悦? * 有没有那么一些时候,你看着自己的代码,会不自觉地想:这里或那里改改是不是更好一些? * 当你看到令人眼前一亮的App或网站或其它软件,会不会发出“要是我来做该怎么做”之类的问题? * 你有没有想让别人阅读你代码的冲动? * 你有没有读别人代码的冲动(想看到更好的代码)? * 别人指出Bug、错误或设计瑕疵,你会生气、拒绝还是接纳感激? * 修复一个Bug,你是为这个Bug被解决掉高兴多一些还是为你的代码(软件)更完美而高兴多一些? * 听到新语言、新框架、新系统、开发者大会等相关的消息,你是很想了解还是懒得搭理? * 有技术大咖在你身边出现时,想去结交还是懒得理他? * 看见别人的烂代码,你是吐糟真TM烂然后绕过还是想怎么改好? * 看见别人的优秀代码,会不会羡慕,会不会“想要是我也能写出这么漂亮的代码就好了”? * 当你完成一个模块、功能、系统,解决一个问题时,是有“快感”、“成就感”还是有“终于交差了”的感觉? * 想到你开发的软件可以帮助别人解决问题带来好处你是否感到期待、兴奋? * 你是否想建立属于自己的软件资源(比如工具、类库)? * 你是不是像蜜蜂一样总是把看到的与软件相关的好东西收藏起来? 可能还有很多问题都能帮助我们发现自己是否喜欢编码,是否喜欢软件开发,不能一一列出,欢迎感兴趣的朋友补充。 也许有人觉得“我的每一行代码都是诗,哪怕它们不能Run”,觉得自己超喜欢真是好好喜欢啊,然而章鱼哥早已看透了一切:这厮不但是个自恋狂,还叶公好龙。 我们的问题,是针对已经变身为程序员的兄弟姐妹们的。对于准备从事软件开发工作还没进场的朋友们并不适用。这就好比“你问一个从来没kiss过的人喜不喜欢kiss,问一个从来没XXOO过的人喜不喜欢XXOO”一样,有些事必须得亲身体验了才能知道是否喜欢,理性的分析是木有毛用的。 ## 怎么快速找到找自己热爱的事业 前面我提供了一些问题,用来测验是否喜欢软件开发工作。假如你不喜欢,那么接着往下看,必有所获。 我在我的微信订阅号“**程序视界**”的每周一书栏目里推荐过一本书,书名是《A Life At Work(这辈子,我最想做的事)》(订阅号内回复10007可查看)。这本书非常棒,从soul出发,系统地介绍了找到终身事业的理论和方法,推荐一看。 除了书,我这里提供一个非常简单快捷又相当有效的方法,也可以让你思索怎么找到自己热爱的事业。 ### 从“不想要什么”开始 很多人会说,“我不知道自己想要什么”,OK,是这样,这很正常,我自己也是不断实践不断思考才慢慢知道自己想要什么想干什么。 你不知道自己想要什么,这没什么关系,这是很正常的事情。但假如你想知道自己想要什么,非常想,真的想,那可以从一个问题开始:**我最不能忍受的是什么**? OK,这是一个很好的开始:**当你越清楚自己“不想要什么”的时候,就越能快速接近“想要什么”**。 现在,找两张白纸,一支笔,让我们开始。 两张纸顶端对齐放在书桌上,给左边的纸写上标题“不想要清单”,给右边的纸上写上标题“想要清单”。然后,我们先来完成“不想要清单”。 比如你是一个程序员,你的“不想要清单”可能是这样的: * 我不想天天困在电脑前 * 我不想老是加夜班上线新系统 * 我不想周末和节假日接工作电话 * 我不想老重复做一个东西 * 我不想一成不变地老看着这么几个队友 * 我不想月月拿死工资 * 我不想月光 * 我不想被女朋友说我一辈子就这样了 * 我不想被人指使 * 我不想有Bug时被批评 * 我不想产品经理老TM改需求 * 我不想老是延期交付老是被老板说无能 * 我不想和一帮没水平的家伙共事 * 我不想在Level太Low的领导下干活 * …… 也许还有其它的,嗯,必然还有其它的。自行脑补吧,每个人都不一样。你可以不看我上面列的单子,列你自己的,对,说你呢,别往下看了,拿张纸来列一列。 ### 如何得出想要什么 现在我们要来完成“想要清单”,方法也很简单,对着“不想要清单”,一条一条来找下面的内容: * 对立面是什么 * 你之所以不想要的背后原因 * 这一条对应的情感诉求是什么 按照这些东西,一一找找看,然后大多数人就能完成“想要清单”。比如我们上面的不想要清单对应的想要清单可能是这样的: * 我想要接触更多的人 * 我想要作息规律的工作 * 我想要不断挑战新东西,想要成就感 * 我想要未来越来越有希望,比如职位不断晋升、收入规模上升之类 * 我想要更高的收入 * 我想要更被尊重 * 我想要和牛人一起工作 * 我想要和高水平的领导共事 * …… “想要清单”可能很长,一个不想要可能衍生出多个想要;也可能很短,因为多个“不想要的东西”可能会指向同一个“想要的东西”。没关系,只管做下去 一旦你分析出了“想要清单”,就可以进行下一步了。 ### 成就事件 再找一张白纸来,写上“成就事件”作为标题,然后把纸放到“想要清单”右边。好啦,现在来回忆你的工作生涯中那些让充满热情、真诚投入、感到愉悦的时刻吧。 每个人都会有一些因为有成就感而开心的时刻,比如你帮助客户解决问题后很开心,比如你给同事讲解了一门技术课程反馈不错你很开心,比如你卖出去了一部手机很开心,比如你写了篇文章很开心,比如你做了一道菜很高兴,比如你画了一幅画很自豪,比如你自己完成了一个App很高兴……很多,用心回忆,一定可以找出来。 在寻找成就事件时,重点关注那些“**即便没有物质回报也愿意投入去做的事**”。这些事就是你感兴趣的,能给你带来成就感的,能让你有归属感的,很可能它们当中就有某件事会成为你终身热爱的事业。另外也请特别关注“**做好了给你带来愉悦和成就感的事**”。 一旦你列出了那些成就事件,就停下来,把**即便没有物质回报也愿意投入去做的事**特别标注出来。现在可以休息一下了,待会还有更耗神的事儿做。 ### 寻找你想做的事 好,现在把你的成就事件清单和“想要清单”来比对,看哪个成就事情与你的想要清单中的事项能联系起来。 如果没有能联系起来的,那好奇怪啊——那些曾让你感到有成就感的事、开心的事,居然和你“想要的什么”都没什么关系。如果是这种结果,那可能你分析得还不够,回头再分析一下不想要清单、想要清单、成就事件清单。 反复来,直到能建立联系。 噢天,如果你真的真的没办法建立联系,好了,改天再来试吧。 你到了这里,说明已经找到了你想要的什么与让你开心的事之间的联系了。太好了,把你找到的那些事件、那些时刻单独挑出来,仔细分析,看看哪些事可以作为你的事业来做。假如你找到的不是一个可以当做事业(职业、工作)来做的事情,那就进一步分析这个时刻: * 为什么那时我会喜悦? * 这样的时刻是或然的还是必然的? * 这样的时刻可能出现在哪些工作、职业、事业中? * 这样的时刻怎样才能重复? 通过不断的发问、分析,你可以找到一个热爱的、乐意做的事情、工作。假如找不到,你的工作也不会白费——找不到可能是由于你没有使用正确的方法、不了解其它职业或自我意识能力稍差,而不是没有适合你的事业。这个时候,你有两种选择: * 改天再重复这个过程,死磕自己 * 找职业规划师聊聊 我的建议是等一段时间再重复,如果重复几次都不能找到自己想做什么,那就找职业规划师聊聊。职业规划师有很多方法论和分析工具,可以帮助你梳理自己,找到你想做的事。 ### 去做你想做的事 然而,无论你自己找到方向,还是职业规划师帮你找到方向,这都仅仅是第一步:**定位**。接下来的事情更为重要:假如你的方向与你现在的工作不符,**你能不能真的放弃现在的工作,去做你想做的事**。因为离开现在的工作,很可能就会失去收入来源,生活质量会下降;并且你找到的事,真的去做了,可能也会遇到各种各样的不美好,可能最终又发现不是你想要的。然而,只有亲身去体验了,你才能验证你的分析,才能真的找到你想要的。 如果你犹疑不定,无法成行,还有一个测试可以帮助你思考,下结论。 诺,先看人们在考虑工作时会考虑的9种基本因素: * 工资高,福利好 * 工作环境(物质方面)舒适 * 人际关系良好 * 工作稳定有保障 * 能提供较好的受教育机会 * 有较高的社会地位 * 工作不太紧张、外部压力少 * 能充分发挥自己的能力特长 * 社会需要与社会贡献大 然后,从上面的九种因素里,分别挑出对你来讲最重要的、次重要的、最不重要、次不重要的。一定要挑出来,挑不出来你就使劲死磕自己,死磕死了还挑不出来就算了。 其实这样的测试是帮助你分析你最看重的东西。如果你说你真的挑不出来,那还是慢慢干你的软件开发吧,因为,很多时候产品经理也挑不出来哪个需求优先级最高,都重要,都紧急,对吧,是不是看起来和你很般配,你们再相互折磨折磨,也许到一定时候就能分析出你最看重的因素了。 言归正传再绕回来吧,离开现有工作做你想做的事,其实是相当难的,需要勇气,也需要家人和朋友的支持,祝你早日迈出这一步。 > 注:本文写于10月22日,文中的“成就事件”这种说法,原本我用的是“开心时刻”,周末参加了一个职业生涯的培训,10月26日早起做了一些修订,修改为更专业的说法。 > > 接下来我还想写一篇设定目标的文章和一篇执行的文章,不定什么时候,也许明天,也许后天,也许没个准信儿,但,大约在冬季,就会完成这两篇文章。
';

月薪3万的程序员都避开了哪些坑

最后更新于:2022-04-01 21:16:16

![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-11-27_56582a7535858.jpg) 程序员薪水有高有低,有的人一个月可能拿30K、50K,有的人可能只有2K、3K。同样有五年工作经验的程序员,可能一个人每月拿20K,一个拿5K。是什么因素导致了这种差异?我特意总结了容易导致薪水低的九大行为表现,避开这些大坑,你就离高薪不远了。 ## 习惯即刻回报 他不懂得只有春天播种,秋天才会有收获。刚刚付出一点点,甚至还没有付出,就想要得到回报。技术刚刚掌握,能一边百度一边干活了就觉得该拿到多少多少钱了。找工作先想着多少多少钱,入职了没干几个月就想着要加多少多少钱,干了没几个月,薪水要是没涨,就放弃了,准备通过跳槽加薪,不跳槽的话,往往也会因为没加薪而牢骚满腹,工作敷衍了事。 一个程序员的价值,是通过他带给公司的价值体现的。先给公司带来了价值,然后才会反过来在薪水上体现出自己的价值。公司都很现实,很少会为你的潜力买单,在你还没有体现出价值时就给你很高的薪水。 在生活和工作中,一定要懂得付出,不要那么急功近利,马上想得到回报。天下没有白吃的午餐,你想获得什么,就得先付出什么。唯有种下种子,然后浇水、施肥、除草、杀虫,然后才能等来收获。 ## 缺乏学习热情 很少有哪个岗位的人像程序员这样需要持续不断的学习,软件开发的技术日新月异,而每一项技术又往往博大精深,不持续、深入钻研是很难掌握的,更别谈精通了。如果你对一项技术不能深刻理解熟练应用,表现出来的水准仅仅是能干活、还行,那很难说会有公司愿意为“还行”付出大的代价,只有脱颖而出,才可能备受重视。 假如你对学习、掌握、精通技术没有兴趣,面对不断涌现的新语言新技术新框架没有学习欲望,那但就软件开发这个工作而言,你不但眼下不太可能拿到高薪,将来也不会。在这样一个快速变化的时代,只有不断地学习才不会被抛弃。 ## 不够努力 虽然我们都知道努力学习可以改变我们的技能水平,持续努力不懈坚持可以让自己有所建树,可还是有很多人浅尝辄止,三天打鱼两天晒网,搞两下能Run就放下了。 人和人在聪明才智上的差距并没有想象中大,甚至很多时候,从大多数人的努力程度之低来看,根本还轮不到拼天赋。如果两个人的实力半斤八两的话,热情工作努力坚持的人,一定比较容易成功。 ## 畏难 做事拈轻怕重,不愿挑战。殊不知能力就是在不断挑战不断突破自己的过程中历练出来的。在一个公司里面,经常承担高难度任务的程序员,一定是成长比较快的,薪水增长也一定是比较快的。越是困难的事情,越能体现出个人价值,也越能带给个人成长。 万事起头难,不要害怕困难。事情做不好往往不是因为没有能力,大都是由于缺乏恒心。只要不怕困难,坚持前行,一定会有不一样的收获。 事业就像女人,谁去追求,谁就能得手。金钱也一样。 ## 缺乏责任心 工作上不管什么事儿,反正不是自己的事儿,缺乏责任心,干好干不好都无所谓,对交付承诺、对产品质量都不在意,没什么事儿能让他上心。 一个人的责任心如何,决定着他在工作中的态度,决定着其事业的好坏和成败。如果一个人没有责任心,即使他有再大的能耐,也不一定能做出好的成绩来。 ## 消极,抱怨 工作稍有不顺,就怨气沸腾,这个怎么怎么样,那个怎么怎么样,而我怎么就这样,任务不公平,资源不公平,那谁谁不支持我,那谁谁不配合…… 抱怨不能使事情变好,反之,它会让负面情绪蔓延,蚕食你的精力和时间,让你产出更低。成功者永不抱怨,抱怨者永不成功。立刻停止抱怨,早一分钟停止,你就离目标近一分钟。 ## 没有时间管理观念 每个人的一天都只有24小时,人和人的差别就在于如何利用时间上。 有的人每周都有目标,每天都有计划,早上起来会想今天要做的几件重要的事,晚上会回顾今天完成的事,总结干成了什么干坏了什么,还会有计划的学习新知识新技能,这样日积月累不断坚持,每一天都是高效的,每一天都朝着更丰富更完美的自己前进。 而有的人则漫无目的,走哪算哪,到了公司,上午基本做不成事儿,到下午了还不知道要做什么,晚上也发愁如何消磨时间…… ## 为薪水工作 虽然工作的一大目的是获取薪水,养活自己以及供给家庭所需;但是,这只是工作最直接的报偿,同时也是最低级的目标。 如果我们为薪水而工作,将注定我们是短视的,也将注定受到最深的伤害。假如你看不到工资以外的东西,斤斤计较于薪水、福利、职位等,那外界的些微风吹草动就可能让你像浮萍一样飘来荡去,你很快就会失去平衡,失去信心,失去热情,失去平和,进而在工作时总是采取一种应付了事的态度,能少做就少做,能躲避就躲避,觉得只要对得起自己的那份薪水就成了。长此以往,你追求的高薪水反倒得不到。 我们进入一个公司工作,是为了自己,不是薪水也不是别人,比薪水更重要的,是成长和成就自己的机会。我们一定要明白,公司、企业、组织,都是我们锻炼自己、修炼自我的平台,我们不是为薪水工作、不是为老板工作、不是为家人工作,是为实现自我而工作,是为更完美的自己而工作。 唯有志存高远,方能风行天下。 ## 其实不喜欢软件开发 有一部分人从事软件开发工作,并不是因为喜欢,也没有干着干着从不喜欢变成喜欢。他们可能是喜欢软件开发附带的高薪水——平均薪水比其他行业高。人做一件自己不喜欢的事情时,心理上没有亲近感,不会想着怎样把事情做得更好,往往是差不多就成了,不太可能有精益求精积极向上的追求。因为在做不喜欢的事情时,情感上是拒绝的,情绪上是想逃离的,总想着早点儿完事儿拉倒,每一天去单位时不是充满期待,而是各种担忧、烦躁、畏惧,到了单位,稍有困难或不顺心,就会消极、抱怨、抵触、拒绝…… 做喜欢的事,能最大可能发挥一个人的潜能和热情,会最快速地通向成功成就自己。而做不喜欢的事,一开始就注定了事倍功半,最后也往往会是痛苦不堪或半途而废。
';

怎样新学一门技术

最后更新于:2022-04-01 21:16:13

因为公司缺一个系Web管理系统的开发,我决定挑一个技术栈来学习一下,然后自己来写。我选择了Node.js+Express+AngulaJS+MongoDB这一条技术栈,花了将近两周的时间,做了很多小demo,写了一系列博文,终于基本熟悉了Node.js、Express、AngulaJS、UI BootStrap、CSS、HTML、MongoDB、Mongoose等内容,觉得可以开始写我的Web管理系统了。 兴奋啊,让兴奋飞一会儿。 之前公司有来过一个从没做过开发的同事,在学习与实践的路上遇到一些问题。最近有一个来实习的同事,也在学习中。结合我自己的学习过程,感慨良多,遂成此文:怎样新学一门技术。 注意我的用词,是“**新学**一门技术”,而不是“学一门**新技术**”。我想强调的是再一次学习这件事,而不是强调技术是新的。因为你有得东西跟着学,就说明技术其实已经不新了。扯起淡来收不住,还是别展开了吧,下面就正经八百地来总结一下,水一水。 有很多条,我们一条一条过吧,今天没吃药,感觉萌萌的,就说到哪里是哪里了。 ## 选择什么技术栈 每一个技术栈都有存在的理由,都有最适合使用它的场景。某一个技术栈最适合解决某一类问题,你选择它有时是因为它适合解决你的问题,有时是别人觉得它适合你或者你的问题,总之你一定有个理由,也许你只是想用用不同的技术。这些都不重要,重要的是,你终于开始了学习之旅。 对于我学习基于Node.js的技术栈,有两个原因: 1. 我以为它能轻松胜任写一个Web管理系统这类任务,而且后续还可用于后端服务 2. Node.js + Express + AngularJS + Mongoose + MongoDB这条路,一门JavaScript基本就贯通了前端后端 ## 了解你的问题和技术栈的特点 我们新学一门技术,往往是为了解决用现有技术栈不太容易解决的问题。因此,很有必要了解你面临的问题,看看解决问题的关键在哪里,可能的路径由多少。然后呢,就要了解备选的技术栈能做什么、擅长做什么、有什么公司什么产品使用了它,这些产品的特点和规模与你面临的问题有没有可比性。 这一点其实和前面的“选择什么技术栈”是相辅相成的,甚至可以合并同类项。 ## 列出待学习的技术点 熟悉了待解决的问题,选择了一个技术栈后,就要静下心来,进一步深入了解技术栈,看看究竟这条路上有多少技术点是必须要学的,把它们列出来,一定要列出来,这样才可以一个一个来学,不至于学着学着忘了这个漏了那个。 每一项技术,对学到什么程度也应心中有数。当然对于从未有过开发经验的人来讲,怎么讲可能都是心中忐忑忑,不过没关系,且去学就是了。后面还会讲到。 ## 寻找合适的学习资料 互联网时代,知识盈余,信息过量,你想学什么东西,Google或百度一下,有关联的主题成千上万,没关联的主题万儿八千,总之信息浩如烟海,而我们却如落水的蚂蚁,实在有点浩淼水面终生难渡之感。无力啊。 学过C,学过C++,学过Windows编程,学过MFC,学过Python,学过Qt,学过JavaScript,学过Java,学过Android,学过SQL,学过Node.js,学过Objective C…… 对我来讲,我觉得一本好书是最好的开始,我每次新学一个东西,第一件事就是了解有什么书,而且我一定要买纸质的。所以,我的书越积越多。这次学习NEAM(Node.js+Express+AngularJS+MongoDB),我买了《Node.js+MongoDB+AngularJS Web开发》这本书,觉得挺不错的。 一本系统讲述某项技术的书,可以让你少走好多弯路,短时间觉得过程漫长,长远看却是捷径。 另外最好的资料就是某项技术的官方SDK,一般技术都有文档,API,Quick Start,Guide,Tutorial,Demo,Example……这些资料是顶好顶好的。不过我觉得结合书对照着来看效果更好。 如果能在网络上找到前辈们写的系列文章,也是蛮好的。但很多文章就是蜻蜓点水或只涉及某一细节,适合对该技术有了一定了解再去看。不过呢,现在有很多人在分享,质量高的文章确实也很多。但是呢,对新学一门技术来讲,来回寻找、判断、选择,时间成本太高。 网络上还有很多视频教程,也可以一看。 总之各种资料都会有,根据你自己的学习经验,选择最适合你的那种。 ## 坦然面对问题,不放弃 要说新学一门技术不遇到问题,鬼也不信呢。 比方说你换了技术树,原来是玩儿C的,现在改玩J2EE或者C#,能不遇到问题吗。比方说你原来玩HTML和CSS,现在改Swift……比方说……比方说…… 当然也不全是技术问题,还会有心理上的问题。比如你急于看到你的问题能够三两下就解决,一旦过个三五八天你还不能用新学的技术解决实际的问题,就开始怀疑了,就不自信了,就自我否定,就打算放弃了,就有换个技术试试的想法了……我想说的是,软件开发这里,没有哪个技术你学个三两天就能用它干出点儿名堂来,两三周都难呢。所以心要静,屁股要沉,意志要坚定,把一个坑挖出水来再说。 有时可能公司或领导不给你那么多时间,但是这也不是大问题。8小时之外你还有很多时间,还有周末,总之你要是想坚持,就一定有时间,时间就一定不是问题。 也许你有个阶段会笃定“我实在理解不了掌握不了这个技术”,真的想放弃,但我想还是坚持多一秒吧,拐过这个路口就有彩虹了。 你不放弃自己,就没人能放弃你。 ## 保持对最终目标的清晰认识 我们最终要做出一个什么东西,具有什么功能,解决什么问题,一定要明确下来,这样才会有稳定的目标。 宏大的远景会让人身心澎湃,会带来源源不断的动力。 只有树立明确的目标,才能进一步往下拆分出一系列细小的子目标。最好把大目标分解,列到纸上或记到电脑上,不管怎么样,记下来很重要,而且要放在容易看到的地方,每天都看看,想想,保持敏感、紧迫感、期待感。 ## 不断实践,积累自信 新学一门技术,不断的小练习,持续的实践是非常重要的。每学完一个知识点,都要动手写点代码来看看效果。有时一个Hello World都让人激动不已。 每一个小的成就都会传达给你正能量,加强你的信心,都会让我们离目标近一点。 按我的经验,最好一两天就能有小的demo完成,这样刺激就会不断,High不停歇。要是你看上十天书才动手写一个demo,那可能还没到十天呢,就放弃了。 目标太远看不到产出和成长,就非常容易懈怠。即刻的成就感刺激很重要,它能推着你前进。如果你能把每个小demo都和前面从大目标拆分出的小目标结合起来,形成每一个小demo完成大目标的某一个细分小目标的话,那就太好了! ## 记笔记 毋庸置疑,学习过程中会遇到各种问题,又因为我们是奔着解决问题而去,很多知识原本是成块的,而我们只用到某一点,或者某个技术还有很深入的内容而我们只是蜻蜓点水…… 总之我们十二万分有必要记笔记。笔记也不需要那么正式,也不一定要遵循什么特定的格式,也不一定要多么美观,只要能易懂即可。 笔记可以记录下列内容: * 学习过程中搜集的资源链接 * 遇到的未决的疑问 * 那些很宽而我们用的很窄的知识点 * 那些能进一步深入而我们浅尝辄止的知识点 * 某个功能可能存在的其它实现方案的蛛丝马迹(要知道,知道茴香豆的“茴”字有几种写法对技术人员来讲可是极好的) 待你长发及腰或者胡茬胜草,就可以回头整理你的笔记,回顾并进一步学习。这样对新学的技术的理解就会更进一步。 ## 步步为营,持续推进 新学一门技术,是还走马观花好还是细嚼慢咽? 前一阵子有个哥们买了我的书《[**Qt Quick核心编程**](http://item.jd.com/11587406.html)》,我们反反复复邮件来往了N次,他让我非常意外也非常感动。这个哥们每次邮件都会提出针对书中细节的疑问,附上拍摄的图片,从图片可以看到用手写在书上的标注,还能看到用绘图工具加的标注,我一下子就震惊了,这是多么认真对待新学一门技术这件事儿的人呢!这哥们最终指出了书中的四处有效谬误,我记录了下来,准备再次印刷时修正过来。他告诉我,他在新学技术时,书里的代码都要照着敲下来验证! 我自己在学习时,也会隔三差五跑一跑书里的代码,但绝对没有这位朋友这么认真,他让我深感惭愧。 对于初学编程的人来讲,我建议向这位朋友学习,步步为营,持续推进,不要怕慢,要求稳求细求扎实。多花些时间是值得的,良好的学习习惯养成了终身受益。 对于有经验的程序员,在新学习一门技术时,也要尽量避免走马观花,要力求落到实处。当然此时我们往往很急切地要奔向目标,也有能力判断哪些知识、技能是解决问题所必须的,可以挑着看,有针对性地学,但是,对于分拣出来的这些点,就要持初学者的虔诚态度,一步一个脚印,稳步前进。 ## 投资自己要放开手脚 程序员最本质的财富是自己,挖掘自己的潜能,让自己不断增值,这是最要紧的事儿。像学习技术拓宽知识领域这种事情,再怎么花钱都不过分啊。 有的朋友可能因为经济原因,在学东西时不大愿意买书、买视频、买资料、买VPN(很多技术资料都在国外站点),觉得不值当。 你像Android开发的在线文档、AngularJS的文档,在天朝基本都不能正常访问,都得翻qiang或使用VPN,但是免费的翻qiang软件就像多情公子段誉的六脉神剑时灵时不灵,来来回回找啊试啊特别浪费时间,而你买个靠谱的VPN,一年也就一两百块,非常划算。 还有就是书,有的影印版的按美元定价,折成人民币好几百,不过也是值的。知识无价。 在增值的方向上投资自己,才是最明智的。 ## 跨越心理障碍 其实新学一门技术的有两类人: * 没有开发经验的新手 * 掌握了某种技术的人 这两类人在新学一门技术时会有不同的心理感受,也会遇到不同的问题。 对于没有开发经验的新人,进入到一个公司才开始学习开发技术,会有比较大的压力,因为什么都不懂,有时别人说的词语都理解不了,巨大的未知领域会带来巨大的压力。有些人喜欢挑战,会特别兴奋,每天都自High到不行。有些人比较容易自我否定,碰一次壁就收缩一下,碰多了就跟无花果干似的皱得不行毫无生气。 其实呢,我没学过,不知道,不会,这很正常,绝对是正常现象,不必为此忧虑,有智慧的人也不会因此看不起你,因为大家都这么过来的,没哪个家伙娘胎里蹦出来就能开发出一个App来。遇到问题少关注“别人怎么看我”、“我这么差”、“我搞不定”、“我好难受”这些负面的东西,多想怎么解决,积极尝试解决问题,这样才会越来越好越来越好。 有过项目经历的人在新学一门技术时,通常会有急于求成或错误预期这方面的问题。因为有了一定经验,就会觉得再学别的什么应该手到擒来易如反掌,往往会期待三几天就能搞出点成绩来,领导上也会有类似的期待,而实际上,这种浮躁的心态往往会导向不好的结局。你想啊,哪一项技术是那么容易的,随便搞搞就能搞定? 我2014年其实动过学习Node.js技术栈的念头,在网上看过几天资料,没搞定就放弃了,当时就是因为错误的估计了新学一门技术的难度导致心态浮躁,在预期结果没有如期到来时很容易就动摇了。 所以呢,有经验的人,新学一门技术,就要努力放空自己,让自己归零,这样会比较容易学进去,坚持下来。 ## 坚持,坚持,再坚持 你以为我是凑数的吗?重要的话说三遍,坚持很重要,所以要坚持,坚持,再坚持。这是最后的制胜法宝。
';

程序员被人喜欢的13点原因

最后更新于:2022-04-01 21:16:11

林语堂有提到不被人喜欢的十种原因: > 一、腰有十文钱必振衣作响。  > 二、每与人言必谈及贵戚。  > 三、遇美人必急索登床。  > 四、见到问路之人必作傲睨之态。  > 五、与朋友相聚便喋喋高吟其酸腐诗文。  > 六、头已花白却喜唱艳曲。  > 七、施人一小惠便广布于众。  > 八、与人交谈便借刁言以逞才。  > 九、借人之债时其脸如丐,被人索偿时则其态如王。  > 十、见人常多蜜语而背地却常揭人短处。 我们反过来看看,作为程序员,哪些特质容易招人喜欢,让我们试试看能不能做一个被人喜欢的程序员。 * 编码又快又好 * 程序稳定Bug少 * 积极对待Bug和提Bug的人 * 代码易于阅读 * 提供易用的软件衍生品 * 少抱怨 * 能快速搞定一堆烂事儿 * 勇于承担 * 技术牛逼却为人谦和 * 乐于助人,诲人不倦 * 乐于学习,视界开阔 * 积极分享 * 干净 ## 编码又快又好 程序员要想被人喜欢,这是必备的哦。如果你编码又快又好,除了妒贤嫉能、不能保持平衡的那些个别人儿,大部分人都会喜欢你。 ## 程序稳定Bug少 编码又快又好,让你具备了被人喜欢的基础,如果你的程序还能又稳定Bug又少,那,哈哈,别人想不喜欢你都难啊,你的领导、你的开发同事、你的测试MM、你的产品团队、你的客户,恐怕没一个人不喜欢你哦。 ## 积极对待Bug和提Bug的人 再牛逼的程序员开发的软件也会有Bug,即便当时没Bug,也可能过上几年因为不再能满足变化的需求而被提Bug…… 所以,如果你能积极地面对Bug,闻过则喜,拥抱提Bug的人,接纳Bug,不说“不可能”、“在我这儿好好儿的”、“你环境有问题吧”、“你确认你操作对了吗”之类挑起战火的话,你就会受到大多数测试MM和非开发团队的干系人的喜欢。 ## 代码易于阅读 代码首先是给人看的,不同意的,先去找个烂尾项目的代码读上一个星期再回来。 代码要给自己看,也要给开发团队的成员看,还要给同行评审,还要给后续维护的程序员看(除非你永辈子不离职),所以,一定要易读。 代码是否易读,和变量命名、函数命名、模块划分、注释、缩进等都有很大关系。如果你半个月之后就看不懂当时写的代码,那肯定是不易读的,趁早改掉它。另外我还有一个体会,不要写太巧妙太聪明的代码,他们一定是不易阅读和维护的。 ## 提供易用的软件衍生品 假如一个程序员不仅提供可执行的软件,还能顾及周边,随着软件提供给测试、产品、UI、维护等相关干系人可用的文档,那他注定会被人喜欢。比如送测时给测试人员实现的功能列表、修改的Bug清单,发布时给维护人员可用的安装指南和常见问题处理建议,这都是非常非常好的。 ## 少抱怨 有一本风靡世界的书,《不抱怨的世界》,教人怎样减少抱怨或不抱怨。假如你能在生活和工作中不抱怨,那自然是极好的,不但自己可以更有效地处理各种问题,还能向别人传递正能量,带动别人一起向积极的方向前进。很多程序员会有“这个架构很烂”、“那个代码很烂”、“烦死了”、“测试啥都不懂”、“产品整天乱改需求”之类的抱怨,这些不但抱怨无济于事,还可能磨损、破坏相互之间的关系。抱怨是最无用最消极最消耗能量的事儿,于事无补不说,还会慢慢地把自己变成嘴上说的那个形象。减少抱怨,皆大欢喜。 ## 能快速搞定一堆烂事儿 这是一种了不起的能力。程序员的工作环境往往没那么理想化,新功能开发、需求不明确、已提测版本的Bug、已发布版本的用户反馈、张三的求助李四的要求、第三方团队的沟通与配合不畅……各种问题,纷至沓来,经常让人应接不暇。于是有的程序员焦头烂额,满心怨憎,举步维艰,假如有那么一个程序员,事事从容淡定游刃有余,结果自不必说。 ## 勇于承担 有些程序员有能力,但不愿意主动承担事情,怕负责任,怕麻烦,遇事能推则推。有些程序员不自信,老担心自己搞不定,不敢独自承担某个任务,不得不接手时也是前瞻后怕顾虑重重。假如你能给人干脆痛快的感觉,相信必然被多数人喜欢。再者,如果在出现问题时,你还能不回避不推诿,直面并积极解决问题,那你想不被人喜欢都难。 ## 技术牛逼却为人谦和 相当一部分人会因为自己在某方面具有优势而看轻比自己差的人,遇事颐指气使或出言不逊,这绝不是好的习惯。仰人鼻息、被人看不起、被呼来喝去……都是非常糟糕的体验,很难说有人会因为你  这样对待他而喜欢你。即便有非一般的人物能够表面不动声色或维持好颜色,内心也早已把你骂得狗血淋头了。 不同技术水平的人,不同职位的人,在人格上都是平等的。我们要了解并践行这一点,谦和待人,与人为善。 ## 乐于助人,诲人不倦 “地狱不空,誓不成佛”,这是地藏菩萨的宏愿。 观自在菩萨,循声救苦,度一切苦厄。 要是要求一个牛B的程序员修炼成这样,那他肯定是,“臣妾做不到啊”。但是,别人遇到技术上的困难问到你这里,好言好语答疑解惑,却是完全可能的。帮助别人,不但愉悦自己,也可能在交流的过程中加深对知识的认识和理解,两全其美。你帮助过的人,多数也会喜欢你吧。除非你是以施舍的姿态来对待别人的求助。 ## 乐于学习,视界开阔 共君一席话,胜读十年书。 我们喜欢和视界开阔、见解独到的人聊天。而唯有乐于学习,闻道心喜,才可能视界开阔。 ## 积极分享 为好技术好工具好平台好XXX布道,大家好才是真的好。 ## 干净 一头乱发,油腻不堪,头屑乱飞,满脸黑线……这是武侠小说中很多游戏风尘的世外高人的形象。不过,即便你是很牛B的程序员,也不要这样来显示你的与众不同。 没有人希望和一个浑身散发异味的程序员待在一起,不要求你有多丰神俊秀卓尔不群,只要干净整洁即可。 恐怕这是最容易做到的一点了。 * * * 罗里吧嗦这么多,其实很简单,别人提起这个程序员时会说,“技术不错,人好,做事靠谱”,你就真的是被人认可并喜欢了。
';

项目进度估算难题

最后更新于:2022-04-01 21:16:08

程序员要面临的挑战千千万,项目进度评估是有史以来就存在而且到现在也没有完美解决的重量级问题。 我曾发过一张暴漫,描述项目行进的过程,叫做“[**软件项目9步神曲**](http://blog.csdn.net/foruok/article/details/46678099)”。我还专门写了一篇文章,“[**乐观的程序员**](http://blog.csdn.net/foruok/article/details/47079003)”,里面也提到了这个。感兴趣的可以点开链接跟过去看看。 项目进度这个坎儿其实又可以拆分为两个: * 工作量评估 * 项目执行与评估 前一阵圈子里流行一篇文章,题目是“做一个这样的APP要多久”,类似的版本还有“做一个这样的网站要多久”、“做一个这样的APP要多少钱”、“做一个这样的网站要多少钱”…… 多年的软件开发经验给我施了墨刑,在脸上刻了三个字:“程序员”,所以我走到哪里都会被识破身份。嘿嘿,都不用介绍了。这不,上周我去洗车时,就被一个兄弟认出来是搞软件的。然后呢,他就问我,做一个点餐的APP要多少钱。我马上一脸黑线,他又说,就是那种很简单的,送外卖用的,这边点一下,那边收单。就要最简单的,他强调。 那几天西安正是持续高温,悟空都把西安错认为火焰山了。我和那个小伙子站在39度的夕阳残照下,沐着水泥地面源源不断升腾的热浪,认真的讨论“做一个这样的APP要多少钱”这个严肃的话题。从美团外卖、饿了么、百度外卖这些现成的大家伙,说到微小的微信公众号,又说到自己实现的各种问题,比如客户端的样式、后台的功能、服务器的托管……我们断断续续地聊了将近半个小时,最后互加了微信,他送了我一张5元的洗车抵用券,我告诉他最简单的外卖App也得几万块,我还告诉他其实做一个App不是最花钱的,最花钱的是营销和推广。OK,他同意这一点,也表示很难。 后来呢,没有后来了,我走了…… 这是个有意思的小插曲,我今年已经遇到至少三次了。还记得的一次,是一个朋友问我开发一个电商网站要多少钱,说“不用太复杂,能买能卖跟京东的功能差不多就成,界面不用太炫”,我最后说京东做了好多年,花的钱数到手抽筋,作为一个个人电商的尝试者,再简化,也得花个十来万吧。 还有人问我开发周期的…… 有时候看着发问者期盼的眼神和殷切的表情,你不告诉他一个数字就会在良心上受到煎熬。我这里有一个类比,就好像你觉得自己犯了病,莫名其妙但表现很严重整个人都不好了,于是巴巴地跑到高新医院挂了个专家号,人家告诉你你没病,你几乎不能相信,总还得再跑几家医院再找几个专家,直到有一个专家说,“哎呀你摊上大事儿了,直男癌”,你才会如释重负,说,哎呀,原来我真的有病。有时候我(程序员)就是那个必须说没病的人有病的专家,不说不行啊,你得让他心里安稳下来。 扯太原去了,先打住吧,我们扯正事儿。 其实呢,什么是正事儿,像“做这样一个APP要多久”这类问题,本质上是“根据需求评估工作量”这一经典问题的变体。而“做这样一个APP要多少钱”这种问题,如果前一个问题解决了,它就不是问题了。 作为程序员,也可能你在生活中没那么高的频次被一个行乞者拉住问你做一个乞讨O2O的APP要多少钱,但在工作过程中,你肯定经常被这种问题挑战。那么,问题来了,你都是怎么应对的? 嗯,你先想想看……我要接着往下逛。 ## 工作量评估 工作量评估,到底该怎么做?以摊煎饼果子为例,一个煎饼果子,鸡蛋、火腿、辣子、葱、生菜,无论怎么配置,熟练工做一个也不超过5分钟。可软件就不一样啊,每一个产品每一个项目都是不同的,即便可以代码复用,也总是存在需要重新设计重新开发的部分,否则,这个项目就不可能单独列出来给你做!而只要是新的,哪怕一部分是新的,就一定存在你不试不知道的梗,就一定有出乎你意料的问题蹦出来,最终在这个项目上花费的工作量,就一定和你估计的不同。 **在一个项目开始之前评估的工作量,一定是不准的**,这是天条。那那那,为什么还要评估呢? 从需求方,从客户,从领导,从市场,从开发,从测试,从产品,从UI,从客服……从各个口的干系人来看,都需要一个时间点,所以,必须要评估出工作量,才可以给出一个时间点,然后大家才能转起来,各做各的准备,为着一个共同的目标去努力。 但是,在完成之前的工作量评估都是不靠谱的,所以,初始的工作量预估,只是为了制定一个粗略的计划,然后通过执行计划达到目标。 一个项目的工作,必然是由**已知可评估部分**和**未知待实践部分**组成的。对于已知可评估部分,过往的经验可以帮助你做出相对准备的判断,比如你要实现网站后台管理系统的管理员权限,管理员、角色、权限这种通用的做法,放在哪里都差不多,你做A站和B站,这块的工作量基本相同。而对于未知待实践部分,则次次不同。因为每一次的未知都和上一次不同(哭了,相同就不叫未知了),而未知即风险。软件项目的风险,相当大一部分就在这未知里面。未知的东西,不试不知道。评估这回事儿,却往往是拿知道的推测不知道的,还总要给自己找这个那个理由来说服自己也说服别人。其实根本就颠倒了,绝大多数时候,已知经验预测不了未知的未来,我们只能走走看看,试探着前行。 那么,工作量评估到底该怎么做?我有一些不成熟的经验,说说看。 我们的经验都是过去的,用过去的经验评估不了未知的未来。这是必须接受的现实。当我们分析一个新的项目时,一定是会从经验出发,拆分出根据经验可以把握的部分和看不透的部分。可以把握的部分,可以用已有经验类比,将功能从大拆小,考虑实现的方案,对每一个小模块都进行实现上的设计和考虑,估算一个时间。这样叠加起来就可以得出大概的工作量。 对于看不透的部分,也还是要进行估算。尽管这样的估算百分百不靠谱,从让相关干系人安心的角度讲,也还是要有一个结果。这是软件工程必须要做的工作。 通常老板或领导上给我们描述一个东西,然后就会问:“做这么样一个软件需要多长时间?”并且希望我们像士兵用“是”或“不是”回答长官提问一样,立马用洪亮的声音喊出“3天”或“20天”这样的答案。我们有时已习惯这种现实,不能立刻给出估算自己都会着急。其实,要对未知的、难以把握的部分做估算,需要花费相当的时间,一定要经过仔细推敲才可以答复相关人员。有时甚至需要先花两天做一些技术实验才成。所以,当我们心里没谱时,就先说明这一点——我不能立即给出评估结果,然后申请一些时间(可以是1天、2天、1周等)来分析,约定什么时间给结果。我相信大部分的领导都能够接受这样的方案。 一旦我们有了专门用于评估的时间,就可以多多考虑一些问题,比如看不清的部分,它的复杂度是什么样的,可能会用到什么新技术,新技术的学习成本是高是低,技术难点在哪里,有没有什么好的办法解决技术难点……考虑了这些问题,我们再去回顾以往的工程实践,有没有哪个项目哪个产品当时在做时也存在未知的部分,那时我们实际花费的工作量和预估的工作量之间的比值是多少,我们怎么做的? 总而言之,虽然未知的东西难以用既有经验准确估量,我们还是要硬着头皮去做。做的时候,一定要有一个心理预期,不但自己要有结果可能相当不准确的预期,也要告诉项目干系人,让他们接受这种预期。 如果能找到复杂度相当的历史项目,分析出它的数据,就可以对未知部分有一个相对靠谱的估算。这里说的靠谱,不是误差在3、5天内,而是指数量级上的相当,比如你估算要花2个人月,实际花了3个或4个,我认为这也是靠谱的。如果你花了20个,我觉得就不靠谱。当然人月本身也不靠谱(参看《人月神话》),不必迷信它。 有一点要提及的是,对于未知部分的评估结果,还要再预留一些余地。因为既然是未知,总会发生意想不到的状况卡停你前进的步伐,让实际花费的时间大大多于预期。当然,我讨厌那种“把明明20个人日能完成的事儿估算成200个人日,然后再预留200个人日”的做法,这是不能接受的。 **由于工作量评估是基于估算者自身经验,天生就有另一个难点:不同的人会得出不同的结果,有时甚至天差地别。**怎么处理这种情况?我没看到什么特别好的办法,最二的办法就是去掉最低和最高然后取均值。还有一个办法就是让经验更丰富的人来根据他的经验来做折衷。不论怎样,一个团队里的成员生产率都是参差不齐的,张三三天完成A任务,李四就可能是八天,赵六甚至可能十天,而且三个人都可能尽了全力。这就是天生的难题。而人月、人日这种估算方法,忽略了这种因人而异的生产率差异,所以有时你只能估算一个系数来处理,或者以生产率居中的那个人的估算为基础进行折衷。 ## 项目进度评估 有了工作量,就可以做计划了。有了计划,老板们就可以放第一个心了。是吧,按计划行事,不管是A计划还是B计划,总归是有个计划了。 计划的执行会引导我们走向预期的结果。这是大部分人的想法,所以他们看到计划就会长出一口气,好像光明的结果就在前方向他们招手。 实际情况呢?往往是不尽如人意的。我们看看软件行业的各种跳票就知道了。 前面我们聊工作量评估时一再提到未知和不确定性,要谨记,我们得出的估算结果是不准确的,将来可能发生各种各样的意外。而基于这种估算结果制定的计划呢,在一些不可控因素发生时,必然需要改变,需要调整,需要重新寻找抵达目标的路径。用过导航的都有体会,你在一个高架桥或者环岛拐错了路,导航软件就会重新计算路径,告诉你怎么走另外一条路或者怎么绕回到之前设定的路径上。其实项目执行也是这个路子,只不过,我们不愿意接受这个事实而已。领导上客户上总觉得承诺的日期就一定要兑现,到时要么交代码要么交尸体。其实呢,换个角度来看,你就会发现,交付日期的变动也是可以接受的。 其实,计划是为了应对变化,计划本身也是要不断变化的。如果不允许计划发生变化,就不符这世界“唯一不变的就是变化”这种客观规律。 我们一定要有随时调整计划的心理准备,也要让项目干系人接受这种预期。不管我们的估算多么准确,都会遇到意想不到的状况,改变我们行进的轨迹。这些状况,就是项目的风险所在,项目管理的一大要素,就是要及时识别这些状况,及时调整行进路线,保障在合理的预期时间内完成目标。 经过分析我们都能用脑袋接受计划可能会变这种逻辑,但放在实际项目实践里,计划发生变化却往往是不被接受的。这一方面是公司已经协调了各种资源,甚至对外做了发布宣传,公布了日期,市场、营销等都已经投入资源运转,如果临时变更日期,不但无法向市场和用户交待,无法向各种项目干系人交待,还会造成实际的损失。这是现状,我们不得不接受。我们必须在此基础上来讨论如何保障项目进度。 其实我们在软件开发的过程中,能知道的是已经做完的事情和未完成的任务。我们每完成一个或一定量的任务,都来重新评估未完成的任务,用新的估算更新我们的计划,并且将新的计划发布给各个项目干系人。这就是动态交付日期策略。通过持续的、不断的调整评估和计划,我们会得到一个越来越靠谱的交付日期。相信日益明朗和确定的新计划会让领导上觉得曙光就在前面,会缓解他们的焦虑,即便最终交付时延期,也会有不一样的感觉——与持续的黑洞式无反馈和傻呵呵的自以为能按期交付却在最后时刻被告知要延期相比。 这就是动态交付日期策略,我们通过短周期的迭代,不断完成确定的任务以及不断评估未完成的事项来调整计划,最终获得动态却相对靠谱的项目进度评估。 不过说起来容易,实际执行却是相当的难,对开发团队是一种不小的挑战。
';

给新程序员的10条建议

最后更新于:2022-04-01 21:16:06

我最开始不是做软件开发的,是一个售后技术支持工程师,你懂的,就是公司卖出的设备坏了,我就到现场去鼓捣两下,换个零件,重启下系统什么的。后来我转行做软件开发,颇经历了一些曲折,遇到了很多实际的困难,再后来我成了程序员,干上了手艺活儿,就这么一路过来了,还出了两本书,《[**Qt on Android核心编程**](http://item.jd.com/11571639.html)》和《[**Qt Quick核心编程**](http://item.jd.com/11587406.html)》。 后来我也和一些刚入行的开发人员共事过,有的朋友可以很快度过适应期,有的朋友则会花费比较长的时间,遇到各种不那么酸爽的事儿。你知道,我是一个爱瞎琢磨的程序员,根据我的个人经验和我观察别人的结果,我发现,如果一个新手可以坚持并实践这么几点,就能够很快从青涩变成熟,完成最初的角色转变,融入到让你欢喜让你忧的软件开发工作中来。 ## 接纳自己是一张白纸这个事实 我觉得这是一个首要的前提。也许你很优秀,有很强的学习能力,有强大的信念,有超强的小宇宙,有百折不挠的韧性……但是,你没做过,你确实是一张白纸。这是一个客观事实,我们必须要要承认。我们所做的一切,都是在接纳现实的前提下展开的,唯有承认这一点,其它美好的事情才有可能。 我们平静的看待这一点,不要妄自菲薄,也不要好高骛远,从一条线开始,慢慢绘制自己的蓝图,一切可能就会慢慢变成现实。 ## 关注自己能做到什么 我们是一张白纸,但我们还是可以做很多事情,我们通过学习,将能做更多事情。我们会遇到各种各样的问题,会产生自己这个不会、那个不会,可能安装一个IDE都会出问题,可能三行代码都会遇到10个编译错误,可能Run起来你不知道结果是对是错是否符合预期……这都没关系。 我们要看自己今天做到了什么,明天又能做到什么,一周后能做到什么,一月后能做到什么。我们关注积极的方面,不要因为各种挫败而将自己陷在不良情绪的泥潭里,自怨自艾、自我否定、羡慕嫉妒恨、失望、沮丧……这些情绪都是我们的敌人,都是有不良居心的魔鬼,它们只会坏我们的事儿。我们要逃离它们,不给它们机会,我们的对策就是,看我能做什么,看我将来能做什么,看我需要做哪些事情才可以达到明天、下一周、下一个月的目标。这样我们就能积极行动起来,就会把时间花在有价值的地方,我们也会慢慢更有价值。 ## 如饥似渴地学习 我们是一张白纸,就要如饥似渴地学习,抓住一切机会学习,读书,求人,读代码,上班8小时,下班还有更多时间,我们可以把一切可以利用的时间都投入到相关知识和技能的学习中来。 当你连一个DEMO都不知道如何创建,当你连一个Hello World都跑步起来,当你弄不懂变量、操作符、函数、对象、类、实例、控制语句,当你不知道那些被老手们当做常识的递归、链表、单例、观察者、MVC、CRUD、RBAC……你唯一能做的,就是把自己变成一块干燥的海绵,持续不断地去吸收各种知识。 这个过程是快乐的,幸福的,你会发现随着你掌握的知识越来越多,随着你能解决的问题越来越多,你会发现今天的自己和昨天的自己不同,这个月的自己和上个月的自己不同,每一天、每一周、每一月都是一种惊喜。就让自己变成一个小孩,收获简单的快乐。 ## 别怕犯错 很多新手怕犯错,其实不必。**犯错不等于失败**,犯错也是一种学习。 我们不必担心别人因为自己犯错而看轻自己,要知道,此时此刻我就是一张白纸啊,我没有经验啊,我什么都不会啊,我不犯错才是奇怪的事情。 就像小孩子蹒跚学步,跌倒是很正常的事情。可是它会在跌倒中收获宝贵的经验,摔几次,摔几天,它就学会了。 犯错一点儿也不可怕,可怕的是不总结、不归纳、不吸取教训。 ## 迎难而上 我遇到一些新入行的朋友,面对一个任务时会畏缩,说这个我不会啊,说这个我从来没弄过啊,说我搞不定啊…… 当然会遇到困难!作为新手,你遇不到困难才是见了鬼呢。要把困难当做机会,只有做你眼下搞不定的事情,你才能提升,你明天才能搞定更多的烂事儿。 所以,要迎难而上,把困难当做猎物,当做锻炼的机会,要见猎心喜,用于挑战自己。 ## 记录问题和心得 我觉得这一点非常重要。在初始阶段,记录遇到的问题,记录学习心得,总结解决问题的经验,将会对我们后来的进步提供非常大的帮助。我们要模仿牛的反刍,不断从有限的实践经验中总结、消化,获得更多的营养。 同时这也会帮助我们养成良好的工作习惯,良好的习惯,会让我们终身受益。 ## 适时求助 有些人喜欢闷头黑搞,搞不定也吭声,要么把困难扔在那里不管,自己也停在那里,要么继续黑搞,东搞搞西搞搞始终搞不定,停在那里。 我觉得应该给自己设定一个期限,在期限到达时还搞不定,就向别人求助。 向别人求助是正常的事情,每个人都可能会求助别人,一个人不可能搞定所有事情。不要担心别人太忙没时间帮你,也不要担心欠别人的人情。要知道“帮助别人”这件事本身,就是一件快乐的事。在帮助别人的过程中,提供帮助的人会收获快乐。多数程序员都很乐意帮助别人。真的。你获得了帮助,你在遇到别人的求助时也乐于提供帮助,这就够了。别的不用想太多。 ## 提前告知上级你真的不能搞定 没错。就是这样,一旦你经过了种种努力,确信自己不能搞定手头的事情,一定要尽早告知你的上级和小伙伴。 一个软件项目的周期,通常是由最晚结束的那个任务决定。 假如你是一个新手,碰巧Take了一个任务,你当然不希望自己的任务是最晚结束的那个。可实际情况表明,你有很高几率扮演那个角色。我要说的是,你需要清楚判断自己手上的任务的状况,如果你真的不可能搞定(或者不可能按期搞定),一定要提前告知你的上级,把你的状况、任务的状况都说明白,这样你的上级才可能有时间做必要的调整(比如分配新的资源、延长时间等)来应对可能的项目延期。如果你在最后一刻才告诉别人,那就没有补救的机会了。真的。 别担心别人看轻你,即便经验丰富的优秀程序员,也会碰到搞不定的事情。软件开发的性质就是如此,永远会有超越你能力边界的问题蹦出来。这很正常的,让别人知道,让大家能想办法补救,这就是很好的措施。 ## 向优秀的同伴学习 三人行必有我师。 想让自己变优秀的一个好办法就是和优秀的人走在一起。 你一定要知道(自己观察、别人告诉你、上级告诉你)你所在的团队中的哪些程序员在哪方面比较优秀,比如张三代码简洁能自解释,比如李四设计能力强,比如王五总能搞定技术难题,比如赵六具有卓越的影响力,比如钱八善于分析问题,比如赵十能深入浅出的讲解技术问题,诸如此类,如果你能够清楚,一方面可以在自己遇到问题时向正确的人求助,另一方面,你也可以主动学习。 见贤思齐,自古就是这个道理。有时很多变化是在潜移默化中发生的,你所处的环境、你交往的人,往往会以润物无声的方式影响你。孟母三迁,只为择邻,就是这个道理。 ## 让上级为自己指定导师 如果可能,让你的项目经理或者领导为你指定一个导师(mentor),让导师来帮助你制定你的阶段目标,并且让他来指导你达到目标。 有个实践,叫OJT培训(On the Job Training)。不过不一定每个公司都运用这种机制。如果你所在的公司没有,那可以让上级给你找一个导师,或者自己找一个。 有经验的导师,既能引导你少走一些弯路,又不会越俎代庖直接帮你把事情搞定。这样你就会自己走在正确的方向上,在节省不必要的精力浪费的同时,又能自己收获实作的经验。
';

三个因素决定你的薪水高低

最后更新于:2022-04-01 21:16:04

下面三个关键因素,决定了一个作为程序员的你的薪水水平: * **工作本身** * **工作表现** * **被替代的难度** 看起来很容易理解吧,让我们来水水吧。 ## 工作本身 从某个角度来看,我们经常听到的“选择大于努力”这句话,就说明了这一点。说人话,就是,不同的行业的平均薪资水平是不一样的,你选择进入IT行业还是选择餐饮业,结果就很不一样。早些年,2000年左右,我还在上学时,这种差别尤其大,你学机械、学能源动力和学计算机学通讯,毕业的三五年内,工资差别就很大。即便在同一个大的领域内,细分的领域也会导致明显的薪资差异,比如你做手游和做建筑类软件,比如你做Web前端和做服务后端,在一定时期内,结果都会有明显差异。 OK,这就是“**你的工作**”这一点的含义:工作内容本身的差别,会导致薪资差异。所以,如果你对薪水敏感,在选择行业以及行业内的细分领域时,就有必要研究下行业薪资报告之类的东西。 插句废话: > 各行各业里都有牛人,牛B到一定程度,基本都差不多,行业差距在那种情况下就没那么重要了。 ## 工作表现 在同一个领域内,做同样的事情的程序员,薪水也会有差异。嘿嘿,这貌似是废话,要水得HAPPY,废话是少不了的。这时的差异,就体现在“**你的工作表现**”上。 在同样的工作岗位内,干同样的工作内容,你做出来的效果比别人好,你表现的比别人积极,你能更及时的反馈,你的薪水就比别人高。这就是所谓的同岗不同酬。懒懒散散敷衍了事的干一件事,积极主动尽善尽美地做一件事,差别就很大。比如张三总是不愿意接受任务,写的代码脏、乱、差、不可读、无逻辑,李四总是欣然接受任务,代码规范、自解释、简洁、逻辑清楚、性能优越,那结果怎么样,不言自明了吧。 ## 被替代的难度 软件开发这个行当,流动性很强,程序员跳槽就跟女生买裙子的频度差不多。你干得差呢,不说也知道结果,怪我咯?工作表现好的人也多了去了,要在工作表现好的一堆程序员里再划拉一圈看看,还是有拿钱多和拿钱少的区别。这个时候的区别呢,就和“**你被替代的难度**”有很大关系了。 假如你做的工作,是核心,业务复杂难掌握,或者技术难度大有高门槛,你的可替代性很差,就是说,除了你别人玩不转,那你的价值对企业来讲就很高了。同样都是积极的态度认真的干活,如果张三做的事儿随随便便找个人就把他替了,那他就一定没有你拿钱多了。这就是“**替代难度系数**”的作用了。 那么,怎样才能提高自己的替代难度系数呢?其实我在我的另一篇文章——“[**程序员保值的4个秘密**](http://blog.csdn.net/foruok/article/details/46407723)”——里已经做了简单分析了,感兴趣的可以跳过去看看。在这里呢,我们再来抖露一个新的秘密哈:如果你具有**区分事情重要程度的能力和快速搞定重要任务的能力**,那你就很难被替代了。因为,具有这种能力的人,不说百里挑一,也是十不有一。
';

乐观的程序员

最后更新于:2022-04-01 21:16:02

有一次看到来自Instagram用户findheart的话: > 程序员是一个懂得享受生活的群体。每几个月或者几周,他们就会庆祝一个叫“Deadline Eve”的节日。在这一天晚上准备大量的食品饮料,通宵达旦地工作,并互相致以“下个milestone绝逼不再拖延”的美好祝愿。 我从这个笑中含泪的小段子看到了程序员的一个特点:乐观。 是的,你没看错,乐观,就是乐观。 程序员是我见过的最乐观的一群人,这也是我作为一个程序员回顾自己的开发生涯时发现的一个秘密。 要知道,程序员的生活充满未知:未知的项目,未知的语言,未知的框架,未知的工具,未知的进度,未知的天坑,未知的Bug,未知的交付日期,未知的绩效评估,未知的KPI…… So,在这种茫然四顾一切皆不可知的环境中生活,你要是不乐观,你绝对扛不住,你根本不可能见到明天的太阳。因为,未知会产生恐惧,这是人之天性,恐惧堆积多了人就会崩溃。而伟大的程序员,坚韧的程序员,不可思议的程序员,拥有超强耐受力的程序员,倍受蹂躏仍踯躅前行的程序员,不但奇迹般地在这个非人的环境里存活了下来,还每天乐乐呵呵屁颠屁颠的,这不是乐观是什么?还能有哪个群体如此乐观吗? ## 看,项目估算就这么简单 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-11-27_56582a6b33588.jpg) 当程序员在白色的电脑屏幕上写下“printf(“Hello World!”)”时,他确信,只要按下CTRL+R或者点击运行按钮,黑黑的命令行窗口就会对他们说“Hello World!”。 是的,就是这个样子。当你写下“Hello World”这句骇人听闻的咒语,电脑绝不会用“Goodbye World……”这句更震撼人心的话来回应你。 我们程序员面对的世界是0、1世界,简单而直接。我们在软件开发的世界里徜徉得越久,就越容易受到这种逻辑思维潜移默化的影响。我们崇尚简单,讨厌复杂,无论是在数字世界,还是现实生活。 程序员喜欢看到确定的、可预知的结果,而我们的世界里却有这么多的不确定性,我们的办法就是只往好处看,只青睐那些我们把握得住的东西。 :***Begin*** //请注意,此处的Begin为用于goto跳转的标签 当我们被迫评估项目进度时,我们会先采取大事化小小事化了的策略,然后把那些人见人爱的小家伙一一拎出来,乐不滋滋地给他们分时间,这个4小时,那个3.5……OK,很快我们就觉得胸有成竹,一切尽在掌握,吧啦吧啦我的魔仙棒,傲娇地转上一圈再伸臂一点,整个项目大概需要4个人月,预留一些时间比如1个人月应对随时可能出现的天外来客,我们有8个人,啊哈,半个月哦不,2周半搞定! 大家伙分头行动,哼哧吭哧咣叽咣叽开搞了。 第一周的时候,我们报告说:“工作正在有序进行,一切都在掌握之中。” 第二周的时候,我们报告说:“出了点儿小意外,但加两个晚上班儿就可以追回进度,我们可以搞定。” 第三周的时候,我们报告说:“又出了点儿小意外,你知道,软件开发就是这样,惊喜不断。不过我们周六和周日已经摆平了意外,我们很快就可以搞定了。” 第四周的时候,我们报告说:“嗯,情况比我们想象的复杂,在集成时遇到了不明状况,整个团队搞了一个通宵才搞定,结果第二天没办法干活,所以,进度比预期的要晚一些,不过,请相信我们,很快就可以搞定了。 第五周的时候,我们报告说:“这周肯定可以搞定了,相信我们的能力。” 第六周的时候,整个团队都一脸黑线在加班…… 第七周的时候,我们报告说:“系统集成完成啦,第一个Beta版本可以内测了。这虽然比我们预期的时间晚了一点点,不过,我们的内测版本堪称完美,几乎不可能出现Bug。” …… 第十周的时候,整个团队都在加班加点改Bug,人人一脸黑线外加两个青肿的眼袋,每当焦虑万分的老板询问上线时间时,项目经理都会说“快了快了,就这两天就搞定了。” 等到第十四周要结束的时候,版本终于发布了。 皆大欢喜啊。 老板已经被这群猴子逼疯了,心里恨得要冒火,还得咬着牙说:“兄弟们辛苦了,你们的努力大家有目共睹。” 我们报告说:我们发布的版本质量很高,容易上手,用着也方便,用户一定会满意。相比之下,少许的延期是值得的。 ***goto Begin*** 好吧,项目估算简单吗? 你看过《人月神话》了吗? “一切管理理论都是扯淡,哪一种也不适用我们的团队,因为我们这些程序员是独一无二的,都有着与众不同的个性,我们必须找到自己的项目管理方法。并且,我们现在的团队已经在我们独特的管理模式下运转良好,完全不必要引入学习成本那么高的控制手段,况且那样对大家也是一种刺激,觉得公司不信任大家,这会大大的降低士气。毫无疑问,我们现在的团队士气高昂,必须要保持……” 这可能是某个项目经理说的话,我不记得了。他最终的结论是:“虽然这次项目Delay了,但是下次,绝逼不会了!我们一定有办法控制进度。” 看到了吧,这就是我们的乐观。它生动地告诉我们什么是真正的乐观:即便无数次实践已经证明我们的估算和调控手段不靠谱,我们还是会信誓旦旦地在下一个项目来临时许下“绝逼不会延期”的诺言。 ## 这很简单,两天搞定 程序员群体的乐观是由一个一个个体的乐观汇聚而成的。 有多少次我们被问到这个问题需要多久解决时,我们都说出类似“两天搞定”的话…… 有多少次我们看着同事深陷泥沼无法自拔完工无望时,我们说出“要是我早就搞定啦”之类的话…… 有多少次我们要学习未知的技术并把未知的技术应用到未知的业务上最终交付给客户一个可用的系统时,我们都会天真的从我们既往的经验池里抓几枚硬币来撒撒,然后说出“大概需要半个月”这样的结果……只有程序员,彪悍的程序员,无所畏惧的程序员,敢于乐观地面对未知的一切拍拍脑袋给出一个确定的工期。 …… 这都是因为我们程序员倾向于把事情想得简单,在我们这些崇尚简单的程序员眼里,即便你秉持着不惮以最低的效率来评估的原则,也会给出一个最终看来还是乐观的估计。 这让人绝望吗? No!恰恰相反,这正是我们程序员之所以为程序员的一个关键特征,惟其如此不能活也! ## 没什么难的,不过如此嘛 万事开头难。很多事情只要我们突破了最初的障碍,后面就会顺风顺水势如破竹。对程序员来讲,这种规律很容易被强化,因为,我们有太多机会学习新技术新框架新业务,而大多数的语言和框架,写一个万能的“Hello World”就入门了! 这种学习新技术的感觉,和开车类似。我学会开车后,一直没有上路跑过,提车后犹豫了几天,总觉得城市里路况复杂,很多车不管红绿灯总在强抢黄三秒,行人又乱闯,电动摩托总是突然呼啸而过,左转右转与直行同时被允许,想多了总觉得自己不能应付这种状况,就在考虑要不要请个陪练陪着我上路跑几天。后来因为着急上牌,没办法就直接上路了,早上五点多起来,从家开到了车管所,办完手续后又战战兢兢地开回了家。这是第一次单独一个人上路,没磕没碰没撞没出事儿,居然!好吧,成功的经验会让你找到自信,于是后来我就敢上路了:怕啥,就那样嘛。 程序员的情况与此类似。比如你让一个C++程序员去开发一个AndroidApp,他可能只需要两个星期就能学会Java和Android开发,做出一个DEMO。然后呢,跨过门槛,一切障碍都不存在了,前面都是坦途,没什么能阻碍这个程序员解放全人类的伟大理想了。 这种体验的不断重复使我们由衷地相信好的开始是成功的一半,所以,当我们哪怕仅仅做出一个小小的DEMO程序,也会兴高采烈的发布我们的结论:啊,我们已经突破了关键技术,从已有的DEMO来看,技术上的问题不再是问题了。 当然事实并非如此。前路险滩无数,泥沼遍布,暗坑随处都是,当你迈出第一步,欣喜地以为天下独握我手一切尽在掌握的时候,那些你难以预料的艰难险阻也已悄然出发,快速向你围拢过来。 我开车还没超过100公里,就遭遇了第一次交通事故,和保险公司打了回交道。作为程序员,你说难题已被攻破技术上已经没有风险,其实仅仅是你过于乐观了,真正的旅途还未开始,让你挠头的事儿还未到来。就是这样。 当然,程序员是乐观的,他们说,无论前路如何,只要逢山开道遇水搭桥见佛杀佛见鬼杀鬼即可通关,天塌了有个儿高的顶着呢,项目黄了有项目经理扛着呢,公司关门了大不了换个地方再战江湖,爷有手艺,到哪儿混不来一碗饭吃…… 好吧,我们就是如此乐观。如果你要和程序员打交道,一定要谨记此点,他们的职业习惯使得他们倾向于把事情简单化,只看好的一面,未知的风险他们会一笑而过。所以,你要有预期,他们常常前半程轻轻松松高歌猛进,后半程心情沉重步履维艰。
';

史上最全的程序员求职渠道总结

最后更新于:2022-04-01 21:15:59

我前前后后写过多篇与程序员找工作相关的文章,比如[**程序员跳槽神级攻略**](http://blog.csdn.net/foruok/article/details/45840147),[**找工作的辟邪剑谱**](http://blog.csdn.net/foruok/article/details/40817485),[**任性,春节前辞职**](http://blog.csdn.net/foruok/article/details/42580323),[**程序员该不该考虑初创公司**](http://blog.csdn.net/foruok/article/details/42141397),这些文章都收录在我的[**漫谈程序员**](http://blog.csdn.net/column/details/aboutprogrammer.html)专栏里,它们从跳槽时机、跳槽原因、简历优化等不同侧面讨论了程序员找工作的那些事儿,受到很多人的关注。今天呢,我准备专门分析一下**程序员求职渠道**,有料是必须的,就算你搜遍互联网深挖全宇宙,也会发现这篇文章将是史上最全、最强、最有针对性的程序员求职渠道分析。 版权所有[***foruok***](http://blog.csdn.net/foruok),转载请务必保留出处。 还记得我2002年毕业时曾经在西安跑来跑去参加各种线下的招聘会,投简历等消息,也曾经通过华商报的前程无忧专版查看各个公司的招聘信息和各类各类招聘会的公告,还曾经辗转于西安的各个人才市场,那样的日子奔波忙碌却被动无奈。还好,互联网的飞速发展解放了我们,现在,我们基本上可以和那些日子说拜拜了,找工作时只需要坐在电脑前敲几下键盘点几下鼠标就成了。 我们程序员其实是比较特殊的专业人才,求职渠道比其他人群要多得多啊,让我们一个一个来看看。我分析的顺序是先普通后特别,老鼠拉木锨大头在后面,如果你不耐烦看招聘网站之类的分析,就跳到最后看看[**100 offer**](http://www.100offer.com/)之类的人才竞拍网站吧,这是最新最颠覆的针对程序员的求职渠道。 ## 招聘网站 毫无疑问,招聘网站依然是很多程序员找工作的重要选择,也是很多企业招募人员的常规选择。招聘网站多如牛毛,我知道的,比较有名的,有这些: * [前程无忧](http://www.51job.com/) * [智联招聘](http://www.zhaopin.com/) * [CSDN JOB](http://job.csdn.net/) * [中华英才网](http://www.chinahr.com/) * [大街网](http://www.dajie.com/) * [中国人才热线](http://www.cjol.com/) * [中国人才网](http://www.cnjob.com/) * [猎聘网](http://www.liepin.com/) * [数字英才网](http://www.01hr.com/) * [若邻](http://www.wealink.com/) * [拉勾网](http://www.lagou.com/) * [职友集](http://www.jobui.com/) * [卓博人才网](http://www.jobcn.com/) * [全才招聘网](http://www.allzhaopin.com/) * [内推网](http://www.neitui.me/) * [58同城](http://www.58.com/) * [赶集](http://www.ganji.com/) 从覆盖范围和地域上划看,上面这些网站都是全国性的,还有很多地方性招聘网站,也是不错的渠道。比如[西安高新人才热线](http://www.hrdonline.com/)、[西安人才网](http://www.xarc.net/)等就是西安的招聘网站,尤其是西安高新人才网,主要是IT类招聘,对在西安求职的程序员也是个相当不错的选择。对于一线城市的程序员,基本上不用考虑地方性的招聘网站,全国性的招聘网站已经优先覆盖了这些城市,信息足够丰富了,而对于生活在二三四N线城市的程序员来讲,地方类的招聘网站往往会有出乎意料的效果。 下面结合我的体验谈谈这些网站。 我使用过的有[前程无忧](http://www.51job.com/),[智联招聘](http://www.zhaopin.com/),[中华英才网](http://www.chinahr.com/),[猎聘网](http://www.liepin.com/),[若邻](http://www.wealink.com/),[拉勾网](http://www.lagou.com/)。 [前程无忧](http://www.51job.com/)是老牌招聘网站了,影响力比较大,最早的模式是集市模式,招人的求职的都到这里来,求职者在海量信息中找职位找企业,企业在海量简历中找应聘者或接受简历,匹配度低,效率低。这个网站有大量的IT类职位,是刚出校门或经验较少的程序员的一个通常的选择。我最开始就在上面投简历,不过匹配到的情况比较少。这个网站还提供增值服务,求职者交钱就可以享受到较好的服务,企业交钱就可以在简历库中自主挑选。这种模式的另一个结果就是,不交钱的个人很难找到职位,不交钱的企业很难招到人。类似的还有[智联招聘](http://www.zhaopin.com/)和[中华英才网](http://www.chinahr.com/)。中华英才网早已没落,不提了。我们单位曾在[智联招聘](http://www.zhaopin.com/)上发不过招聘信息,按月、按季度、按年交费用,不过简历质量不怎么样(也可能是我们单位为初创企业不吸引人)。据说智联上面的人才层次要稍高一些。不过在我印象里,它和51job是差不多的。 我浏览了[中国人才热线](http://www.cjol.com/)、[中国人才网](http://www.cnjob.com/)、[数字英才网](http://www.01hr.com/)、[卓博人才网](http://www.jobcn.com/)、[全才招聘网](http://www.allzhaopin.com/)等,感觉与[前程无忧](http://www.51job.com/)差不多。需要提一下的是,这一类网站也都有猎头服务。 接下来要说的是[猎聘网](http://www.liepin.com/),这家招聘网站面向中高级人才,假如你的技能和经验都丰富,可以到上面一试。猎聘上活跃着很多猎头和公司的HR,简历提交后程序员与企业的匹配度较高。我的简历好久没更新了,还经常有猎头或公司的招聘负责人给我联系。另外它提供的职位推荐也是比较靠谱的,与你的简历和求职意向拟合度比较高。 [58同城](http://www.58.com/)和[赶集](http://www.ganji.com/)也都有招聘频道,也有程序员在上面求职,也有IT类公司发布职位。这里流量大,鱼龙混杂,涉及行业及职业广泛,不过多以中低端岗位为主,如客服、渠道专员、保洁、家政等。个人感觉不太适合程序员啊。反正我是从未考虑过。我着手负责人员招募工作后,也把公司发布的岗位停掉了。 [大街网](http://www.dajie.com/)和[若邻](http://www.wealink.com/)是社交类招聘网站的代表,不过既然是社交,走人脉路线,找工作自然比较慢,不过还是可以试试的,尤其是IT公司的职位,还是比较多的,运气好的话,能碰到一些高薪职位。我2014年在[若邻](http://www.wealink.com/)发布过简历,不过没有收到一家面试通知。-:)。 我们公司曾经在[拉勾网](http://www.lagou.com/)上面投放过招聘信息,我本人没有在上面发布过简历。拉勾网宣传是专注互联网职业机会,我们发布了职位后,确实收到了不少简历,而且我们是没有交钱的哈。 [职友集](http://www.jobui.com/)我没用过,不过看起来算是比较独特的一个个例,它从公司评价、打分、薪水等等众多层面给公司评价,想帮助你找到合适的职位。它的首页也不同于[前程无忧](http://www.51job.com/)、[智联招聘](http://www.zhaopin.com/)等网站,不是众多的职位展示,而是一个公司的搜索框。 [内推网](http://www.neitui.me/),好吧,我没用过。但这个网站也找了一个很棒的切入点:内部推荐。嘿嘿,不知道效果怎么样。有用过的同学可以说说看。 [CSDN JOB](http://job.csdn.net/)依托CSDN的流量和活跃社群,是比较有潜力的,当然还需要找到合适的切入点,目前它的模式和[前程无忧](http://www.51job.com/)、[智联招聘](http://www.zhaopin.com/)等没什么不同,优点是,它专门针对IT类职位,比较适合程序员和有这方面需求的公司,匹配度会比较高。我们公司之前在这里发布了一个后端的与Scala相关的职位,工作地点是西安,结果很快就有一个懂Scala的朋友找到了我们。 纳尼,总算说完了,听见有人说,然而这并没有什么卵用,好吧,福利还在后面,继续吧。 ## 专业技术论坛 程序员非常特殊,天生就是互联网动物,经常聚集在各种专业的技术论坛,比如[QTCN](http://qtcn.org/),[eoe android社区](http://www.eoeandroid.com/),[Cocoa China](http://www.cocoachina.com/),[PHP100](http://www.php100.com/),讨论交流各种技术问题。很多IT类公司会到程序员出没的地方发布针对性的招聘信息,所以,那些技术论坛,往往开辟有招聘专版。 专业技术论坛上的招聘信息非常有针对性,就是针对这个技术论坛讨论的技术方向的,比如企业在[QTCN](http://qtcn.org/)上发布的招聘信息,就是针对熟悉Qt的开发人员的,而企业在[eoe android社区](http://www.eoeandroid.com/)发布的招聘信息,就是针对熟悉Android的开发人员的,其他类似。 几乎每一种技术都有相关论坛和网站,这些网站上也都有企业发布招聘信息,求职方和招聘方往往具有很高的匹配度。这也是专业技术人才找工作的一个重要途径。嘿嘿,我曾经在论坛上看到一个招聘信息,然后联系上了,最终也进了那家公司,也是一次神奇的经历。 我感觉呢,很多在技术论坛发布招聘信息的,都是公司研发类的技术人员,好沟通,比较直接,对岗位的描述和要求也都相对靠谱了。 ## QQ群 嘿嘿,每一种技术都有若干个QQ群存在,很多程序员其实是在QQ群里上班,而不是公司…… 技术类的QQ群分为两种,一种是热爱技术的大神们建立的,专门交流某一项技术的技术导向群;一种是HR、猎头或具有相关身份的人或机构设立的,针对某一项或某一类技术的招聘群。这两种群,都有招聘信息发布,我的感觉是,技术导向群里的招聘信息,针对性更强,但频度低,而招聘导向的群,针对性稍差,但频度高。 要想找某一方面的群,只需要在通过QQ查找关键字即可。很多公司的HR或者开发,会潜入到技术主导的QQ群里寻找他们需要的程序员,这也是一个不可忽视的求职渠道哦。 ## 内部推荐 我在[“**漫谈程序员系列:找工作的辟邪剑谱**”](http://blog.csdn.net/foruok/article/details/40817485)一文中提过内部推荐,这也是非常非常值得一试的方式。[内推网](http://www.neitui.me/)看起来应该是从这个点切入的。 很多公司信这个,认为自己的员工不会推荐不靠谱的人。我工作过的公司,如果你推荐的人被录用并且成功通过试用期,你会获得一千大洋的伯乐奖金。据我的了解,IBM有类似的机制,阿里巴巴有类似的机制……。所以,如果你能找一个目标公司的员工来推荐你,那你就踏出了成功的一步。 根据六度空间理论,如果你愿意,总是能找到推荐你的人的。比如你曾经共事过的同事、你的同学、你在QQ群里认识的志同道合的好基友……只要你愿意挖掘,它就有。别怕麻烦,虽然我们程序员大多数人脉不够广,不过三五同事、好友还是有的,努力挖掘啊,找工作时大事儿,求人帮个忙也别张不开嘴。当然反过来,别人找到我们,也别总拒绝。 ## 猎头 OK,我们来谈谈猎头吧。我有一些和猎头打交道的经验。 猎头在人力方面还是有很大作为的,他们和企业关系较好,很多企业会委托猎头来招聘高端职位。所以,如果你有机会结识猎头,一定要留下他们的联系方式,保持联系。当你要换工作时就会帮的到你了。 另一方面,猎头拿到职位也是很希望快点找到合适人选的,你可以给他们推荐合适的人,要知道,程序员身边有很多程序员,经常会有人换工作的,你推荐给猎头,猎头回头有机会也会照顾你。嗯,我说得太直白了么……其实就是酱紫的,摊开来,怕什么。 很多猎头公司有自己的网站,也可以到他们网站上联系他们(当然我没这么做过,你可以去看看)。我和[科锐国际](http://www.careerintlinc.com/)、[大沃猎头](http://www.wodcj.com/)、[大瀚人才](http://www.vastsea.com/)打过交道,确实是比较专业的。 ## 人才竞拍 互联网改变一切,互联网+改变世界。先响应一下总理的号召,互联网+钢钢滴,大有前景。 其实我并不是在说废话,你懂的,我是有感而发。你看我们前面唠唠叨叨说了那么多,该休息一下了,来点茶歇,点心,水果,都别客气……费用自理啊。 [**100 offer**](http://www.100offer.com/),我看到这个名字,点进去一看,立马被它所采用的**人才竞拍**模式给震到了,它颠覆了程序员传统的求职模式。 [前程无忧](http://www.51job.com/)、[智联招聘](http://www.zhaopin.com/)这类网站,需要程序员自己找职位、投简历,然后等待回应,海量投,慢慢等,有时等到花儿也谢了呀,心哇凉哇凉的。从求职者和企业的关系来看,这是最传统的模式,也是最不经济最没效率的模式。 [猎聘网](http://www.liepin.com/)引入了猎头,提高了效率了,也是传统的模式,程序员自己找啊找,投啊投。 [大街网](http://www.dajie.com/)和[若邻](http://www.wealink.com/)希望通过社交、人脉来助力求职,不过效果很慢,需要你慢慢发展人脉,这和你发觉线下身边的关系、加入QQ群、技术论坛发展人脉,都是类似的,不知道什么时候会有效果。 而[**100 offer**](http://www.100offer.com/)采用的**人才竞拍**模式,则与上述网站完全不同。它是***互联网+猎头***的方式,你只需要提交简历,审核通过后,你就可以坐等竞拍,2周内就有很多公司主动联系你,你可以选择中意的职位,决定是否进入面试,很快就可以搞定满意的offer,年薪20-80万哦。你再也不用在浩如烟海的招聘信息里翻找职位了,效率大大提升了,省下来的时间、精力可都是你的。 类似[**100 offer**](http://www.100offer.com/)这种人才竞拍的模式,彻底改变了传统的求职者巴巴地找职位、投简历、等消息这种不良体验,让你瞬间从屌丝变身VIP,**让企业来竞拍程序员**,到处都是橄榄枝,纳尼,这酸爽,真难以抵抗啊。不过有一点,它有一定的门槛,要求2-3年的经验,会有专业人士审核你的简历,你能不能通得过,就要看你有多少干货了。 做这种**人才竞拍**模式的,还有几家,比如[拉勾网](http://www.lagou.com/)上线了一拍(beta版),[竞鹿人才竞拍](http://www.jobdeer.com/)。这是新出现的模式,我觉得必然会大方异彩了。这几家做人才竞拍的,[**100 offer**](http://www.100offer.com/)目前专门针对程序员群体,值得一试。 ## 程序员的求职渠道指引 前面说了那么多,这里再概要一下吧。 对于刚出校门的,或者经验不多的程序员,可以在[前程无忧](http://www.51job.com/),[智联招聘](http://www.zhaopin.com/)、[中国人才热线](http://www.cjol.com/)之类的网站找找机会。 如果你摸爬滚打了两年,有了一些积累,可以考虑[eoe android社区](http://www.eoeandroid.com/),[Cocoa China](http://www.cocoachina.com/)等专业的技术论坛、[CSDN JOB](http://job.csdn.net/)、QQ群、[猎聘网](http://www.liepin.com/)等。 如果你觉得自己水平不错,某方面出色,去[**100 offer**](http://www.100offer.com/)检验一下吧,很可能会有惊喜,入职了还有3000块的入职奖金哈。
';

软件项目9步神曲

最后更新于:2022-04-01 21:15:57

 我经历了无数次痛苦的轮回……可程序员天生的乐观主义,让我们最终继续坚持这个轮回…… ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-11-27_56582a6b33588.jpg)
';

程序员的能力拓展模型

最后更新于:2022-04-01 21:15:55

听人说了一个词儿,叫作“Comfortable Zone”,中文是“舒适区”。     这个词儿让我瞬间联系到程序员的能力边界问题,我画了能力拓展模型图。如下: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-11-27_56582a6b0a266.jpg)     我觉得这个能力拓展模型,适用于一个人的方方面面,但这次我打算只拿程序员来扯一下。 ## 能力拓展模型     图中左侧是我们的现状,最内层的原型是我们感到舒适的区域,我称之为“舒适区”。     以程序员为例,当程序员的技术能力和解决问题的能力达到一定水平之后,就能够轻松胜任某些开发任务,解决特定实际问题,给用户带来某方面的便利。他的能力与他接触到的问题匹配,此时程序员处于舒适区。这个舒适区的大小是由他解决问题能力的大小定义和界定的。     当问题超出程序员先有技能和经验说明,他能看到并了解,但还不能解决。那这些问题就是这个程序员随时可能面对的挑战区,也就是图中的黄色圆型。     图中的大片的红色区域,对程序员来讲,就是未知区域,未知即迷茫,未知即痛苦。这个区域往往是程序员看不清或看不到的,是百慕大三角的一片未知而神秘的区域,贸然跳入,可能折戟沉沙铩羽而归。     假如一个程序员愿意跳出舒适区,踏入挑战区,接受一定的不适,那他就能够有机会拓展他的能力,将自己的舒适区扩展得更大,他的能力模型就变成上图右侧部分,舒适区变大,挑战区变大,痛苦区变大,这也是符合人类认知规律的:知道的越多,不知道的也越多。     如果一个程序员连轻微不适都不愿意接受,那他就会渐渐固步自封,落后于别人,落后于时代,渐渐被这个日新月异的时代所抛弃,成为一个别人眼中没什么用的老家伙。 ## 在开发过程中扩展舒适区     一个程序员的能力,是可以通过锻炼不断变强的。就像人的肌肉,一段时间让锻炼强度超负荷一点,适应了,习惯了,肌肉变得比原来强了,就再超负荷一点,通过这样的螺旋式递进,肌肉就会越来越强。程序员也是一样的,你的学习能力、代码能力、设计能力、沟通能力、管理能力等等,都是可以通过锻炼来加强的(我们得考虑一个人适合做什么,如果他没有某方面的才干,虽然通过锻炼也可以加强,但违背天性的事儿通常为事倍功半)。     在软件开发过程中,一个程序员,他会什么语言懂什么框架水平如何,自己心里有数,项目经理通过他的表现也认为自己心里有数。那么在有新的项目要做时,通常的做法是,哪个程序员熟悉实现Tx任务相关的技术,就让这个程序员做Tx任务,这通常又是出于交付期、生产率、成本等各方面的考虑。     在这种情况下,每个人都做自己驾轻就熟的事情,对整个项目来讲,自然是最经济的。可是对程序员自己来讲,却是不经济的。因为你无法接受新的挑战,你的能力边界的拓展就会很慢。所以,合理的情况是,项目经理在划分任务时,要对程序员负责,既给一个程序员能轻松完成的任务,也要给他需要费点儿劲儿才能完成的任务,通过具有挑战性的任务来锻炼这个程序员,让他更好更快的成长。但是这样做的管理成本太高,所以,现实当中,很少公司的项目经理会主动这么做(没合适人手take某个任务时会被动这么做)。     鉴于这种现实,作为程序员自己,如果你想更快地成长,就要表现得勇敢一些,主动走到挑战区域,去抢具有挑战性的任务。(如果不好意思主动,也可以在有挑战性的任务落在自己头上时屁颠屁颠地接受。)一旦你拿到了对你来讲具有挑战性的任务,那你就赚到了。没错,我是故意这么说的,你赚到了。虽然你会为此殚精竭虑,虽然你可能为此加班,虽然你可能为此在别人看不见的地方付出,但是你拥有了机会和更多可能性,如果你顺利完成了,那你的舒适区会扩大,你接触新挑战的机会也会变大,你就进入了良性循环,你会越来越强大。你终将走上七龙珠中悟空的变身之路,成为赛亚人,超级赛亚人,超级赛亚人2,超级赛亚人3,……直到成为超级赛亚人之神。     想想看,这是多么美好的事!     So,某个技术没搞过?不是问题。某个语言没学过?不是问题。软件结构太复杂,一时掌控不了?不是问题。业务不熟悉?不是问题。如果你觉得这些是问题,OK,请坐看云起,等待时光带走一切然后把你丢在原地。     **在渴望成就自我的程序员眼里,问题即机会**。只有抓住机会,我们解决问题的能力才会在痛苦的历练中像雪球一样越滚越大。
';

程序员如何变身IT讲师

最后更新于:2022-04-01 21:15:52

我曾经写过一篇文章,“[**一张图道尽程序员的出路**](http://blog.csdn.net/foruok/article/details/40585139)”,里面有一张图: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-11-27_56582a4004452.jpg) 这张图随着“[**一张图道尽程序员的出路**](http://blog.csdn.net/foruok/article/details/40585139)”这篇文章,曾经被伯乐在线、docin(豆丁网)、IT面试、Java面试题、好库文摘等众多站点转载,也被CSDN多个博主转载过。 “[**一张图道尽程序员的出路**](http://blog.csdn.net/foruok/article/details/40585139)”这篇文章是我在2014年12月份写的,如今半年过去了,我对这张图又有了一些新的认识,从这篇文章开始,我会尽我所能把我知道的都抖出来,死磕自己,娱乐大家。 天色也不早了,人也少了,鸡也不叫了,狗也不咬了,我们开撸吧。 今天,我就先拿图里的“培训讲师”来说吧(特别说明:本文部分内容可能会引起身体和心理不适,不过找个可人儿壁咚一下即可消除。)。 ## 讲师是什么鬼 曾经,我通过CSDN博客分享了很多开发类的文章,后来我就开始扯淡,现在我的博客排名300左右,这全是扯淡的功劳。有朋友曾经在我博文后面评论,说,“看来排名靠前的也不一定是大神”。没错,还有一种就是我这样靠扯淡扯出来的。 2015年1月,CSDN推出了一个[**CSDN学院**](http://edu.csdn.net/),开始发力IT在线教育。如果你留意过我博客的左侧边栏,就会看到我的四个视频课程:《[**Qt基础与Qt on Android入门**](http://edu.csdn.net/course/detail/162)》、《[**Java Script for Qt Quick(QML)**](http://edu.csdn.net/course/detail/335)》、《[**Qt Quick 4小时入门**](http://edu.csdn.net/course/detail/1042)》、《[**Qt网络编程实战之HTTP服务器**](http://edu.csdn.net/course/detail/967)》。 如你所见,我在[**CSDN学院**](http://edu.csdn.net/)发布了几门视频课程,我有了一个IT培训讲师的身份。也就是说,我混进了IT培训讲师队伍,IT培训讲师的世界从此多了一个我,有时天晴有时雨,每天都是一出戏——其实我是想说,讲师也不是什么神秘人物,他就一普通人儿,你看我这么每周发水文的人,也可以做讲师,你还有什么好担忧的呢。 不过,IT培训讲师队伍里也不都是我这种水货,还有各种各样的实战型选手。这也是[**CSDN学院**](http://edu.csdn.net/)的一个特色:**实战派讲师多,实战派课程多**。嘿嘿,不怕脸红,其实我也是实战型的…… 下面我就来具体扒一扒讲师们的各种身份。 #### IT机构专职培训讲师 目前,很多线下的IT培训机构都有专职的讲师,如黑马、蓝马、白马、黄骠马、汗血马、大象、小象、大蓝翔……这点咱不必多说了,你们都懂滴! #### 技术图书作者 下图是我从[**CSDN学院**](http://edu.csdn.net/)截的图片: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-11-27_56582a6a46e7b.jpg) 我免费给上面两位打个广告,回头找他们收钱去。 我们先来看看王达的自我介绍: > 国内著名IT图书作者,资深网络技术专家,华为授权讲师。共著有近60部计算机网络著作,最新代表作:《Cisco/H3C交换机|路由器“豪华”四件套》、《深入理解计算机网络》、《华为交换机学习指南》、《华为路由器学习指南》等。…… 这老兄编写的书很多,几十部,我还请教过他一些问题,十分感谢。 #### 程序员 OK,这才是我们的菜,我就是这种的。当然我也写过两本技术图书,《[**Qt on Android核心编程**](http://item.jd.com/11571639.html)》和《[**Qt Quick核心编程**](http://item.jd.com/11587406.html)》,看来我也可以算入前面那个分类。 再来看看曾伟(注意加黑文字): > 老镇(曾伟),人称镇叔,**勤劳码农一名,坐拥十余年研发经验,擅长iOS游戏与应用开发**,《Swift语言实战晋级》一书作者。国内最早一批研究Swift的人…… #### 大学老师 譬如贺利坚老师,就是烟台大学的计算机老师。 > 其实讲师的身份各式各样,想了解的话,看这里:[http://edu.csdn.net/lecturer](http://edu.csdn.net/lecturer)。 ## 课程分析 有人会有疑问,IT培训讲师应该讲什么好呢?你先好好想想我们程序员最擅长的是什么?对啦,实战嘛。在线IT教育的目的无非就是:**让人学会技术并能解决实际问题**,而这就要靠实战经验才能达到。所以,你不要被那些技术图书作者、专职讲师、大学教授们所吓倒,这是程序员的菜。如果你想做,一定可以,而且后面我们也有打怪指南为您提供。 #### 实战类课程 如果你浏览一下[**CSDN学院**](http://edu.csdn.net/)就会发现,这里以实战类课程居多。其实这是在线IT教育的必然性,因为学一门语言很容易,但是如何使用一门语言做一个实际的项目却很难。所以,相当一部分受众是奔着***如何将技术真正运用到实战中***这一点来的。我的《[**Qt网络编程实战之HTTP服务器**](http://edu.csdn.net/course/detail/967)》就属于这一类。其实还有很多其他课程,看这里:[http://edu.csdn.net/courses](http://edu.csdn.net/courses)。 #### 语言类 语言类课程受初学者欢迎,比如我的《[**Java Script for Qt Quick(QML)**](http://edu.csdn.net/course/detail/335)》,有一万多个朋友看过,免费的哈。类似的很多,看这里:[http://edu.csdn.net/courses](http://edu.csdn.net/courses)。 #### 框架类 和语言类课程类似,比如我的《[**Qt基础与Qt on Android入门**](http://edu.csdn.net/course/detail/162)》和《[**Qt Quick 4小时入门**](http://edu.csdn.net/course/detail/1042)》,姜雪伟的《[微信平台二次开发入门](http://edu.csdn.net/course/detail/346)》。 ## 讲师之路 有了前面的基础,我们就可以来讲讲如何成为一个讲师了。我们这里讨论的可能偏向于在线IT讲师,但我下面提到的内容,是通用的。 #### 讲师必备能力的锻炼与培养 一个讲师需要这些能力: * 学习、总结、归纳 * 写作能力 * 讲明白一件事的能力 我们就盯着自己的程序员身份来看。假如你想做讲师,总结、归纳、写作等能力都可以从写博客开始。这个问题我在“[**技术人员为什么要写博客**](http://blog.csdn.net/foruok/article/details/22419285)”一文中已有阐述,感兴趣的童鞋可以跳过去看看。 至于如何培养**讲明白一件事的能力**,我想说工作中有很多机会可以锻炼,比如向别人介绍你的代码逻辑、向别人介绍你在做的产品、参与公司的内部公开课或技术分享会……如果这些机会你都碰不上,啊哈,恭喜你,你可以自己创造机会,这样得到的锻炼会更大。 #### 选择课程方向 如果你浏览过[**CSDN学院**](http://edu.csdn.net/)的语言类课程,你可能会发现,发布这些课程的讲师,要么写过类似的图书,要么有多年的语言教学经验。这是语言类课程的陷阱所在:看着简单,做起来好难。这不是我们程序员的强项,请避开它吧。 作为程序员,我的建议是先从最熟悉的地方开始,就选择你最熟悉的某个语言或者框架,设计一个实战类的项目,写出来,然后讲出来,一切就这么简单啦。如果你去[**CSDN学院**](http://edu.csdn.net/)浏览一下,就会发现**这里大部分的课程都是实战类**的,一方面是因为这类课程的需求大,另一方面,也是因为这类课程对于程序员出身的讲师来讲,驾轻就熟。 #### 做讲师的赶脚是什么样子的? 有人买你的课,你就会很高兴。这里的10块钱,会比你在股市上赚到的100块更让你高兴。当然,前提是你必须喜欢这个角色。 #### 做讲师辛苦吗? 我录课程时,要么夜深人静,要么天色微明,要么周末独守家中…… #### 做讲师赚钱多吗? 如果你有志于此,这里有传播智客的招聘信息可供参考: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-11-27_56582a6a5e7af.jpg) 但是,这里也有二八定律。 那么你可能会说,看你讲了这么多,然而这并没有什么卵用。 那么我只能说,路在脚下,你坚持走,比别人多走一步,就能看到不一样的风景。 ## 想成为一名讲师,该如何开始? 今晚想想千条路,明天起来走老路,结果是无路可走。所以,如果你想来一场说走就走的旅程,现在就开始,开通CSDN的博客,写一些技术文章,锻炼自己的归纳总结与表达能力,等你从过往的项目经验里提炼出一些可以系统化的内容,就可以到[**CSDN学院**](http://edu.csdn.net/)申请个讲师录个课试试。这是我走的路,也才刚刚开始,路的尽头有什么,我们可以一起闯闯看。
';

别被技术绑架

最后更新于:2022-04-01 21:15:50

通常我们说程序员需要在某个技术方向上积累到一定的厚度,要能够运用技术有效地解决实际问题。可是当程序员在某一项技术上浸淫时间长了之后,却经常会出现另外的问题,那就是:看待问题时受限于自身的技术积累。 我打算从几个方面来谈这个话题。 ## 一定有某一项技术最适合解决某个问题 有的人对 C++ 比较熟悉,在开始一个新产品或新项目,比如做一个 Android App ,就会考虑怎么用 C++ 来实现目标,于是就会去找可以用在移动端的 C++ 框架,比如 Qt ,比如 NDK + Native Activity ……这是一种受限于现有技术的情况,其实呢,我们可以跳过 C++ 的藩篱,直接找 Java 去! 在我看来,技术是用来解决问题的,当我们要解决某个问题实现某个目标时,技术可能有很多种,可能每种都可以实现,但不同的技术面对的难度、付出的成本一定是不一样的!对于公司、个人来讲,都应当选择综合成本最低的那项技术。 当我们做技术方案选型时,应当问“这项技术适合解决哪类问题?”、“这类问题最适合用哪种技术来解决?”,而不是问“我掌握的技术该怎么解决这个问题?”。 如果你总是想尽一切办法用已经掌握的技术来解决所有问题,虽然这种担忧未知害怕变化害怕尝试的心理可以理解,但我觉得这不是一种健康良好的心态,也不是一个有益的习惯,它其实发出了“你被所学技术奴役”的告警信号。 要知道,我们学技术是用来解决问题的,是要能够灵活有效的控制和运用掌握的技术,而不是把自己交给某项技术反受技术左右的。 一字槽口的螺钉就要用一字螺丝刀,内六角的螺丝就要用内六角的扳手。这是很直接很简单的道理,我们在生活中会下意识地遵循这种规则,而一旦我们面对技术这种相对复杂的事情,却往往不能回归到事物的本源,这是需要我们思考的。 ## 换工作时拒绝换技术 当程序员熟练掌握了一门技术(比如 Java,C++,Qt,Spark……),他在选择新工作时就经常会主动给自己设置路障,不用 Spark 的公司不去,不用 Qt 的岗位不考虑……其实我觉得这是不必要的。 学习一门技术当然有成本,用精通的技术来解决问题会有得心应手驾轻就熟的感觉,能够事半功倍。这是非常好的。但是,等等!难道你真的打算一辈子把自己局限在某项技术上吗?难道你认为你干了N年程序员就只获得了这项技术? 我觉得不是这样子的。你熟练掌握了某门技术,这当然是你非常重要的收获。但是这绝不是最重要的,真正重要的是下面两点:  学习能力  解决问题的能力  对,你没看错,这才是一个程序员在精通一门技术后真正的收获。 你通过掌握、精通一门技术发现自己的学习模式确认自己的学习能力,一通百通,再学其它技术就会快很多,因为你获得的有关学习的经验和认知是通用的。所以,我认为发现自己的学习模式强化自己的学习能力是真正核心、重要的收获之一。 还有,技术只是一把剑,这把剑的威力如何,就看使用它的人怎么样因地制宜审时度势的运用它。攻守之道,妙乎于心。真正的高手,摘叶飞花皆可伤人。这就是解决问题的能力了,同样的太祖长拳,在乔峰手里就有摧枯拉朽的气势和震慑人心的威力,这就是乔峰的本事,这个本事是独立于太祖长拳的。程序员也一样。所以,解决问题的能力是一种真正重要的收获。 如果你确认你已经收获了学习能力和解决问题的能力,那具体的技术就已经不重要了,它也不应该成为你选择新工作新产品的绊脚石。不设限,天高海阔任你遨游。 ## 招人时限定精通某某技术 我们会发现,绝大多数公司在招聘开发工程师都会列出诸如“精通 J2EE ”、“精通 MySQL”、“熟悉 Hadoop”等非常细的技术要求。 对公司来讲,招聘拥有相关经验和技术的人才能够大大降低一个产品(项目)的成本,这本无可厚非,因为公司都是成本敏感的。但是对于程序员来讲,有时这是不公平的。 不公平体现在两点。一是没有相关技术经验的程序员会因此而失去学习新技术的机会,对于那些刚毕业不久或意图转换技术方向的人来讲则更是残酷的。二是拥有匹配技术的程序员,自身发展会因为公司的这种倾向而受到限制,甚至裹足不前,他们会觉得,原来你仅仅是想利用我已有的技术和经验来解决你的问题啊,技术人员的价值是在不断战胜新的挑战的过程中提高的,失去面对这种挑战的机会,他们的能力和水平就会原地踏步,甚至回落、下降。 其实在我看来,招聘人员时,拥有相关技术并不是最重要的,一个程序员是否具有学习能力和解决问题的能力才是关键!有了出色的学习能力,他一定能够快速掌握产品需要的各项技能;有解决问题的能力,他一定能够解决新产品开发中不时跳出的各种意外。也就是说,选择程序员时,公司更应该从一个人的才干和能力出发,而不是盯在某项具体的技术上,合适的人会带给公司更多,唯有把正确的事情交给正确的人,成功才可预期。 总之,不论是程序员还是需要程序员的公司,都应该从人才的核心出发,发现关键才干和能力,不要被具体的技术蒙蔽,不要让已有的技术成为包袱,不要让自己的视野受到不必要的限制。心不设限,将来就没有终点。
';