我在“漫谈程序猿系列:咦,你也在混日子啊”一文中描写叙述了一种混日子的现状,有朋友说该文仅仅提到了设置目标告别混日子而没有展开论述“怎样设立目标”、“怎样为目标而努力”这两个关键问题,也就是说,我提出了问题但答案没有落到实处。

这次呢。我决定认真地来谈一谈怎样建立目标,怎样为目标而努力。

一切从个人经验出发,仅供參考。

目标是什么

    “目标是个人、部门或整个组织所期望实现的成果。 ”

    这个定义看起来冷冰冰的,那还有另外两个更感性的词语:梦想、理想。但这两个词语似乎又过于虚无缥缈。谈起来感觉就像遥遥无期永远无法实现的东西。

    有理想才有目标

    理想和目标是密不可分的。结合在一起讨论会更有意义。

    有理想才有目标,有目标才有行动。有行动才有结果

    这句简单的话。我以后还会提到,它阐述了理想、目标、行动、结果这四者之间的关系。

怎样寻找目标


    怎样寻找目标?这是非常关键的一点。

    感觉文章越写越正式,这偏离了我的初衷,有点惴惴不安,也有点不适应呢。

    我把程序猿的目标分为三类:公司目标、职业目标、生活目标。

公司目标

    程序猿是公司的一份子,參与到实现公司目标的过程中。这个没什么好说的,食君之禄忠君之事。拿了人家的钱。就是要给人家干活儿的。

    美国管理学家彼得·德鲁克在其1954 年出版的《管理的实践》一书中,首先提出了“目标管理”的概念,然后目标管理(Management by Objectives,MBO)大行其道,到如今依旧被广泛使用。有非常多的公司在使用 MBO 。

我之前所在的西安信利软件科技有限公司,也以前推行过目标管理。当时还学习了另外一本书。(日)串田武则的《目标管理实务手冊》。感觉大有收获。

    目标管理有五个要素:

  1. 什么目标
  2. 达到何种程度
  3. 怎样实现
  4. 何时完毕
  5. 完毕得怎么样

    通常公司在实施 MBO 时,还会和绩效挂钩。目标完毕得好呢,绩效结果就好。奖金就多,升职加薪就快。

    公司目标,一部分来源于远景规划、环境变化,这是纵向的。另一部分则是横向的,来源于部门之间。不同部门有交叉协作, A 部门的目标要达成可能须要 B 部门协助,或者多个部门在一条产品线上,它们的目标有依赖关系。无论是纵向的还是横向的,都须要自顶向下分解。大目标分成小目标。最后落实到详细的员工来运行,程序猿就是负责运行的员工。

    公司目标终于分解到个人,产生了个人的工作目标。

    这里是一张示意图:


    怎样寻找公司目标、怎样分解、怎样制定措施、怎样运行,我是半吊子,详细就请參考《目标管理实务手冊》吧。这里要提的是:

    程序猿作为公司的一员,必定要參与到公司目标的实现中来,公司成功,个人才可能成功,所以一定要搞明确自己对公司目标能有什么贡献。积极地去实现由公司目标而来的个人目标。

    假如你在一个公司,都不知道要干什么,那要么是公司管理出了问题,要么是你的领导不合格。这两种可能性会比較大。

假设是这样的情况,那你多半能够考虑离职了——在一个不知道要干什么的公司,非常难干出成绩来。

职业目标

    职业目标是指人在选定的职业领域内所要达到的详细目标。

    这是每一个人都要想的问题。

    我在面试时常常会问应聘者未来三到五年的规划。这个问题实际上针对求职者职业目标中的中期目标。有的程序猿会告诉我说,三年后他希望成为项目经理;另外一些程序猿说他希望五年后成为视频解码方面的技术专家;另一些程序猿会不好意思地笑笑。说还没想过这个问题。你是哪种呢?

    职业目标分为短期、中期、长期。

    短期目标通常是2~3年以内的目标,比方你刚进入移动开发领域,那你可能希望花2~3年的时间熟练掌握 Java 语言、Android 应用框架的各个方面以及系统框架的某些部分、能够独立完毕较为复杂的 App 开发。

    中期目标通常是 3~5 年内的目标。

    长期目标,5~10 年的规划。一般设定较为长远的目标,比方你希望 30 岁时能够成为 IBM 西安分公司的一线经理,或者希望成为某个小型公司的技术副总。

    还有更为长远的规划,那就是:人生规划。

    说来说去,忽然发现我自己就是一个职业目标不明确的人啊。冷汗一身。

    事实上呢,好吧。我開始为自己辩解了。希望你不要这样。事实上呢。我们真能看那么远吗?

    如今有一种职业。叫作“职业生涯规划师”。

