我在“漫谈程序员系列:咦,你也在混日子啊”一文中描述了一种混日子的现状,有朋友说该文只提到了设置目标告别混日子而没有展开论述“如何设立目标”、“怎样为目标而努力”这两个关键问题,也就是说,我提出了问题但答案没有落到实处。这次呢,我决定认真地来谈一谈如何建立目标,如何为目标而努力。一切从个人经验出发,仅供参考。

目标是什么

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

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

有理想才有目标

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

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

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

如何寻找目标

如何寻找目标?这是非常关键的一点。

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

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

公司目标

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

美国管理学家彼得·德鲁克在其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 两个平台为例来说明。

推送服务应该分为服务端和客户端。

服务端是不需要跨平台的,你可以使用 Windows 、 Ubuntu Server 、 Cent OS 之类的,随便选一个好啦。服务端还需要管理界面,能让运营人员从管理界面上编辑并提交推送消息。估计还得要 API 接口,可能有些程序会自动产生要推送的消息。

服务端和客户端需要通信,你要定义通信协议。

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

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

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

……

你看,有这么多事儿等着我们做呢,兴奋吧。不管你顺着哪个需求点梳理下去,都会分解出很多功模块,每个功能模块又可以再拆分……本文不可能来干这么专业的事儿,留给项目经理吧,他们干这个靠谱。我在这里只是想说明,在工作上,你要想实现一个目标,必然是得经历目标分解的过程,把大目标分解到一个又一个小的、可以在三两天就能实现的任务,这样才具有可执行性。然后把这些任务排排座,每个任务都给个时间盒,计划就出来了。最后就可以按计划来执行你的项目完成你的目标了。

如何有效利用空档期

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

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

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

举个我个人的例子吧。

2014 年年中,我负责的产品终止开发(只剩维护),有几个月的时间没什么具体的事情可做。晃荡一天可以,晃荡时间长了这心里发慌啊。幸好我对技术情有独钟,也比较爱钻研(脸有点儿红,其实我是个浅尝辄止的家伙),于是,我就想看看之前用过的框架—— Qt ——怎么样了,于是就去研究,哇,居然支持 Android 了,也支持 iOS 了!兴奋呢,立马下载最新版本,搭建环境,开始写代码做实验,完了总结一下,分享到博客上。

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

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

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

新目标的诞生

生活就像翻山越岭,一山过去还有一山,我们就这么一直不断地攀登。在攀登的过程中,有时你会发现新的山峰,新目标就诞生了。

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

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

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

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

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

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

行动起来

最后的最后,我们必须强调的是:一切目标、计划,必须落实到行动上来,否则都是空谈!个体之间为什么有那么大差异?除却拼爹的因素,最重要的一点就是:有的人坐而论道,有的人用行动证明自己。

-----------回顾分割线-------------------