哈哈。我认为挺好玩儿的啊。这个还能够考 GCDF 证书,谁有兴趣能够考一个。

    我要说的是:看不到 10 年后的目标非常正常;3年左右的规划也没有,就有点儿说只是去了;假如连一年内的目标都没有……呜呼哀哉,我该说什么好呢,去找“职业生涯规划师”聊聊吧,他们真的可能会帮到你。

    假如你有自己的职业目标。那当遇见在一个公司没事儿可干的情况时,你就能非常清晰地意识到自己应该离开,果断的离开。假设碰到间歇性空暇。那职业目标也会帮助你在空档期建立一些有助于实现职业目标的短期计划,让你不至于拔剑四顾心茫然浑身没个着力处。

生活目标

    这个是最难扯明确的……你看那么多小说、散文、身心灵书籍。心理学书籍,励志书籍。都企图说明确这个问题,但是,从你的角度看,谁说明确了?所以呢,我一扯淡的主儿。也不大可能把这个东西说明确,我仅仅有一句话,还是舶来的:

    我们在生活中所做的各种努力多数是为了让自己有归属感和价值感

    我事实上是一个懵懂的人,当我决定做一个程序猿时,像“我就适合干这个”、“我就喜欢干这个”、“我能干这个”之类的感觉和推断都没有,我的出发点相当朴实:在上一份工作中我感觉不到自己的价值,干得没劲。

    所以,从个人经验出发,就工作而言,我认为有时不是你认为新的工作特别适合你、能让你一展所长,而是你对上一份工作的现状感到强烈的失望导致你愿意花一些机会成本来尝试一下。假设你新公司所做之事与你个人的职业目标方向一致契合度高,那就更好了,简直是中大奖了。

    工作即生活。工作和生活不是割裂的。应当是和谐统一的。

    工作是生活的一个重要组成部分,占领了我们年富力强的那段岁月的大部分时间。当我们考虑生活目标的时候。非常可能就包含了工作目标。比方你想成为一个唱作俱佳的歌手。那唱歌和创作就会成为你的工作也会成为你的生活。比方你想成为一个伟大的程序猿,写出一个新的移动操作系统,把 Android 和 iOS 拍死在沙滩上。那预计你的生活也会因此发生翻天覆地的变化。

    我们来说普通人吧,像我们这样的屌丝程序猿。大部分都是一般人儿,生活平淡、平庸、寻常、平实,那么,我们的生活目标是什么呢?

    哦,“年轻时拼了命赚钱,年老时拼了钱保命”。这当然不是我们推崇的生活。

    那,“起得比鸡早,睡得比狗晚,干得比驴多,吃得比猪差”,自然也不是我们想要的。

    “买房,买车。买女(男)朋友,养小宝宝……”,是这个吗?

    ……

    在我看来,这都是说不清道不明的东西,你喜欢干这件事儿,他愿意干那件事儿,你钟意一掷千金花天酒地的生活方式,他甘于一箪食一瓢饮的日子,都挺好的。假设你能做到“採菊东篱下。悠然见南山”。我会非常羡慕,甚至还会有妒忌恨。

    我就恨自己这样的没有立场的态度!来骂我吧。求虐。

    时间永是流逝,而未来不会自己主动到来。未来须要我们自己去创造。简单点说,我们就是通过实现一个目标又一个目标来抵达并创造未来的。

没有目标、规划,就没有你想要的未来。

    有时我们看不了太远,那就从最近的目标着手,看看自己今年、明年的想做的事情都有什么。在一张纸上列一列。分析一下。