漫谈程序员系列:怎么告别“混日子”相关推荐

  1. 漫谈程序员系列 怎么告别 混日子

    我在"漫谈程序员系列:咦,你也在混日子啊"一文中描述了一种混日子的现状,有朋友说该文只提到了设置目标告别混日子而没有展开论述"如何设立目标"."怎样为 ...

  2. 漫谈程序员系列:快来约这些女生,保你脱单

    最近和同事.朋友.网友聊天,聊到程序员谈女朋友的事情,发现了一些有趣的东西,分享出来. 八卦了周围干开发的程序员的另一半的职业,发现了下列组合: 程序员+测试 程序员+美工 程序员+售前 程序员+程序 ...

  3. 漫谈程序员系列:伤心小箭,你中了几枝

    程序员怎样说话才能让别人觉得舒服呢?这是个问题,我一时半会还搞不定它,因为我本身也不是一个"会说话"的程序员.我们换个角度来问,作为一个程序员,你不能接受哪些话? 否定性语言 有一 ...

  4. 漫谈程序员系列:让程序员蛋疼的那些事儿

    听说嫁人要嫁程序员,钱多话少死得早.这话多半是程序员自己黑自己的.程序员是有非常特别的幽默感的一群,善于自嘲,勇于自黑,耐受力超强,很多事无可无不可,不到是不可孰不可忍不会冲冠一怒.不过,就是这么 n ...

  5. 漫谈程序员系列 让程序员蛋疼的那些事儿

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 听说嫁人 ...

  6. 漫谈程序员系列:噢,我不想成为问题!

    程序员(软件开发工程师)有很多别称,比如"程序猿"."码农"."代码工人"."码字猴"等等,都是幽默的阿猿们自黑的结果. ...

  7. 漫谈程序员系列:你的幸运女神呢

    你心里不屑地冒出这句话:标题党,可耻的标题党! OK ,既然你来了,我们就开始吧. 每个人的身边都有牛人.也许这句话不大准确,应该这么说:每个人的身边都有比自己牛13的人.就这么着吧,寂寞的高高手,也 ...

  8. 漫谈程序员系列:程序员该不该考虑初创公司

    IT 这个行业,最不缺的就是机会,追逐机会的,有各种各样的小公司,也有各种种样的程序员. 创业公司 每一个出来创业的人,心中都充满了希望和梦想,而且认为自己眼光独到,手段高超,一定能够逐浪潮头. 可是 ...

  9. 漫谈程序员系列 程序员的生活就这样吗

    我当了快十年程序员了,终于老得可以来谈谈程序员的生活是什么样子了. 或许陈奕迅的<十年>中的一段歌词,可以表示很多程序员和软件开发之间的感情纠葛: " 十年之前 我不认识你 你不 ...

最新文章

  1. 为什么阿里Java规约禁止使用Java内置Executors创建线程池?
  2. cmd切换python版本-cmd 切换python版本
  3. SQL语言包含4个部分
  4. 命令行无法运行php,php不支持执行cmd命令行
  5. 直接拖动元器件_电子元器件常规检测和判断
  6. sci_loopback_int的例程(中断程序)
  7. C++ STL : 模拟实现STL中的vector类
  8. Redis 多线程网络模型全面揭秘|网络硬核系列
  9. 第37课 thinkphp5添加商品基本信息及通过前置钩子上传商品主图 模型事件(勾子函数)...
  10. 如何在Windows Server 2016上配置iSCSI启动器
  11. android硬件加速器及其问题小结
  12. matlab条形图颜色矩阵,Matlab条形图 – 根据符号和大小填充不同颜色的条形图
  13. java中的回调函数
  14. GitHub 上史上最全的 iOS 开源项目分类汇总
  15. 计算机桌面无法中英文切换,输入法无法切换到中文怎么办_输入法失效只能打英文的解决方法...
  16. NIVIDIA 硬解码学习1
  17. 在Java中不允许使用使用一下字母组合作为文件名(不区分):CON,PRN,AUX,NUL,COM1,COM2,COM3,COM4,COM5,COM6,COM7,COM8,COM9,LPT1,LPT2
  18. 江苏科技大学计算机学院院长高尚,江苏科技大学计算机科学与工程学院导师介绍...
  19. Reinforced Neighborhood Selection Guided Multi-Relational Graph Neural Networks阅读笔记
  20. Google Safe Browsing API的使用

热门文章

  1. 前端学习笔记2——错误解决,接口,echart
  2. js/javascript获取时间戳的5种方法
  3. 取消latex伪代码的行号
  4. flowable6.4 并行网关 驳回 跳转 回退 多实例加签减签
  5. 3D max新增超级阵列功能Array !
  6. 博客-空间-视频作品点赞的固定独立IP
  7. 磁盘存储链式的B树与B+树(上课笔记)
  8. PAD智龙迷城(puzzle and dragon)辅助转珠算法思路和python实现
  9. MATLAB马尔科夫链预测法
  10. 【ArcGIS|空间分析】空间分析准备流程