哪些事儿不做就会让自己懊悔,那这些事儿就具有重要的意义。要制定计划去完毕它们。

哪些事情做了会让我们更有成就感,那也能够排在前面去实现。

哪些事情具有递进特性,能够延伸出新的目标……分析之后。你就能够确定那么几件必须完毕的。这就是你的目标了。

    生活目标事实上就是一件假设你愿意投入精力去做,就可能达到的事

    比方你今年想考个驾照。明年买辆车,也算一个非常详细的目标。

    再比方你今年要找到一个妹子告别单身,明年让你老妈报上孙子,也是一个非常切实际并令人振奋的目标。

    今年再写一本技术周边的书,这是我的一个目标。

    比方你希望用三年时间完毕一次职位晋升,从程序猿变成软件项目经理……

    仅仅要你愿意正视自己并花时间去分析,一定会找出一些你想做的事情。而这些事情。能让你有归属感和价值感的,就能够成为一个好目标。

    最后。我想说的是,不论你追求什么样的生活方式。你的生活目标是什么,终于落脚点,事实上是“心”,当你或舒缓或紧张地随着时间的河流抛洒自己的生命时。仅仅要你感到心安,感到喜悦,感到平和,这就够了,别的说多了都是扯淡,因此就生活目标这个话题,我打算就这么着了。

为目标而努力

    目标就是计划。

    有目标无计划,一定白瞎。

    要实现目标。得坚持、努力运行你的计划。

工作目标

    前面我们谈公司目标时提到公司目标会分解到个人。还提到 MBO 。那 MBO 里事实上不但有目标,还有实现目标的措施,以及对这些措施的管理。假设你是个普通的程序猿。公司或者你的上级应该辅助你制定这些东西,假设你们公司不用目标管理法。那我建议你自己搞明确目标管理法是怎么回事儿,由于它不仅适用于工作,也适用于生活。

    我们以开发一个推送服务为例来说明怎样建立目标和计划。

    目标是:开发一个推送服务。

这个有点笼统,还须要把服务指标细化一下:

  • 支持 Android 、 iOS 两个平台
  • 支持亿级用户
  • 消息能够在 2 秒内抵达手机
  • 消息抵达率为 99% 
  • 服务要 7x24 小时运行。故障恢复时间小于 1 分钟

    如今服务指标有了,假如你是项目经理,你的 MBO 卡中“开发推送服务”这条内容基本就 OK 了,再填入实现措施、预期时间什么的,就完整了。

    而要弄明确实现措施和时间,我们就还须要进一步来考虑实现措施。

    在制定实现措施前。这些需求还要进一步细化。

我们以第一条。支持 Android 、 iOS 两个平台为例来说明。

    推送服务应该分为服务端和client。

    服务端是不须要跨平台的。你能够使用 Windows 、 Ubuntu Server 、 Cent OS 之类的,随便选一个好啦。

服务端还须要管理界面,能让运营人员从管理界面上编辑并提交推送消息。

预计还得要 API 接口,可能有些程序会自己主动产生要推送的消息。

    服务端和client须要通信。你要定义通信协议。

    Android 须要实现接入模块,必须是 Service ,还得应对待机问题、第三方安全软件查杀问题。 iOS 必须考虑到苹果的限制,可能要与 iOS 内置的 push 机制结合。

    这里面事儿挺多的啊。再挑一个来细化。拿通信协议说吧。

    通信协议有开源的啊。比方 XMPP 。MQTT 。当然也能够自定义。那选择哪个呢?你要开放给第三方使用吗?

    ……

    你看。有这么多事儿等着我们做呢,兴奋吧。无论你顺着哪个需求点梳理下去。都会分解出非常多功模块,每一个功能模块又能够再拆分……本文不可能来干这么专业的事儿,留给项目经理吧,他们干这个靠谱。

我在这里仅仅是想说明,在工作上,你要想实现一个目标,必定是得经历目标分解的过程,把大目标分解到一个又一个小的、能够在三两天就能实现的任务,这样才具有可运行性。然后把这些任务排排座,每一个任务都给个时间盒。计划就出来了。

最后就能够按计划来运行你的项目完毕你的目标了。

怎样有效利用空档期

    本文起源于“怎样告别混日子”这个问题,那么,问题来了:

    在工作中,没事儿干的时候该做什么?

    前面谈职业目标时提到。清晰的职业目标会帮助你渡过工作期间的闲暇时间(假设有的话)。

    举个我个人的样例吧。

    2014 年年中,我负责的产品终止开发(仅仅剩维护),有几个月的时间没什么详细的事情可做。晃荡一天能够。晃荡时间长了这心里发慌啊。幸好我对技术情有独钟,也比較爱钻研(脸有点儿红。事实上我是个浅尝辄止的家伙),于是,我就想看看之前用过的框架—— Qt ——怎么样了。于是就去研究,哇,竟然支持 Android 了。也支持 iOS 了!

兴奋呢,立刻下载最新版本号,搭建好开发环境,開始写代码做实验,完了总结一下,分享到博客上。

    就这么着。继续学习技术,帮助我度过了原本可能无所事事的几个月。庆幸时光没有白费。那段时间的研究。还机缘巧合出了本书:《Qt on Android核心编程》。说实话我非常享受那个学习、写书的过程。天天晚上熬夜写,天天早上早起写,周末窝在家里调试代码,乐而不觉其苦。非常多事情都是这样子的。你喜欢干就不认为苦。

当我写完书时。反倒认为空荡荡的。

    事实上我们在开发过程中,会用到各种各样的技术。多数时候为了赶项目,都是以实现功能为第一个要务。仅仅见树木不见森林,用过了就扔一边了。新项目来了,急吼吼地又忙活去了。但你要想提高,就得回想、总结、拓展,把用过的那些技术一一列出来。在闲暇的时候。以你用过的那个技术点为中心来画同心圆,一层层向外扩展,丰富你的积累。

这是不辜负大好时光的好办法。

    也有程序猿的中期职业目标是做技术管理。那假设你有空暇的时候(没空暇也要挤时间),那就能够看看项目管理方面的书籍,比方《项目管理知识体系指南(PMBOK指南)》、《项目管理:计划、进度和控制的系统方法》、《人月神话》、《带人的技术:不懂带人你就自己做到死》、《软件project(实践者的研究方法)》、《项目管理修炼之道》……等等。让自己对项目管理和团队管理有个理论上的认识。相关书籍非常多。简直能够用汗牛充栋来形容,我列出的那些只是九牛一毛。很多其它的书籍你能够利用亚马逊之类的站点的相关推荐来了解。

新目标的诞生

    生活就像翻山越岭。一山过去另一山,我们就这么一直不断地攀登。

在攀登的过程中。有时你会发现新的山峰,新目标就诞生了。

    在我写作《Qt on Android核心编程》的过程中,我发现 Qt Quick 这个框架简洁、优雅、强大,而我没有照应到它,心里总不是那么安宁。认为这么好的东西应该给它一点关注。于是我就定了目标:研究 Qt Quick ,写一本专讲 Qt Quick 的书。

    有了目标,我非常快从写完《Qt on Android核心编程》的空虚中走出来,把自己的闲暇时间都投入到研究 Qt Quick 中了。

    选定要讲的内容。列出大纲。制定计划,评估每一个主题预期花多长时间。写成文章又花多长时间,终于制定了一个粗略的计划,准备在三到四个月内完毕整个工作。

    有了计划后。我就梳理安排自己的时间,把晚上、清晨、周末都用上。一个主题一个主题的去研究,学习时记录自己的心得保留演示样例程序…… 

    3 个月过去后,我积攒了大量的原始资料,《Qt Quick核心编程》也基本完稿了。

    没人要求我写书,这都是由于我本身喜欢写作又喜欢技术,是一种自发的行为。研究学习技术的过程让我感到舒服,写作让我认为自己有价值。所以我愿意做这样的事情,哪怕金钱上的回报寥寥也不以为意。

行动起来

    最后的最后。我们必须强调的是:一切目标、计划。必须落实到行动上来。否则都是空谈!

个体之间为什么有那么大差异?除却拼爹的因素,最重要的一点就是:有的人坐而论道,有的人用行动证明自己。


-----------回想切割线-------------------